/*写一个程序小游戏,该游戏是你和电脑玩石头剪刀布,直到你或电脑连赢两次结束游戏
分析一下:
0 代表剪刀,1 代表石头,2 代表布。
me-pc=0;是平。
me-pc=1;是玩家赢。
me-pc=2;是电脑赢。
me-pc=-1;是电脑赢。
me-pc=-2;是玩家赢。
当然如果012代表的顺序不一样,这些结果的含义也不一样。
如果0 代表石头,1 代表剪刀,2 代表剪布。
me-pc=0;是平。
me-pc=1;是电脑赢。
me-pc=2;是玩家赢。
me-pc=-1;是玩家赢。
me-pc=-2;是电脑赢。
但是有个规律是:
me-pc=-1和me-pc=2是同一方赢,me-pc=1和me-pc=-2也是同一方赢。这个需要仔细分析的。
我大致写一下思路吧。我代码中就不写注释了。
定义电脑和玩家。创建一个有限数组,然后每次取出电脑和玩家的随机数比较差值是多少。
每次把比较后的结果添加进数组,然后和前一个数组元素比较,用字符串的equals方法比较内容是否相同。
如果相同,就是说明电脑或玩家第二次赢了。
这里用大于小于号表示是电脑赢还是玩家赢。所以比较时可以区分。
如果是平局,直接continue。
可能Math产生随机数你不太懂,可以查API,Java lang包中的Math。
如果看懂了在评分里给点黑马币呗。辛苦写了一个半小时呢。
*/
- class Demo
- {
- public static void main(String [] args)
- {
- int me,pc; //定义两个整数,表示玩家和电脑。
- String [] arr={"剪刀","石头","布"};
- System.out.println("玩家 VS 电脑:");
-
- String [] a=new String [99];
- int x=1;
- while(x<99)
- {
- me=rand();
- pc=rand();
- if (me-pc==1 || me-pc==-2)
- {
- a[x]=arr[me]+">"+arr[pc];
- System.out.println(a[x]);
- }
- else if(me-pc==-1 || me-pc==2)
- {
- a[x]=arr[me]+"<"+arr[pc];
- System.out.println(a[x]);
- }
- else
- continue;
- if(a[x].equals(a[x-1]))
- return;
- x++;
- }
- }
- public static int rand()
- {
- int x=(int)(Math.random()*300)+1;
- //如果直接用me=(int)(随机数*3),结果等于2的概率比较大,所以才这样中和一下的。
- x%=3; //产生随机数:0,1,2中的一个。
- return x;
- }
- }
复制代码
|