梭哈游戏程序设计题意分析.docx

上传人:b****6 文档编号:8588805 上传时间:2023-01-31 格式:DOCX 页数:13 大小:18.10KB
下载 相关 举报
梭哈游戏程序设计题意分析.docx_第1页
第1页 / 共13页
梭哈游戏程序设计题意分析.docx_第2页
第2页 / 共13页
梭哈游戏程序设计题意分析.docx_第3页
第3页 / 共13页
梭哈游戏程序设计题意分析.docx_第4页
第4页 / 共13页
梭哈游戏程序设计题意分析.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

梭哈游戏程序设计题意分析.docx

《梭哈游戏程序设计题意分析.docx》由会员分享,可在线阅读,更多相关《梭哈游戏程序设计题意分析.docx(13页珍藏版)》请在冰豆网上搜索。

梭哈游戏程序设计题意分析.docx

梭哈游戏程序设计题意分析

•题目1:

请按照游戏规则和要求编程。

◦“梭哈”游戏规则如下:

•梭哈(来自英文showhands)是从扑克牌中借鉴过来的。

每人五个骰子,摇出后,依其点数牌形可分为:

散牌(五个骰子点数各不一样)、一对(五个骰子中仅有两个骰子点数一样,其余皆不一样)、两对(两个对子加一个其他点数,如一对二加一对四加一个三)、三条(三个骰子的点数一致,余下两个骰子点数各不相同,如三个四加一个二和一个六)、葫芦(也就是扑克牌中的三条带一对:

三个骰子点数同为某数,余下两个骰子点数同为另一数,如三个三加一对二)、(其中四个骰子的点数一致,如四个一加一个五)、顺子(五个骰子点数呈连续分布,如12345和23456)、豹子(五个骰子点数全一样)。

•胜负规则为豹子>顺子>>葫芦>三条>两对>对子>散牌。

若属于同一类型,则依次比较类型构成主次要成分的骰子点数大小。

如先比较四个相同骰子的点数,再比较散牌;葫芦先比较三个相同骰子再比较对牌;两对先比较较大的对,再比较稍小的对,最后比较散牌;如此类推。

比较点数时1>6>5>4>3>2。

试举例,如双方均为葫芦,一人为三个五带对二,另一人为三个四带对六,前者胜;又若双方均为两对,同有对二、对六,但一方散牌为五、另一方为一,则后者胜。

◦要求:

请编程实现如下功能:

•分别产生六组随机数(对应六个玩家),根据上面的规则判断所产生的骰子点数牌型,并输出。

•比较六个玩家的胜负,并输出。

设计个类

该类有两个字段表示类的优先级

Card

{

kind;{1,2,3,4,5,6,7,8}//葫芦有两种,所以要区分开来我另外设计了类型

Rankscore//同一个类型下的积分分布

积分:

1、豹子:

积分按所得骰子的getrankscore()

2、顺子,分布12345积分为1,分布23456积分为0

3、葫芦4:

所得最多骰子的getrankscore*100+剩余的一个的getrankscore

4、葫芦3:

所得最多的骰子的getrankscore*100+剩余的两个的getrankscore

5、三条:

所得最多骰子的getrankscore*100+一个getrankscore*10+一个getrankscore

6、两对。

所得骰子rank前的一对getrankscore*100+第二对geteankscore*10+余下的一个的骰子分getrankscore

7、一对、所得骰子对getrankscore*1000+剩余骰子rank最前的getrankscore*100+......(类似)

8散牌,没有的那一张的rank分(另外设计一个函数)

packageshowHands.FiveDice;

importshowHands.Dice.*;

publicclassFiveDice{

privateintdices[]=newint[5];

publicFiveDice()

{

throwDices();

}

privatevoidthrowDices()

{

Dicedice=newDice();

for(inti=0;i<5;i++)

{

dices[i]=dice.rollTheDice();

}

}

publicint[]getDices()

{

throwDices();

returnthis.dices;

}

}

packageshowHands.Dice;

importjava.util.Random;

publicclassDice{

privateintnumber;

publicDice()

{

rollIt();

}

privatevoidrollIt()

{

Randomrand=newRandom();

this.number=1+rand.nextInt(6);

}

publicintrollTheDice()

{

rollIt();

returnthis.number;

}

}

importshowHands.FiveDice.*;

importshowHands.Dice.*;

publicclassGame{

finalintnumberOfPlayers=6;

intresults[][]=newint[6][5];

intspare[][]=newint[6][7];//每个点数的个数

//enumkindOfCad{baozi,shunzi,hulu4,hulu3,santiao,liangdui,yidui,sanpai}

Card[]card=newCard[6];

privatestaticclasskindOfCard

{

staticintbaozi=8;

staticintshunzi=7;

staticinthulu4=6;

staticinthulu3=5;

staticintsantiao=4;

staticintliangdui=3;

staticintyidui=2;

staticintsanpai=1;

}

classCard

{

publicintplayer;

publicintkind;

publicintscore;

}

publicGame()

{

play();

initSpare();

}

/*

*初始化每个点数个数为零

*/

privatevoidinitSpare()

{

for(inti=0;i

for(intj=0;j<7;j++)

spare[i][j]=0;

}

privatevoidplay()

{

for(inti=0;i

{

FiveDicefivedice=newFiveDice();

results[i]=fivedice.getDices();

}

}

privatevoidprintRollResults()

{

for(inti=0;i

{

System.out.print("Player"+(i+1)+"");

for(intj=0;j<5;j++)

System.out.print(this.results[i][j]+"");

System.out.println(getName(card[i].kind));

}

}

publicvoidprintGameResults()

{

getSpare();

judge();

printRollResults();

for(inti=0;i

{

System.out.printf("第%d名玩家%d%s\n",i+1,card[i].player+1,getName(card[i].kind));

}

}

privatevoidgetSpare()

{

for(inti=0;i

{

for(intj=0;j<5;j++)

{

this.spare[i][this.results[i][j]]++;//第I+1个人点数为results[i][j]的分布数加一

}

}

}

privatevoidjudge()

{

again:

for(inti=0;i

{

card[i]=newCard();

card[i].player=i;

for(intj=1;j<7;j++)//根据点数个数来进行分类

{

if(this.spare[i][j]==5)//判断为豹子

{

card[i].kind=kindOfCard.baozi;

card[i].score=getRankScore(j);

continueagain;

}

elseif(this.spare[i][j]==4)//判断为葫芦4

{

card[i].kind=kindOfCard.hulu4;

for(intk=1;k<7;k++)

if(j!

=k&&this.spare[i][k]==1)

{

card[i].score=getRankScore(j)*100+getRankScore(k);

continueagain;

}

}

elseif(this.spare[i][j]==3)//三个同点数

{

for(intk=1;k<7;k++)

if(j!

=k&&this.spare[i][k]==2)//判断为葫芦3

{

card[i].kind=kindOfCard.hulu3;

card[i].score=getRankScore(j)*100+getRankScore(k);

continueagain;

}

elseif(j!

=k&&this.spare[i][k]==1)//判断为三条

{

for(intl=1;l<7;l++)

if(l!

=j&&this.spare[i][l]==1)

{

inta=getRankScore(k),b=getRankScore(l);//a,b对应相应的优先积分

card[i].kind=kindOfCard.santiao;

if(a>b)

card[i].score=getRankScore(j)*100+a*10+b;

else

card[i].score=getRankScore(j)*100+b*10+a;

continueagain;

}

}

}

elseif(this.spare[i][j]==2)//两个点数相同

{

for(intk=1;k<7;k++)

if(k!

=j&&this.spare[i][k]==2)//判断为两对

{

for(intl=1;l<7;l++)//两对

if(this.spare[i][l]==1)

{

card[i].kind=kindOfCard.liangdui;

card[i].score=getRankScore(j)*100+getRankScore(k)*10+getRankScore(l);

continueagain;

}

}

elseif(this.spare[i][k]==1)//判断为一对

{

for(intl=1;l<7;l++)

if(l!

=k&&this.spare[i][l]==1)

for(intm=1;m<7;m++)

if(m!

=k&&m!

=l&&this.spare[i][m]==1)

{

card[i].kind=kindOfCard.yidui;

card[i].score=getRankScore(j)*1000+getRankScore(k)*100+getRankScore(l)*10+getRankScore(m);

continueagain;

}

}

}

elseif(onlyOne(this.spare[i]))//处理每个点数只有一个的情况

{

if(this.spare[i][1]==0)

{

card[i].kind=kindOfCard.shunzi;

card[i].score=0;

continueagain;

}

elseif(this.spare[i][2]==0)

{

card[i].kind=kindOfCard.shunzi;

card[i].score=1;

continueagain;

}

else

{

for(intk=1;k<7;k++)

if(this.spare[i][k]==0)

{

intscore;//按缺失的牌计分

switch(k)

{

case1:

score=1;//一是最大的少掉了就是最小的

case6:

score=2;

case5:

score=3;

case4:

score=4;

case3:

score=5;

default:

score=6;

}

card[i].kind=kindOfCard.sanpai;

card[i].score=score;

continueagain;

}

}

}

}

}

compare();

}

privatebooleanonlyOne(inta[])

{

intnums=0;

for(inti=1;i<7;i++)

if(a[i]==1)nums++;

if(nums==5)

returntrue;

elsereturnfalse;

}

privatevoidcompare()

{

for(inti=0;i

for(intj=i+1;j

if(card[i].kind

{

Cardtemp;

temp=card[i];

card[i]=card[j];

card[j]=temp;

}

elseif(card[i].kind==card[j].kind)

{

if(card[i].score

{

Cardtemp;

temp=card[i];

card[i]=card[j];

card[j]=temp;

}

}

}

privateintgetRankScore(intnum)

{

switch(num)

{

case1:

return6;

case6:

return5;

case5:

return4;

case4:

return3;

case3:

return2;

case2:

return1;

default:

return0;

}

}

privateStringgetName(intkind)

{

switch(kind)

{

case8:

return"豹子";

case7:

return"顺子";

case6:

case5:

return"葫芦";

case4:

return"三条";

case3:

return"两对";

case2:

return"一对";

case1:

return"散牌";

default:

return"恶心";

}

}

}

 

importshowHands.Dice.*;

importshowHands.FiveDice.*;

publicclassShowHands{

publicstaticvoidmain(String[]args)

{

/*Dicedice=newDice();

System.out.print(dice.rollTheDice());*/

Gamegame=newGame();

//game.printRollResults();

game.printGameResults();

/*FiveDicefd=newFiveDice();*/

/*intFIves[][]=newint[5][5];

for(inti=0;i<5;i++)

{

FiveDicefd=newFiveDice();

FIves[i]=fd.getDices();

}

for(inti=0;i<5;i++)

for(intj=0;j<5;j++)

System.out.print(FIves[i][j]);*/

/*Dicedice=newDice();

for(inti=0;i<100;i++)

System.out.print(dice.rollTheDice());*/

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 人力资源管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1