C语言游戏:人机猜拳大战

C语言游戏:人机猜拳大战_第1张图片

        今天给大家带来一个简单的代码,讲的是如何跟电脑进行猜拳游戏,用的是控制台程序,试试之后感觉还是挺有意思的呢~~~

C语言游戏:人机猜拳大战_第2张图片


C语言群:862850024

C语言游戏:人机猜拳大战_第3张图片


C语言游戏:人机猜拳大战_第4张图片


/**************************************************

项目名称:人机猜拳大战       

开发环境: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;

}

        代码就发给大家啦,想要更多好玩的软件可以点击【阅读原文】

C语言游戏:人机猜拳大战_第5张图片

点个赞呗

你可能感兴趣的:(C语言游戏:人机猜拳大战)