人機猜拳是我自己原創的一段代碼,我剛學完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,結束游戲:

上面修改了當得分一樣的情況
代碼還有很多問題,之後我會繼續修改
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
轉載請注明出處!