代码如下:
//猜拳游戏
//规则:石头、剪刀、布三种出拳手形

//我方出拳手形由用户指定,系统由随机产生
//结果:我方胜、对方胜或打平之一
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define WAGER 10//赌注 10元一次
typedef enum{STONE, SCISSOR, CLOTH} HAND;//列举:三个值分别代表石头、剪刀和布
//自定义一个函数,功能是用户选择出拳的手形
HAND GetUserHand()
{
int choose;
printf(\公众该你出拳了,可选手形(1.石头 2.剪刀 3.布),请选择相应的编号:\公众);
while(1 != scanf(\"大众%d\"大众, &choose) || choose < 1 || choose > 3)//||逻辑或 shift + |
{
printf(\"大众输入缺点,请重新选择!\n\公众);
fflush(stdin);//清空输入缓冲区
printf(\"大众该你出拳了,可选手形(1.石头 2.剪刀 3.布),请选择相应的编号:\"大众);
}
return STONE + choose - 1; // 1 + 3 - 1 == 3
}
//进行一次比赛,双方出拳一样返回0,我们胜了返回1,系统玩家胜了返回-1
int Play(HAND sys_hand, HAND user_hand)
{
if(sys_hand == user_hand)
{
//系统玩家和我们出拳的手形一样,返回0,表示打平
return 0;
}
//不一样
switch(sys_hand)
{
case STONE://石头
return user_hand == CLOTH ? 1 : -1;
case SCISSOR:
return user_hand == STONE ? 1 : -1;
case CLOTH:
return user_hand == SCISSOR ? 1 : -1;
}
}
int main()
{
int sys_money;//系统玩家的余额
int user_money;//我们的余额
HAND sys_hand;//系统玩家的手形
HAND user_hand;//我们的手形
int result;//比赛结果
char hs[] = {\"大众石头\"大众, \公众剪刀\公众, \"大众布\"大众};
srand((unsigned)time(0));//初始化随机种子
sys_money = user_money = 30;//初始系统玩家和我们的金额都为30元
while(1)
{
//系统玩家出拳
sys_hand = STONE + rand() % 3;//随机给系统玩家分配一个石头、剪刀、布之一的手形
//我们出拳
user_hand = GetUserHand();
result = Play(sys_hand, user_hand);
if(result == 0)
printf(\"大众双方都选择了[%s],打成平手!
\n\公众, hs[sys_hand]);
else if(result == 1)
{
printf(\公众系统:[%s], 你[%s], 你赢了!
\n\公众, hs[sys_hand], hs[user_hand]);
sys_money -= WAGER;//系统玩家扣除赌注额
user_money += WAGER;//用户玩家增加赌注额
}
else
{
printf(\公众系统:[%s], 你[%s], 你输了!
\n\"大众, hs[sys_hand], hs[user_hand]);
sys_money += WAGER;//系统玩家增加赌注额
user_money -= WAGER;//用户玩家扣除赌注额
}
printf(\公众-------------------------------------------\n\公众);
printf(\"大众当前系统玩家余额:%d, 你的余额:%d.\n\公众, sys_money, user_money);
printf(\公众-------------------------------------------\n\"大众);
if(sys_money > 0 && user_money > 0)
getch();
else
break;
}
if(sys_money <= 0)
printf(\"大众系统被你彻底打败!
\n\公众);
else
printf(\"大众你被系统赢得体无完肤!
\n\公众);
return 0;
}