comp是電腦產生的隨機數字(電腦出的拳),people 是人出的拳。 因為剪刀石頭布只有 1 2 3
創新互聯公司服務項目包括城東網站建設、城東網站制作、城東網頁制作以及城東網絡營銷策劃等。多年來,我們專注于互聯網行業,利用自身積累的技術優勢、行業經驗、深度合作伙伴關系等,向廣大中小型企業、政府機構等提供互聯網行業的解決方案,城東網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到城東省份的部分城市,未來相信會繼續擴大服務區域并繼續獲得客戶的支持與信任!
。如果電腦的數字比的你剛好大1,就是它比你的大。 如21,32對應就是(石頭大于剪刀,布大于石頭)。 但也有可能是剪刀大于布 。 那么剪刀的位子是1 ,布的位子是3. 所以當電腦數字減你的數字等于2時 就是(電腦出的布 ,你出的石頭這樣的情況了)。
所以是if((comp-people)==-1||(comp-people)==2) 這兩者結合就是你贏的時候
為了讓游戲有參與感,并體現java面對對象的思想,我先創建一個Player選手類,包含選手的名字playerName還有出拳方法guess()。出拳時采用隨機獲取0、1和2的方式分別代表石頭、剪刀和布,代碼如下:
public class Player {
private String playerName;
public Player(String playerName) {
this.playerName = playerName;
}
public String getPlayerName() {
return playerName;
}
//出拳方法 0-石頭 1-剪刀 2-布
public int guess() {
//隨機獲取0、1、2
int num = new Random().nextInt(3);
if (num == 0) {
System.out.print("選手" + this.playerName + "出的是石頭 ");
} else if (num == 1) {
System.out.print("選手" + this.playerName + "出的是剪刀 ");
} else if (num == 2) {
System.out.print("選手" + this.playerName + "出的是布 ");
}
return num;
}
}
然后在主類中,首先要輸入對局的總數,然后創建兩名選手進行pk,在pk()方法中制定了獲勝規則,詳見代碼注釋。最終統計并利用BigDecimal計算勝率(BigDecimal可以很完美的解決整數除法及其四舍五入保留小數的問題):
public class Main {
public static void main(String[] args) {
System.out.println("請輸入本局局數:");
Scanner scanner = new Scanner(System.in);
int sum = scanner.nextInt();
//創建結果數組,resultArray[0]代表p1的獲勝局數,resultArray[1]代表p2的獲勝局數,resultArray[2]代表平局局數
int[] resultArray = new int[3];
//創建兩名選手
Player p1 = new Player("張三");
Player p2 = new Player("李四");
for (int i = 0; i sum; i++) {
//根據總局數進行pk
int result = pk(p1, p2);
if (result == 1) {
resultArray[0]++;
} else if (result == -1) {
resultArray[1]++;
} else {
resultArray[2]++;
}
}
System.out.println("");
System.out.println("最終結果統計:");
System.out.println("選手[" + p1.getPlayerName() + "]獲勝局數為:" + resultArray[0] + ",勝率為:" +
new BigDecimal(resultArray[0]).multiply(new BigDecimal(100).divide(new BigDecimal(sum), 2, BigDecimal.ROUND_HALF_UP)) + "%");
System.out.println("選手[" + p2.getPlayerName() + "]獲勝局數為:" + resultArray[1] + ",勝率為:" +
new BigDecimal(resultArray[1]).multiply(new BigDecimal(100).divide(new BigDecimal(sum), 2, BigDecimal.ROUND_HALF_UP)) + "%");
System.out.println("平局局數為:" + resultArray[2] + ",平局率為:" +
new BigDecimal(resultArray[2]).multiply(new BigDecimal(100).divide(new BigDecimal(sum), 2, BigDecimal.ROUND_HALF_UP)) + "%");
}
//0-石頭 1-剪刀 2-布
//return 0:平局 1:p1獲勝 -1:p2獲勝
private static int pk(Player p1, Player p2) {
System.out.println("--------------------");
int a = p1.guess();
int b = p2.guess();
System.out.print("\n對局結果:");
//出拳相同平局
if (a == b) {
System.out.println("平局");
return 0;
}
//p1獲勝條件:p1出石頭時p2出剪刀,p1出剪刀時p2出步,p1出布時p2出石頭
else if ((a == 0 b == 1) || (a == 1 b == 2) || (a == 2 b == 0)) {
System.out.println("選手[" + p1.getPlayerName() + "]獲勝");
return 1;
}
//p2獲勝條件:p1出石頭時p2出布,p1出剪刀時p2出石頭,p1出布時p2出剪刀
else if ((a == 0 b == 2) || (a == 1 b == 0) || (a == 2 b == 1)) {
System.out.println("選手[" + p2.getPlayerName() + "]獲勝");
return -1;
} else {
//因為規定了隨機數產生0、1、2,所以其實不會走到本分支
throw new IllegalArgumentException("本局無效");
}
}
}
對局5局的運行結果:
我這里就只能統計當前游戲的數據了,如果你想統計多局游戲總的勝率信息,那么需要將每一局的比賽結果寫到txt文件里,最終根據txt文件內容統計即可。
Java實現猜拳游戲的核心在于電腦隨機數的生成,Java中的隨機數生成方法是:
首先引入包? ?import java.util.*;??然后???int r=new Random().nextInt(3);??(nextInt中的數字三代表隨機數生成的個數,從零開始)
所以在猜拳的輸入中需要有0、1、2三個數字代替,如果要輸入漢字,則用if進行相應判斷即可。
在實現的游戲中實現①猜拳;②記錄勝負;③玩家決定游戲局數;④輸出獲勝、失敗及平局;⑤統計總共的勝負結果(根據獲勝次數判斷)
①猜拳基礎功能:該部分代碼可以放到一個方法中,減少主函數代碼量。
電腦出拳即??int r=new Random().nextInt(3);??注意:該部分一定要寫在for循環內部,否則無法實現每次不同的隨機數。
通過if判斷雙方出拳是否相等? ?if(a==0r==0)? else?if(a==0r==1)? else if(a==0r==2)? ?即可實現猜拳,if內直接輸出相關語句即可
②記錄勝負:? 定義猜拳方法為int ,通過返回值記錄相關比賽的勝負情況? ,可以用0--失敗;1--獲勝;2--平局 進行記錄,在主函數中對相應拋出的數字記錄即可
if(a==0r==0){
System.out.println("The computer comes out with cloth,it was a draw. ");
return 2;
}
h=comp.compare(a,r); if (h==1) j++;
登錄后復制
③玩家決定局數: 定義一個數,在循環中不大于該數即可
④輸出獲勝、失敗及平局: j、k即勝利和失敗,平局數即n-j-k。
⑤統計結果,直接用if比較i、j的數字結果即可。
主函數部分:
package SS2_5;
import java.util.*;
public class Main {
public static void main(String args[]){
Scanner scanner=new Scanner(System.in);
Compare comp=new Compare();
int h=0,j=0,k=0;
System.out.println("rules:0--cloth;1--stone;2--scissors.\nU can choose how many times you want to play:");
int n=scanner.nextInt();
for(int i=1;i=n;i++){
System.out.print("It's the "+i+" round,your turn:");
int a=scanner.nextInt();
int r=new Random().nextInt(3);
switch (a){
case 0:
h=comp.compare(a,r);
break;
case 1:
h=comp.compare(a,r);
break;
case 2:
h=comp.compare(a,r);
break;
default:
System.out.println("Wrong number!");
break;
}
if (h==1)
j++;
else if(h==0)
k++;
}
System.out.println("The total times you won are "+j+",The draw times are "+(n-j-k)+".");
if(jk)
System.out.println("You are the final winner");
else if(kj)
System.out.println("The computer is the winner.");
if(j==k)
System.out.println("The final result is draw");
}
}
登錄后復制
compare方法部分
package SS2_5;
public class Compare {
public int compare(int a,int r){
int counter=0;
if(a==0r==0){
System.out.println("The computer comes out with cloth,it was a draw. ");
return 2;
}
else if(a==0r==1){
System.out.println("The computer comes out with stone, you won. ");
return 1;
}
else if(a==0r==2){
System.out.println("The computer comes out with scissor,you lost. ");
return 0;
}
else if(a==1r==0){
System.out.println("The computer comes out with cloth,you lost. ");
return 0;
}
else if(a==1r==1){
System.out.println("The computer comes out with stone,it was a draw. ");
return 2;
}
else if(a==1r==2){
System.out.println("The computer comes out with scissors,you won. ");
return 1;
}
else if(a==2r==0){
System.out.println("The computer comes out with cloth,you won. ");
return 1;
}
else if(a==2r==1){
System.out.println("The computer comes out with stone,you lost. ");
return 0;
}
else if(a==2r==2){
System.out.println("The computer comes out with scissors,it was a draw. ");
return 2;
}
else
return 0;
}
}
登錄后復制
java
704拖拉機
精選推薦
廣告
java寫簡單的猜拳游戲
2下載·0評論
2016年7月27日
用Java編寫的猜拳小游戲
2029閱讀·0評論·0點贊
2021年3月7日
Java猜拳游戲和Random的應用
21閱讀·0評論·0點贊
2022年10月24日
java實現完整版猜拳小游戲
25下載·0評論
2018年11月22日
用python實現功能猜拳
1137閱讀·2評論·3點贊
2022年7月14日
java猜拳switch計分制_java----猜拳(10局分勝負)
117閱讀·0評論·1點贊
2021年3月15日
二手拖拉機交易市場,你還在高價買嗎?
精選推薦
廣告
利用Java編寫簡單的猜拳游戲
911閱讀·0評論·1點贊
2022年9月8日
Java簡單實現猜拳游戲
1.1W閱讀·1評論·2點贊
2022年1月23日
java猜拳游戲代碼_Java實現簡單猜拳游戲
4496閱讀·0評論·0點贊
2021年3月1日
用java來寫一個簡單的猜拳小游戲
890閱讀·1評論·1點贊
2022年7月26日
java實現猜拳游戲
3180閱讀·2評論·1點贊
2022年5月4日
JAVA編寫猜拳游戲
3037閱讀·3評論·3點贊
2021年3月16日
[Java教程]17.實戰,趣味猜拳小游戲
8040閱讀·2評論·3點贊
2020年6月24日
怎么用java實現人機猜拳?
1959閱讀·6評論·9點贊
2021年7月22日
Java Random經典例子【猜拳游戲】
4318閱讀·0評論·0點贊
2014年3月22日
java的人機猜拳代碼_Java實現人機猜拳游戲
702閱讀·0評論·2點贊
2021年3月12日
Java基礎練習之猜拳游戲
363閱讀·1評論·1點贊
2021年8月19日
用java寫猜拳小游戲
1096閱讀·0評論·1點贊
2021年9月1日
Java猜拳小游戲
97閱讀·0評論·0點贊
2022年8月23日
java猜拳小游戲
500閱讀·1評論·0點贊
2022年7月14日
名稱欄目:猜拳代碼java 猜拳程序代碼
當前網址:http://vcdvsql.cn/article30/dosdcso.html
成都網站建設公司_創新互聯,為您提供微信小程序、定制網站、商城網站、關鍵詞優化、網站改版、建站公司
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯