以下是题目:
编一个枪,石头,剪刀,布的游戏,
枪赢剪刀和石头,
枪赢不了布,
剪刀输石头,
剪刀赢布,
石头输布,
获胜者每人获得一分。如果两个玩家都选择了相同的符号,则为平局,并且双方都不会得到一 分。为此,首先实现以下功能:
int computerwahl(void) (1 = 枪, 2 = 剪刀, 3 = 石头, 4 = 布) 计算器永远不会重复上次的情况
int 用户选择
int 赢者 (int symbolPlayer1, int symbolPlayer2)
如果玩家 1 的符号赢了,则函数返回 1,如果玩家 2 赢了,则返回 2,如果是平局, 则返回 0。
在主程序中调用这些函数是为了让用户与计算机对战,直到两者之一赢得 10 分为止。
必须使用到自定义函数,并创建单独的项目!
#include <stdio.h>
#include <stdlib.h>
int computerwahl(void) {
static int last;
int value;
do {
value = rand() % 4;
} while (last == value);
printf("电脑选择:%d\n",value);
return value;
}
int user(void) {
int input;
while (true)
{
printf("0枪、1石头、2剪刀、3布输入选择:");
scanf_s("%d", &input);
if (input>3)
{
printf("输入有误,重新输入\n");
}
else
{
break;
}
}
return input;
}
int winner(int symbolPlayer1, int symbolPlayer2) {
if (symbolPlayer1 == symbolPlayer2)
{
return 0;
}
if (symbolPlayer1 == 0 && (symbolPlayer2 == 1 || symbolPlayer2 == 2))
{
return 1;
}
if (symbolPlayer1 == 1 && symbolPlayer2 == 2)
{
return 1;
}
if (symbolPlayer1 == 2 && symbolPlayer2 == 3)
{
return 1;
}
if (symbolPlayer1 == 3 && symbolPlayer2 == 1)
{
return 1;
}
if (symbolPlayer1 == 0 && symbolPlayer2 == 3)
{
return 2;
}
if (symbolPlayer2 == 0 && (symbolPlayer1 == 1 || symbolPlayer1 == 2))
{
return 2;
}
if (symbolPlayer2 == 1 && symbolPlayer1 == 2)
{
return 2;
}
if (symbolPlayer2 == 2 && symbolPlayer1 == 3)
{
return 2;
}
if (symbolPlayer2 == 3 && symbolPlayer1 == 1)
{
return 2;
}
if (symbolPlayer2 == 0 && symbolPlayer1 == 3)
{
return 1;
}
return 0;
}
int main()
{
int computer_value=0,user_value=0;
while (computer_value<10 && user_value<10)
{
switch (winner(computerwahl(), user()))
{
case 1:
computer_value++;
printf("电脑得一分\n");
break;
case 2:
user_value++;
printf("玩家得一分\n");
break;
default:
printf("平局\n");
break;
}
printf("电脑分数%d,玩家分数%d\n-------------------\n",computer_value,user_value);
}
if (computer_value==10)
{
printf("电脑赢了\n");
}
if (user_value==10)
{
printf("玩家赢了\n");
}
printf("按任意键退出\n");
scanf_s("");
}