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程序设计(12.3)---- 监听器0基础应用:五子棋
1.制作五子棋游戏软件 由于老师已经基本做完了.重做的时候快了非常多--可是还是感觉思维非常混乱-- 哪边先哪边后,哪个方法在哪边好之类的问题 太纠结了-- 先是窗体 内部类:鼠标适配器 窗体的构造 ...
- Java 入门课程视频实战-0基础 上线了,猜拳游戏,ATM实战,欢迎围观
Java 入门课程视频实战-0基础 已经上传完了.欢迎小伙伴们过来围观 直接进入: http://edu.csdn.net/course/detail/196 课程文件夹例如以下: 1 初识Java ...
- 《Java程序设计》第三章-基础语法
20145221<Java程序设计>第三章-基础语法 总结 教材学习内容总结 类型.变量与运算符 类型 Java可区分为基本类型(Primitive Type)和类类型(Class Typ ...
- C++分享笔记:扑克牌的洗牌发牌游戏设计
笔者在大学二年级期间,做过的一次C++程序设计:扑克牌的洗牌发牌游戏.具体内容是:除去大王和小王,将52张扑克牌洗牌,并发出5张牌.然后判断这5张牌中有几张相同大小的牌,是否是一条链,有几个同花等. ...
- java斗地主扑克 扑克牌 洗牌 发牌 Collection 集合练习
package com.swift.poker; import java.util.ArrayList; import java.util.Collections; /*训练考核知识点:Collect ...
- 【CUDA 基础】5.6 线程束洗牌指令
title: [CUDA 基础]5.6 线程束洗牌指令 categories: - CUDA - Freshman tags: - 线程束洗牌指令 toc: true date: 2018-06-06 ...
- Java程序设计11——GUI设计与事件处理A
1.GUI设计 Java使用AWT和Swing类完成图形用户界面编程,AWT全称是Abstract Window Toolkit,即抽象窗口工具集,它是Sun最早提供的GUI库,只是这个库功能比较有限 ...
- Java程序设计11——GUI设计与事件处理B
4 Java事件模型的流程 为了使图形界面能够接收用户的操作,必须给各个组件加上事件处理机制. 在事件处理的过程中,主要涉及3类对象: 1.Event Source(事件源):事件发生的场所,通常就是 ...
- Java学习笔记34(集合框架八:综合案例:模拟斗地主的洗牌发牌)
规则: 1.54张扑克牌,有花色 2.顺序打乱,一人一张依次发牌,一人17张,留三张作为底牌 3.看牌:按大小王2A....43的序排列打印 示例: package demo; import java ...
随机推荐
- nyoj 21--三个水杯(隐式图bfs)
三个水杯 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子.三个水杯之间相互倒水,并且水杯没有标识 ...
- js获取验证码 秒表效果(原创)
<script src="http://code.jquery.com/jquery-latest.js"></script> <input type ...
- A - Translation
Problem description The translation from the Berland language into the Birland language is not an ea ...
- [ Tools ] [ MobaXterm ] [ SSH ] [ Linux ] 中文顯示解決
預設是無法顯示中文的,需要修改連線的 Terminal Setting
- SqlServer动态变换库名
declare @tname varchar(20),@num intset @tname='Players_Log_L10001'declare @sql Nvarchar(1000)=N'sele ...
- vs中的正则替换
老版本: String {\w+} => Public String \1 2012中: String (\w+) => Public String $1
- 使用Storm实现实时大数据分析!
随着数据体积的越来越大,实时处理成为了许多机构需要面对的首要挑战.Shruthi Kumar和Siddharth Patankar在Dr.Dobb's上结合了汽车超速监视,为我们演示了使用Storm进 ...
- SciPy和Numpy处理能力
1.SciPy和Numpy的处理能力: numpy的处理能力包括: a powerful N-dimensional array object N维数组: advanced array slicing ...
- Zbrush 4R7中的镜像功能是怎么使用的?
ZBrush一款3D图形绘制软件,功能十分强大,在雕刻建模的时候镜像工具是我们经常要用到的,它可以方便快捷雕刻对称的模型,那么ZBrush®中怎样镜像呢,本文小编将做详细介绍. ZBrush 3D镜像 ...
- Select, Poll,Epoll
Date: 2019-06-19 Author: Sun 1. Select select最早于1983年出现在4.2BSD中,它通过一个select()系统调用来监视多个文件描述符的数组,当se ...