使用C語(yǔ)言實(shí)現(xiàn)珠璣妙算Mastermind小游戲
引言
最近玩到過(guò)一款十分好玩的益智類桌游——珠璣妙算-Mastermind,這款游戲也出現(xiàn)在熱片《拆彈專家2》里,該款游戲就是有四個(gè)槽位,而要將6種顏色依次放入槽位之中,然后由出題人反饋正確位置及錯(cuò)誤位置正確顏色數(shù),再通過(guò)邏輯推理,推出正確的顏色及位置。因?yàn)檫@種游戲?yàn)槎嗳擞螒?,一個(gè)人不能自己出題、判斷及推理,我在手機(jī)上搜找相關(guān)游戲卻沒(méi)有找到相應(yīng)游戲,于是,萌生自主編寫(xiě)的想法。

( Mastermind(珠璣妙算)是一種可供兩名玩家使用的密碼破譯棋盤(pán)游戲。在1970年由Mordecai Meirowitz發(fā)明,他是一位以色列郵政和電信專家。 但游戲類似早期一種利用鉛筆和紙進(jìn)行的游戲,游戲名為“公牛和母牛”,可能追溯到一個(gè)世紀(jì)或更長(zhǎng)時(shí)間。)
代碼
這里其實(shí)原理與代碼十分簡(jiǎn)單,是通過(guò)幾個(gè)條件進(jìn)行的邏輯判定。
#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));//用機(jī)器時(shí)間設(shè)置隨機(jī)種子
x=rand()%6+1;//生成6個(gè)隨機(jī)數(shù)字
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);//設(shè)置的6個(gè)隨機(jī)數(shù)互不相同
while(flag1==0)
{
printf("請(qǐng)依次輸入4個(gè)數(shù)字(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++; //確定正確位置個(gè)數(shù)
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++; //確定錯(cuò)誤位置、正確數(shù)值個(gè)數(shù)
printf("\n正確位置及數(shù)值有 %d 個(gè),正確數(shù)值錯(cuò)誤位置有 %d 個(gè)\n",i,j);
if(i==4)//完全推出情況返回答案,反饋推理次數(shù),跳出循環(huán)
{
m++;
printf("\n恭喜你答對(duì)了,你用了 %d 次,答案是: %d %d %d %d\n",m,x,y,z,w);
flag1++;
}
m++;//次數(shù)加一
i=0;
j=0;//判斷正確位置個(gè)數(shù)及確定錯(cuò)誤位置、正確數(shù)值個(gè)數(shù)清零
}
}
運(yùn)行嘗試

結(jié)語(yǔ)
用C語(yǔ)言實(shí)現(xiàn)了該款游戲后,這款游戲還是十分的簡(jiǎn)陋,此后我會(huì)繼續(xù)優(yōu)化該款游戲圖形化界面等方面。
到此這篇關(guān)于使用C語(yǔ)言實(shí)現(xiàn)珠璣妙算Mastermind小游戲的文章就介紹到這了,更多相關(guān)C語(yǔ)言Mastermind小游戲內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用C語(yǔ)言編寫(xiě)一個(gè)強(qiáng)制關(guān)機(jī)程序
這篇文章主要為大家詳細(xì)介紹了如何使用C語(yǔ)言實(shí)現(xiàn)一個(gè)簡(jiǎn)單的"流氓軟件",一個(gè)可以強(qiáng)制關(guān)機(jī)惡作劇關(guān)機(jī)程序,輸入指定指令才可以解除,感興趣的小伙伴可以學(xué)習(xí)一下2023-11-11
C語(yǔ)言中的字符型數(shù)據(jù)與ASCII碼表
這篇文章主要介紹了C語(yǔ)言中的字符型數(shù)據(jù)與ASCII碼表,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
關(guān)于STL的erase()陷阱-迭代器失效問(wèn)題的總結(jié)
下面小編就為大家?guī)?lái)一篇關(guān)于STL的erase()陷阱-迭代器失效問(wèn)題的總結(jié)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12
C++ String部分成員模擬實(shí)現(xiàn)流程詳解
我們先不直接實(shí)現(xiàn)完整版的string,先實(shí)現(xiàn)簡(jiǎn)易版的string部分成員來(lái)基本了解下它的框架,以及以后來(lái)學(xué)習(xí)深淺拷貝的問(wèn)題。這樣有循序漸進(jìn)的過(guò)程嘛2022-08-08
淺析成員函數(shù)和常成員函數(shù)的調(diào)用
下面小編就為大家?guī)?lái)一篇淺析成員函數(shù)和常成員函數(shù)的調(diào)用。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧2016-05-05
C++可執(zhí)行文件絕對(duì)路徑值與VS安全檢查詳解
這篇文章主要給大家介紹了關(guān)于C++可執(zhí)行文件絕對(duì)路徑值與VS安全檢查的相關(guān)資料,文中通過(guò)圖文以及實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C++具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-01-01
C語(yǔ)言多種方法實(shí)現(xiàn)一個(gè)函數(shù)左旋字符串中K個(gè)字符
這篇文章主要為大家介紹了C語(yǔ)言多種方法實(shí)現(xiàn)一個(gè)函數(shù),可以左旋字符串中K個(gè)字符,文中附含詳細(xì)的示例講解,有需要的朋友可以借鑒參考下2021-10-10
Qt使用QJson模塊實(shí)現(xiàn)解析Json文件
在項(xiàng)目開(kāi)發(fā)過(guò)程中,經(jīng)常會(huì)遇到讀寫(xiě)Json文件的需求,掌握J(rèn)son文件的操作是基礎(chǔ)中的基礎(chǔ),下面我們就來(lái)看看如何使用QT內(nèi)置的QJson模塊解析Json文件吧2023-10-10

