使用C语言实现珠玑妙算Mastermind小游戏

 更新时间:2023年03月30日 11:10:49   作者:高星熠  
这篇文章主要介绍了使用C语言实现珠玑妙算Mastermind小游戏,这是一款益智类多人游戏游戏,非常有趣,需要的朋友可以参考下

引言

最近玩到过一款十分好玩的益智类桌游——珠玑妙算-Mastermind,这款游戏也出现在热片《拆弹专家2》里,该款游戏就是有四个槽位,而要将6种颜色依次放入槽位之中,然后由出题人反馈正确位置及错误位置正确颜色数,再通过逻辑推理,推出正确的颜色及位置。因为这种游戏为多人游戏,一个人不能自己出题、判断及推理,我在手机上搜找相关游戏却没有找到相应游戏,于是,萌生自主编写的想法。

在这里插入图片描述

( Mastermind(珠玑妙算)是一种可供两名玩家使用的密码破译棋盘游戏。在1970年由Mordecai Meirowitz发明,他是一位以色列邮政和电信专家。 但游戏类似早期一种利用铅笔和纸进行的游戏,游戏名为“公牛和母牛”,可能追溯到一个世纪或更长时间。)

代码

这里其实原理与代码十分简单,是通过几个条件进行的逻辑判定。

#include<stdio.h>
#include <stdlib.h>
#include<time.h>
 main()
{
 int a,b,c,d,x,y,z,w,flag1=0,i=0,j=0,l=0,m=0;
 srand(time(NULL));//用机器时间设置随机种子
 x=rand()%6+1;//生成6个随机数字 
 do
 {y=rand()%6+1;}
 while(y==x);
 do
 {z=rand()%6+1;}
 while(z==x || z==y);
 do
 {w=rand()%6+1;}
 while(w==z || w==x || w==y);//设置的6个随机数互不相同 
 while(flag1==0)
 {
  printf("请依次输入4个数字(1-6中),谢谢,这是第 %d 次尝试\n-\n ",m+1);
  scanf("%d %d %d %d",&a,&b,&c,&d);
  if(a==x)
  i++;
  if(b==y)
  i++;
  if(c==z)
  i++;
  if(d==w)
  i++;     //确定正确位置个数 
     if(a!=x && (x==b || x==c || x==d))
     j++;
     if(b!=y && (y==a || y==c || y==d))
     j++;
     if(c!=z && (z==a || z==b || z==d))
     j++;
     if(d!=w && (w==a || w==b || w==c))
     j++;     //确定错误位置、正确数值个数 
     printf("\n正确位置及数值有 %d 个,正确数值错误位置有 %d 个\n",i,j);
     if(i==4)//完全推出情况返回答案,反馈推理次数,跳出循环 
     {
      m++;
   printf("\n恭喜你答对了,你用了 %d 次,答案是: %d %d %d %d\n",m,x,y,z,w);
   flag1++;
  }
     m++;//次数加一 
     i=0;
     j=0;//判断正确位置个数及确定错误位置、正确数值个数清零 
 }
}

运行尝试

在这里插入图片描述

结语

用C语言实现了该款游戏后,这款游戏还是十分的简陋,此后我会继续优化该款游戏图形化界面等方面。

到此这篇关于使用C语言实现珠玑妙算Mastermind小游戏的文章就介绍到这了,更多相关C语言Mastermind小游戏内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解C++中二进制求补运算符与下标运算符的用法

    详解C++中二进制求补运算符与下标运算符的用法

    这篇文章主要介绍了C++中二进制求补运算符与下标运算符的用法,是C++入门学习中的基础知识,需要的朋友可以参考下
    2016-01-01
  • C语言入门篇--局部全局变量的作用域及生命周期

    C语言入门篇--局部全局变量的作用域及生命周期

    本篇文章是c语言基础篇,本文对初识c语言的变量、局部全局变量的作用域及生命周期做了简要的概述,希望可以帮助大家快速入门c语言的世界,更好的理解c语言
    2021-08-08
  • 关于C++中虚拟继承的一些总结分析

    关于C++中虚拟继承的一些总结分析

    虚拟继承在一般的应用中很少用到,所以也往往被忽视,这也主要是因为在C++中,多重继承是不推荐的,也并不常用
    2013-09-09
  • 详解C++ STL vector容量(capacity)和大小(size)的区别

    详解C++ STL vector容量(capacity)和大小(size)的区别

    这篇文章主要介绍了详解C++ STL vector容量(capacity)和大小(size)的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • C语言中dlopen和dlsym的使用方式详解

    C语言中dlopen和dlsym的使用方式详解

    这篇文章主要为大家详细介绍了C语言中dlopen和dlsym的使用方式,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • C++11基于范围的for循环代码示例

    C++11基于范围的for循环代码示例

    这篇文章主要给大家介绍了关于C++11基于范围的for循环的相关资料,范围for循环(也称为C++11的基于范围的for循环)是一种简化迭代容器(如数组、向量、列表等)元素的方式,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-06-06
  • C语言实现九大排序算法的实例代码

    C语言实现九大排序算法的实例代码

    这篇文章主要给大家介绍了关于C语言实现九大排序算法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • C++11中的智能指针和垃圾回收使用

    C++11中的智能指针和垃圾回收使用

    本文主要介绍了C++11中的智能指针和垃圾回收使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • C++ 标准模板类详解

    C++ 标准模板类详解

    今天小编就为大家分享一篇关于C++标准模板类的介绍与使用讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2021-09-09
  • Matlab绘制花里胡哨的山脊图

    Matlab绘制花里胡哨的山脊图

    这篇文章主要介绍了如何利用Matlab实现绘制一些花里胡哨的山脊图,文中的示例代码讲解详细,对我们学习Matlab有一定的帮助,需要的可以参考一下
    2023-02-02

最新评论