日韩精品亚洲精品中文字幕乱伦AV|曰韩区二区三区日韩中文字幕五码|ady99久久人人看人人摸人人|动漫一区二区黄99精品视频在线|AV片在线观看亚洲中文国产精品|伦乱在线VA欧美性爱一二区|亚洲无码mv91热色视频|激情六月综合欧美精品中文

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

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

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

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

本文目錄一覽:

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

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

先來看一下游戲所需 Python 庫。

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)建一個主窗口,代碼如下:

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

看一下效果:

再接著在窗口中畫一個 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)格中隨機放入各種拼圖塊,代碼如下:

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

看一下效果:

再接著加入計分器和計時器,代碼如下:

#?顯示得分 def?drawScore(self): score_render?=?self.font.render('分數(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) #?顯示剩余時間 def?showRemainingTime(self): remaining_time_render?=?self.font.render('倒計時:?%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è)置的游戲時間用盡時,我們可以生成一些提示信息,代碼如下:

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)的部分,我們再看一下游戲的主要處理邏輯。

我們通過鼠標來操縱拼圖塊,因此程序需要檢查有無拼圖塊被選中,代碼實現(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

我們需要將鼠標連續(xù)選擇的拼圖塊進行位置交換,代碼實現(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

每一次交換拼圖塊時,我們需要判斷是否有連續(xù)一樣的三個及以上拼圖塊,代碼實現(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ù)動肞ython設(shè)計小游戲,以及python設(shè)計小游戲誰先走到17誰就贏對應(yīng)的知識點,希望對各位有所幫助,不要忘了收藏本站喔。

?=?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í)行這個過程,直至耗盡游戲時間,游戲結(jié)束。

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

總結(jié)

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

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

用Python寫一個簡單的小游戲

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

感覺還是蠻好玩吧!

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

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

定義這次程序所需要的類

然后寫出它所需要的模塊

畫背景圖

畫網(wǎng)格線

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

# 畫單個方塊

# 畫得分等信息

這樣就可以寫出來一個十分簡單的俄羅斯方塊啦,是不是覺得還不錯呢!

python簡單小游戲代碼 怎么用Python制作簡單小游戲

1、Python猜拳小游戲代碼:

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

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('請輸入{}到{}之間的數(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è)計小游戲的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于python設(shè)計小游戲誰先走到17誰就贏、用Python設(shè)計小游戲的信息別忘了在本站進行查找喔。

掃描二維碼推送至手機訪問。

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

本文鏈接:http://m.atlasseeker.com/post/3142.html

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

手機百度瀏覽器收藏刪除了怎么恢復(fù)(手機百度刪除的收藏怎么恢復(fù))

手機百度瀏覽器收藏刪除了怎么恢復(fù)(手機百度刪除的收藏怎么恢復(fù))

今天給各位分享手機百度瀏覽器收藏刪除了怎么恢復(fù)的知識,其中也會對手機百度刪除的收藏怎么恢復(fù)進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、百度瀏覽器收藏誤刪怎么找回 2、手機百度瀏覽記錄怎么恢復(fù) 3、手機瀏覽器刪掉怎么找回收藏的網(wǎng)址 4、手機百度...

女孩子做裝修銷售好不(裝飾裝修銷售好做不)

女孩子做裝修銷售好不(裝飾裝修銷售好做不)

本篇文章給大家談?wù)勁⒆幼鲅b修銷售好不,以及裝飾裝修銷售好做不對應(yīng)的知識點,希望對各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、女孩子到底適不適合做房產(chǎn)銷售,說的詳細點,謝謝~ 2、女孩子做銷售合適嗎?會有哪些不便 3、大家來說說,女孩子做銷售、客戶好嗎? 女孩子到底適不適合做房...

怎么刪除home下的目錄(誤刪home目錄)

怎么刪除home下的目錄(誤刪home目錄)

今天給各位分享怎么刪除home下的目錄的知識,其中也會對誤刪home目錄進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、執(zhí)行home命令可以刪除目錄嗎 2、如何刪除紅帽Linux的/home下的文件 3、/home 目錄下的文件如下圖所示,請問如要要...

autojs源碼(autojs源碼提取器)

autojs源碼(autojs源碼提取器)

今天給各位分享autojs源碼的知識,其中也會對autojs源碼提取器進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、手機autojs 怎樣host跳過活著屏蔽廣告源碼 2、大量autojs常用代碼介紹以及示例 3、Autojs微信自動操作免root...

免費開掛的軟件pubgmobile(免費開掛的軟件下載和平精英)

免費開掛的軟件pubgmobile(免費開掛的軟件下載和平精英)

今天給各位分享免費開掛的軟件pubgmobile的知識,其中也會對免費開掛的軟件下載和平精英進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、pubgmobile輔助哪里買 2、和平精英真正可以開掛的軟件 3、pubg國際服怎樣開掛 pubgmobi...

網(wǎng)站登錄頁面html源碼模板(html登錄注冊頁面源碼)

網(wǎng)站登錄頁面html源碼模板(html登錄注冊頁面源碼)

本篇文章給大家談?wù)劸W(wǎng)站登錄頁面html源碼模板,以及html登錄注冊頁面源碼對應(yīng)的知識點,希望對各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、如何查看網(wǎng)站HTML源代碼 2、HTML代碼基礎(chǔ)知識:如何查看一個網(wǎng)頁的HTML源代碼? 3、如何獲取一個網(wǎng)頁完整的HTML代碼 4、如...