Java程序设计实验报告
班级: 学号: 姓名:
实验题目:猜拳小游戏
实验要求:
用java编写一个人机对战的猜拳小游戏。人选择性出拳,电脑随机出拳,判断输赢,记录输赢情况。有简单的操作界面。
实验内容:
1、 问题分析过程:
(1)首先分析猜拳游戏本身的玩法:
人选择性出拳,电脑随机出拳,判断输赢,记录输赢情况。
(2)用面向对象的思想来分析:
在游戏过程中有几个对象组成
人
电脑
游戏规则
抽象出3个类:Person、Computer、Game
Person类有哪些属性和行为呢?
属性:名字name,输赢次数(比分)score
行为:出拳ShowFirst() 选择性
Computer类有哪些属性和行为呢?
属性:名字name,输赢次数(比分)score
行为:出拳showFist() 随机
Game类有哪些属性和行为呢?
属性:游戏的双方(person、computer)、对战局数count
行为:产生角色initial()、游戏规则startGame()、显示比赛结果showResult()、统计 比赛结果calcResul()
2、 主要实现代码:
import java.util.*;
public class StartGame {
public static void main(String[]args){
Game start = new Game();//实例化游戏类
start.initial();//调用初始化方法
start.startGame();//调用游戏开始方法
start.showResult();//调用游戏结果显示方法
}
}
import java.util.*;
public class Person {
String name;//名字属性
int score;//积分属性
//出拳方法
public int showFist(){
System.out.print("\n请出拳:1.剪刀2.石头3.布(输入相应数字):");
Scanner input = new Scanner(System.in);
int num = input.nextInt();
String fist = "";//保存出拳
switch(num){
case 1:
fist = "剪刀";
break;
case 2:
fist = "石头";
break;
case 3:
fist = "布";
break;
}
System.out.println(name + "出拳:" + fist);
return num;
}
}
import java.util.*;
public class Game {
//Person person;//甲方
//Computer computer;//乙方
int count;//对战次数
Person person = new Person();//实例化用户类
Computer computer = new Computer();//实例化计算机类
//初始化方法
public int initial(){
count = 0;
return count;
}
//游戏开始方法
public void startGame(){
//显示游戏开始界面
System.out.println(" ---------------欢 迎 进 入 游 戏 世 界--------------\n");
System.out.println("\t\t******************************");
System.out.println("\t\t** ^_^ 猜拳,Start ^_^ **");
System.out.println("\t\t*****************************");
System.out.println("\n\n出拳规则:1.剪刀 2.石头 3.布");
//选择计算机角色
System.out.print("请选择对方角色:1.刘备 2.孙权 3.曹操:");
Scanner input = new Scanner(System.in);
int num = input.nextInt();
switch(num){
case 1:
computer.name = "刘备";
break;
case 2:
computer.name = "孙权";
break;
case 3:
computer.name = "曹操";
break;
}
//输入用户角色名
System.out.print("请输入你的姓名:");
person.name = input.next(); //显示对战双方
System.out.print(person.name + " VS " + computer.name + " 对战\n");
//开始游戏
System.out.print("\n要开始吗?(y/n)");
String con = input.next();
int perFist;//用户出的拳
int compFist;//计算机出的拳
if(con.equals("y")){//判断是否开始
String answer = "y";
while("y".equals(answer)){//循环条件是是否开始下一轮
//出拳
perFist = person.showFist();//调用用户出拳方法
compFist = computer.showFist();//调用计算机出拳方法
//裁决
if((perFist == 1 && compFist == 1) ||
(perFist == 2 && compFist == 2) ||
(perFist == 3 && compFist == 3)){
System.out.println("结果:和局,真衰!\n");//平局
}
else if((perFist == 1 && compFist == 3) ||
(perFist == 2 && compFist == 1) ||
(perFist == 3 && compFist == 2)){
System.out.println("结果:恭喜, 你赢了!\n");//用户赢
person.score++;//累计用户积分
}
else{
System.out.println("结果说:^_^,你输了,真笨!\n");//计算机赢
computer.score++;//累计计算机积分
}
count++;//累计对战次数
System.out.print("是否开始下一轮(y/n):");
answer = input.next();
}
}
} //比较得分情况的方法
public void showResult(){
System.out.println("------------------------------------------------------");
System.out.println(computer.name + " VS " + person.name);
System.out.println("对战次数:" + count);
System.out.println("\n姓名\t得分\n" + person.name + "\t" + person.score
+ "\n" + computer.name + "\t" + computer.score + "\n");
//比较积分
if(computer.score == person.score){
System.out.println("结果:打成平手,下次再和你一分高下!");
}
else if(computer.score < person.score){
System.out.println("结果:你果然是高手," + computer.name + "佩服!");
}
else{
System.out.println("结果:呵呵,笨笨,下次加油哦!");
}
System.out.println("------------------------------------------------------");
}
}
public class Computer {
String name;//名字属性
int score;//积分属性
//出拳方法
public int showFist(){
int num = (int)(Math.random()*3) + 1;
String fist = "";
switch(num){
case 1:
fist = "剪刀";
break;
case 2:
fist = "石头";
break;
case 3:
fist = "布";
break;
}
System.out.println(name + "出拳:" + fist);
return num;
}
}
运行界面:
3、 实验心得体会:
从本次课程设计的完成中,我发现我有很多不足的地方,最突出的是所掌握的知识太少,学到的知识应用不到实践中。后来通过看书查找相关资料,完成课程设计任务。
程序设计语言是程序设计的工具,如果想有效的设计程序,正确的应用程序表达算法,必须准确应用程序设计语言;学习程序设计,必须要多读程序,并试着自己编写程序,多上机调试程序代码。
展开阅读全文