成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

python實現簡單的貪吃蛇游戲

瀏覽:111日期:2022-06-24 14:17:55

本文實例為大家分享了python實現貪吃蛇游戲的具體代碼,加入按鈕、難度、音樂、得分功能,供大家參考,具體內容如下

貪吃蛇小游戲,可以顯示出得分,又背景音樂,難度選擇和開始重啟按鈕設置。

游戲實現效果如下:

python實現簡單的貪吃蛇游戲

python實現簡單的貪吃蛇游戲

python實現簡單的貪吃蛇游戲

python實現簡單的貪吃蛇游戲

后面有完整代碼和解析

import sysimport pygameimport randomclass Button(object):#定義按鈕類 def __init__(self,begin1,begin2,restart1,restart2,position,position2): self.gamebegin1=pygame.image.load(begin1).convert_alpha()#導入開始和重啟按鈕圖片 self.gamebegin2=pygame.image.load(begin2).convert_alpha() self.gamerestart1=pygame.image.load(restart1).convert_alpha() self.gamerestart2=pygame.image.load(restart2).convert_alpha() self.position=position self.position2=position2 def ifpress(self): point_x,point_y=pygame.mouse.get_pos()#找到鼠標光標所在位置 x,y=self.position#指定的點擊按鈕位置 w,h=self.gamebegin1.get_size()#定義按鈕尺寸 x-=w/2 y-=h/2 if_x=x-w/2<point_x<x+w/2#判斷鼠標光標是否在按鈕上 if_y=y-h/2<point_y<y+h/2 return if_x and if_y def ispress(self): x,y=self.position w,h=self.gamebegin1.get_size() x-=w/2 y-=h/2 if self.ifpress():#如果鼠標光標在按鈕上,圖片顯示為gamebegin1,否則顯示為gamebegin2 screen.blit(self.gamebegin1,(x-w/2+8,y-h/2+7)) else: screen.blit(self.gamebegin2,(x-w/2,y-h/2)) #定義重啟按鈕,方法同上 def ifrepress(self): point_x,point_y=pygame.mouse.get_pos() x,y=self.position2 w,h=self.gamerestart1.get_size() x-=w/2 y-=h/2 if_x=x-w/2<point_x<x+w/2 if_y=y-h/2<point_y<y+h/2 return if_x and if_y def isrepress(self): x,y=self.position2 w,h=self.gamerestart1.get_size() x-=w/2 y-=h/2 if self.ifrepress(): screen.blit(self.gamerestart1,(x-w/2,y-h/2)) else: screen.blit(self.gamerestart2,(x-w/2,y-h/2)) def choice():#定義選擇難度 screen.fill((0,0,0))#初始界面顏色設置為黑色 Rect1=pygame.Rect(300,300,200,100)#設置按鈕尺寸 Rect2=pygame.Rect(300,450,200,100) pygame.draw.rect(screen,(136,189,186),Rect1)#創建按鈕 screen.blit(font.render(’grade one:’,-1,(255,255,255)),(300,300)) pygame.draw.rect(screen,(136,189,186),Rect2) screen.blit(font.render(’grade two:’,-1,(255,255,255)),(300,450)) pygame.display.flip()#顯示到屏幕上 point_x,point_y=pygame.mouse.get_pos()#找到鼠標光標所在位置 global a,b#定義全局變量 if 300<point_x<500 and 300<point_y<400:#判斷光標是否在按鈕上 if pygame.mouse.get_pressed()[0]:#判斷鼠標是否按下 a=8#a表示沒秒執行8次 b=1#b表示設定的一個數,與后面判斷執行時有關 if 300<point_x<500 and 450<point_y<550: if pygame.mouse.get_pressed()[0]: a=12 b=1 pygame.display.update()#更新屏幕 def getResult():#游戲結束時出現得分結果和gameover final_text1=’Game_Over’ final_text2=’Your final score is: ’+str(score) ft1_font=pygame.font.SysFont(’Arial’,70) ft1_surf=font.render(final_text1,1,(242,3,36)) screen.blit(ft1_surf,[screen.get_width()/2-ft1_surf.get_width()/2,100]) pygame.display.flip()def main(): pygame.init()#初始化pygame clock=pygame.time.Clock()#定義時間 pygame.font.init()#初始化字符 #需要在其它定義中出現的參數,這里還需要定義全局變量一下 global score,screen,font,button,status,x,y,direction,snackhead,snackbody,foodposition,state,a,b screen=pygame.display.set_mode((640,640))#設置屏幕尺寸 screen.fill((0,0,0))#填充屏幕顏色 #指明圖片路徑 beginname1=’D://picture//gamebegin1.png’ beginname2=’D://picture//gamebegin2.png’ restartname1=’D://picture//restart1.png’ restartname2=’D://picture//restart2.png’ pygame.display.set_caption(’sanckgame’) font=pygame.font.SysFont(’Arial’,40)#定義字符種類和大小 snackhead=[120,120]#定義初始蛇的頭部位置 foodposition=[360,360]#定義初始食物位置 snackbody=[[120,120],[100,120],[80,120]]#定義蛇全身位置 score=0 x=300 y=300 state=0 a=1 b=0 food_eat=1#食物被吃為0,否則為1 direction=’right’#定義初始運動方向 re_direction=direction#re_direction為變化后的方向 button = Button(beginname1,beginname2,restartname1,restartname2,(330,300),(600,320))#定義按鈕數值 pygame.display.update() while True: for event in pygame.event.get():#遍歷可能出現的事件 if event.type == pygame.QUIT:#點擊關閉,程序關閉 pygame.quit() sys.exit() button.ispress()#顯示按鈕 pygame.display.update() if button.ifpress(): if pygame.mouse.get_pressed()[0]: break #點擊按鈕,結束這里的循環,進入游戲選擇難度界面 while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() choice()#運行choice() if b==1:#如果點擊了按鈕,結束循環,進入游戲運行界面 break pygame.mixer.init()#初始化音樂 pygame.mixer.music.load(’D://music//Above Everything - Capo Productions.ogg’)#導入音樂 pygame.display.update() status=True screen=pygame.display.set_mode((640,640)) screen.fill((0,0,0)) while status: clock.tick(a)#運行速度 for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() elif event.type == pygame.KEYDOWN:#判斷鍵盤事件 if event.key == pygame.K_RIGHT or event.key == ord(’d’): re_direction=’right’ if event.key == pygame.K_LEFT or event.key == ord(’a’): re_direction=’left’ if event.key == pygame.K_UP or event.key == ord(’w’): re_direction=’up’ if event.key == pygame.K_DOWN or event.key == ord(’s’): re_direction=’down’ #跳出判斷事件循環 if re_direction==’right’and not direction ==’left’: direction=re_direction if re_direction==’left’and not direction ==’right’: direction=re_direction if re_direction==’up’and not direction ==’down’: direction=re_direction if re_direction==’down’and not direction ==’up’: direction=re_direction #頭部坐標變化 if direction==’left’: snackhead[0]-=20 if direction==’right’: snackhead[0]+=20 if direction==’down’: snackhead[1]+=20 if direction==’up’: snackhead[1]-=20 snackbody.insert(0,list(snackhead))#每移動一次,把頭部新位置插入到最前面,形成新的頭部 if snackhead[0]==foodposition[0] and snackhead[1]==foodposition[1]:#判斷蛇是否吃到了食物 food_eat=0 score+=1 pygame.display.update() else: snackbody.pop()#沒吃到則將位置變化前的尾部剔除出去,設的長度不變 pygame.display.update() if food_eat==0:#遲到食物后生成新的食物 x=random.randint(1,31) y=random.randint(1,31) for position in snackbody:#判斷食物是否出現在蛇的身體處,出現則重新生成 if not x == position[0] and not y == position[1]: state=1 else: state=0 if state ==1: foodposition=[int(x*20),int(y*20)] food_eat=1 screen.fill((0,0,0)) for position in snackbody:#畫出蛇的身體和食物 rect2=pygame.Rect(position[0],position[1],20,20) pygame.draw.rect(screen,(166,188,199),rect2) rect1=pygame.Rect(foodposition[0],foodposition[1],20,20) pygame.draw.rect(screen,(169,111,102),rect1) screen.blit(font.render(’Score:’+str(score),-1,(255,255,255)),(100,50))#顯示出得分 pygame.display.update() #如果蛇撞到墻或自己的身體,則游戲結束 if snackhead[0]<0 or snackhead[0]>620: restart() if snackhead[1]<0 or snackhead[1]>620: restart() for body in snackbody[1:]: if body[0]==snackhead[0]and body[1]==snackhead[1]: restart() pygame.display.flip() pygame.display.update() if pygame.mixer.music.get_busy()==False: pygame.mixer.music.set_volume(0.3) pygame.mixer.music.play(-1)#音樂循環 def restart():#重新開始按鈕 getResult()#顯示結果 while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() button.isrepress() pygame.display.update() if button.ifrepress(): pygame.display.update() if pygame.mouse.get_pressed()[0]: main()main()

按鈕圖片如下,可以自己畫圖做,音樂最好用ogg格式的,否則可能出問題。

python實現簡單的貪吃蛇游戲

python實現簡單的貪吃蛇游戲

python實現簡單的貪吃蛇游戲

python實現簡單的貪吃蛇游戲

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
日本三级亚洲精品| 国产精品久久久爽爽爽麻豆色哟哟 | 国内一区二区视频| 久久一区视频| 亚洲天堂a在线| 在线欧美一区| 亚洲免费在线播放| 国产一区二区三区免费不卡 | 亚洲高清免费视频| 国产伦精品一区二区三| 一区二区理论电影在线观看| 国产精品美女诱惑| 亚洲成在线观看| 久久久夜夜夜| 久久av中文字幕片| 欧美一区二区在线看| 高清视频一区二区| 欧美一级午夜免费电影| 成人污视频在线观看| 久久日一线二线三线suv| 欧美日韩精品免费观看视一区二区 | 制服丝袜成人动漫| 国产成人亚洲精品青草天美| 欧美va亚洲va香蕉在线| 欧美 日韩 国产一区二区在线视频 | 久久九九电影| 美日韩一级片在线观看| 欧美一区二区三区免费在线看| 国产成人午夜视频| 久久综合狠狠综合久久综合88| 91农村精品一区二区在线| 久久久99国产精品免费| 美女视频网站久久| 91精品国产综合久久蜜臀| 国产成人av电影| 久久综合久久综合九色| 欧美视频导航| 亚洲一区二区三区影院| 色就色 综合激情| 国产精品伊人色| 欧美大白屁股肥臀xxxxxx| 91网站在线播放| 亚洲欧美激情小说另类| 美女主播一区| 国产精品 欧美精品| 国产婷婷色一区二区三区| 在线日本高清免费不卡| 日韩国产欧美在线观看| 欧美一级爆毛片| 欧美久久久久| 亚洲成人精品在线观看| 欧美精品xxxxbbbb| 女人天堂亚洲aⅴ在线观看| 一区二区三区欧美| 欧美日韩中字一区| 成人激情文学综合网| 国产精品欧美经典| 老鸭窝毛片一区二区三区 | 一区二区三区免费观看| 老妇喷水一区二区三区| 国产999精品久久久久久绿帽| 国产精品国产三级国产专播品爱网 | 欧美成ee人免费视频| 亚洲精品成人少妇| 欧美日韩一本到| 色综合中文字幕| 午夜视频在线观看一区二区| 日韩亚洲欧美中文三级| 一区二区亚洲精品| 精品午夜久久福利影院| 国产精品私人影院| 色哟哟国产精品免费观看| 成人免费三级在线| 一区二区三区在线免费播放| 欧美一区二区三区视频免费| 亚洲一本视频| 国产综合色精品一区二区三区| 欧美韩日一区二区三区| 美女日韩在线中文字幕| 成人免费不卡视频| 亚洲一区二区中文在线| 91精品国产色综合久久| 亚洲精品欧美| 国产成人av一区| 亚洲综合色区另类av| 日韩一区二区视频在线观看| 99精品视频免费| 国产精品资源站在线| 亚洲日本中文字幕区| 欧美丰满少妇xxxxx高潮对白| 黑人一区二区三区四区五区| 国内久久婷婷综合| 中文字幕av资源一区| 欧美色区777第一页| 激情另类综合| 国产高清在线精品| 亚洲国产aⅴ成人精品无吗| 久久日韩精品一区二区五区| 色婷婷亚洲综合| 亚洲午夜极品| 成人黄色av电影| 日本aⅴ免费视频一区二区三区| 国产欧美视频在线观看| 在线播放视频一区| 国产精品一区毛片| 色综合天天综合在线视频| 麻豆国产精品视频| 亚洲欧美自拍偷拍| 日韩三级av在线播放| 男女精品视频| 国产精品国产精品| 成人免费视频caoporn| 免费观看91视频大全| 亚洲欧美偷拍卡通变态| 久久久欧美精品sm网站| 欧美视频你懂的| 国产亚洲在线观看| 欧美精品国产一区| 国产成人精品1024| 日韩1区2区日韩1区2区| 亚洲日本成人在线观看| www激情久久| 欧美偷拍一区二区| 亚洲欧美日韩国产综合精品二区| 欧美日韩国产综合视频在线| 国产高清在线观看免费不卡| 日韩av网站在线观看| 亚洲黄色片在线观看| 国产人成一区二区三区影院| 欧美精品乱码久久久久久按摩| 午夜一区二区三区不卡视频| 爽爽淫人综合网网站| 亚洲美女在线国产| 国产精品色哟哟网站| 精品久久久久久亚洲综合网| 欧美午夜免费电影| 久久精品日产第一区二区 | 亚洲欧美日韩精品久久久久| 久久精品视频在线看| 欧美一区二区在线观看| 欧美视频一区二区在线观看| 久久久久网站| 国产亚洲高清视频| 影音先锋中文字幕一区| 91在线视频播放| 成人精品gif动图一区| 极品少妇一区二区| 免播放器亚洲一区| 天天色天天操综合| 亚洲精品中文字幕在线观看| 国产精品青草久久| 国产欧美精品在线观看| 久久伊人中文字幕| 欧美精品一区视频| 欧美xxxxxxxx| 精品精品欲导航| 日韩精品一区二区三区中文不卡 | 精品99一区二区三区| 日韩欧美国产综合一区| 欧美一区二区在线免费观看| 欧美肥胖老妇做爰| 欧美调教femdomvk| 欧美日韩黄视频| 69p69国产精品| 666欧美在线视频| 91麻豆精品久久久久蜜臀| 欧美日韩www| 欧美一区二区日韩| 欧美一区二区大片| 日韩亚洲欧美中文三级| 欧美mv日韩mv国产网站| 日韩网站在线看片你懂的| 3d动漫精品啪啪1区2区免费| 67194成人在线观看| 在线电影院国产精品| 日韩一区国产二区欧美三区| 日韩视频免费观看高清完整版| 欧美一区二区三区系列电影| 制服丝袜成人动漫| 欧美变态口味重另类| 久久尤物电影视频在线观看| 久久综合成人精品亚洲另类欧美| 久久久激情视频| 亚洲国产精品v| 中文字幕一区二区三区在线观看| 亚洲天堂福利av| 亚洲精品成人天堂一二三| 亚洲一区二区三区四区的| 日韩中文字幕av电影| 久久 天天综合| 国产成人8x视频一区二区| 99精品视频在线免费观看| 国产精品av一区二区| 一本色道久久综合亚洲精品不卡| 免费在线观看成人av| 欧美无砖砖区免费| 日韩久久免费av| 国产精品视频九色porn| 一区二区高清视频在线观看| 日韩成人dvd|