用C语言创作睿智小游戏——猜拳篇,猜拳游戏
用C语言创作睿智小游戏——猜拳篇,猜拳游戏
用C语言创作睿智小游戏——猜拳篇
突发奇想,打算用C语言编写一个猜拳游戏,深知网上有很多教程,未看教程,自己开始盲编,
首先需要定义猜拳游戏的精髓“石头,剪刀,布”,这里我们用数字定义:
//赋予1=石头,2=剪刀,3=布
我们平时在玩猜拳游戏的时候是玩家VS玩家,有很多心理战术(察言观色),但是我们电脑是个面无表情的玩家!我们跟电脑对战只有三分之一的几率获胜
好了,知道这个游戏是玩家VS电脑,接下来就是电脑的出拳机制,它的随机性,这时候我们使用“随机数生成”
//产生随机数
int a = rand() % 3 + 1;
但是这种随机数产生是一次性的,我们需要加入随机数种子
srand((unsigned int)time);
而且还需要引入头文件
#include<time.h>
我们来用printf()来检验每次产生的随机数是否正确(在正式运行时我们需要隐藏打印出来的随机数,以确保游戏的公平性。看着电脑出拳并没有游戏体验呐!!)
//printf("%d\n", a);
//查验随机数
在随机数中我们已经赋予电脑值为:
int a
我们要给玩家赋予:
unsigned int num = 0;
printf("请输入你要出的数字:");
scanf("%d", &num);
接下来就是判断我们游戏的胜负关系,大家都知道“石头,剪刀,布”是相互克制关系,我们赋予的值,“1,2,3”也是克制关系可以理解为“1赢2,2赢3,3赢1”,
这时候我们就开始确定玩家胜利的条件:
当电脑输入1(石头)时,玩家输入3(布)为胜利。
当电脑输入2(剪刀)时,玩家输入1(石头)为胜利。
当电脑输入3(布)时,玩家输入3(剪刀)为胜利。
a == 1 && num == 3 || a == 2 && num == 1 || a == 3 && num == 2
程序用与(&&)或(||)相连。
同理玩家失败的条件:
当电脑输入1(石头)时,玩家输入2(剪刀)为失败。
当电脑输入2(剪刀)时,玩家输入3(布)为失败。
当电脑输入3(布)时,玩家输入1(石头)为失败。
a == 1 && num == 2 || a == 2 && num == 3 || a == 3 && num == 1
其他情况则为平局:
玩家与电脑显示数值相同
a == num
用 if…else if…else…函数来判断结果:
if()
{
}
else if()
{
}
else{}
注:(当分析这一段时,我犯了一个错误,导致整个分析方法过于复杂
当时忘记输入“= =”两个等于,只输入一个导致报错,当时分析出了这种方法:
a>num&&a!= 2&&num!=2
假设电脑出手,数值a=3,电脑获胜条件只能是玩家num=1,所以必须要电脑数值大于玩家,且电脑与玩家都不能等于2)
到这里,我们猜拳程序就差不多完成了80%,接下来要开始完善代码与程序。
加入睿智的开场白:
printf("******************************************\n");
printf("* 欢迎来到睿智游戏之家 *\n");
printf("* 本次您要玩的游戏是“剪刀,石头,布” *\n");
printf("* 请按照规定输入: *\n");
printf("* 输入数字“1”进入游戏 *\n");
printf("* 输入其他,进行退出 *\n");
printf("******************************************\n");
与睿智的游戏介绍:
printf("************************************\n");
printf("* 游戏介绍: *\n");
printf("* 您需要跟电脑进行博弈。 *\n");
printf("* 输入数字“1”====“石头” *\n");
printf("* 输入数字“2”====“剪刀” *\n");
printf("* 输入数字“3”====“布” *\n");
printf("* 输入其他,进行退出 *\n");
printf("************************************\n");
睿智的提示:
printf("************************************\n");
printf("* 恭喜你,你赢啦! *\n");
printf("************************************\n");
睿智的结束语:
system("cls");
printf("************************************\n");
printf("* 感谢您的体验。 *\n");
printf("************************************\n");
printf("正在退出,倒计时...\n");
int f = 4;
for (int i = 0; i < 4; i++)
{
f--;
Sleep(1000);
printf("%d\n", f);
}
exit(0);
这里结束,我先做了一个清屏,并且用for()循环做了一个简易的倒计时,这里引入了计数时间函数sleep(),sleep的单位是毫秒,为了变成1秒,我在这里面单位加了(1000),!!调用sleep函数,还需要引入头文件
#include<Windows.h>
最后为了保证游戏的多次参与度,这里用while(1)
while (1);
加入了一个无限循环。
最后将随机数(即电脑出拳)显示结果显示在玩家出拳后。
printf("电脑已出拳,该您了。\n");
printf("请输入你要出的数字:");
scanf("%d", &num);
printf("\n");
printf("电脑出拳结果是:%d\n",a);
下面是完整程序:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#include<limits.h>
#include<Windows.h>
void test()
{
printf("************************************\n");
printf("* 游戏介绍: *\n");
printf("* 您需要跟电脑进行博弈。 *\n");
printf("* 输入数字“1”====“石头” *\n");
printf("* 输入数字“2”====“剪刀” *\n");
printf("* 输入数字“3”====“布” *\n");
printf("* 输入其他,进行退出 *\n");
printf("************************************\n");
srand((unsigned int)time);
while (1)
{
//产生随机数
int a = rand() % 3 + 1;
//赋予1=石头,2=剪刀,3=布
//a>num&&a!=2
//printf("%d\n", a);
//查验随机数
unsigned int num = 0;
printf("\n");
printf("电脑已出拳,该您了。\n");
printf("请输入你要出的数字:");
scanf("%d", &num);
printf("\n");
printf("电脑出拳结果是:%d\n",a);
printf("\n");
if (a == 1 && num == 2 || a == 2 && num == 3 || a == 3 && num == 1)
{
printf("\n");
printf("************************************\n");
printf("* 耶,你输啦!(来自电脑的嘲讽。) *\n");
printf("************************************\n");
printf("\n");
}
else if (a == 1 && num == 3 || a == 2 && num == 1 || a == 3 && num == 2)
{
printf("\n");
printf("************************************\n");
printf("* 恭喜你,你赢啦! *\n");
printf("************************************\n");
printf("\n");
}
else if (a == num)
{
printf("\n");
printf("************************************\n");
printf("* 哎呀,打平了-_-! *\n");
printf("************************************\n");
printf("\n");
}
else
{
system("cls");
printf("************************************\n");
printf("* 感谢您的体验。 *\n");
printf("************************************\n");
printf("正在退出,倒计时...\n");
int f = 4;
for (int i = 0; i < 4; i++)
{
f--;
Sleep(1000);
printf("%d\n", f);
}
exit(0);
}
}
}
void test01()
{
printf("******************************************\n");
printf("* 欢迎来到睿智游戏之家 *\n");
printf("* 本次您要玩的游戏是“剪刀,石头,布” *\n");
printf("* 请按照规定输入: *\n");
printf("* 输入数字“1”进入游戏 *\n");
printf("* 输入其他,进行退出 *\n");
printf("******************************************\n");
printf("\n");
printf("\n");
}
void test02()
{
system("cls");
printf("************************************\n");
printf("* 感谢您的体验。 *\n");
printf("************************************\n");
printf("正在退出,倒计时...\n");
int f = 4;
for (int i = 0; i < 4; i++)
{
f--;
Sleep(1000);
printf("%d\n", f);
}
exit(0);
printf("\n");
}
int main(void)
{
int num;
test01();
printf("请输入值:");
scanf("%d", &num);
if (num == 1)
{
system("cls");
test();
}
else
{
test02();
}
printf("\n");
system("pause");
return 0;
}
文章最后发布于: 2019-10-24 21:55:21
评论暂时关闭