猜拳小游戏
项目要求:
项目分析:
设计people、computer、game三个类,还有一个main方法。在people和computer这两个类上写有名字,分数,还有他们各自的出拳方式,game这个类中写有游戏胜负的判定规则,比赛结果的比分。main方法进入游戏。
People类
public class People {
private String name;//private私有的成员变量
private int score;
public People(String name) {//构造函数并且带有参数
this.name = name;
this.score = 0;
}
//出拳方式
public String fist() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入出的招数:石头,剪刀,布");
String str = scanner.nextLine();
return str;
}
public void addScore(){//增加分数
score+=1;
}
public int getScore(){//得到分数
return score;
}
public String getName(){//得到名字
return name;
}
}
Computer类
public class Computer {
private String name;
private int score;
public Computer(String name){//具有参数的构造函数
this.score = 0;
this.name = name;
}
//出拳方式
public String fist(){
Random random = new Random();//随机数出拳
int n = random.nextInt(3)+1;//[0,3)==>1,2,3
String str = null;
switch (n){
case 1:System.out.print(name+":"+"出石头 ");str = "石头";break;
case 2:System.out.print(name+":"+"出剪刀 ");str = "剪刀";break;
case 3:System.out.print(name+":"+"出布 ");str = "布";break;
}
return str;
}
public void addScore(){//增加分数
score+=1;
}
public int getScore(){//得到分数
return score;
}
public String getName(){//得到名字
return name;
}
}
Game类
public class Game {
private People people;
private Computer computer;
//用户和电脑的名字
public Game(){
System.out.println("请输入你的名字:");
Scanner scanner = new Scanner(System.in);
String n = scanner.nextLine();
people = new People(n);
computer = new Computer("alpha");
}
//游戏规则为:三局两胜,胜者加分,比赛三局自动结束,每打一局,输出谁胜谁负。
private void playThreeTime(){
int count = 0;
while (count < 3) {
String pFist = people.fist();//调用出拳方式
String cFist = computer.fist();
if (pFist.equals("石头") && cFist.equals("剪刀") ||
pFist.equals("剪刀") && cFist.equals("布") ||
pFist.equals("布") && cFist.equals("石头")) {//People赢
System.out.println(people.getName()+":此局获胜");
people.addScore();//调用people的增加分数
} else if (pFist.equals(cFist)) {
System.out.println("此局平局");
} else {
computer.addScore();//调用computer的增加分数
System.out.println(computer.getName()+":此局获胜");
}
count++;
}
}
//获得比赛结果,分别输出此次比赛,各得到多少分,是否平局,还是谁胜利?
private void getResult(){
int pScore = people.getScore();
int cScore = computer.getScore();
if (pScore > cScore) {
System.out.println(people.getName() + ":最终结果赢了");
} else if (pScore == cScore) {
System.out.println("平局");
} else {
System.out.println(computer.getName() + ":最终结果赢了");
}
System.out.println(people.getName()+" : "+computer.getName()+" = "
+people.getScore()+" : "+computer.getScore());
}
public void start(){
while(true) {
playThreeTime();
getResult();
System.out.println("是否继续?");
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
if (str.equals("是")) {
continue;
}else{
break;
}
}
}
}
MainApp
public class TestMain {
public static void main(String[] args) {
Game game = new Game();
System.out.println("========欢迎来到猜拳游戏==========");
System.out.println("游戏规则:三局两胜,每局统计分数,判断"+'\n'
+"哪一方获胜,三局过后,得到最终胜利玩家"+'\n'+"最后可以选择继续和结束游戏");
System.out.println("==================");
game.start();
}
}