Java程序设计人机猜拳
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java程序设计实验报告
班级:11060341X 学号:50 姓名:马一桃
实验题目:猜拳小游戏
实验要求:
用java编写一个人机对战的猜拳小游戏。人选择性出拳,电脑随机出拳,判断输赢,记录输赢情况。有简单的操作界面。
实验内容:
1、问题分析过程:
人机猜拳:人可以通过选择出拳,通过键盘输入相应数字来实现。电脑则随机性出拳,由电脑产生随即数来实现。
通过游戏规则判断双方的输赢,显示当局的输赢情况,并记录当局的分数,并各方的输赢情况。游戏结束时显示双方的分数以及输赢情况。
面向的对象有人、电脑以及游戏规则。人、电脑都有实现自己出拳的方法,同时还要有判断各方输赢的方法。
2、主要实现代码:(要求有必要的注释):
import java.util.Scanner; //通过import语句引入Scanner类
public class Game{
public static void main(String args[]){
int x=0; //用户的初始分数为0
int y=0; //电脑的初始分数为0
int z=0; //开始时决战次数为0
System.out.println("\n");
System.out.println("猜拳游戏现在开始,准备好了吗?");
System.out.println("===========游戏规则===========");
System.out.println(" 胜利加一分,否则不加分 ");
System.out.println(" 当游戏结束时分高者为胜 ");
System.out.println("==============================");
Scanner shuzi = new Scanner(System.in); //用户通过键盘输入
System.out.println("是否要开始游戏?"+"\n"+" y/n");
String m = shuzi.next();
while(m.equals("y")) {
System.out.println("请选择数字出拳:");
System.out.println("1 石头 2 剪刀 3 布");
int A = shuzi.nextInt(); //利用switch语句,用户实现出拳
switch(A){
case 1:
System.out.println("我出拳: 石头");
break;
case 2:
System.out.println("我出拳: 剪刀");
break;
case 3:
System.out.println("我出拳: 布");
break;
}
int B = (int)((Math.random()*10)%3 + 1); //电脑产生随机数,进行出拳 switch(B){
case 1:
System.out.println("电脑出拳: 石头");
break;
case 2:
System.out.println("电脑出拳: 剪刀");
break;
case 3:
System.out.println("电脑出拳: 布");
break;
}
if(A==B){ //一局游戏判断输赢的过程System.out.println("哎呦,平局!再努力! ");
z++;
}
else if(((A==1)&(B!=3))||((A==2)&(B!=1))||((A==3)&(B!=2))){
System.out.println("不错嘛,赢了!");
x++;
z++;
}
else{
System.out.println("唉,输了,得加油啊!");
y++;
z++;
}
System.out.println("\n");
System.out.println("有种再来一局"+"\n"+"y/n");
m = shuzi.next();
}
System.out.println("游戏结束" );
System.out.println("对战的次数为"+z);
System.out.println("你的分数:" +x);
System.out.println("电脑的分数:"+y);
if(x>y){ //最终比游戏结果的判断System.out.println("噢耶!完胜电脑!");
}
else if(x==y){
System.out.println("彼此彼此,水平相当么~");
}
else{
System.out.println("不幸输了,改日再和你较量!");
}
}
}
开始界面
进行一局游戏结果
游戏最终结果的判断
3、实验心得体会:
3.1出现的问题及解决方案
(1)在编译源文件时,出现了这么个问题
这是一个编码的问题。Java中采用Unicode字符编码,而选用UTF-8或UTF-16,而非GBK编码。我们也用命令行来编译java文件时,由于编码格式的问题,这种时候就会出现错误编码GBK 的不可映射字符。我们用的命令行敲的java命令默认是用本机的编码格式,所以才出现了GBK这个字眼。解决这个问题当然是指定在编译时的编码格式。
(2)还遇到一个问题,java源文件能成功的通过编译。但是,当执行java命令时,出现了“错误:找不到或无法加载主类”的问题。既然编译时成功了,说明语法是没有错误的。检查了下环境变量,发现路径配置并没有完全正确。在classpath和path的变量值上,%java_home%\lib\dt.jar;%java_home%\lib\tools.jar以及%java_home%\bin语句前都没有“. ;”符号,因此执行java命令时,无法执行,出现了“错误:找不到或无法找到主类”这样的问题。添加符号后,程序可正常执行。
3.2心得体会
1.通过对猜拳游戏的编写,深刻认识到了Java面向对象这一重要思想;
2.编译过程中,环境变量的设置,是很重要的。了解的PATH、CLASSPATH的作用;
3.写代码的过程必须仔细,经常由于不细心导致代码出错;
4.应该多学多写多练,在实践中熟悉应用代码。