珠玑妙算-Mastermind小游戏C语言实现_珠玑妙算 在线_高星熠的博客-程序员宝宝

技术标签: 笔记  C语言  c语言  游戏  

引言

最近玩到过一款十分好玩的益智类桌游——珠玑妙算-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语言实现了该款游戏后,这款游戏还是十分的简陋,此后我会继续优化该款游戏图形化界面等方面。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_50459047/article/details/114299836

智能推荐

成功解决ModuleNotFoundError: No module named '_pywrap_tensorflow_internal'_一个处女座的程序猿的博客-程序员宝宝

成功解决ModuleNotFoundError: No module named '_pywrap_tensorflow_internal'目录解决问题解决思路解决方法解决问题Traceback (most recent call last): File "F:\Program Files\Python\Python36\lib\si...

白苹果了怎么办_苹果手机出现白苹果、死机、不断重启怎么办?_weixin_39608457的博客-程序员宝宝

小伙伴们的苹果设备是否出现过白苹果、不断重启、更新失败、卡机死机、进入了恢复模式等情况呢?小编自己的iPhoneXR就遇到过,不知道怎么操作的就进入了恢复模式,有时候手机卡机需要强制重启,遇到问题就想去外面的修理店解决一下,可是路途遥远,还要有被套路的思想准备,所以小编决定自己百度方法来解决手机可出现的问题,接下来和大家分享一下吧!一、 白苹果1. 同时按下“电源键”和“Home键”,直到屏幕黑屏...

Pytorch教程之torch.mm、torch.bmm、torch.matmul、masked_fill_torch.mm和torch.matmul_steelDK的博客-程序员宝宝

这几天正在看NLP中的注意力机制,代码中涉及到了一些关于张量矩阵乘法和填充一些代码,这里积累一下。主要参考了pytorch2.0的官方文档。

使用PictureBox显示分割图像_jimmy212的博客-程序员宝宝

使用Graphic的Transform显示分割图片

C++实现后缀表达式求值_后缀表达式求值c++_南隅笙箫的博客-程序员宝宝

算法代码C++程序不使用头文件使用头文件运行结果

【数据结构】后缀表达式求值_数据结构后缀表达式求值_Mae_strive的博客-程序员宝宝

一、题目描述描述输入一个后缀表达式,计算它的值。操作数和操作码之间都以空格分开。输入一行,后缀表达式输出一行,一个整数,为后缀表达式的值二、解题思路与上一篇中缀转后缀表达式差不多,只是优化了可以输入的不只是个位数因为每一个操作数和操作码之间都用空格隔开,这样就可以避免ASCII码只能转换0-9的数字的缺点了例如:初始化c=0 两位数 161符合操作数 c=c*10+1 保存 16符合操作数 c=c*10+6 保存 16再扫描到空格 然后前一位是数字则将c压栈三、代码实现#in

随便推点

监控——Prometheus介绍_prometheus监控-程序员宝宝

一、常用的监控cacti Nagios Zabbix Prometheus open-Falcaon二、

Py之seaborn:数据可视化seaborn库(二)的组合图可视化之密度图/核密度图分布可视化、箱型图/散点图、小提琴图/散点图的函数源代码详解之最强攻略(建议收藏)_python小提琴图加散点图_一个处女座的程序猿的博客-程序员宝宝

​Py之seaborn:数据可视化seaborn库(二)的组合图可视化之密度图/核密度图分布可视化、箱型图/散点图、小提琴图/散点图的函数源代码详解之最强攻略(建议收藏)目录二、组合图可视化相关文章Py之seaborn:seaborn库的简介、安装、使用方法之详细攻略Py之seaborn:数据可视化seaborn库(一)的柱状图、箱线图(置信区间图)、散点图/折线图、核密度图/等高线图、盒形图/小提琴图/LV多框图的简介、使用方法之最强攻略(建议收藏)Py之seaborn:数据可视

007. ESP32-C3-MINI-1 模组电路设计注意_startpot的博客-程序员宝宝

1.电路设计参考2,下载操作(参考)006. esp32 下载--第二版_startpot的博客-程序员宝宝1. 先按boot键(不放开),再按 复位按键(EN),按下,放开。会进入下载模式。如果进入下载模式失败。重复,按住Boot键不放,复位按键(EN),按下,放开。123...

为什么我的电脑不能从U盘里复制6G多的文件显示文件过大不能复制_u盘超过6g不能拷贝__mzz的博客-程序员宝宝

将目标磁盘的磁盘格式改为NTFS,FAT32格式不支持单个文件超过4G的文件点“开始→程序→附件→命令”提示符(这是Windows XP内置的一个类似于DOS的界面,内部所有的指令语句和DOS下的基本相同)。如果你想将C盘转换成NTFS,后在开始--所有程序--附件--命令指示符下输入“convert c: /fs:ntfs”即可。如果你想将D盘转换成NTFS,后在开始--所有程序--附

GF框架+XIL 项目整合_gf version.txt_海尔辛的博客-程序员宝宝

项目unity版本:2020.3.18f1XIL版本:Commits on Oct 26, 2021GameFramework版本:Commits on Sep 28, 2021UnityGameFramework版本:Commits on Oct 28, 2021StarForce版本:Commits on Aug 9, 2021HFS版本:2.3项目克隆:StarForce克隆仓库:https://github.com/EllanJiang/StarForceUnityGameFram

Final关键字功能概述_momo131422的博客-程序员宝宝

Final关键字可以用来修饰引用、方法和类。1.用来修饰一个引用1.1如果引用为基本数据类型,则该引用为常量,该值无法修改;1.2如果引用为引用数据类型,比如对象、数组,则该对象、数组本身可以修改,但指向该对象或数组的地址的引用不能修改。1.2如果引用时类的成员变量,则必须当场赋值,否则编译会报错。2.用来修饰一个方法当使用final修饰方法时,这个方法将成为最终方法,无法被子类重写...

推荐文章

热门文章

相关标签