欢迎光临散文网 会员登陆 & 注册

[Java学习记录]猜拳小游戏

2021-05-14 17:25 作者:取悦疾风  | 我要投稿

写在前面:

本题出自

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 赢了几局

结束了

我麻了...

...写完之后感觉反而有点乱了

先这样吧,感谢韩老师



[Java学习记录]猜拳小游戏的评论 (共 条)

分享到微博请遵守国家法律