java⾯向对象编程--猜拳⼩游戏java⾯向对象编程实现--猜拳⼩游戏
⽬标
⽬标:玩家在控制台和电脑猜拳,电脑每次都会随机出⽯头/剪⼑/布,
直到玩家选择退出游戏。记录并显⽰玩家和电脑猜拳的成绩。
设计思路分析
电脑的随机猜拳可以使⽤随机数⽣成,这⾥规定 0表⽰⽯头,1 表⽰剪⼑,
2 表⽰布。为了显⽰清晰,可以设置⼀个⽅法将⽣成的随机数转换为对应
⽯头/剪⼑/布。
玩家在控制台输⼊(⽯头/剪⼑/布),但玩家也可能输⼊别的数,所以这⾥
需要做⼀个玩家的输⼊校验 ,并考虑给玩家退出游戏的选择。
记录的结果有玩家猜拳选择,电脑猜拳选择和胜负。为了⽅便管理和显⽰,
这⾥设计⼀个结果类。⽤于记录猜拳的结果,因为猜拳次数可能不⽌⼀次,所以
考虑将结果保存到集合中,这⾥使⽤ ArrayList集合。
具体代码实现如下:
import java.util.ArrayList;
import java.util.Scanner;
public class FingerGuessingGame {//测试实现类
public static void main(String[] args) {
Tom tom = new Tom();
tom.guess();
}
}
/
/玩家类
class Tom {
Scanner sc = new Scanner(System.in);
//猜拳
public void guess() {
System.out.println("----------猜拳游戏开始(-1退出)---------");
//使⽤ArrayList保存结果
ArrayList<GuessResult> results = new ArrayList<>();
while (true) {
//玩家输⼊
String tomGuess = checkInput();
/
/如果输⼊-1退出游戏
if (tomGuess.equals("-1"))
break;
//⽣成0-2的随机数
int num = (int) (Math.random() * 3);
//将获取到的数字按照之前的规定转换为字符串
String comGuess = convertComputerGuess(num);
System.out.println("电脑出 " + comGuess);
//判断输赢
String isWin = winORLoose(tomGuess, comGuess);
System.out.println(isWin);
/
/将结果添加到集合中
results.add(new GuessResult(tomGuess, comGuess, isWin));
}java生成随机数的方法
//输出结果
System.out.println("-------本次猜拳的结果------");
System.out.println("玩家\t\t\t电脑\t\t\t胜负");
for (GuessResult result : results) {
System.out.println(result);
}
}
//获取电脑猜拳结果
public String convertComputerGuess(int num) {
//0代表⽯头,1剪⼑,2布
if (num == 0)
return "⽯头";
if (num == 1)
return "剪⼑";
if (num == 2)
return "布";
return "";
}
//玩家输⼊校验
public String checkInput() {
while (true) {
System.out.println("你出(⽯头/剪⼑/布)-1退出:");
String choice = sc.next();
if (choice.equals("⽯头") || choice.equals("剪⼑") ||
choice.equals("布") || choice.equals("-1")) {
return choice;
} else
System.out.println("你的输⼊有误! 请检查并重新输⼊:");
}
}
/
/判断输赢
public String winORLoose(String tomGuess, String comGuess) {
if (tomGuess.equals("⽯头") && comGuess.equals("剪⼑"))
return "赢";
else if (tomGuess.equals("剪⼑") && comGuess.equals("布"))
return "赢";
else if (tomGuess.equals("布") && comGuess.equals("⽯头"))
return "赢";
else if (tomGuess.equals(comGuess))
return "平⼿";
else
return "输";
}
}
//结果类⽤于记录猜拳的结果
class GuessResult {
private String tomGuess;
private String ComGuess;
private String isWin;
public GuessResult(String tomGuess, String comGuess, String isWin) { Guess = tomGuess;
ComGuess = comGuess;
this.isWin = isWin;
}
@Override
public String toString() {
return
tomGuess +"\t\t\t"+
ComGuess + "\t\t\t" +
isWin ;
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论