网络版斗地主的UML建模代码Word文档格式.docx
- 文档编号:20845342
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:13
- 大小:1.10MB
网络版斗地主的UML建模代码Word文档格式.docx
《网络版斗地主的UML建模代码Word文档格式.docx》由会员分享,可在线阅读,更多相关《网络版斗地主的UML建模代码Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
//表示牌的花色的属性
publicStringpuker_n=null;
//表示画牌时用到的一个属性
publicintpuker_num1,puker_hushe1;
//用整数形式表示牌的牌值和花色的属性
publicintpuker_dx;
//表示牌的大小的值
publicbooleanbUp=false;
//表示牌是否被选中的属性
/*
*用于构造用户自己的牌的构造方法
publicPuker(intP_x,intP_y,Puker_numpuker_num,Puker_hushepuker_hushe)
{
this.P_x=P_x;
this.P_y=P_y;
this.puker_num=puker_num;
this.puker_hushe=puker_hushe;
this.BPuker_num();
}
*用于构造54张牌组的构造方法
publicPuker(intpuker_num1,intpuker_hushe1)
this.puker_num1=puker_num1;
this.puker_hushe1=puker_hushe1;
*用于画牌这个对象的方法
publicvoidpaint(Graphicsg)
Colorc=g.getColor();
g.setColor(Color.WHITE);
g.fill3DRect(this.P_x,this.P_y,this.P_w,this.P_h,true);
g.setColor(Color.BLACK);
g.draw3DRect(this.P_x,this.P_y,this.P_w,this.P_h,true);
g.drawString(this.puker_n,this.P_x+5,this.P_y+20);
if(this.puker_n.equals("
大王"
)||this.puker_n.equals("
小王"
))
{
}elseg.drawString(this.puker_hushe.toString(),this.P_x+20,this.P_y+20);
g.setColor(c);
*此方法根据构造方法当中的属性来
*决定牌的其他属性
publicvoidBPuker_num()
switch(puker_num)
casep1:
this.puker_n="
1"
;
this.puker_dx=14;
this.puker_num1=1;
break;
casep2:
2"
this.puker_dx=15;
this.puker_num1=2;
casep3:
3"
this.puker_dx=3;
this.puker_num1=3;
casep4:
4"
this.puker_dx=4;
this.puker_num1=4;
casep5:
5"
this.puker_dx=5;
this.puker_num1=5;
casep6:
6"
this.puker_dx=6;
this.puker_num1=6;
casep7:
7"
this.puker_dx=7;
this.puker_num1=7;
casep8:
8"
this.puker_dx=8;
this.puker_num1=8;
casep9:
9"
this.puker_dx=9;
this.puker_num1=9;
casep0:
10"
this.puker_dx=10;
this.puker_num1=10;
casepJ:
J"
this.puker_dx=11;
this.puker_num1=11;
casepQ:
Q"
this.puker_dx=12;
this.puker_num1=12;
casepK:
K"
this.puker_dx=13;
this.puker_num1=13;
casepD:
this.puker_dx=17;
this.puker_num1=15;
casepX:
this.puker_dx=16;
this.puker_num1=14;
}
switch(puker_hushe)
case黑桃:
this.puker_hushe1=1;
break;
case红心:
this.puker_hushe1=2;
case梅花:
this.puker_hushe1=3;
case方块:
this.puker_hushe1=4;
case无:
if(this.puker_num1==14){
this.puker_hushe1=5;
}elseif(this.puker_num1==15){
this.puker_hushe1=6;
}
*此方法是得到一个牌
*的一矩形对象,是为了
*选择牌时用鼠标拖一个矩形然后
*与牌对象的矩形对象进行相交决定
*是否被选中
publicRectanglegetRect(){
returnnewRectangle(P_x,P_y,P_w,P_h);
}
应该说我这个程序主要是围绕着这个对象再操作。
那么表示牌的牌值我是用了一个枚举类型表示的
Puker_num.java代码如下:
*此枚举是表示牌
*的牌值的一个枚举
publicenumPuker_num
p1,p2,p3,p4,p5,p6,p7,p8,p9,p0,pJ,pQ,pK,pX,pD;
这个枚举主要表现牌的牌值的作用。
那么表示牌的花色我也是用了一个枚举类型表示的
Puker_hushe.java代码如下:
*此枚举是一个表示牌
*花色的枚举
publicenumPuker_hushe{
黑桃,红心,梅花,方块,无;
在这里主要表示牌上的花色的一个作用。
那么里有个“无”是表示大小王的时候用到的。
下面就来讲一讲出牌的规则算法的类吧,我在这里设计的是一个静态类,里的成员方法和属性也都是静态,因为规则吗,我想应该是不需要构造的,只要你出牌,你就使用。
可能Rule.java这个算法类的代码会相对的多一点,我就不在这个地列出来了,朋友们可以下载我的源代码。
可以到我的个人站点上去下载http:
//smq-
再设计算法的同时,我也设计了一个出牌类型的枚举的类。
这个类主要是表现所有可能出现出牌的类型情况。
PukerGroupLaiXin.java代码如下:
*此枚举是一个区分出的牌组
*和区分接收的牌组类型的作用
publicenumPukerGroupLaiXin
个子,对子,双王炸弹,一飞机,一飞机带翅膀,炸弹,五顺子,六张顺子,二飞机,三连对,炸弹带二,
七张顺子,八张顺子,二飞机带翅膀,四连对,九张顺子,三飞机,十张顺子,五连对,十一张顺子,
十二顺子,三飞机带翅膀,六连对,四飞机,七连对,五飞机,四飞机带翅膀,八连对,九连对,六飞机,
十连对,五飞机带翅膀,发送无,接收无;
程序的设计就说到这了。
然后谢谢大家的支持,我的QQ是:
565345652,希望大家能够给提一些意见。
下面说一说此程序的使用方法:
因为这是一个网络版的斗地主游戏,我设计的是三个人玩的,所以要开三个程序,才能玩,我的服务器和客户端都写在了一起,所以不管是谁,都可以服务器的程序,但是三个程序当中只能有一个服务器端的程序,那么执行什么才是服务器的程序的:
样例图如下:
选择“游戏管理”》“创建游戏”就弹出一个界面如下:
可以输入自己的真实明字或随便的游戏名字,只要不为空就可以了,然后点击创建游戏就可以了!
就点击主界面上的“准备”按钮,然后就出现一个“开始”按钮,然后服务器端的这个程序就等待客户端的连接,只要有两个客户端连接上来,并且它们都点击了“准备”按钮之后,服务器端再点“开始”按钮才会有效。
效果图如下:
这时等待客户端的连接。
那么怎样创建客户端程序呢!
样例如下:
选择“游戏管理”》“加入游戏”就弹出一个界面如下:
输入服务器端程序的IP地址,和自己的用户名后点击“连接”按钮即可连接服务,如果连接上了会弹出一个对话框如下:
点击确定之后:
点击“准备”按钮之后,等待服务器端的发牌。
当有两个客户端连接之后,并且它们都点击了“准备”按钮之后,服务器端就可以点击“开始”按钮发牌开始游戏了。
这时服务器也会将地主选择出来,此例当中选择的第二个用户为地主。
服务器端:
客户端1:
客户端2:
下面再来看一出牌的效果图:
先从地主开始出牌:
Client1:
Client2:
Server:
其实在选择要出的牌时,不光可以单击一张牌,也可以用鼠标拖动来选择牌。
游戏说明就说到这了,谢谢大家支持。
由于时间原因在这里我可能没有把网络实现讲一下,我可能会在以后有时间再写出来,就发到网上去,希望大家支持。
可能我的网络这一方面写的不是很优美,需要改进的地方可能会有很多。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络版 地主 UML 建模 代码