邸伟:基于JAVA的21点设计
图4.1 程序运行结果
图4.2 程序运行结果
11 - -
邸伟:基于JAVA的21点设计
程序中的部分注释:
1. public void start(){//开始游戏
System.out.println(\
System.out.println(\开始游戏!\
int n=3;
for(int i=0;i<3;i++){//电脑和玩家先各抽3张
computer[i]=nextOne();
human[i]=nextOne(); }
while(n<5){//牌数小于5时询问是否再要牌
show(human,n,1);//显示现在玩家的牌面
if(ask(human,n)){ //如果玩家要牌 computer[n]=nextOne();//电脑获得一张牌 human[n]=nextOne();//玩家获得一张牌 n++;//n的值自动加1 }
else break;////如果不选择加牌则跳出本循环 }
12 - -
邸伟:基于JAVA的21点设计
2. int nextOne(){//用递归确保返回的牌没有重复
int n=(int)(Math.random()*54);//通过随机的方法产生数
if(cards[n]==0){//如果产生的那个数字曾经没有用过那么就用,否则重新产生
cards[n]=1;//用过的赋值为1
if(n==52)//如果n的值为52
return 14;//返回的值为14
else if(n==53)//如果n的值为53
return 15;//返回的值为15
else return n+1;//这个数对13取模然后加1就是产生的牌,正常情况下,除13后剩下的牌就是牌的值
但数组是从0开始计数的 所以加1 0--12为13张1组牌,12-25下一组... 以此类推,共4组到51号牌 }
else return nextOne();//重新随机产生 }
13 - -
邸伟:基于JAVA的21点设计
3. int judge(int[] a,int[] b,int num){//判断电脑和玩家谁的点数更接近21,如果有鬼牌就另行判断
int sum_a=0,sum_b=0;//设置两个变量为了计数
boolean joker_a=false,joker_b=false;//分别代表人和电脑是否有鬼牌,true代表有
for(int i=0;i if(a[i]==14||a[i]==15)joker_a=true;//14为小鬼、15为大鬼 else sum_a+=a[i];//取和 if(b[i]==14||b[i]==15)joker_b=true; else sum_b+=b[i]; } if(joker_a)if(sum_a<8)sum_a+=13;//鬼牌可以任意1-13,如果鬼牌存在,并且其余牌总和小于8,那么现在加上13就是总和 else if(sum_a<21)sum_a=21;//如果除了鬼牌其余牌大于8小于21,那么总和就是21 if(joker_b)if(sum_b<8)sum_b+=13;//电脑和人判断方法一样 else if(sum_b<21)sum_b=21; 14 - - 邸伟:基于JAVA的21点设计 if(sum_a>21&&sum_b<=21)return -1;//最后判断大小,如果人的大于21并且电脑小于等于21那么电脑赢 if(sum_a<=21&&sum_b>21)return 1;//否则人赢 if(Math.abs(sum_a-21) return 1;//如果人的总和减去21然后取绝对值比电脑的小,那么人赢 else if(Math.abs(sum_a-21)==Math.abs(sum_b-21)) return 0;//一样的话平局 else //if(Math.abs(sum_a-21)>Math.abs(sum_b-21)) return -1;//否则电脑赢 15 - - 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库JAVA课程设计21点扑克牌(3)在线全文阅读。
相关推荐: