/******************************************************
石头剪刀布的程序
源程序是从开源中国看到的,
地址为http://www.oschina.net/code/snippet_1448389_46137
geek_monkey于2015年3月3日修改了bug(输入字符非石头剪刀布都算是玩家赢)
编译环境为VC++6.0
增加“上帝模式”和数据统计,纯属娱乐。
我是C语言初学者,轻喷
******************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
 
int exist_in(char *arr1[][2], char *arr2[], int length);//胜负判断函数
void nextround (void);//本轮结束后的处理轮函数
enum {QUIT,OK} status;//标志位,QUIT=0,OK=1
int vcnt = 0,dcnt = 0,tcnt = 0;//数据统计
int main(void)
{
    int i = 0, length;

time_t t;
status = OK;
    char *person = (char *) malloc(100);//动态内存分配
    char *computer = (char *) malloc(100);
     
    char *computer_person[2];
 
    char *guess_arr[] = {"石头", "剪刀", "布"};
    char *win[3][2] = {{"布", "石头"}, {"石头", "剪刀"}, {"剪刀", "布"}};

length = (int)sizeof(win)/(int)sizeof(win[0]);//此例中length=3

while (status == OK)//标志位1,执行死循环
    {
        srand((unsigned) time(&t));
        i = rand() % 3 ;//srand和rand配合产生随机数
         
        computer = guess_arr[i];//将随机数转换为石头剪刀或者布的字符串
computer_person[0] = computer;//将计算机的出拳结果放入*computer_person

do{
printf("请输入 剪刀 石头 布:\n");
scanf("%s",person);
if (strcmp(person,"god") == 0)//上帝模式,实现可看到电脑出拳结果
{
printf("*********************************\n");
printf("上帝你好,电脑本局的出的是 : %s \n",computer);
printf("*********************************\n");
continue;
}
else
printf("你输入的是:%s\n", person);//下一行用于判断用户的输入是否为石头剪刀布
if ((strcmp(person,"石头") == 0 )||(strcmp(person,"剪刀") == 0 )||(strcmp(person,"布") == 0 ))
break;//结果为石头剪刀布之一,跳出循环。
else
printf("请检查你的输入是否为石头剪刀或者布: \n");
}while(1);

computer_person[1] = person;
  tcnt++;        
         
        if (strcmp(computer, person) == 0 )
        {
            printf("平手!\n\n");
        }
        else if (exist_in(win, computer_person, length))
        {
              printf("电脑获胜\n\n");
 dcnt++;
        }
        else
        {
            printf("玩家获胜\n\n");
vcnt++;
            nextround();
        }   
 
    }
     
    person = NULL;
    computer = NULL;    
         
    free(person);
    free(computer);
     
    return 0;
 
}
/**********************************************
 exist_in函数用于判断是否是电脑获胜,length为3,比较3次,arr1和arr2中字符串的
 顺序即可判断出电脑是否获胜。
 *********************************************/
int exist_in(char *arr1[][2], char *arr2[], int length)
{
    int i;
    for (i = 0; i < length; i++)
    {
        if (strcmp(arr1[i][0], arr2[0]) == 0 && strcmp(arr1[i][1], arr2[1]) == 0)
        {
            return 1;
        }
             
    }
         
    return 0;
 
 }
void nextround (void)
{
int m = 0;
printf("请输入指令:1退出,2继续,3数据总结\n");
scanf ("%d",&m);

switch (m)
{
case 1:
status = QUIT;
break;
case 2:
printf("新的一局开始\n");
break;
case 3:
printf("您的胜场数是%d,败场数是%d,总场数是%d\n",vcnt,dcnt,tcnt);
status = QUIT;
break;
default:
printf("输入错误退出");
status = QUIT;
break;
}
}

一个C语言的剪刀石头布小游戏相关推荐

  1. linux 剪刀石头布c语言,利用C语言编写“剪刀石头布”小游戏

    前言 大家好~ 我是一名C语言初学者,学了C语言基础后,我制作了一个小游戏:剪刀石头布. 希望大家能对我的思路和代码提出小Tips(eg.更简便的方法与程序) 我也会虚心接受大家的建议~ 一.游戏原理 ...

  2. C语言实现剪刀石头布小游戏

    代码如下: //(linux下正常运行!windows下运行可能会乱码!) /************************************************************* ...

  3. C语言 编写“剪刀石头布”小游戏

    目录 前言 一.游戏原理 二.C语言代码 1.引入函数 2.初始页面显示 3.游戏过程及结果 总结 前言 大家好~ 我是一名C语言初学者,学了C语言基础后,我制作了一个小游戏:剪刀石头布. 希望大家能 ...

  4. 教你如何用C语言设计一个有趣的猜数字小游戏

    目录 前言 猜数字游戏 打印菜单 处理玩家选择的操作 编写猜数字游戏函数 游戏中要猜数字从哪来?(配置随机数生成器) 时间戳 开始生成随机数 game函数内部编写 完整代码 总结 前言 好久不见,今天 ...

  5. linux 剪刀石头布c语言,C语言实现最简单的剪刀石头布小游戏示例

    本文实例讲述了C语言实现最简单的剪刀石头布小游戏.分享给大家供大家参考,具体如下: #include #include #include /*************\ * 剪刀 石头 布 * * 最 ...

  6. c语言小游戏 精简_一个简易的贪吃蛇小游戏C语言源码

    /* *程序名称:贪吃蛇v2.1 *程序描述:一个简易的贪吃蛇小游戏 *版本信息:v2.1 *v1.1版本更新:1:加入菜单选择项 *v1.2版本更新:1:修复菜单选择bug *v1.3班本更新:1: ...

  7. python拿什么做可视化界面好-手把手教你用Python做个可视化的“剪刀石头布”小游戏...

    /1 前言/ 最近在学习PyQt5可视化界面,这是一个内容非常丰富的gui库,相对于tkinter库,功能更加强大,界面更加美观,操作也不难.于是我开始小试牛刀,用PyQt5做个可视化的"剪 ...

  8. C语言编写2048小游戏

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/104992424 2 ...

  9. C语言 剧情版小游戏

    C语言超简单小游戏,,,剧情版,,, 运行效果图: #include<stdio.h>int main() {/*第一关*/int a,b,c,d,e,f,g,h; // int yx=8 ...

最新文章

  1. GitHub超3k星!从Python代码到APP只需要一个小工具~
  2. oracle 快速备份表数据
  3. 汇编中断知识之INT 1CH
  4. C# 生成私钥和公钥
  5. idea中如何将一个普通项目转换为maven项目
  6. 数据库利器Navicat最全快捷键整理
  7. CentOS 服务器搭建 mediawiki
  8. iPhone开发之self.的用法
  9. Java Hex 16进制的 byte String 转换类
  10. Python学习笔记_零碎知识
  11. Linux下常用组的权限特点,Linux中的用户与用户组
  12. 网站常用组件收集整理
  13. Easy connect不能访问公网/外网/网页
  14. 阿里巴巴图标库字体iconfont旋转
  15. Java Spring 框架详解
  16. 建立 rsyslog 日志服务器
  17. 在keil中创立一个头文件
  18. 双通道(双CPU)服务器主板上内存条的安装方式
  19. 符号之间,记住你所需要的正则表达式
  20. windows下的ubuntu盘符问题

热门文章

  1. 计算机网络调试,ipconfig命令是调试计算机网络的常用命令
  2. 【转】管理岗位业务培训信息
  3. 如何通过request对象获取用户IP地址
  4. 云南省高中计算机学业水平考试,云南高中学业水平考试
  5. linux下安装dell SP2208WFP显示器摄像头驱动
  6. dreamweaver html 键盘输入文本,Dreamweaver
  7. [NOIP模拟][好题]造盒子
  8. MongoDB学习(接上文)
  9. Datawhale-天池 街景字符识别赛题 Task3 字符识别模型
  10. Tomcat启动报错“java.lang.ClassNotFoundException: org.apache.catalina.loader.DevLoader”