石头剪刀布程序——C语言实现
当我们决定不了谁去干活或者谁去HAPPY的时候,我们就会通过石头、剪刀、布来决定谁去。在现实生活中,我们可以通过敏锐的观察和快速的反应达到百战不输。但是,和计算机我们只能来来随机的了,那大部分是看运了哈(其实计算机的运也掌握在你的手里 )。
下面来看看如何用C实现剪刀石头布程序的,其他语言也是一样的。
我们把石头剪刀布定义在二维数组中,然后电脑随机(其实是伪随机)的出,人是自己决定出什么。在判断输赢算法上有两个思路:
1、列出所有的可能结果,一个一个去判断。这样做比较麻烦,而且容易漏。
2、通过(man – computer + 4) % 3 -1;算法去判断,你可以思考下,这个算法公式是如何进行的。
具体的代码如下:
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <time.h> 4 5 int main() 6 { 7 char *gesture[3] = {"scissor", "stone", "cloth"}; 8 int man, computer, ret, result; 9 10 srand(time(NULL)); 11 while(1) 12 { 13 computer = rand() % 3; 14 printf("input your gesture"); 15 printf("(0 for scissor; 1 for stone; 2 for cloth)\n"); 16 ret = scanf("%d", &man); 17 18 if(ret != 1 || man < 0 || man >2) 19 { 20 printf("Invalid input!\n"); 21 return 1; 22 } 23 24 printf("\nYou:%s\tComputer:%s\n", gesture[man], gesture[computer]); 25 //核心算法 26 result = (man - computer + 4) % 3 -1; 27 if(result > 0) 28 printf("You win!\n"); 29 else if(result == 0) 30 printf("Draw!\n"); 31 else 32 printf("You lose!\n"); 33 } 34 35 return 0; 36 }
在这个程序中,我们的主要难点在(man – computer + 4) % 3 -1;这个表达式是如何计算出石头剪刀布的结果的。
转载请标明出处:萝卜根
原文地址请标明:原文地址
1、(man – computer) 的结果可能是:-2,-1,0,1,2
当man赢的情况是: -2和1
平的情况是:0
输的情况是:-1和2
2、加4后情况变成:
man赢的情况是: 2和5
平的情况是:4
输的情况是:3和6
3、%3后的情况是:
man赢的情况是: 2
平的情况是:1
输的情况是:0
4、减1后的情况是:
man赢的情况是: 1
平的情况是:0
输的情况是:-1
最后得出结果。。。