欧美亚洲综合图区在线|天天射天天干国产成卜|99久久免费国产精精品|国产的欧美一区二区三区|日韩中文字幕无码不卡专区|亚麻成人aV极品一区二区|国产成人AV区一区二区三|成人免费一区二区三区视频网站

當(dāng)前位置:首頁(yè) > 軟件開放 > 正文內(nèi)容

用Python設(shè)計(jì)小游戲(python設(shè)計(jì)小游戲誰(shuí)先走到17誰(shuí)就贏)

軟件開放2年前 (2023-01-09)2621

本篇文章給大家談?wù)動(dòng)肞ython設(shè)計(jì)小游戲,以及python設(shè)計(jì)小游戲誰(shuí)先走到17誰(shuí)就贏對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站喔。

本文目錄一覽:

Python實(shí)現(xiàn)消消樂小游戲

pre{overflow-x: auto} 實(shí)現(xiàn) 消消樂的構(gòu)成主要包括三部分:游戲主體、計(jì)分器、計(jì)時(shí)器,下面來看一下具體實(shí)現(xiàn)。

先來看一下游戲所需 Python 庫(kù)。

import?os import?sys import?time import?pygame import?random

定義一些常量,比如:窗口寬高、網(wǎng)格行列數(shù)等,代碼如下:

WIDTH?=?400 HEIGHT?=?400 NUMGRID?=?8 GRIDSIZE?=?36 XMARGIN?=?(WIDTH?-?GRIDSIZE?*?NUMGRID)?//?2 YMARGIN?=?(HEIGHT?-?GRIDSIZE?*?NUMGRID)?//?2 ROOTDIR?=?os.getcwd() FPS?=?30

接著創(chuàng)建一個(gè)主窗口,代碼如下:

pygame.init() screen?=?pygame.display.set_mode((WIDTH,?HEIGHT)) pygame.display.set_caption('消消樂')

看一下效果:

再接著在窗口中畫一個(gè) 8 x 8 的網(wǎng)格,代碼如下:

screen.fill((255,?255,?220)) #?游戲界面的網(wǎng)格繪制 def?drawGrids(self): for?x?in?range(NUMGRID): for?y?in?range(NUMGRID): rect?=?pygame.Rect((XMARGIN+x*GRIDSIZE,?YMARGIN+y*GRIDSIZE,?GRIDSIZE,?GRIDSIZE)) self.drawBlock(rect,?color=(255,?165,?0),?size=1 #?畫矩形?block?框 def?drawBlock(self,?block,?color=(255,?0,?0),?size=2): pygame.draw.rect(self.screen,?color,?block,?size)

看一下效果:

再接著在網(wǎng)格中隨機(jī)放入各種拼圖塊,代碼如下:

while?True: self.all_gems?=?[] self.gems_group?=?pygame.sprite.Group() for?x?in?range(NUMGRID): self.all_gems.append([]) for?y?in?range(NUMGRID): gem?=?Puzzle(img_path=random.choice(self.gem_imgs),?size=(GRIDSIZE,?GRIDSIZE),?position=[XMARGIN+x*GRIDSIZE,?YMARGIN+y*GRIDSIZE-NUMGRID*GRIDSIZE],?downlen=NUMGRID*GRIDSIZE) self.all_gems[x].append(gem) self.gems_group.add(gem) if?self.isMatch()[0]?==?0: break

看一下效果:

再接著加入計(jì)分器和計(jì)時(shí)器,代碼如下:

#?顯示得分 def?drawScore(self): score_render?=?self.font.render('分?jǐn)?shù):'+str(self.score),?1,?(85,?65,?0)) rect?=?score_render.get_rect() rect.left,?rect.top?=?(55,?15) self.screen.blit(score_render,?rect) #?顯示加分 def?drawAddScore(self,?add_score): score_render?=?self.font.render('+'+str(add_score),?1,?(255,?100,?100)) rect?=?score_render.get_rect() rect.left,?rect.top?=?(250,?250) self.screen.blit(score_render,?rect) #?顯示剩余時(shí)間 def?showRemainingTime(self): remaining_time_render?=?self.font.render('倒計(jì)時(shí):?%ss'?%?str(self.remaining_time),?1,?(85,?65,?0)) rect?=?remaining_time_render.get_rect() rect.left,?rect.top?=?(WIDTH-190,?15) self.screen.blit(remaining_time_render,?rect)

看一下效果:

當(dāng)設(shè)置的游戲時(shí)間用盡時(shí),我們可以生成一些提示信息,代碼如下:

while?True: for?event?in?pygame.event.get(): if?event.type?==?pygame.QUIT: pygame.quit() sys.exit() if?event.type?==?pygame.KEYUP?and?event.key?==?pygame.K_r: flag?=?True if?flag: break screen.fill((255,?255,?220)) text0?=?'最終得分:?%s'?%?score text1?=?'按?R?鍵重新開始' y?=?140 for?idx,?text?in?enumerate([text0,?text1]): text_render?=?font.render(text,?1,?(85,?65,?0)) rect?=?text_render.get_rect() if?idx?==?0: rect.left,?rect.top?=?(100,?y) elif?idx?==?1: rect.left,?rect.top?=?(100,?y) y?+=?60 screen.blit(text_render,?rect) pygame.display.update()

看一下效果:

說完了游戲圖形化界面相關(guān)的部分,我們?cè)倏匆幌掠螒虻闹饕幚磉壿嫛?/p>

我們通過鼠標(biāo)來操縱拼圖塊,因此程序需要檢查有無拼圖塊被選中,代碼實(shí)現(xiàn)如下:

def?checkSelected(self,?position): for?x?in?range(NUMGRID): for?y?in?range(NUMGRID): if?self.getGemByPos(x,?y).rect.collidepoint(*position): return?[x,?y] return?None

我們需要將鼠標(biāo)連續(xù)選擇的拼圖塊進(jìn)行位置交換,代碼實(shí)現(xiàn)如下:

def?swapGem(self,?gem1_pos,?gem2_pos): margin?=?gem1_pos[0]?-?gem2_pos[0]?+?gem1_pos[1]?-?gem2_pos[1] if?abs(margin)?!=?1: return?False gem1?=?self.getGemByPos(*gem1_pos) gem2?=?self.getGemByPos(*gem2_pos) if?gem1_pos[0]?-?gem2_pos[0]?==?1: gem1.direction?=?'left' gem2.direction?=?'right' elif?gem1_pos[0]?-?gem2_pos[0]?==?-1: gem2.direction?=?'left' gem1.direction?=?'right' elif?gem1_pos[1]?-?gem2_pos[1]?==?1: gem1.direction?=?'up' gem2.direction?=?'down' elif?gem1_pos[1]?-?gem2_pos[1]?==?-1: gem2.direction?=?'up' gem1.direction?=?'down' gem1.target_x?=?gem2.rect.left gem1.target_y?=?gem2.rect.top gem1.fixed?=?False gem2.target_x?=?gem1.rect.left gem2.target_y?=?gem1.rect.top gem2.fixed?=?False self.all_gems[gem2_pos[0]][gem2_pos[1]]?=?gem1 self.all_gems[gem1_pos[0]][gem1_pos[1]]?=?gem2 return?True

每一次交換拼圖塊時(shí),我們需要判斷是否有連續(xù)一樣的三個(gè)及以上拼圖塊,代碼實(shí)現(xiàn)如下:

def?isMatch(self): for?x?in?range(NUMGRID): for?y?in?range(NUMGRID): if?x?+?2??-2: for?each?in?[res_match[1],?res_match[1]+1,?res_match[1]+2]: gem?=?self.getGemByPos(*[each,?start]) if?start?==?res_match[2]: self.gems_group.remove(gem) self.all_gems[each]

本篇文章給大家談?wù)動(dòng)肞ython設(shè)計(jì)小游戲,以及python設(shè)計(jì)小游戲誰(shuí)先走到17誰(shuí)就贏對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站喔。

?=?None elif?start?=?0: gem.target_y?+=?GRIDSIZE gem.fixed?=?False gem.direction?=?'down' self.all_gems[each][start+1]?=?gem else: gem?=?Puzzle(img_path=random.choice(self.gem_imgs),?size=(GRIDSIZE,?GRIDSIZE),?position=[XMARGIN+each*GRIDSIZE,?YMARGIN-GRIDSIZE],?downlen=GRIDSIZE) self.gems_group.add(gem) self.all_gems[each][start+1]?=?gem start?-=?1 elif?res_match[0]?==?2: start?=?res_match[2] while?start??-4: if?start?==?res_match[2]: for?each?in?range(0,?3): gem?=?self.getGemByPos(*[res_match[1],?start+each]) self.gems_group.remove(gem) self.all_gems[res_match[1]][start+each]?=?None elif?start?=?0: gem?=?self.getGemByPos(*[res_match[1],?start]) gem.target_y?+=?GRIDSIZE?*?3 gem.fixed?=?False gem.direction?=?'down' self.all_gems[res_match[1]][start+3]?=?gem else: gem?=?Puzzle(img_path=random.choice(self.gem_imgs),?size=(GRIDSIZE,?GRIDSIZE),?position=[XMARGIN+res_match[1]*GRIDSIZE,?YMARGIN+start*GRIDSIZE],?downlen=GRIDSIZE*3) self.gems_group.add(gem) self.all_gems[res_match[1]][start+3]?=?gem start?-=?1

之后反復(fù)執(zhí)行這個(gè)過程,直至耗盡游戲時(shí)間,游戲結(jié)束。

最后,我們動(dòng)態(tài)看一下游戲效果。

總結(jié)

本文我們使用 Python 實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的消消樂游戲,有興趣的可以對(duì)游戲做進(jìn)一步擴(kuò)展,比如增加關(guān)卡等。

到此這篇關(guān)于Python實(shí)現(xiàn)消消樂小游戲的文章就介紹到這了,希望大家以后多多支持!

用Python寫一個(gè)簡(jiǎn)單的小游戲

相信大家都玩過俄羅斯方塊吧,應(yīng)該是小時(shí)候的回憶吧,但是想不想了解一下這個(gè)程序是怎么寫出來的呢,自己寫出來的應(yīng)該玩起來更有感覺吧!

感覺還是蠻好玩吧!

接下來,我就分享一下這個(gè)游戲的源碼過程?。?/p>

先用python創(chuàng)建一個(gè)py文件

定義這次程序所需要的類

然后寫出它所需要的模塊

畫背景圖

畫網(wǎng)格線

# 畫已經(jīng)落下的方塊

# 畫單個(gè)方塊

# 畫得分等信息

這樣就可以寫出來一個(gè)十分簡(jiǎn)單的俄羅斯方塊啦,是不是覺得還不錯(cuò)呢!

python簡(jiǎn)單小游戲代碼 怎么用Python制作簡(jiǎn)單小游戲

1、Python猜拳小游戲代碼:

2、import random #導(dǎo)入隨機(jī)模塊

3、

4、num = 1

5、yin_num = 0

6、shu_num = 0

7、while num 2:

12、 print('不能出大于2的值')

13、 else:

14、 data = ['石頭', '剪刀', '布']

15、 com = random.randint(0, 2)

16、 print(您出的是{},電腦出的是{}.format(data[user], data[com]))

17、 if user == com:

18、 print('平局')

19、 continue

20、 elif (user == 0 and com == 1) or (user == 1 and com == 2) or (user == 2 and com == 0):

21、 print('你贏了')

22、 yin_num += 1

23、 else:

24、 print('你輸了')

25、 shu_num += 1

26、 num += 1

27、Python數(shù)字炸彈小游戲代碼:

28、import random

29、import time

30、

31、bomb = random.randint(1, 99)

32、print(bomb)

33、start = 0

34、end = 99

35、while 1 == 1:

36、

37、 people = int(input('請(qǐng)輸入{}到{}之間的數(shù):'.format(start, end)))

38、 if people bomb:

39、 print('大了')

40、 end = people

41、 elif people bomb:

42、 print('小了')

43、 start = people

44、 else:

45、 print('BOOM!!!')

46、 break

47、 print('等待電腦了輸入{}到{}之間的數(shù):'.format(start, end))

48、 time.sleep(1)

49、 com = random.randint(start + 1, end - 1)

50、 print('電腦輸入:{}'.format(com))

51、 if com bomb:

52、 print('大了')

53、 end = com

54、 elif com bomb:

55、 print('小了')

56、 start = com

57、 else:

58、 print('BOOM!!!')

59、 break

用Python設(shè)計(jì)小游戲的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于python設(shè)計(jì)小游戲誰(shuí)先走到17誰(shuí)就贏、用Python設(shè)計(jì)小游戲的信息別忘了在本站進(jìn)行查找喔。

掃描二維碼推送至手機(jī)訪問。

版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請(qǐng)注明出處。

本文鏈接:http://www.landcheck.net/post/3142.html

“用Python設(shè)計(jì)小游戲(python設(shè)計(jì)小游戲誰(shuí)先走到17誰(shuí)就贏)” 的相關(guān)文章

如何修改apk安裝包安裝路徑(手機(jī)如何更改安裝包安裝路徑)

如何修改apk安裝包安裝路徑(手機(jī)如何更改安裝包安裝路徑)

今天給各位分享如何修改apk安裝包安裝路徑的知識(shí),其中也會(huì)對(duì)手機(jī)如何更改安裝包安裝路徑進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、如何更改安裝默認(rèn)路徑 2、如何修改apk游戲文件 3、安裝軟件如何更改路徑? 4、如何修改apk 數(shù)據(jù)包路徑...

直播加游戲彩票源碼(直播帶彩票源碼)

直播加游戲彩票源碼(直播帶彩票源碼)

今天給各位分享直播加游戲彩票源碼的知識(shí),其中也會(huì)對(duì)直播帶彩票源碼進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、此刻主播助手視頻游戲直播源設(shè)置教程 2、有人說中國(guó)彩票和雙色球的搖獎(jiǎng),是用的錄播而不是用的直播,這是怎么回事? 3、抖音直播碰碰小游戲怎么...

168開獎(jiǎng)極速賽車騙局全過程(168極速賽車開獎(jiǎng)的視頻)

168開獎(jiǎng)極速賽車騙局全過程(168極速賽車開獎(jiǎng)的視頻)

本篇文章給大家談?wù)?68開獎(jiǎng)極速賽車騙局全過程,以及168極速賽車開獎(jiǎng)的視頻對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、極速賽車的技巧怎么玩? 2、168極速賽車是哪個(gè)國(guó)家的 3、極速賽車買前5名的方法 4、168極速賽車來源于哪個(gè)國(guó)家 5、極速賽車有...

微信游戲手游排行榜(微信游戲手游排行榜怎么關(guān)閉)

微信游戲手游排行榜(微信游戲手游排行榜怎么關(guān)閉)

今天給各位分享微信游戲手游排行榜的知識(shí),其中也會(huì)對(duì)微信游戲手游排行榜怎么關(guān)閉進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、微信最火的手游排行榜 2、手游排行榜前十名? 3、微信小程序游戲手游排行榜 4、2022最新手游排行榜前十名 5、20...

短信網(wǎng)頁(yè)在線轟炸源碼教程(在線短信驗(yàn)證碼轟炸網(wǎng)頁(yè)版)

短信網(wǎng)頁(yè)在線轟炸源碼教程(在線短信驗(yàn)證碼轟炸網(wǎng)頁(yè)版)

今天給各位分享短信網(wǎng)頁(yè)在線轟炸源碼教程的知識(shí),其中也會(huì)對(duì)在線短信驗(yàn)證碼轟炸網(wǎng)頁(yè)版進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、短信炸彈的短信炸彈 2、短信轟炸是什么意思? 3、最近被人轟炸了,好多垃圾短信,誰(shuí)知道怎么轟炸人阿。求大神指教 4、短...

電腦怎么安裝音頻設(shè)備Windows8(win7電腦怎么安裝音頻設(shè)備)

電腦怎么安裝音頻設(shè)備Windows8(win7電腦怎么安裝音頻設(shè)備)

本篇文章給大家談?wù)勲娔X怎么安裝音頻設(shè)備Windows8,以及win7電腦怎么安裝音頻設(shè)備對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、win7電腦沒有音頻設(shè)備怎么辦? 2、win8沒有相應(yīng)的聲卡驅(qū)動(dòng)沒聲音怎么辦? 3、電腦沒有聲音怎么辦windows10 4...

广河县| 辰溪县| 新竹县| 昌都县| 绥阳县| 孙吴县| 旬邑县| 红安县| 张家港市| 万州区| 长春市| 高密市| 宜兰市| 康保县| 长沙市| 云梦县| 长寿区| 济南市| 陆河县| 佛冈县| 浦江县| 武安市| 若尔盖县| 九江市| 桦川县| 丘北县| 郧西县| 潼关县| 肇源县| 时尚| 临颍县| 静宁县| 临夏县| 五家渠市| 沁阳市| 无为县| 揭东县| 安吉县| 玉溪市| 德州市| 阳信县|