今天给大家带来一个简单的代码,讲的是如何跟电脑进行猜拳游戏,用的是控制台程序,试试之后感觉还是挺有意思的呢~~~
/**************************************************
项目名称:人机猜拳大战
开发环境:visual stdio 2017
开发作者:六星教育-BOBO老师
最后修改:2018-11-27
**************************************************
#include
// 标准输入输出头文件 scanf函数 printf函数 #include
// #include
// 时间函数 srand函数
void init() // 显示初始化界面
{
printf("******************************************\n");
printf("* *\n");
printf("* 人机猜拳大战 *\n");
printf("* *\n");
printf("******************************************\n");
}
int main() // 主函数,是程序的入口
{
char gamer; // 定义玩家出拳的变量 因为是输入字母 abcd 的字符, 所以定义char类型
int computer; // 定义电脑出拳的变量 用来接收随机函数所产生数字, 所以定义int类型
int result; // 定义比赛结果的变量 用来计算两个数值相加的结果, 所以定义int类型
init(); // 调用初始化界面函数
// 为了避免玩一次游戏就退出程序,可以将代码放在循环中
while (1) // 括号中的1代表条件为真
{
printf("游戏说明:\n"); // 原样输出
printf(" A:剪刀\n B:石头\n C:布\n D:游戏结束\n\n"); // 原样输出 一个\n代表换行一次
printf("来来来,告诉我你要出什么:\n"); // 原样输出
scanf_s("%c%*c", &gamer); // scanf 标准输入函数 因为这个函数不安全 所以vs把他重新封装成scanf_s函数了
switch (gamer) // switch 判断语句 通过scanf_s函数从键盘获取的值 gamer 传递给switch函数判断
{
case 65 | 97: // A | a // case语句 ASCII码里 65代表 大写 A 97代表小写 a 如果输入的是 A 或者 a 则满足条件
gamer = 4; // 把 4 赋值给gamer 后面作为判断的条件
break; // 退出 switch 函数
case 66 | 98: // B | b // case语句 ASCII码里 66代表 大写 B 98代表小写 b 如果输入的是 B 或者 b 则满足条件
gamer = 7; // 把 7 赋值给gamer 后面作为判断的条件
break; // 退出 switch 函数
case 67 | 99: // C | c // case语句 ASCII码里 67代表 大写 C 98代表小写 c 如果输入的是 C 或者 c 则满足条件
gamer = 10; // 把 7 赋值给gamer 后面作为判断的条件
break; // 退出 switch 函数
case 68 | 100: // D | d // case语句 ASCII码里 68代表 大写 D 98代表小写 d 如果输入的是 D 或者 d 则满足条件
return 0;
default: // 如果输入的是除了 abcd大小写之外的字符 则提示选择错误并退出程序
printf("你的选择为 %c 选择错误,退出...\n", gamer);
getchar(); // getchar函数 获取从键盘输入的字符并按下回车 否则会一直等待 一般用来暂停程序的进行
system("cls"); // 清屏,把初始化界面清除掉
return 0;
break;
}
srand((unsigned)time(NULL)); // 想要使用随机数函数,必须要播下随机数种子
computer = rand() % 3; // 产生随机数并取余,会得到0,1,2三个数字中的一个
result = (int)gamer + computer; // gamer 为 char 类型,数学运算时要强制转换类型 转成int类型
// 把玩家输入的数字和电脑随机产生的数字相加得到判定结果
printf("你出了"); // 原样输出
switch (gamer) // switch函数 传入的参数是你所输入的字符
{
case 4: // 前一个switch函数中如果输入的是 A 或者 a 就把 4 赋值给gamer了
printf("剪刀\n"); // 所以如果gamer的值是4 那么代表你出的是剪刀
break;
case 7: // 前一个switch函数中如果输入的是 B 或者 b 就把 7 赋值给gamer了
printf("石头\n"); // 所以如果gamer的值是7 那么代表你出的是石头
break;
case 10: // 前一个switch函数中如果输入的是 C 或者 c 就把 10 赋值给gamer了
printf("布\n"); // 所以如果gamer的值是10 那么代表你出的是布
break;
}
printf("电脑出了"); // 原样输出
switch (computer) // switch函数 传入的参数是随机数取余所得到的 0,1,2三个数字中的一个
{
case 0:printf("剪刀\n"); // 如果随机数产生的是0,那么电脑就会出剪刀
break;
case 1:printf("石头\n"); // 如果随机数产生的是1,那么电脑就会出石头
break;
case 2:printf("布\n"); // 如果随机数产生的是2,那么电脑就会出布
break;
}
// 我们要怎么判定输赢呢?
// 玩家只能 输出 4(剪刀) 7(石头) 10(布) 三个数字
// 电脑只能 输出 0(剪刀) 1(石头) 2(布) 三个数字
/* 那么会出现几种情况呢?
情况1:
4 + 2 = 6
7 + 0 = 7
10 + 1 = 11
这三种情况都是 玩家赢了电脑
情况二:
否则的话
1 + 4 = 5
2 + 7 = 9
0 + 10 = 10
这三种情况都是 电脑赢了玩家
情况三:
剩下的就是平手了
*/
if (result == 6 || result == 7 || result == 11) // 条件判断 玩家 + 电脑的数值结果为 6 7 11 判定玩家赢
{
printf("渣渣电脑,还想和我比o(* ̄▽ ̄*)o!"); // 显示玩家赢
}
else if(result == 5 || result == 9 || result == 10) // 条件判断 玩家 + 电脑的数值结果为 5 9 10 判定电脑赢
{
printf("不科学啊,这破电脑居然赢了(っ °Д °;)っ!"); // 显示电脑赢
}
else // 剩下的判定平手
{
printf("咳咳,看你这么可怜就算平手吧!"); // 显示平手
}
system("pause>nul&&cls"); // 暂停并清屏
}
return 0;
}
代码就发给大家啦,想要更多好玩的软件可以点击【阅读原文】
点个赞呗