人機猜拳(這是最近的一個總結)

来源:http://www.cnblogs.com/ln-ing/archive/2016/12/11/6159960.html
-Advertisement-
Play Games

人機猜拳是我自己原創的一段代碼,我剛學完do-while,知識有限,但自己感覺寫的這段代碼是我的一個小巔峰,發出來讓大家看看,新手能學到東西的話是極好的,然後更多的是想讓一些老鳥給點建議。這個寫代碼很枯燥,最近一直在寫,自己是深有體會,後來我就在練習的時候在自己的代碼里寫一些有趣的內容,下麵你們能看 ...


人機猜拳是我自己原創的一段代碼,我剛學完do-while,知識有限,但自己感覺寫的這段代碼是我的一個小巔峰,發出來讓大家看看,新手能學到東西的話是極好的,然後更多的是想讓一些老鳥給點建議。這個寫代碼很枯燥,最近一直在寫,自己是深有體會,後來我就在練習的時候在自己的代碼里寫一些有趣的內容,下麵你們能看到,這算是個自娛自樂的小技巧吧。自己也是剛學習沒多久,覺得學習不能一個人學,要大家一起學,俗話說:三個臭皮匠頂個諸葛亮,所以今天不僅是來發表一下自己的代碼,更重要的是在這裡露個臉,和大家認識一下,希望大家能照顧一下我這個菜鳥。廢話不多說了,下麵是代碼:

  1 import java.util.Scanner;
  2 public class CaiQuan {
  3     public static void main(String[] args) {
  4         Scanner input=new Scanner(System.in);
  5         System.out.println("--------歡迎進入猜拳游戲---------\n\n");
  6         System.out.println("  出拳規則:1.剪刀  2.石頭  3.布\n");
  7         System.out.println("******************************\n");
  8         System.out.println("*******  猜拳          開始      ********\n");
  9         System.out.println("******************************\n\n");
 10         System.out.println("游戲開始前給自己起一個威武霸氣的昵稱吧\n");
 11         System.out.println("請輸入你的昵稱:");
 12         String username=input.next();//讓用戶輸入昵稱
 13         String name="1";//給name一個初始值,name是computer的名字
 14         do{
 15             System.out.println("請選擇對戰角色(1.劉備  2.曹操  3.蓋倫):");
 16             boolean zhenjia=input.hasNextInt();//判斷輸入是否是數值
 17             while(!zhenjia){//如果不是數字,進入
 18                 String zhen=input.next();
 19                 System.out.println("您輸入的是:"+zhen+"  臣妾做不到啊!");
 20                 System.out.println("請重新選擇角色(1.劉備  2.曹操  3.蓋倫):");
 21                 zhenjia=input.hasNextInt();//判斷輸入是否是數值,如果不是 ,繼續迴圈
 22             }
 23             int num=input.nextInt();//取出的數字
 24             while(num>3||num<0){//判斷輸入的值是否是1-3,如果不是進入迴圈
 25                 System.out.println("臣妾做不到啊!");
 26                 System.out.println("請重新選擇角色(1.劉備  2.曹操  3.蓋倫):");
 27                 num=input.nextInt();//輸入數值,如果是1-3跳出迴圈,如果不是繼續迴圈
 28             }
 29             switch(num){
 30             case 1:
 31                 name="劉備";
 32                 break;
 33             case 2:
 34                 name="曹操";
 35                 break;
 36             case 3:
 37                 name="蓋倫";
 38                 break;
 39             }
 40         }while(name.equals("1"));//當name不是1時 ,跳出迴圈
 41         System.out.println("你選擇了  "+name+"對戰");
 42         String go;
 43         do{
 44             System.out.println(username+"\tVS\t"+name);
 45             //出拳代碼
 46             int i=1;//i是猜拳的輪數
 47             int userScore=0;//用戶得分
 48             int compScore=0;//computer得分
 49             String come;//當come賦值y,繼續迴圈,在下麵寫著
 50             do{
 51                 System.out.println("這是第"+i+"輪");
 52                 System.out.println("請出拳:1.剪刀 2.石頭  3.布");
 53                 boolean zhenjia=input.hasNextInt();//判斷輸入是否是數值
 54                 while(!zhenjia){//如果不是數字,進入
 55                     String zhen=input.next();//把上面的值放入此處,一邊下麵重新輸入
 56                     System.out.println("您輸入的是:"+zhen+"  臣妾做不到啊!");
 57                     System.out.println("請重新出拳:1.剪刀 2.石頭  3.布");
 58                     zhenjia=input.hasNextInt();//判斷輸入是否是數值,如果不是 ,繼續迴圈
 59                 }
 60                 int num=input.nextInt();//取出上面的數值
 61                 while(num>3||num<0){//判斷輸入的值是否是1-3,如果不是進入迴圈
 62                     System.out.println("臣妾做不到啊!");
 63                     System.out.println("請重新出拳:1.剪刀 2.石頭  3.布");
 64                     num=input.nextInt();//輸入數值,如果是1-3跳出迴圈,如果不是繼續迴圈
 65                 }
 66                 String user="";//儲存用戶的出拳
 67                 switch(num){
 68                 case 1:
 69                     System.out.println("你出拳:剪刀");
 70                     user="剪刀";
 71                     break;
 72                 case 2:
 73                     System.out.println("你出拳:石頭");
 74                     user="石頭";
 75                     break;
 76                 case 3:
 77                     System.out.println("你出拳:布");
 78                     user="布";
 79                     break;
 80                 }
 81                 String comp="";//儲存computer的猜拳
 82                 int numc=(((int)(Math.random()*10))%3+1);//隨機產生1-3
 83                 switch(numc){
 84                 case 1:
 85                     System.out.println(name+"出拳:剪刀");
 86                     comp="剪刀";
 87                     break;
 88                 case 2:
 89                     System.out.println(name+"出拳:石頭");
 90                     comp="石頭";
 91                     break;
 92                 case 3:
 93                     System.out.println(name+"出拳:布");
 94                     comp="布";
 95                     break;
 96                 }
 97                 if(user.equals(comp)){//判斷雙方出拳是否相同
 98                     System.out.println("雙方出拳:"+user+"  本局是平局");
 99                 }else{
100                     if(user.equals("剪刀")){//當用戶出剪刀時
101                         if(comp.equals("石頭")){//當computer出石頭時
102                             System.out.println(name+"贏了!");
103                             compScore++;
104                         }else{//當computer出布時
105                             System.out.println("你贏了!");
106                             userScore++;
107                         }
108                     }else if(user.equals("石頭")){
109                         if(comp.equals("布")){
110                             System.out.println(name+"贏了!");
111                             compScore++;
112                         }else{
113                             System.out.println("你贏了!");
114                             userScore++;
115                         }
116                     }else{
117                         if(comp.equals("剪刀")){
118                             System.out.println(name+"贏了!");
119                             compScore++;
120                         }else{
121                             System.out.println("你贏了!");
122                             userScore++;
123                         }
124                     }
125                 }
126                 i++;//猜拳輪數增加1
127                 System.out.println("繼續第"+i+"輪  y\n結束  n");
128                 come=input.next();//當come賦值y,繼續迴圈
129             }while("y".equals(come));//判斷come的值是否是y,如果是 ,繼續迴圈,否則跳出迴圈
130             System.out.println("游戲進行了"+(i-1)+"輪");
131             System.out.println("姓名\t得分");
132             System.out.println(username+"\t"+userScore);
133             System.out.println(name+"\t"+compScore);
1        if(userScore==compScore){//當得分一樣的情況,這是修改後添加的代碼
2                 System.out.println("你和"+name+"打了個平手");
3                 System.out.println("這怎麼能忍,打爆他才有快感");
4                 System.out.println(" 繼續y/認慫了n");
5             }else if(userScore>compScore){
135                 System.out.println("你把"+name+"打的落花流水");
136                 System.out.println("\t你tm帥呆了");
137                 System.out.println("再打"+name+"一局就把他打成豬頭了 \n  繼續y/認慫了n");
138             }else{
139                 System.out.println("你被"+name+"打成豬頭了");
140                 System.out.println("復仇y/認慫n");
141             }
142             go=input.next();
143         }while("y".equals(go));
144         System.out.println("GAME OVER!");
145     }//mian
146 
147 }

 下麵運行代碼:

然後輸入一個昵稱:

下麵讓用戶選擇一個角色進行對戰,只有1.2.3.三個選項,我先輸入一個4,看看效果:

你看,當我輸入的不是1.2.3.的時候,它提示你“臣妾做不到啊”,然後讓你重新選擇:

我輸入1:

我選擇了劉備,然後出拳:

 

 然後輸入n結束游戲:

這裡出現了點小問題,我沒有考慮到兩人分數相同的情況,

這是我復仇的結果,然後在輸入n,結束游戲:

上面修改了當得分一樣的情況

代碼還有很多問題,之後我會繼續修改

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

轉載請註明出處!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 根據代碼來分析鏈表的操作 eg: 1.定義一個結構體,並定義一個表頭指針 2.編寫main函數 main函數主要接收外面傳進來的參數,作出一系列操作。 l:顯示所有的名字 a:添加一個名字 d:刪除一個名字 x:退出操作 3.完善各個函數的編寫 3.1 add_one_name和add_name函數 ...
  • 設計模式(Design Patterns) ——可復用面向對象軟體的基礎 設計模式(Design pattern)是一套被反覆使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。 毫無疑問,設計模式於己於他人於系統都是多贏的, ...
  • 需求:使用IO流將一個文件的內容複製到另外一個文件中去 文件"good boy.txt"位於D盤根目錄下,要求將此文件的內容複製到c:\\myFile.txt中 代碼: import java.io.*; public classInputAndOutputFile{ public static v ...
  • An internal error occurred during: "Initializing Java Tooling".java.lang.NullPointerException ...
  • String擁有一個特殊點叫:String對象的內容不可改變! 在調用諸如String對象的replace()等方法時,不是在原Sting對象的基礎上改變對象內容,而是創建了一個新的String對象把調用的方法後返回的結果放在這個新的String對象中 代碼示例如下: String str3 = " ...
  • ... ...
  • 為什麼需要線程同步? 同步就是協同步調,按預定的先後次序進行運行。如:你說完,我再說而並非一起動作。“同”字應是指協同、協助、互相配合。 如進程、線程同步,可理解為進程或線程A和B一塊配合,A執行到一定程度時要依靠B的某個結果,於是停下來,示意B運行;B依言執行,再將結果給A;A再繼續操作。 所謂同 ...
  • 吞吐量是指,應用程式的TPS: 每秒多少次事務,QPS: 每秒多少次查詢等性能指標。 吞吐量調優就是減少垃圾收集器消耗的CPU周期數,從而將更多的CPU周期用於執行應用程式。 CMS吞吐調優 CMS包括Minor GC所帶來的開銷應該小於10%,如果垃圾收集的開銷在3%或更少,說明通過調優吞吐量,提 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...