8个类
Animation 通用动画类
CheckHu 胡牌算番 偶尔调用
CheckOne 检查是否可以吃,碰,胡,等,偶尔调用
CreatePai 桌面上未显示的牌 全局变量
DeskPai 桌面上显示的牌 全局变量
MajiangMove
PlayerPai 两者构成引擎,让程序能够运转起来.
Mscreen 主类,游戏的入口
最开始设计的时候还比较粗犷,比如设计了N个类.
但是到后期设计的时候,又比较吝啬了,PlayerPai承载了太多的功能.
引擎运转:
通过消息应答.
MajiangMove …
/***************
* 检查胡牌
*/
public class CheckHu {
//牌的情况
int paiLiSeq[]; //未倒的牌 [0]个数,[1-N]具体的牌
int paiDao[][]; //一维几个 二维[0],啥子情况,[1-4]具体的牌
int codition[]; //一些特殊情况,比如海底,绝张之类
int paiHu[][]; //一维几个,二维[0],啥子情况,[1-4]具体的牌
static final int PAI_DAO_GANG = 0;
static final int PAI_DAO_PENG = 1;
static final …
写成一个类:
package createpai;
import java.util.Random;
/***********************
生成一定数量的牌
数据结构为一个数组队列,可以调用其前面,或者末尾的牌
产生牌时,先生成一个临时数组的牌,依次赋麻将值,然后随机的取临时数组里面的麻将值到队列里面.
*/
public class CreatePai {
private int pai[];
private int front;
private int rear;
private int total;
public CreatePai(int n) {
tot …
网上找了半天,有说用三叉搜索树,深度优先递归搜索,太麻烦,不懂,网上找了个简单的:
http://www.lwfb.cn/show.aspx?id=9159&cid=18
然后自己写的代码:
import java.util.Random;
public class MajianaHu {
//pai数组 一维存储类型,二维的[0]存储个数,[i]存储第i个牌的个数
//paiForAnay数组 存储14个牌的转化后的值
private int pai[][]; //麻将的牌
private int paiForAnay[];
public static void main(Strin …