日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

python實(shí)現(xiàn)簡單的貪吃蛇游戲

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

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

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

游戲?qū)崿F(xiàn)效果如下:

python實(shí)現(xiàn)簡單的貪吃蛇游戲

python實(shí)現(xiàn)簡單的貪吃蛇游戲

python實(shí)現(xiàn)簡單的貪吃蛇游戲

python實(shí)現(xiàn)簡單的貪吃蛇游戲

后面有完整代碼和解析

import sysimport pygameimport randomclass Button(object):#定義按鈕類 def __init__(self,begin1,begin2,restart1,restart2,position,position2): self.gamebegin1=pygame.image.load(begin1).convert_alpha()#導(dǎo)入開始和重啟按鈕圖片 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()#找到鼠標(biāo)光標(biāo)所在位置 x,y=self.position#指定的點(diǎn)擊按鈕位置 w,h=self.gamebegin1.get_size()#定義按鈕尺寸 x-=w/2 y-=h/2 if_x=x-w/2<point_x<x+w/2#判斷鼠標(biāo)光標(biāo)是否在按鈕上 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():#如果鼠標(biāo)光標(biāo)在按鈕上,圖片顯示為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))#初始界面顏色設(shè)置為黑色 Rect1=pygame.Rect(300,300,200,100)#設(shè)置按鈕尺寸 Rect2=pygame.Rect(300,450,200,100) pygame.draw.rect(screen,(136,189,186),Rect1)#創(chuàng)建按鈕 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()#找到鼠標(biāo)光標(biāo)所在位置 global a,b#定義全局變量 if 300<point_x<500 and 300<point_y<400:#判斷光標(biāo)是否在按鈕上 if pygame.mouse.get_pressed()[0]:#判斷鼠標(biāo)是否按下 a=8#a表示沒秒執(zhí)行8次 b=1#b表示設(shè)定的一個數(shù),與后面判斷執(zhí)行時有關(guān) 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():#游戲結(jié)束時出現(xiàn)得分結(jié)果和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()#初始化字符 #需要在其它定義中出現(xiàn)的參數(shù),這里還需要定義全局變量一下 global score,screen,font,button,status,x,y,direction,snackhead,snackbody,foodposition,state,a,b screen=pygame.display.set_mode((640,640))#設(shè)置屏幕尺寸 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’#定義初始運(yùn)動方向 re_direction=direction#re_direction為變化后的方向 button = Button(beginname1,beginname2,restartname1,restartname2,(330,300),(600,320))#定義按鈕數(shù)值 pygame.display.update() while True: for event in pygame.event.get():#遍歷可能出現(xiàn)的事件 if event.type == pygame.QUIT:#點(diǎn)擊關(guān)閉,程序關(guān)閉 pygame.quit() sys.exit() button.ispress()#顯示按鈕 pygame.display.update() if button.ifpress(): if pygame.mouse.get_pressed()[0]: break #點(diǎn)擊按鈕,結(jié)束這里的循環(huán),進(jìn)入游戲選擇難度界面 while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() choice()#運(yùn)行choice() if b==1:#如果點(diǎn)擊了按鈕,結(jié)束循環(huán),進(jìn)入游戲運(yùn)行界面 break pygame.mixer.init()#初始化音樂 pygame.mixer.music.load(’D://music//Above Everything - Capo Productions.ogg’)#導(dǎo)入音樂 pygame.display.update() status=True screen=pygame.display.set_mode((640,640)) screen.fill((0,0,0)) while status: clock.tick(a)#運(yùn)行速度 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’ #跳出判斷事件循環(huán) 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 #頭部坐標(biāo)變化 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()#沒吃到則將位置變化前的尾部剔除出去,設(shè)的長度不變 pygame.display.update() if food_eat==0:#遲到食物后生成新的食物 x=random.randint(1,31) y=random.randint(1,31) for position in snackbody:#判斷食物是否出現(xiàn)在蛇的身體處,出現(xiàn)則重新生成 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() #如果蛇撞到墻或自己的身體,則游戲結(jié)束 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)#音樂循環(huán) def restart():#重新開始按鈕 getResult()#顯示結(jié)果 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實(shí)現(xiàn)簡單的貪吃蛇游戲

python實(shí)現(xiàn)簡單的貪吃蛇游戲

python實(shí)現(xiàn)簡單的貪吃蛇游戲

python實(shí)現(xiàn)簡單的貪吃蛇游戲

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
成人在线丰满少妇av| 国产精品久久国产愉拍| 麻豆精品视频在线观看免费| 亚洲欧美久久| 三级一区在线视频先锋| 日韩精品一二区| 久久午夜精品| 婷婷久久免费视频| 亚洲精品乱码日韩| 欧美日韩一视频区二区| 日本午夜精品视频在线观看| 欧美日一区二区在线观看| 欧美精品成人| 日韩欧美一区二区三区免费看| 欧美aa在线观看| 国产高清一区二区| 免费的成人av| 国产精品久av福利在线观看| 欧美日本精品| 福利一区视频| 婷婷激情综合| 国产情侣久久| 免费在线小视频| 日韩欧美在线精品| 日本aⅴ免费视频一区二区三区| 91麻豆精品| 黄色网一区二区| 99国产精品视频免费观看一公开 | 首页国产欧美日韩丝袜| 久久国产精品亚洲77777| 日本不卡一区二区三区| 精品久久影院| 国产婷婷精品| 成人台湾亚洲精品一区二区| 日韩视频一区| 日韩综合一区| 亚洲精品裸体| 日韩在线观看| 欧美久久精品| 男人操女人的视频在线观看欧美| 精品网站999| 色综合视频一区二区三区日韩 | 青青青免费在线视频| 免费视频一区二区| 日韩在线短视频| 国产精品探花在线观看| 免费观看在线综合色| 88xx成人免费观看视频库| 国产欧美成人| 久久99久久人婷婷精品综合| 国产精品7m凸凹视频分类| 丝袜亚洲精品中文字幕一区| 国产精选一区| 蜜桃视频免费观看一区| 日韩国产专区| 欧美激情另类| 国产女人18毛片水真多18精品| 亚洲午夜免费| 伊人久久亚洲| 亚洲精选久久| 最新国产精品久久久| 美日韩精品视频| 免费久久99精品国产自在现线| 欧美成人高清| 天堂а√在线最新版中文在线| 国产日韩免费| 国产精品毛片久久久| 日本综合视频| 国产亚洲一区二区三区啪| 亚洲97av| 国产日韩在线观看视频| 久久不见久久见国语| 久久精品国产成人一区二区三区| 国产精品成人**免费视频| 欧美激情三区| 中文字幕成在线观看| 韩国精品主播一区二区在线观看| 亚洲精品在线影院| 亚洲免费播放| 欧美综合国产| 国产日韩中文在线中文字幕 | 国产精品色婷婷在线观看| 国产免费播放一区二区| 国产成人精选| 国产一区导航| 国产伦精品一区二区三区视频| 精品国产18久久久久久二百| 久久蜜桃资源一区二区老牛| 群体交乱之放荡娇妻一区二区| 免费久久精品| 欧美一区二区三区久久| 高清日韩欧美| 国产精品毛片一区二区三区| 久久国产精品免费精品3p| 日韩深夜视频| 亚洲免费观看高清完整版在线观| 老司机精品视频网| 亚洲精品1区| 久久影院资源站| 在线亚洲免费| 久久午夜影院| 蜜桃久久久久久| 午夜久久中文| 国产午夜一区| 国内精品福利| 美日韩一区二区三区| 久久午夜精品| 日韩免费在线| 国产精品a级| 免费国产亚洲视频| 蜜桃视频欧美| 欧产日产国产精品视频| 国产精品xxxav免费视频| 国产精品腿扒开做爽爽爽挤奶网站| 精品久久久久中文字幕小说| 中文字幕日本一区二区| 日本精品影院| 国产精品xx| 久久精品国产在热久久| 视频一区二区三区中文字幕| 久久精品亚洲欧美日韩精品中文字幕| 久久精品 人人爱| 日韩动漫一区| 日本久久二区| 亚洲三级视频| 久久大逼视频| 日韩精品一卡二卡三卡四卡无卡| 久久中文字幕二区| 精品久久视频| 国产成人77亚洲精品www| 毛片不卡一区二区| 国产精品久久久久久久久免费高清| 亚洲人成网77777色在线播放| 亚洲欧美日韩在线观看a三区| 色婷婷狠狠五月综合天色拍| 福利精品一区| 成人久久一区| 五月天激情综合网| 亚洲免费激情| 亚洲精品自拍| 国产日韩欧美一区在线| 国产精品美女午夜爽爽| 精品亚洲成人| 久久人人97超碰国产公开结果| 精品亚洲美女网站| 免费av一区二区三区四区| 99成人在线| 国产欧美88| 秋霞国产精品| 欧美日韩国产在线一区| 亚洲毛片网站| 国产91在线播放精品| 欧美va天堂| 欧美精品福利| 香蕉久久99| 日韩精品导航| 中文字幕在线免费观看视频| 狠狠久久婷婷| 国产精品久久久免费| 日韩网站中文字幕| 日韩精品免费视频人成| 麻豆视频一区二区| 国产农村妇女精品一区二区| 久久爱www成人| 亚洲网站视频| 日本成人精品| 久久国产毛片| 国产欧美一区| 视频一区在线播放| 色一区二区三区四区| 亚洲欧美日本国产| 日韩欧美午夜| 老司机精品视频网| 亚洲精品乱码久久久久久蜜桃麻豆 | 国产剧情一区| 亚洲一区观看| 日韩一区二区在线免费| 亚洲专区视频| 亚洲激情国产| av在线日韩| 成人精品国产亚洲| 国产精品久久久一区二区| 亚洲欧美日韩国产| 欧美中文一区二区| 日韩av二区| 日本激情一区| 日产精品一区二区| 麻豆成人91精品二区三区| 日本a级不卡| 欧美在线首页| 国产亚洲欧美日韩在线观看一区二区 | 99国产精品99久久久久久粉嫩| 99久久久久国产精品| 免费在线成人| 老司机精品视频网| 精品国产亚洲一区二区三区在线| 久久精品97| 国产精品嫩草影院在线看| 中文字幕成人| 日韩有吗在线观看|