实现一个简单的猜拳游戏(剪刀石头布)
项目需求:
此游戏的规则为:人机对战。分为三局两胜,每一局比赛结束后,统计人和电脑的分数,从而得出当前局比赛的输赢。共三局,得出最终胜利者。
三局玩完后,询问是否继续比赛?用户输入:是,则比赛重新开始。输入:否,则程序结束退出。
思路:
人机对战需要:人、电脑、游戏规则和主函数四个类,人和电脑的类中需要name和score两个成员变量和一个出拳方式。游戏规则中需要定义:①玩3次,②获得结果,③开始,三个方法。
代码:
1.Person类:
import java.util.Scanner;
public class Person {
private String name; //私有成员变量
private int score;
public Person(String name) { //带参数的构造函数
this.name = name;
this.score = 0;
}
public int first() {
System.out.println("请输入你要出的拳:【0】石头,【1】剪刀,【2】布");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
return n;
}
public void addScore() { //增加分数
score += 1;
}
public int getScore() { //得到分数
return score;
}
public String getName() { //得到名字
return name;
}
}
2.Computer类:
import java.util.Random;
public class Computer {
private String name;
private int score;
public Computer(String name) {
this.name = name;
this.score = 0;
}
public int first() { //电脑随机出
Random random = new Random();
int n = random.nextInt(3)+1;//[1,3] [0,3) == > 1, 2 3
switch (n){
case 1:System.out.println(name+":"+"出石头");n = 0;break;
case 2:System.out.println(name+":"+"出剪刀");n = 1;break;
case 3:System.out.println(name+":"+"出布");n = 2;break;
}
return n;
}
public void addScore() { //增加分数
this.score += 1;
}
public int getScore() { //得到分数
return score;
}
public String getName() {//得到名字
return name;
}
}
3.Game类:
import java.util.Scanner;
public class Game {
private Person person;//组合
private Computer computer;
//用户 和 电脑
public Game(){
System.out.println("请输入您的名字:");
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
person = new Person(str);
computer = new Computer("电脑");
}
//三局两胜 胜者加分 比赛三局自动结束 每玩一局,判断赢家并输出。
private void playThreeTime(){
int count = 0;
while (count < 3) {
int pFirst = person.first();
int cFirst = computer.first();
if (pFirst == 0 && cFirst == 1 ||
pFirst == 1 && cFirst == 2 ||
pFirst == 2 && cFirst == 0) {//石头剪刀布,人赢
System.out.println(person.getName() + ":此局获胜");
person.addScore();
} else if (pFirst == cFirst) {
System.out.println("此局平局");
} else {
computer.addScore();
System.out.println(computer.getName() + ":此局获胜");
}
count++;
}
}
//获得比赛结果 分别输出此次比赛 各得到多少分 胜负情况
private void getResult(){
int pScore = person.getScore();
int cScore = computer.getScore();
if (pScore > cScore) {
System.out.println(person.getName() + ":最终结果赢了");
} else if (pScore == cScore) {
System.out.println("平局");
} else {
System.out.println(computer.getName() + ":最终结果赢了");
}
System.out.println(person.getName()+" : "+computer.getName()+" = "
+person.getScore()+" : "+computer.getScore());
}
public void start(){
while(true) {
playThreeTime();
getResult();
System.out.println("是否继续?【0】是 【1】否");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
if (n == 0) {
continue;
}else{
break;
}
}
}
}
4.Mainapp:
public class MainApp {
public static void main(String[] args) {
Game game = new Game();
System.out.println("========欢迎来到猜拳游戏==========");
System.out.println("游戏规则:三局两胜,每局统计分数,判断哪一方获胜,三局过后,得到最终胜利玩家"+'\n'+"最后可以选择继续和结束游戏");
System.out.println("==================");
game.start();
}
}