使用C語言實(shí)現(xiàn)珠璣妙算Mastermind小游戲
引言
最近玩到過一款十分好玩的益智類桌游——珠璣妙算-Mastermind,這款游戲也出現(xiàn)在熱片《拆彈專家2》里,該款游戲就是有四個槽位,而要將6種顏色依次放入槽位之中,然后由出題人反饋正確位置及錯誤位置正確顏色數(shù),再通過邏輯推理,推出正確的顏色及位置。因?yàn)檫@種游戲?yàn)槎嗳擞螒颍粋€人不能自己出題、判斷及推理,我在手機(jī)上搜找相關(guān)游戲卻沒有找到相應(yīng)游戲,于是,萌生自主編寫的想法。
( Mastermind(珠璣妙算)是一種可供兩名玩家使用的密碼破譯棋盤游戲。在1970年由Mordecai Meirowitz發(fā)明,他是一位以色列郵政和電信專家。 但游戲類似早期一種利用鉛筆和紙進(jìn)行的游戲,游戲名為“公牛和母牛”,可能追溯到一個世紀(jì)或更長時間。)
代碼
這里其實(shí)原理與代碼十分簡單,是通過幾個條件進(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è)置隨機(jī)種子 x=rand()%6+1;//生成6個隨機(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個隨機(jī)數(shù)互不相同 while(flag1==0) { printf("請依次輸入4個數(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++; //確定正確位置個數(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++; //確定錯誤位置、正確數(shù)值個數(shù) printf("\n正確位置及數(shù)值有 %d 個,正確數(shù)值錯誤位置有 %d 個\n",i,j); if(i==4)//完全推出情況返回答案,反饋推理次數(shù),跳出循環(huán) { m++; printf("\n恭喜你答對了,你用了 %d 次,答案是: %d %d %d %d\n",m,x,y,z,w); flag1++; } m++;//次數(shù)加一 i=0; j=0;//判斷正確位置個數(shù)及確定錯誤位置、正確數(shù)值個數(shù)清零 } }
運(yùn)行嘗試
結(jié)語
用C語言實(shí)現(xiàn)了該款游戲后,這款游戲還是十分的簡陋,此后我會繼續(xù)優(yōu)化該款游戲圖形化界面等方面。
到此這篇關(guān)于使用C語言實(shí)現(xiàn)珠璣妙算Mastermind小游戲的文章就介紹到這了,更多相關(guān)C語言Mastermind小游戲內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用C語言編寫一個強(qiáng)制關(guān)機(jī)程序
這篇文章主要為大家詳細(xì)介紹了如何使用C語言實(shí)現(xiàn)一個簡單的"流氓軟件",一個可以強(qiáng)制關(guān)機(jī)惡作劇關(guān)機(jī)程序,輸入指定指令才可以解除,感興趣的小伙伴可以學(xué)習(xí)一下2023-11-11關(guān)于STL的erase()陷阱-迭代器失效問題的總結(jié)
下面小編就為大家?guī)硪黄P(guān)于STL的erase()陷阱-迭代器失效問題的總結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12C++ String部分成員模擬實(shí)現(xiàn)流程詳解
我們先不直接實(shí)現(xiàn)完整版的string,先實(shí)現(xiàn)簡易版的string部分成員來基本了解下它的框架,以及以后來學(xué)習(xí)深淺拷貝的問題。這樣有循序漸進(jìn)的過程嘛2022-08-08淺析成員函數(shù)和常成員函數(shù)的調(diào)用
下面小編就為大家?guī)硪黄獪\析成員函數(shù)和常成員函數(shù)的調(diào)用。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考,一起跟隨小編過來看看吧2016-05-05C語言多種方法實(shí)現(xiàn)一個函數(shù)左旋字符串中K個字符
這篇文章主要為大家介紹了C語言多種方法實(shí)現(xiàn)一個函數(shù),可以左旋字符串中K個字符,文中附含詳細(xì)的示例講解,有需要的朋友可以借鑒參考下2021-10-10Qt使用QJson模塊實(shí)現(xiàn)解析Json文件
在項(xiàng)目開發(fā)過程中,經(jīng)常會遇到讀寫Json文件的需求,掌握J(rèn)son文件的操作是基礎(chǔ)中的基礎(chǔ),下面我們就來看看如何使用QT內(nèi)置的QJson模塊解析Json文件吧2023-10-10