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 ...
随机推荐
- 神经网络中的激活函数——加入一些非线性的激活函数,整个网络中就引入了非线性部分,sigmoid 和 tanh作为激活函数的话,一定要注意一定要对 input 进行归一话,但是 ReLU 并不需要输入归一化
1 什么是激活函数? 激活函数,并不是去激活什么,而是指如何把“激活的神经元的特征”通过函数把特征保留并映射出来(保留特征,去除一些数据中是的冗余),这是神经网络能解决非线性问题关键. 目前知道的激活 ...
- 搭建自己的websocket server_1
用Node.js实现一个WebSocket的Server. https://github.com/sitegui/nodejs-websocket#event-errorerr nodejs-we ...
- [HTML] 微信wap开发---页面自适应大小
<meta name="viewport" content="width=device-width, initial-scale=0.5, minimum-scal ...
- [JavaEE] Hibernate连接池配置测试
转载自51CTO http://developer.51cto.com/art/200906/129914.htm Hibernate支持第三方的连接池,官方推荐的连接池是C3P0,Proxool,以 ...
- Ajax+Java实现大文件切割上传
技术体系:html5(formdata) + java + servlet3.0+maven + tomcat7 <!DOCTYPE html> <html> <head ...
- 使用multiprocessing解决PyMuPDF不支持多线程加载导致的界面卡死无响应问题,及一个PyQt5实现的简易PDF阅读器例子
最近在用PyMuPDF实现一个PDF阅读器,发现PyMuPDF在加载某些epub时耗时非常长,有的长达10几秒,会导致界面卡死无响应. 尝试用多线程后台加载,发现还是不能解决问题,和作者交流(issu ...
- SwiftUI 官方教程
SwiftUI 官方教程 完整中文教程及代码请查看 https://github.com/WillieWangWei/SwiftUI-Tutorials SwiftUI 官方教程 SwiftUI ...
- (转载)Activity-数据状态的保存
由于手机是便捷式移动设备,掌握在用户的手中,它的展示方向我们是无法预知的,具有不确定性.平时我们拿着手机多数为竖屏,但有时候我们感觉累了也会躺着去使用手机,那么这时手机屏幕的展示方向可能已经被用户切换 ...
- knockout.js(js)代码在IE中出现“意外地调用了方法或属性”的错误
var CartListViewModel = function () { var self = this; self.payment = [ { name: "", value: ...
- 【Oracle】ORA-01157: cannot identify/lock data file 201 - see DBWR trace file
今天数据库在查询数据的时候显示了这个错误: ORA-01157: cannot identify/lock data file 201 - see DBWR trace file ORA-01110: ...