Python代碼制作24點(diǎn)小游戲

開發(fā)工具

Python版本:3.6.4

相關(guān)模塊:

pygame模塊;

以及一些Python自帶的模塊。

環(huán)境搭建

安裝Python并添加到環(huán)境變量腥例,pip安裝需要的相關(guān)模塊即可糟趾。

原理簡介

游戲規(guī)則(改編自維基百科):

從1~10這十個(gè)數(shù)字中隨機(jī)抽取4個(gè)數(shù)字(可重復(fù))原朝,對(duì)這四個(gè)數(shù)運(yùn)用加、減假瞬、乘省店、除和括號(hào)進(jìn)行運(yùn)算得出24。每個(gè)數(shù)字都必須使用一次笨触,但不能重復(fù)使用懦傍。詳見:

https://zh.wikipedia.org/wiki/24%E7%82%B9

逐步實(shí)現(xiàn):

Step1****:制作24點(diǎn)生成器

既然是24點(diǎn)小游戲,當(dāng)然要先定義一個(gè)24點(diǎn)游戲生成器啦芦劣。主要思路就是隨機(jī)生成4個(gè)有解的數(shù)字粗俱,且范圍在1~10之間,代碼實(shí)現(xiàn)如下:

在驗(yàn)證4個(gè)數(shù)字是否有解并求出所有解部分虚吟,我直接暴力枚舉然后去重了寸认,感興趣的同學(xué)可以自己再優(yōu)化一下求解算法(有數(shù)字重復(fù)的時(shí)候)。我的代碼如下圖所示串慰,其實(shí)就是遞歸枚舉所有排序然后一一驗(yàn)證是否有解:

圖片

Step2****:定義游戲精靈類因?yàn)橥婕倚枰ㄟ^鼠標(biāo)點(diǎn)擊來操作卡片偏塞,這時(shí)候就涉及到一些碰撞檢測(cè)。所以先定義一些必要的游戲精靈類邦鲫。①卡片類

卡片類的定義也很簡單灸叼,在屏幕上根據(jù)被賦予的屬性值來顯示自身即可神汹。當(dāng)然之后也需要根據(jù)用戶的操作來改變這些屬性值(內(nèi)容、顏色古今、字體等)并在屏幕上根據(jù)屬性的改變而改變顯示狀態(tài)即可屁魏。具體而言代碼實(shí)現(xiàn)如下:

圖片

②按鈕類

按鈕類和卡片類類似,唯一的不同點(diǎn)就是在用戶點(diǎn)擊按鈕時(shí)需要根據(jù)該按鈕的功能來響應(yīng)用戶的本次點(diǎn)擊操作(即實(shí)現(xiàn)一次該功能)捉腥。因此只需要繼承卡片類氓拼,然后再定義一個(gè)響應(yīng)用戶點(diǎn)擊按鈕事件的回調(diào)函數(shù)即可。代碼實(shí)現(xiàn)如下:

圖片

Step3****:實(shí)現(xiàn)游戲主循環(huán)先構(gòu)思一下怎么設(shè)計(jì)游戲主界面抵碟,個(gè)人的簡單設(shè)計(jì)草圖如下(不是特別走心的設(shè)計(jì)草圖T_T):

圖片

OK桃漾,開搞。先初始化拟逮、加載必要的素材和定義必要的變量呈队,代碼實(shí)現(xiàn)如下:

圖片

游戲主循環(huán)主要分三個(gè)部分,首先是按鍵檢測(cè):

圖片

根據(jù)檢測(cè)結(jié)果更新卡片狀態(tài)和一些變量:

圖片

當(dāng)有兩個(gè)數(shù)字和一個(gè)運(yùn)算符被點(diǎn)擊時(shí)唱歧,則執(zhí)行被點(diǎn)擊數(shù)字1{+/-/×/÷}被點(diǎn)擊數(shù)字2操作(數(shù)字1宪摧、2根據(jù)點(diǎn)擊順序確定),并進(jìn)一步更新卡片屬性和一些必要的變量:

圖片

最后根據(jù)各個(gè)卡片的屬性在屏幕上顯示各個(gè)卡片颅崩,若游戲勝利/游戲失敗几于,則同時(shí)顯示游戲勝利/游戲失敗提示框:

圖片

好的,我介紹完了

image.png

All Done沿后!完整源代碼歡迎與我交流沿彭。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末尖滚,一起剝皮案震驚了整個(gè)濱河市喉刘,隨后出現(xiàn)的幾起案子漆弄,更是在濱河造成了極大的恐慌,老刑警劉巖撼唾,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件廉邑,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡倒谷,警方通過查閱死者的電腦和手機(jī)蛛蒙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門渤愁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人抖格,你說我怎么就攤上這事诺苹」窘” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵筝尾,是天一觀的道長办桨。 經(jīng)常有香客問我筹淫,道長呢撞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任殊霞,我火速辦了婚禮,結(jié)果婚禮上绷蹲,老公的妹妹穿的比我還像新娘。我一直安慰自己祝钢,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布拦英。 她就那樣靜靜地躺著,像睡著了一般疤估。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上铃拇,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音仔戈,去河邊找鬼。 笑死监徘,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的凰盔。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼户敬,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了尿庐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤抄瑟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后皮假,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡贺纲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年褪测,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了猴誊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侮措。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖萝毛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情笆包,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布庵佣,位于F島的核電站,受9級(jí)特大地震影響巴粪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜肛根,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一辫塌、第九天 我趴在偏房一處隱蔽的房頂上張望派哲。 院中可真熱鬧臼氨,春花似錦芭届、人聲如沸感耙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽屡拨。三九已至只酥,卻和暖如春洁仗,著一層夾襖步出監(jiān)牢的瞬間层皱,已是汗流浹背赠潦。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工草冈, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人怎棱。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像拳恋,于是被迫代替她去往敵國和親凡资。 傳聞我的和親對(duì)象是個(gè)殘疾皇子谬运,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345