第一次用java写这么长的代码,自己写出来很开心,很有成就感,想分享一下自己的快乐,也希望能和小伙伴们一起学习进步,如有不足可以指出,谢谢!
/*
请编写一个猜拳的游戏
有个人 Tom,设计他的成员变量. 成员方法, 可以电脑猜拳. 电脑每次都会随机生成 0, 1, 2
0 表示 石头 1 表示剪刀 2 表示 布
并要可以显示 Tom的输赢次数(清单), 假定 玩三次.
*/
import java.util.Random;
import java.util.Scanner;
public class CaiQuan {
public static void main(String[] args) {
Tom tom = new Tom();
tom.mora(3);
}
}
//设计一个类,方法完成猜拳
//循序渐进思想,先实现基本功能,再实现附加功能
class Tom{
//表示电脑与Tom的出拳,范围0~2
int moraTom;
int moraComputer;
//表示玩家与电脑的分数
int scoreTom;
int scoreComputer;
//猜拳方法
public void mora(int times){//表示猜拳次数
//创建二维数组,存储每次出拳情况
int[][] arr = new int[times][2];
//创造字符数组记录每次输赢
String[] strArr = new String[times];
//猜拳前将分数清零
scoreComputer = 0;
scoreTom = 0;
for(int i=0;i < times;i++){
//获得Tom的出拳
moraTom = getTomMora();
//获得电脑的出拳
moraComputer = getComputerMora();//为了美观这么写了
//将记录存入数组
arr[i][0] = moraTom;
arr[i][1] = moraComputer;
//比较出拳
int result = vs();//记录比赛结果
//将记录存入数组
if(result == 1){
strArr[i] = "赢";
}else if(result == 0){
strArr[i] = "输";
}else{
strArr[i] = "平";
}
//打印本次比赛
print(result);
}
//输出清单
printresult(times,arr,strArr);
}
//获取玩家出拳
public int getTomMora(){
//使用系统输入方法,创建对应对象
Scanner myscanner = new Scanner(System.in);
System.out.println("你想出什么:0~拳头;1~剪刀;2~布");
int num = myscanner.nextInt();
//检验输入
if(num<0 || num>2){
System.out.println("非法输入,请输入0~2!");
return getTomMora();//递归的妙用,可以让用户一直输入直到正确
}else{
return num;
}
}
//获取电脑出拳
public int getComputerMora(){
//使用系统提供的类来创造随机数
Random myRandom = new Random();
int num = myRandom.nextInt(3);
return num;
}
//人机大战
public int vs(){
//1代表人赢,0代表机器赢,2代表平手
if (moraTom == 0 && moraComputer == 1) {
return 1;
} else if (moraTom == 1 && moraComputer == 2) {
return 1;
} else if (moraTom == 2 && moraComputer == 0) {
return 1;
} else if (moraTom == moraComputer){
return 2;
} else {
return 0;
}
}
//打印本次比赛结果
public void print(int result){
if(result == 0){
scoreComputer++;
System.out.println("你出了:\"" + moraTom +
"\"机器出了:\"" + moraComputer + "\"你输了~~");
}else if(result == 1){
scoreTom++;//玩家赢的局数加1
System.out.println("你出了:\"" + moraTom +
"\"机器出了:\"" + moraComputer + "\"你赢了!");
}else{
System.out.println("你出了:\"" + moraTom +
"\"机器出了:\"" + moraComputer + "\"平手!");
}
}
//打印清单
public void printresult(int times,int[][] arr,String[] strArr){
System.out.println("局数\t玩家\t机器\t结果\t");
for(int i=0;i < times;i++){
System.out.println("第" + i + "局" + "\t" + arr[i][0] +
"\t" + arr[i][1] + "\t" + strArr[i]);
}
if(scoreComputer == scoreTom){
System.out.println("总结果:平手!");
}else if(scoreTom > scoreComputer){
System.out.println("总结果:你赢了!");
}else{
System.out.println("总结果:你输了(|^|)~~");
}
// System.out.println(scoreTom + " " + scoreComputer);
}
}