C语言实现简单猜拳小游戏

 更新时间:2021年03月01日 15:49:38   作者:ℳ๓梦ζ殇  
这篇文章主要为大家详细介绍了C语言实现简单猜拳小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

C语言实现简单的一个猜拳小游戏,供大家参考,具体内容如下

全部代码

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<Windows.h>
int pcinput; //电脑输入
int userinput; //用户输入
#define echo ">_ " //俺觉得好看
char case_win(int left, int right);//判断哪边赢了;left是玩家,right是电脑
int echoinput(int inputnum);//根据两个全局变量输出对应进行的操作
int main() {
 printf("规则\n\n");
 puts("1.石头\n");
 puts("2.剪刀\n");
 puts("3.布 \n");
 printf("%s你的输入:", echo);
 scanf_s("%d", &userinput);
 printf("\n");
 if (echoinput(userinput) == 1) {
 Sleep(1000);
 system("cls");
 main();
 }
 else {
 printf("\n");
 printf("\n");
 printf("%s等待电脑结果.\0", echo);
 Sleep(500);
 printf(".");
 Sleep(500);
 printf(".\n");
 srand(time(NULL));
 pcinput = rand() % 3 + 1;
 printf("\n");
 echoinput(pcinput);
 printf("\n");
 printf("\n");
 if (case_win(userinput,pcinput) == 'L') {
 printf("玩家胜利");
 }
 else if(case_win(userinput,pcinput)=='R'){
 printf("电脑胜利");
 }
 else {
 printf("双方平局");
 }
 printf("\n");
 printf("\n");
 printf("--------------------");
 printf("\n");
 printf("\n");
 printf("三秒后继续...");
 Sleep(1000);
 printf("二秒后继续...");
 Sleep(1000);
 printf("一秒后继续...");
 Sleep(1000);
 system("cls");
 main();
 }
 return 0;
}
char case_win(int left, int right) {
 char reslut;
 /*
 *声明
 *石头->1
 *剪刀->2
 * _布->3
 */
 /*
 * 规则:
 * 石头->剪刀
 * 剪刀->布
 * 布->石头
 */
 /*判断,左边是玩家*/
 if (left == right) {
 reslut = 'P';
 }
 else {
 if (left == 1) {
 if (right == 2) {
 reslut = 'L';
 }
 else if (right == 3) {
 reslut = 'R';
 }
 }
 else if (left == 2) {
 if (right == 1) {
 reslut = 'R';
 }
 else if (right == 3) {
 reslut = 'L';
 }
 }
 else if (left == 3) {
 if (right == 1) {
 reslut = 'L';
 }
 else if (right == 2) {
 reslut = 'R';
 }
 }
 }
 return reslut;
}
int echoinput(int inputnum) {
 int reslut = 0;
 switch (inputnum) {
 case 1:
 printf("(石头)");
 break;
 case 2:
 printf("(剪刀)");
 break;

 case 3:
 printf("(布)");
 break;
 default:
 printf("(输入有误)");
 reslut = 1;
 break;
}
 return reslut;
}

全局变量

int pcinput; //电脑输入
int userinput; //用户输入

函数定义

char case_win(int left, int right);//判断哪边赢了;left是玩家,right是电脑
int echoinput(int inputnum);//根据两个全局变量输出对应进行的操作

打印 规则和输入提示

printf("规则\n\n");
puts("1.石头\n");
puts("2.剪刀\n");
puts("3.布 \n");
printf("%s你的输入:", echo);
scanf_s("%d", &userinput);
printf("\n");

Main方法中的主要逻辑

int main() {
 printf("规则\n\n");
 puts("1.石头\n");
 puts("2.剪刀\n");
 puts("3.布 \n");
 printf("%s你的输入:", echo);
 scanf_s("%d", &userinput);
 printf("\n");
 if (echoinput(userinput) == 1) {
 Sleep(1000);
 system("cls");
 main();
 }
 else {
 printf("\n");
 printf("\n");
 printf("%s等待电脑结果.\0", echo);
 Sleep(500);
 printf(".");
 Sleep(500);
 printf(".\n");
 srand(time(NULL));
 pcinput = rand() % 3 + 1;
 printf("\n");
 echoinput(pcinput);
 printf("\n");
 printf("\n");
 if (case_win(userinput,pcinput) == 'L') {
 printf("玩家胜利");
 }
 else if(case_win(userinput,pcinput)=='R'){
 printf("电脑胜利");
 }
 else {
 printf("双方平局");
 }
 printf("\n");
 printf("\n");
 printf("--------------------");
 printf("\n");
 printf("\n");
 printf("三秒后继续...");
 Sleep(1000);
 printf("二秒后继续...");
 Sleep(1000);
 printf("一秒后继续...");
 Sleep(1000);
 system("cls");
 main();
 }
 return 0;
}

函数实现-判断输入

当参数inputnum为1,2,3时,进行对应的打印操作,如果有误在Main方法中清屏递归

int echoinput(int inputnum) {
 int reslut = 0;
 switch (inputnum) {
 case 1:
 printf("(石头)");
 break;
 case 2:
 printf("(剪刀)");
 break;

 case 3:
 printf("(布)");
 break;
 default:
 printf("(输入有误)");
 reslut = 1;
 break;
}
 return reslut;
}

逻辑函数-判断输赢

char case_win(int left, int right) {
 char reslut;
 /*
 *声明
 *石头->1
 *剪刀->2
 * _布->3
 */
 /*
 * 规则:
 * 石头->剪刀
 * 剪刀->布
 * 布->石头
 */
 /*判断,左边是玩家*/
 if (left == right) {
 reslut = 'P';
 }
 else {
 if (left == 1) {
 if (right == 2) {
 reslut = 'L';
 }
 else if (right == 3) {
 reslut = 'R';
 }
 }
 else if (left == 2) {
 if (right == 1) {
 reslut = 'R';
 }
 else if (right == 3) {
 reslut = 'L';
 }
 }
 else if (left == 3) {
 if (right == 1) {
 reslut = 'L';
 }
 else if (right == 2) {
 reslut = 'R';
 }
 }
 }
 return reslut;
}

实现逻辑函数的返回值

/*
当返回值reslut为'L'时,玩家胜利
当返回值reslut为'R'时,电脑胜利
否则双方平局
*/

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C++中的数据内存分布原理

    C++中的数据内存分布原理

    这篇文章主要介绍了C++中的数据内存分布,主要从动态内存管理方式,内存泄漏等方面介绍的,文中也有相关的示例代码,需要的朋友可以参考下
    2023-05-05
  • C++常用的#include头文件总结

    C++常用的#include头文件总结

    这篇文章主要介绍了C++常用的#include头文件,对初学者理解C++程序设计大有好处的相关资料
    2014-07-07
  • C++入门之vector的底层实现详解

    C++入门之vector的底层实现详解

    这篇文章主要为大家介绍了C++入门之vector的底层实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • c语言中unsigned修饰符的使用

    c语言中unsigned修饰符的使用

    在C语言中,unsigned是一种无符号整数修饰符,本文主要介绍了c语言中unsigned修饰符的使用,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • 详解C语言中的char数据类型及其与int类型的转换

    详解C语言中的char数据类型及其与int类型的转换

    这篇文章主要介绍了详解C语言中的char数据类型及其与int类型的转换,是C语言入门学习中的基础知识,需要的朋友可以参考下
    2015-08-08
  • opencv实现角点检测

    opencv实现角点检测

    这篇文章主要为大家详细介绍了opencv实现角点检测,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • C++ cin.get用法案例详解

    C++ cin.get用法案例详解

    这篇文章主要介绍了C++ cin.get用法案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • C语言超详细讲解getchar函数的使用

    C语言超详细讲解getchar函数的使用

    C 库函数 int getchar(void) 从标准输入 stdin 获取一个字符(一个无符号字符)。这等同于 getc 带有 stdin 作为参数,下面让我们详细来看看
    2022-05-05
  • C语言 如何求两整数的最大公约数与最小公倍数

    C语言 如何求两整数的最大公约数与最小公倍数

    这篇文章主要介绍了C语言中如何求两整数的最大公约数与最小公倍数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • C语言new操作的安全性分析

    C语言new操作的安全性分析

    这篇文章主要介绍了C语言new操作的安全性分析,需要的朋友可以参考下
    2014-07-07

最新评论