JAVA编程~~21点游戏源代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学号********
天津城建大学
Java 语言程序设计C
实验报告
实验1:21点游戏
学生姓名杨弘毅
班级卓越七班
实验一21点游戏
一、实验目的
1.掌握使用Java语言进行结构化程序设计;
2.熟悉Java基本语法,基本数据类型,各种运算符及表达式的使用,掌握运算符优先级,熟悉使用Java的选择语句,循环语句。
3.熟悉Eclipse开发环境,编写简单的Application程序,并编译和执行。
二、实验要求
1.调试程序、编译,运行后得到正确的结果;
2.写出实验报告,要求记录编译和执行Java程序当中的系统错误信息提示,并给出解决办法。
三、实验环境
1.计算机一台;
2.JDK、MyEclipse工具软件。
四、实验内容
编写并运行21点游戏。
具有菜单形式的界面
掌握Random类基本用法
设计胜负判定算法
五、实验步骤
1.了解21点游戏的基本规则
2.用0到53代表52张扑克牌
3.完成洗牌发牌模块
4.设计胜负判定算法
源程序:
package a;
import java.util.Scanner;
import java.util.Arrays;
public class Play21 {
int[] cards,computer,human;//定义一副54张牌,电脑5张,玩家5张
Scanner sr=new Scanner(System.in);
public Play21(){//构造方法
cards=new int[54];//定义54个大小的数组表示扑克牌
Arrays.fill(cards,0);//54张牌全赋值零,一旦某一张牌被用了就赋1 computer=new int[5];//电脑5张牌
Arrays.fill(computer,0);
human=new int[5];//人5张牌
Arrays.fill(human,0);
}
public void clear(){//使数组内所有数据赋值0没有用过,用过的赋值1 Arrays.fill(cards,0);
Arrays.fill(computer,0);
Arrays.fill(human,0);
}
public void start(){//开始游戏
System.out.println("-------------------------------------");
System.out.println("开始游戏!");
int n=1;
for(int i=0;i<1;i++){//电脑和玩家先各抽1张
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++;
}
else break;
}
show(human,n,1);
show(computer,n,0);
if(judge(human,computer,n)==1)
System.out.println("\n你赢了!");
else if(judge(human,computer,n)==0)
System.out.println("\n平局!");
else if(judge(human,computer,n)==-1)
System.out.println("\n你输了!");
System.out.println("------------------------------------");
}
void show(int[] a,int num,int c){//显示牌面,如果c是1显示的是玩家的牌面,c是0显示的是电脑的牌面,num就是第几轮
if(c==1)System.out.println("\n"+(num-2)+":你现在的牌是:");
else System.out.println("\n"+(num-2)+":电脑现在的牌是:");
for(int i=0;i if(a[i]==1){System.out.print("A ");continue;} if(a[i]==11){System.out.print("J ");continue;} if(a[i]==12){System.out.print("Q ");continue;} if(a[i]==13){System.out.print("K ");continue;} if(a[i]==14){System.out.print("小鬼");continue;} if(a[i]==15){System.out.print("大鬼");continue;} System.out.print(a[i]+" ");//以空格为分割以次打印 } } boolean ask(int[] a,int num){ System.out.println("\n还抽一张?Y/N"); String ch=sr.nextLine(); if(!ch.equals("n")&&!ch.equals("N")) return true; else return false; } int nextOne(){//用递归确保返回的牌没有重复 int n=(int)(Math.random()*54);//通过随机的方法产生数 if(cards[n]==0){//如果产生的那个数字曾经没有用过那么就用,否则重新产生cards[n]=1;//用过的赋值为1 if(n==52) return 14; else if(n==53)