梭哈游戏程序设计题意分析Word格式.docx
- 文档编号:21725019
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:13
- 大小:18.10KB
梭哈游戏程序设计题意分析Word格式.docx
《梭哈游戏程序设计题意分析Word格式.docx》由会员分享,可在线阅读,更多相关《梭哈游戏程序设计题意分析Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
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()
returnthis.dices;
}
packageshowHands.Dice;
importjava.util.Random;
publicclassDice{
privateintnumber;
publicDice()
rollIt();
privatevoidrollIt()
Randomrand=newRandom();
this.number=1+rand.nextInt(6);
publicintrollTheDice()
returnthis.number;
importshowHands.FiveDice.*;
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;
this.numberOfPlayers;
i++)
for(intj=0;
j<
7;
j++)
spare[i][j]=0;
privatevoidplay()
this.numberOfPlayers;
FiveDicefivedice=newFiveDice();
results[i]=fivedice.getDices();
privatevoidprintRollResults()
System.out.print("
Player"
+(i+1)+"
"
);
for(intj=0;
j++)
System.out.print(this.results[i][j]+"
System.out.println(getName(card[i].kind));
publicvoidprintGameResults()
getSpare();
judge();
printRollResults();
i++)
System.out.printf("
第%d名玩家%d%s\n"
i+1,card[i].player+1,getName(card[i].kind));
privatevoidgetSpare()
for(intj=0;
{
this.spare[i][this.results[i][j]]++;
//第I+1个人点数为results[i][j]的分布数加一
}
privatevoidjudge()
again:
for(inti=0;
card[i]=newCard();
card[i].player=i;
for(intj=1;
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<
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++)
if(j!
this.spare[i][k]==2)//判断为葫芦3
card[i].kind=kindOfCard.hulu3;
elseif(j!
this.spare[i][k]==1)//判断为三条
for(intl=1;
l<
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;
if(k!
=j&
this.spare[i][k]==2)//判断为两对
l++)//两对
if(this.spare[i][l]==1)
card[i].kind=kindOfCard.liangdui;
card[i].score=getRankScore(j)*100+getRankScore(k)*10+getRankScore(l);
elseif(this.spare[i][k]==1)//判断为一对
l++)
if(l!
this.spare[i][l]==1)
for(intm=1;
m<
m++)
if(m!
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].score=1;
else
for(intk=1;
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;
compare();
privatebooleanonlyOne(inta[])
intnums=0;
for(inti=1;
if(a[i]==1)nums++;
if(nums==5)
returntrue;
elsereturnfalse;
privatevoidcompare()
this.numberOfPlayers-1;
for(intj=i+1;
if(card[i].kind<
card[j].kind)
Cardtemp;
temp=card[i];
card[i]=card[j];
card[j]=temp;
elseif(card[i].kind==card[j].kind)
if(card[i].score<
card[j].score)
Cardtemp;
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:
顺子"
case6:
case5:
葫芦"
case4:
三条"
case3:
两对"
case2:
一对"
case1:
散牌"
default:
return"
恶心"
publicclassShowHands{
publicstaticvoidmain(String[]args)
/*Dicedice=newDice();
System.out.print(dice.rollTheDice());
*/
Gamegame=newGame();
//game.printRollResults();
game.printGameResults();
/*FiveDicefd=newFiveDice();
/*intFIves[][]=newint[5][5];
FiveDicefd=newFiveDice();
FIves[i]=fd.getDices();
5;
for(intj=0;
System.out.print(FIves[i][j]);
/*Dicedice=newDice();
100;
System.out.print(dice.rollTheDice());
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 梭哈 游戏 程序设计 题意 分析