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

zzzzZZZZ

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

package com.lovo;

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

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

	/**
	 * 构造器
	 *
	 * @param suits
	 * @param face
	 * @param image
	 */
	public Mahjong(Suite 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 (suite) {
		case CIRCLE:
			str += face + "筒";
			break;
		case BAMBOO:
			str += face + "条";
			break;
		case CHARACTER:
			str += face + "万";
			break;
		}
		return str;
	}

	/**
	 * 获得花色 和 点数
	 * @return
	 */
	public Suite getSuits() {
		return suite;
	}
	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() {
		Suite[] suites = {Suite.CIRCLE , Suite.BAMBOO , Suite.CHARACTER};
		int[]  faces = {1,2,3,4,5,6,7,8,9};
		for (int i = 0 ; i < mah.length; i++ ){
			mah[i] = new Mahjong(suites[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("");
			}
		}
	}
}

妥妥的~

时间: 2024-11-19 22:36:34

JAVA程序设计(11)-----面对对象初级设计 麻将 创建麻将牌 然后洗牌 发牌~ 恩 就这样的相关文章

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 su

JAVA程序设计(09)-----面对对象设计初级应用 龟兔赛跑

1.乌龟和兔子共有属性和方法 做成父类 避免重复代码 package com.lovo; /** * 类: 动物 * @author Abe * 属性: 名字 步距 总距离 睡觉的日子 */ public class Animal { protected String name; protected int step; protected int distance; protected int sleepDay; /** * 构造器 * @param name */ public Animal(

关于java洗牌发牌小程序

package play.card; public class Card { public String num; public String suit; public Card(String num,String suit) { this.num = num; this.suit = suit; } public Card() { super(); } @Override public String toString() { String str = suit+" "+ num; r

Java学习笔记34(集合框架八:综合案例:模拟斗地主的洗牌发牌)

规则: 1.54张扑克牌,有花色 2.顺序打乱,一人一张依次发牌,一人17张,留三张作为底牌 3.看牌:按大小王2A....43的序排列打印 示例: package demo; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; public class DouDiZhu { public static void main(String[] args) { // 创建Map集合,键

201671010128 2017-09-10 《Java程序设计》之对象与类

向对象程序设计的几个主要概念:抽象数据类型.类和对象.封装.类层次(子类).继承性.多态性. 类是概念模型,定义对象的所有特性和所需的操作,类是对象的原型. 对象是存在的具体实体,具有明确定义的状态和行为. 对象有三个主要特征: 对象的行为(behavior)--可以对对象施加哪些操作,或可以对对象施加哪些方法? 对象的状态(state)--当施加哪些方法时,对象如何响应? 对象的标识(identity)--如何辨别具有相同行为与状态的不同对象? 所有属于同一个类的对象都具有相同的特性和操作.

201671010122 2016-2017-2《java程序设计》走进对象与类

走进对象与类 上星期同学自主去自习室学习第四章<对象与类>后,回到宿舍,调侃说她在第四章找到对象了,我有点懵,怎么会呢?在java课本中找到了对象,我没听错吧!回过神儿来一想:哦!原来是这样的!我们彼此心照不宣,笑而不语. 第四章是java学习的核心之处,如果说前三章是对我们的热身的话,那么真正的挑战就是第四五六章 对javaOO风格的学习了.不过真得挺难的,我第一次看第四章的时候连对象与类都分不清楚,很是失望,觉得java学习又得跟C一样烂了.可是当我回过头来再看到"类是具有相同属

Java学习笔记----面对对象

最近开始着手整理自己学习的东西,把面向对象整理出来 什么是面向对象? 起初,"面向对象"是专指在程序设计中采用封装.继承.多态等设计方法. 面向对象的思想已经涉及到软件开发的各个方面.如,面向对象的分析(OOA,Object Oriented Analysis),面向对象的设计(OOD,Object Oriented Design).以及我们经常说的面向对象的编程实现(OOP,Object Oriented Programming). 什么是多态? 在面向对象语言中,接口的多种不同的实

201671010116. 2016-2017-4《Java程序设计》认识对象与类及继承

1.  类和对象是面向对象编程思想中的核心和基础.类是作为对象的抽象而存在的,所有的对象都依据相应的类来产生,在面向对象的术语中,这个产生对象的过程称为"实例化".类就是对一类事物或者一类对象的一个归类或者说划分.我们甚至可以说,"类"只是一个形容词,而'对象'就是这个形容词所形容的其中一个"实体对象".当然也有例外,比如我们都知道Java里面有一个关键字 'static',大家都知道被static所修饰的变量或者方法,在使用的时候是不需要实例化

南邮JAVA程序设计实验2 小应用程序Applet设计

实验目的: 要求学生能在学习和理解课堂学习内容中JAVA小应用程序的基础上,通过实验,培养学生将JAVA小应用程序相关知识点(包括JAVA Applet和低级事件处理模型)有机结合,设计基于WEB浏览器的小应用程序的能力. 实验内容: 设计和编写一个可以用鼠标操作的Applet小应用程序和相应的HTML页面,观察Applet的执行过程,测试程序鼠标用户交互操作的效果. 实验代码: JAVA: import java.applet.*; import java.awt.*; import java