一、程序要求
游戏项目:猜拳
游戏规则:石头克制剪刀,剪刀克制布,布克制石头。
项目要求:
1.编写玩游戏函数,实现玩家和电脑对战。
2.电脑随机出拳(运用随机函数srand()、rand()和time(NULL)产生随机数,需要包含头文件stdlib.h和time.h);
3.玩家输入“石头/剪刀/布”进行出拳(需要定义石头剪刀布的枚举类型来记录);
4.玩家和电脑可以循环多次猜拳,判断猜拳的结果,如果玩家赢了则输出“玩家赢了”,如果玩家输了则输出“玩家输了”,如果是平局则输出“平局”。
二、项目分析
(1)我们可以先通过枚举类型来表示电脑和玩家去的所有游戏选择可能,先声明枚举类型,然后分别定义电脑和玩家的枚举变量。
(2)那我们应该怎么样去编写电脑的随机出拳呢?
我们可以通过rand()函数赋值电脑随机值rand%3可以得到0,1,2这三种选择,分别对应枚举类型中的石头,剪刀,布,这样就可以做到电脑的随机出拳(顺序无所谓,注意后续程序与之对应)
(3)接下来就很简单了,从键盘输入值给到玩家,根据指定值与电脑的随机值,对其进行匹配,就可以得到结果啦。
(4)各位可以先自己试试看,然后再看代码演示。
三、代码演示
#include<stdio.h>
#include<stdlib.h>//引入rand函数
#include<time.h>//引入time函数
enum game { 石头, 剪刀, 布 };//通过枚举类型来表示电脑和玩家去的所有游戏选择可能,石头=0,剪刀=1,布=2
int main()
{
enum game computer;//电脑
enum game player;//玩家
srand((unsigned)time(NULL));//更换随机源,播下随机种子,否则后面rand的返回值不会变化
while (1)//也可以通过for(;;)实现
{
printf("\n\n猜拳游戏开始:\n\n");
computer = (enum game)rand() % 3;//给电脑0~2的随机值
printf("0为石头 1为剪刀 2为布\n");
printf("请玩家猜拳:");
scanf("%d", &player);
switch (player)
{
case 石头:printf("玩家出的石头\n");//当我们出的是石头的时候,接下来与电脑的随机值相匹配然后输出结果
switch (computer)//对电脑的值做出判断
{
case 石头:
printf("电脑出的石头\n");
printf("平局!\n");
break;
case 剪刀:
printf("电脑出的剪刀\n");
printf("玩家赢了!\n");
break;
case 布:
printf("电脑出的布\n");
printf("玩家输了!\n");
break;
}
break;
case 剪刀:printf("玩家出的剪刀\n");//同上
switch (computer)
{
case 石头:
printf("电脑出的石头\n");
printf("玩家输了!\n");
break;
case 剪刀:
printf("电脑出的剪刀\n");
printf("平局!\n");
break;
case 布:
printf("电脑出的布\n");
printf("玩家赢了!\n");
break;
}
break;
case 布:printf("玩家出的布\n");//同上
switch (computer)
{
case 石头:
printf("电脑出的石头\n");
printf("玩家赢了!\n");
break;
case 剪刀:
printf("电脑出的剪刀\n");
printf("玩家输了了!\n");
break;
case 布:
printf("电脑出的布\n");
printf("平局!\n");
break;
}
break;
}
}
return 0;
}
这样就可以实现猜拳游戏了
结尾
作者刚刚入门C语言,还有许多不足的地方,如果有问题,请大家及时提出来,如果有更好的方法大家可以提出来。