Java作業 第十三章 人機猜拳
阿新 • • 發佈:2018-12-09
人機猜拳: 人機類Computer程式碼:
import java.util.Scanner;
public class Computer {
String name = "電腦";// 名字
int score = 0;// 積分
public int showFist() {
//產生隨機數
int show = (int) ((Math.random()*10)%3+1); // 產生隨機數,表示電腦出拳
//輸出出拳結果並返回
switch (show) {
case 1:
System.out .println(name+"出拳:剪刀");
break;
case 2:
System.out.println(name+"出拳:石頭");
break;
case 3:
System.out.println(name+"出拳:布");
break;
}
return show;
}
}
使用者類Person:
import java.util.*;
public class Person {
String name = "匿名" ; //名字
int score = 0; //積分
public int showFist(){
//接收使用者的選擇
Scanner input = new Scanner(System.in);
System.out.print("\n請出拳(1.剪刀2.石頭3.布):");
int show = input.nextInt();
//輸出出拳結果,並且返回
switch (show) {
case 1:
System.out.println("你出拳:剪刀" );
break;
case 2:
System.out.println("你出拳:石頭");
break;
case 3:
System.out.println("你出拳:布");
break;
}
return show;
}
}
遊戲類核心Game:
import java.util.*;
public class Game {
Person person ; //甲方
Computer computer;// 乙方
int count;// 對戰次數
public void inital(){
person = new Person();
computer = new Computer();
count = 0;
}
//開始遊戲
public void startGame(){
System.out.println("-------------歡迎進入猜拳遊戲---------------");
System.out.println();
System.out.println("******************************************");
System.out.println(" ** 猜拳,開始 **");
System.out.println("******************************************");
System.out.println();
System.out.println("出拳規則:1.剪刀2.石頭3.布");
Scanner input = new Scanner(System.in);
String exit="n";//退出系統
do {
inital();//初始化
//選擇對手
System.out.print("選擇你的對手(1.劉備2.孫權3.曹操):");
int role = input.nextInt();
switch (role) {
case 1:
computer.name="劉備";
System.out.println("你選擇了"+ computer.name+"對戰");
break;
case 2:
computer.name="孫權";
System.out.println("你選擇了"+computer.name+"對戰");
break;
case 3:
System.out.println("你選擇了"+computer.name+"對戰");
break;
default:
System.out.println("輸入錯誤!");
break;
}
//遊戲玩家輸入姓名
System.out.print("請輸入你的姓名:");
person.name=input.next();
System.out.println(person.name+" VS "+computer.name+"對戰\n");
//開始遊戲
System.out.print("要開始嗎?(y/n)");
//開始一局遊戲
String start = input.next();
int perFist;//使用者出拳
int comFist;//電腦出拳
while (start.equals("y")) {
//出拳
perFist = person.showFist();
comFist = computer.showFist();
//判斷勝負
if ((perFist==1&&comFist==1)||(perFist==2&&comFist==2)||(perFist==3&&comFist==3)) {
System.out.println("結果:和局,真衰!\n");//平局
}else if ((perFist==2&&comFist==1)||(perFist==3&&comFist==2)||(perFist==1&&comFist==3)) {
System.out.println("結果:恭喜,你贏了!\n");//勝利
person.score++;
}else {
System.out.println("結果說:^_^,你輸了,真笨!\n");//計算機贏
computer.score++;
}
count++;
System.out.print("是否進行下一輪(y/n)");
start = input.next();
}
//顯示結果
showResult();
System.out.print("\n要開始下一局嗎?(y/n):");
exit = input.next();
System.out.println();
} while (!exit.equals("n"));
System.out.println("系統退出");
}
private void showResult() {
// TODO Auto-generated method stub
//顯示對戰次數
System.out.println("------------------------------");
System.out.println(computer.name+" VS "+person.name);
System.out.println("對戰次數:"+count);
//顯示最終得分
System.out.println("\n姓名\t得分");
System.out.println(person.name+"\t"+person.score);
System.out.println(computer.name+"\t"+computer.score+"\n");
//顯示對戰結果
int result = calcResult();
if (result==1) {
System.out.println("結果:打成平手,真衰!");
}else if (result==2) {
System.out.println("結果:恭喜,你贏了!");
}else
{
System.out.println("結果:呵呵,笨笨,下次加油啊!");//計算機贏
}
System.out.println("--------------------------");
}
//計算比賽結果
private int calcResult() {
// TODO Auto-generated method stub
if (person.score == computer.score) {
return 1;//戰平
}else if (person.score > computer.score) {
return 2;//遊戲玩家贏
}else {
return 3;//惜敗
}
}
}
測試類Test:
package class3;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Game game = new Game();
game.inital();
game.startGame();
}
}
輸出結果: