[Java学习记录]猜拳小游戏
写在前面:
本题出自
BV1fh411y7R8 262p
这题其实很简单,但是被我分析的有点麻烦,这段代码的思路分析观众老爷们能看懂是最好,看不懂的话可以看韩老师的分析
思路分析
先写Tom类
新建玩家出拳类型int tomGuessNum,电脑出拳类型int comGuessNum
编写电脑随机生成数字的方法并赋给comGuessNum
编写Tom的拳法,首先给tom的拳法判断,规定范围,只能输入012,如果输入别的数字就抛出异常
再将输入的数字接收并新建一个方法返回输入的数字
再新建方法vsCom 和电脑比较谁嬴谁输
写法就是判断2个返回值,comGuessNum和tomGuessNum比较,赢了就返回“赢了”,相等返回平局,其他返回“输了”
在tom类里创建 方法int WinCount接收"赢"这个字符串,在tom类开头写一个 玩家赢的次数 int winCountNum;初始化为0,写一个判断,如果返回"赢",winCountNum++
在tom类再创建一个int count = 0;这个count控制游戏次数,写进WinCount方法,并让其自增
创建一个二维数组接收局数,电脑出拳情况和tom出拳情况
二维数组arr1[代表局数,暂定3局][用来接收拳法,只有012三种拳法,所以写 3]
创建一个int j 初始化为0,写在arr1[][]下一行
创建好arr1[][]后,将第i局,下标为1(j+1,j=0所以0+1=1)这个位置用tom输入的拳法(数字)赋值 写法:arr1[i][j+1]
用scanner接收tom输入的拳法(数字)并用一个num接收int num = scanner.nextInt();
调用t.setTomGuessNum(这里直接放入刚才接收的数字num)
同理,将第i局,下标为2(j+1,j=0所以0+2=2)这个位置用电脑com输入的拳法(数字)赋值 写法:arr1[i][j+2]
电脑随机生成数字就比较简单,直接调用computerNum (就是刚才写的用电脑随机生成数字的方法)方法 然后用int comGuess接收
为什么不是下标为0的第一个元素?因为第一个元素需要保留用来表示第几局,我们先空着,后面会用到
我们还需要一个以为数组来接收输赢情况,创建一个一维数组接收判断后返回的"胜","负","平局",类型为string,写在开头int j = 0 下一行
arr1[][这里应该有3个元素],到这里我们完成了arr1[][除了下标为0的第一个元素的赋值,也就是第2个和第3个元素]现在我们要对arr[][下标为0的第一个元素]赋值,
现在我们已经写好了输入并返回tom和电脑的拳法,我们调用比较方法,String iswin = t.vsCom();将结果赋给arr2[i]这样代表第i局的输赢情况
然后将count 赋给 arr1[i][j],现在j=0,所以相当于将count的值赋给arr1[i][0] 也就是说赋给我们刚刚空下来的每一行的第一个元素,也就是第几局
我们现在再循环里面把每一局的情况输出出来,
sout 局数\t玩家的出拳\t电脑的出拳\t\t输赢情况 (这里韩老师的视频好像里没有把画面往右拉,没有显示下面的+iswin)
sout t.count + "\t"+ tomGuess + "\t\t" + comGuess + "\t\t"+iswin
完事之后
在公共类创建一个int isWinCount
调用t.winCount(输入iswin); 用isWinCount接收保存赢的次数,当总结赢了几次的时候使用
接近尾声了,对游戏的最终结果进行输出
输出二维数组arr1[这里代表局数 3][这里的下标0 = 局数的代号 , 下标1和2 =tom和电脑的拳法 ]
输出的时候加上输赢结果写在后面
最后在循环外部写sout 赢了几局
结束了
我麻了...
...写完之后感觉反而有点乱了
先这样吧,感谢韩老师