JAVA程序设计(11)-----面对对象0基础设计 麻将 创建麻将牌 然后洗牌 发牌~ 恩 就这样

Posted mthoutai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA程序设计(11)-----面对对象0基础设计 麻将 创建麻将牌 然后洗牌 发牌~ 恩 就这样相关的知识,希望对你有一定的参考价值。

zzzzZZZZ

1.開始还想贴图的 实在太懒了…… 这是一张麻将

package com.lovo;

import java.awt.Graphics;
import java.awt.Image;

/**
 * 类 : 麻将牌
 * @author Abe 属性:花色 点数 图片
 */
public class Mahjong {
	private Suits suits;
	private int face;
	private Image image;

	/**
	 * 构造器
	 * 
	 * @param suits
	 * @param face
	 * @param image
	 */
	public Mahjong(Suits suits, int face/*, Image image*/) {
		this.suite = suits;
		this.face = face;
//		this.image = image;
	}

	/**
	 * 绘制一张牌
	 */
	public void draw(Graphics g,int x ,int y){
		g.drawImage(image, x, y, 50, 100, null);
	}
	
	/**
	 * 输出一张牌的点数和花色
	 */
	public String toString(){
		String str = "";
		switch (suits) {
		case CIRCLE:
			str += face + "筒";
			break;
		case BAMBOO:
			str += face + "条";
			break;
		case CHARACTER:
			str += face + "万";
			break;
		}
		return str;
	}
	
	/**
	 * 获得花色 和 点数
	 * @return
	 */
	public Suits getSuits() {
		return suits;
	}
	public int getFace() {
		return face;
	}
}
2.一副麻将

package com.lovo;

import java.awt.Image;

import javax.swing.ImageIcon;

/**
 * 类:一副麻将牌(108张)
 * 
 * @author Abe 属性:牌面图片 一副牌 第多少张
 */
public class Mahjongs {
//	private static Image[] images = new Image[36];

	private Mahjong[] mah = new Mahjong[108];
	private int sheet = 0;

//	static {// 静态载入器
//		for (int i = 0; i < images.length; i++) {
//			ImageIcon icon = new ImageIcon("mahjong/" + (i + 1) + ".jpg");
//			for(int j = 0 ; j < 4 ; j++){
//			images[i * 4 + j] = icon.getImage();
//			}
//		}
//	}

	/**
	 * 构造器 初始化
	 */
	public Mahjongs() {
		Suits[] suits = {Suits.CIRCLE , Suits.BAMBOO , Suits.CHARACTER};
		int[]  faces = {1,2,3,4,5,6,7,8,9};
		for (int i = 0 ; i < mah.length; i++ ){
			mah[i] = new Mahjong(suits[i / 36], faces[i % 9]/*, images[i]*/);
		}
	}
	/**
	 * 行为 : 洗牌
	 */
	public void stuffle(){
		for (int n = 0; n < 500; n++) {
			int i = (int) (Math.random() * 108);
			int j = (int) (Math.random() * 108);
			Mahjong temp;
			temp = mah[i];
			mah[i] = mah[j];
			mah[j] = temp;
		}
	}
	
	/**
	 * 行为: 发牌
	 */
	public Mahjong deal(){
		return sheet < mah.length ?

mah[sheet++] : null; //这句还是有点模糊 要在输出sheet之后再++的么? } public Mahjong[] getAll(){ return mah; } }


3.打印

package com.lovo;
/**
 * 麻将
 * @author Abe
 *
 */
public class TestMah {
	public static void main(String[] args) {
		Mahjongs mahj = new Mahjongs();
		Mahjong one = null;
		mahj.stuffle();
		for(int i = 0 ; i < 108 ; i++){
			one = mahj.deal();
			System.out.print(one + "\t");
			if(i % 9 == 8){
				System.out.println("");
			}
		}
	}
}
妥妥的~





以上是关于JAVA程序设计(11)-----面对对象0基础设计 麻将 创建麻将牌 然后洗牌 发牌~ 恩 就这样的主要内容,如果未能解决你的问题,请参考以下文章

Java基础——面对对象-继承

201771010135杨蓉庆 《面对对象程序设计(java)》第九周学习总结

Java基础 - 数组

JAVA 入门第二章 (面对对象)

Java学习记录(补充二:面对对象基础复习,习题)

张云飞 201771010143 《面对对象程序设计(java)》第十三周学习总结