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++ IO流

    浅谈C++ IO流

    这篇文章主要介绍了C++ IO流的相关资料,帮助大家更好的理解和学习c++,感兴趣的朋友可以了解下
    2020-08-08
  • C语言以数据块的形式读写文件实例代码

    C语言以数据块的形式读写文件实例代码

    本文主要介绍C语言中以数据块的形式读写文件,这里提供了实例代码举例说明,有需要的小伙伴可以参考下
    2016-07-07
  • 用C++实现推箱子

    用C++实现推箱子

    这篇文章主要为大家详细介绍了用C++实现推箱子,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-10-10
  • C++模拟实现vector的示例代码

    C++模拟实现vector的示例代码

    大家在学习C++的时候一定会学到STL(标准模板库),这是C++标准库中最重要的组成部分,它包含了常用的数据结构和算法。今天呢,我们首先来学习STL中的vector容器
    2022-09-09
  • C语言函数调用基础应用详解

    C语言函数调用基础应用详解

    函数就是一段封装好的,可以重复使用的代码,它使得我们的程序更加模块化,不需要编写大量重复的代码。这篇文章主要介绍了c语言是如何处理函数调用的?需要的朋友可以参考下
    2023-02-02
  • 举例讲解C语言对归并排序算法的基础使用

    举例讲解C语言对归并排序算法的基础使用

    这篇文章主要介绍了C语言对归并排序算法的使用,归并排序算法的平均事件复杂度为(n\log n),需要的朋友可以参考下
    2016-05-05
  • C++设计模式之组合模式(Composite)

    C++设计模式之组合模式(Composite)

    这篇文章主要为大家详细介绍了C++设计模式之组合模式Composite,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Qt5开发视频播放器的项目实践

    Qt5开发视频播放器的项目实践

    Qt对音视频的播放和控制、相机拍摄、收音机等多媒体应用提供了强大的支持,本文主要介绍了Qt5开发视频播放器,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • C++单一职责原则示例代码浅析

    C++单一职责原则示例代码浅析

    我们在设计一个类时要学会发现职责,并把那些职责相互分离,其实要去判断是否应该分离出一个类来并不难,前面说过,一个类应该只有一个引起它变化的原因,如果你能想到其它的原因也能去改变这个类,那么这个类就具有多于1个的职责,就应该考虑类的职责分离
    2023-02-02
  • C++ string如何获取文件路径文件名、文件路径、文件后缀(两种方式)

    C++ string如何获取文件路径文件名、文件路径、文件后缀(两种方式)

    这篇文章主要介绍了C++ string如何获取文件路径文件名、文件路径、文件后缀(两种方式),具有很好的参考价值,希望对大家有所帮助。
    2023-06-06

最新评论