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

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

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

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

本篇文章給大家談?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í)器,下面來(lái)看一下具體實(shí)現(xiàn)。

先來(lái)看一下游戲所需 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()

看一下效果:

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

我們通過鼠標(biāo)來(lái)操縱拼圖塊,因此程序需要檢查有無(wú)拼圖塊被選中,代碼實(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è)程序是怎么寫出來(lái)的呢,自己寫出來(lái)的應(yīng)該玩起來(lái)更有感覺吧!

感覺還是蠻好玩吧!

接下來(lái),我就分享一下這個(gè)游戲的源碼過程啊!

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

定義這次程序所需要的類

然后寫出它所需要的模塊

畫背景圖

畫網(wǎng)格線

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

# 畫單個(gè)方塊

# 畫得分等信息

這樣就可以寫出來(lái)一個(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://m.landcheck.net/post/3142.html

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

我的世界工作室官網(wǎng)源碼(我的世界服務(wù)器官網(wǎng)源碼)

我的世界工作室官網(wǎng)源碼(我的世界服務(wù)器官網(wǎng)源碼)

今天給各位分享我的世界工作室官網(wǎng)源碼的知識(shí),其中也會(huì)對(duì)我的世界服務(wù)器官網(wǎng)源碼進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、誰(shuí)知道我的世界工作室是什么?用來(lái)干嘛的?? 2、我的世界如何創(chuàng)建工作室? 3、我的世界如何成立工作室? 4、我的世界工作室...

手機(jī)瀏覽器顯示不全網(wǎng)頁(yè)內(nèi)容(手機(jī)瀏覽器不能顯示全部網(wǎng)頁(yè)內(nèi)容)

手機(jī)瀏覽器顯示不全網(wǎng)頁(yè)內(nèi)容(手機(jī)瀏覽器不能顯示全部網(wǎng)頁(yè)內(nèi)容)

本篇文章給大家談?wù)勈謾C(jī)瀏覽器顯示不全網(wǎng)頁(yè)內(nèi)容,以及手機(jī)瀏覽器不能顯示全部網(wǎng)頁(yè)內(nèi)容對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、手機(jī)網(wǎng)頁(yè)顯示不完整怎么辦? 2、手機(jī)瀏覽電腦版網(wǎng)頁(yè)顯示不全 手機(jī)瀏覽電腦版網(wǎng)頁(yè)顯示不全怎么辦 3、存龍網(wǎng)站手機(jī)打開不全 4、手機(jī)網(wǎng)頁(yè)...

怎樣卸載視頻號(hào)軟件(如何卸掉視頻號(hào))

怎樣卸載視頻號(hào)軟件(如何卸掉視頻號(hào))

本篇文章給大家談?wù)勗鯓有遁d視頻號(hào)軟件,以及如何卸掉視頻號(hào)對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、怎么卸載微信上的視頻號(hào) 2、創(chuàng)建的視頻號(hào)怎么刪除 3、微信里怎么卸載視頻號(hào) 怎么卸載微信上的視頻號(hào) 視頻號(hào)卸載不了,可以通過通用——發(fā)現(xiàn)頁(yè)管理——關(guān)閉視頻號(hào)。...

云攝影照片直播平臺(tái)(云攝影照片直播平臺(tái)下載)

云攝影照片直播平臺(tái)(云攝影照片直播平臺(tái)下載)

本篇文章給大家談?wù)勗茢z影照片直播平臺(tái),以及云攝影照片直播平臺(tái)下載對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、享像派云攝影App能連接Sony A7M3進(jìn)行照片直播嗎?用Wifi還是OTG數(shù)據(jù)線? 2、享像派云攝影照片直播,需要買硬件設(shè)備嗎? 3、用享像派云攝影...

大話西游端游5開搬磚(大話西游端游5開搬磚一天收入)

大話西游端游5開搬磚(大話西游端游5開搬磚一天收入)

今天給各位分享大話西游端游5開搬磚的知識(shí),其中也會(huì)對(duì)大話西游端游5開搬磚一天收入進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、搞臺(tái)臺(tái)式電腦五開搬磚玩夢(mèng)幻西游和大話西游的電腦要什么配置? 2、大話西游2五開搬磚級(jí)高點(diǎn)的號(hào)選多少級(jí)合適 3、大話西游免費(fèi)...

java訂餐系統(tǒng)源碼(訂餐系統(tǒng)程序源代碼)

java訂餐系統(tǒng)源碼(訂餐系統(tǒng)程序源代碼)

本篇文章給大家談?wù)刯ava訂餐系統(tǒng)源碼,以及訂餐系統(tǒng)程序源代碼對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、有誰(shuí)有用JAVA編寫的小型超市管理系統(tǒng)的源代碼啊 數(shù)據(jù)庫(kù)用mysql 急啊 2、求一個(gè)基于Java編寫的醫(yī)院預(yù)約系統(tǒng)源碼 3、哪位大神有簡(jiǎn)單的java酒店...