猜拳是由石頭、剪刀、布組成,可以選擇你的對手是誰,這里設定了3個對手(總裁、副總、總監),然后選擇你的出拳,通過使用數字1、2、3來分別代表著3種狀態。然后我們還需要加上計分的功能。這里我們建立4個類,人、機、主方法、測試類。
當然啦,我們都知道人類和機類的基本方法都差不多,因為我們要獲取到鍵盤的輸入內容,所以我們要使用這個Scanner ,這個在util包下面,我們直接導入就可以了。這里直接貼出的代碼:
~~~
import java.util.Scanner;
public class Person{
private String name;
private int score;
public Person(){
name="sdksdk0";
score=0;
}
public Person(String n){
name=n;
score=0;
}
public int showFist(){
Scanner input=new Scanner(System.in);
System.out.println("\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;
}
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public int getScore(){
return score;
}
public void setScore(int score){
this.score=score;
}
}
~~~
機類的話,自然需要一個隨機數了,這樣才可以隨機比較。
~~~
import java.util.Random;
public class Android{
private String name;
private int score;
public Android(String n){
name=n;
score=0;
}
public Android(){
name="Android";
score=0;
}
public int showFist(){
Random r=new Random();
int show=r.nextInt(3)+1;
switch(show){
case 1:
System.out.println("你出拳:剪刀");
break;
case 2:
System.out.println("你出拳:石頭");
break;
case 3:
System.out.println("你出拳:布");
break;
}
return show;
}
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public int getScore(){
return score;
}
public void setScore(int score){
this.score=score;
}
}
~~~
下面最重要的是我們的主方法類了。
我們需要來定義人、機、計分方法。
private Person person;
private Android android;
private int count;
功能初始化
public void initial(){
person=new Person();
android=new Android();
count=0;
}
定義顯示結果:
~~~
if(result==1){
System.out.println("結果:平分秋色");
} else if(result==2){
System.out.println("結果:"+person.getName()+"你贏了");
} else if(result==3){
System.out.println("結果:"+person.getName()+"你輸了"+android.getName()+"贏了");
}
~~~
在這幾種情況下是玩家贏了:
~~~
1?剪刀?2?石頭??3??布??
~~~
用戶1對機器3,用戶2對機器1,用戶3對機器2.
如果用戶輸入的和機器產生的一樣就是平局了,其余情況就是機器贏了。
至于計算分數的話就這樣就可以了android.setScore(android.getScore()+1);
完整代碼如下:
~~~
import java.util.Scanner;
public class Referee{
private Person person;
private Android android;
private int count;
//初始化功能
public void initial(){
person=new Person();
android=new Android();
count=0;
}
//計算 總分
public int calcResult(){
if(person.getScore()==android.getScore()){
return 1;
} else if(person.getScore()>android.getScore()){
return 2;
} else{
return 3;
}
}
//顯示總結果
public void showResult(){
System.out.println("======================");
System.out.println(person.getName()+"VS"+android.getName());
System.out.println("總對戰次數:"+count);
int result=calcResult();
if(result==1){
System.out.println("結果:平分秋色");
} else if(result==2){
System.out.println("結果:"+person.getName()+"你贏了");
} else if(result==3){
System.out.println("結果:"+person.getName()+"你輸了"+android.getName()+"贏了");
}
System.out.println("======================");
}
public void startGame(){
System.out.println("======================");
System.out.println("\n\t************************");
System.out.println("請選擇你的對手 1 總裁 2 副總 3 總監");
Scanner input=new Scanner(System.in);
int role=input.nextInt();
switch(role){
case 1:
android.setName("總裁");
break;
case 2:
android.setName("副總");
break;
case 3:
android.setName("總監");
break;
}
System.out.println("\n要開始嗎?[Y/N]");
String con=input.next();
int perFist;
int androidFist;
while(con.equals("Y")){
// perFist = person.showFist();
perFist=person.showFist();
androidFist=android.showFist();
if(perFist==androidFist){
System.out.println("結果:平局");
} else if((perFist==1&&androidFist==3)
||(perFist==2&&androidFist==1)
||(perFist==3&&androidFist==2)){
System.out.println("結果:"+person.getName()+"贏了!");
person.setScore(person.getScore()+1);
} else{
System.out.println("結果:"+person.getName()+"輸了");
android.setScore(android.getScore()+1);
}
count++;
System.out.print("\n是否開始下一輪(Y/N)");
con=input.next();
}
showResult();
}
}
~~~
最后,我們只需要一個測試類就可以了
~~~
public class StartGame{
public static void main(String[] args){
Referee r=new Referee();
r.initial();
r.startGame();
}
}
~~~
當然咯,如果你想要把測試類都寫在一起也是可以正常編譯出來的,不過不建議這樣做,這樣的話對代碼的重構性就不好了。使用命令javac StartGame.java進行編譯,然后 java StartGame 運行。

- 前言
- 內存溢出的解決方案
- 安卓消息推送解決方案
- 語言識別和聊天機器人的實現
- 抽屜效果的實現(DrawerLayout和SlidingMenu的對比)
- 植物大戰僵尸經典開發步驟
- 屏幕適配全攻略
- 安卓圖像處理入門教程
- android開發常用工具箱
- java基礎知識總結
- 剖析軟件外包項目
- java基礎知識——網絡編程、IO流
- 安卓性能優化手冊
- 電商活動中刮刮卡的實現
- Android系統的安全設計與架構
- AsnycTask的內部的實現機制
- Android應用UI設計流程
- 數據結構與算法,每日一道
- html5全解析
- 深入解讀XML解析
- 新聞客戶端案例開發
- 細說Http協議
- win10+ubuntu雙系統安裝方案
- 隨機驗證碼實現案例
- 動態數組的實現案例
- 猜拳游戲案例
- 商業級項目——基金客戶端的架構設計與開發(上)