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

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

python語言實現貪吃蛇游戲

瀏覽:17日期:2022-07-05 16:27:10

本文實例為大家分享了python實現貪吃蛇游戲的具體代碼,供大家參考,具體內容如下

新手自學python(簡易貪吃蛇代碼)環境python3.7

剛剛大學畢業進入工作崗位,發現同事基本都會寫py腳本,于是自學了一下,并寫了一個簡單的貪吃蛇代碼,我覺得寫的還是比較容易看懂,適合新手接觸python。

# -*- coding: utf-8 -*-import tkinter as tk # 使用Tkinter前需要先導入import tkinter.messageboximport pickleimport randomimport time# 第1步,實例化object,建立窗口windowwindow = tk.Tk() # 第2步,給窗口的可視化起名字window.title(’Greedy snake’)# 第3步,設定窗口的大小(長 * 寬)# window.geometry(’1004x504’) # 這里的乘是小x# 第5步,創建一個主frame,長在主window窗口上frame = tk.Frame(window, bg = ’blue’, bd = 2, relief = tk.FLAT)frame.pack(side = ’left’)#當前框架被選中,意思是鍵盤觸發,只對這個框架有效frame.focus_set()Labellist = [] #存放所有方塊的labelBlocklist = [] #存放背景方塊的值 1:被占用 0:空閑Snakelist = [] #存放snake的坐標height = 15width = 20#snack前進方向left = 0right = 1up = 2down =3pause = 0start = 1class App(tk.Frame): def __init__(self,master):self.window = mastertk.Frame.__init__(self)master.bind(’<Up>’,self.Up)master.bind(’<Left>’,self.Left)master.bind(’<Right>’,self.Right)master.bind(’<Down>’,self.Down)master.bind(’<p>’,self.Pause)master.bind(’<s>’,self.Start)master.bind(’<r>’,self.Restart)self.Init_snake() #初始化界面方法 self.time = 1000self.Onetime() def Up(self, event):if self.Istart: self.direction = up def Down(self, event):if self.Istart: self.direction = down def Left(self, event):if self.Istart: self.direction = left def Right(self, event):if self.Istart: self.direction = right def Init_snake(self):del Labellist[:]del Blocklist[:]del Snakelist[:] #初始化背景方塊LabelRowList = []BlockRowlist = []c = r = 0for k in range(width*height): LN=tk.Label(frame,text = ’ ’, bg = ’black’, fg = ’white’, relief = tk.FLAT, bd = 4) LN.grid(row=r,column=c,sticky=tk.N+tk.E+tk.S+tk.W) LabelRowList.append(LN) BlockRowlist.append(0) c=c+1if c>=20:r=r+1c=0Labellist.append(LabelRowList)Blocklist.append(BlockRowlist)LabelRowList = []BlockRowlist = []#初始化snakeself.Istart = 0self.direction = left self.direction_last = left self.overflag = 0 #snake head的初始位置self.x = 7self.y = 8#snake tail的初始位置self.x_tail = 7self.y_tail = 10Snakelist.append((7,8))Snakelist.append((7,9))Snakelist.append((7,10))self.snakelen = len(Snakelist) Blocklist[self.x][self.y] = 1Blocklist[self.x][self.y+1] = 1Blocklist[self.x][self.y+2] = 1Labellist[self.x][self.y].config(bg = ’green’, relief = tk.RAISED)Labellist[self.x][self.y+1].config(bg = ’white’, relief = tk.RAISED)Labellist[self.x][self.y+2].config(bg = ’white’, relief = tk.RAISED)#初始化foodself.food_x = random.randint(0,14)self.food_y = random.randint(0,19)while Blocklist[self.food_x][self.food_y] == 1: self.food_x = random.randint(0,14) self.food_y = random.randint(0,19) Blocklist[self.food_x][self.food_y] = 1Labellist[self.food_x][self.food_y].config(bg = ’red’, relief = tk.RIDGE) def Pause(self, event):self.Istart = pause def Start(self, event):self.Istart = start def Restart(self, event):self.Init_snake() def Onetime(self): #每1000ms做一次界面刷新if self.Istart and self.overflag == 0:if (self.direction_last == down and self.direction == up )or(self.direction_last == up and self.direction == down )or(self.direction_last ==left and self.direction == right )or(self.direction_last ==right and self.direction == left ):self.direction = self.direction_last self.direction_last = self.direction x0 = self.x y0 = self.y if self.direction == left:if x0 == self.food_x and y0-1 == self.food_y: Labellist[x0][y0-1].config(bg = ’green’, relief = tk.RAISED) Labellist[x0][y0].config(bg = ’white’, relief = tk.RAISED) self.food_x = random.randint(0,14) self.food_y = random.randint(0,19) while Blocklist[self.food_x][self.food_y] == 1:self.food_x = random.randint(0,14)self.food_y = random.randint(0,19) Blocklist[self.food_x][self.food_y] = 1 Labellist[self.food_x][self.food_y].config(bg = ’red’, relief = tk.RIDGE) self.snakelen += 1 Snakelist.insert(0,(x0,y0-1)) self.x = x0 self.y = y0 - 1elif (x0>=0 and x0<height and y0-1>=0 and y0-1<width and Blocklist[x0][y0-1] == 0) or (self.x_tail == x0 and self.y_tail == y0 - 1):Blocklist[self.x_tail][self.y_tail] = 0 Labellist[self.x_tail][self.y_tail].config(bg = ’black’, relief = tk.FLAT) Blocklist[x0][y0-1] = 1 Labellist[x0][y0-1].config(bg = ’green’, relief = tk.RAISED) Labellist[x0][y0].config(bg = ’white’, relief = tk.RAISED) del Snakelist[self.snakelen - 1] Snakelist.insert(0,(x0,y0-1)) self.x = x0 self.y = y0 - 1 self.x_tail = Snakelist[self.snakelen - 1][0] self.y_tail = Snakelist[self.snakelen - 1][1]else: tk.messagebox.showinfo(title = ’snake’, message = ’game over!!!’) self.overflag = 1elif self.direction == up:if x0-1 == self.food_x and y0 == self.food_y: Labellist[x0-1][y0].config(bg = ’green’, relief = tk.RAISED) Labellist[x0][y0].config(bg = ’white’, relief = tk.RAISED) self.food_x = random.randint(0,14) self.food_y = random.randint(0,19) while Blocklist[self.food_x][self.food_y] == 1:self.food_x = random.randint(0,14)self.food_y = random.randint(0,19) Blocklist[self.food_x][self.food_y] = 1 Labellist[self.food_x][self.food_y].config(bg = ’red’, relief = tk.RIDGE) self.snakelen += 1 Snakelist.insert(0,(x0-1,y0)) self.x = x0 - 1 self.y = y0 elif (x0-1 >=0 and x0-1<height and y0>=0 and y0<width and Blocklist[x0-1][y0] == 0) or (self.x_tail == x0-1 and self.y_tail == y0): Blocklist[self.x_tail][self.y_tail] = 0 Labellist[self.x_tail][self.y_tail].config(bg = ’black’, relief = tk.FLAT) Blocklist[x0-1][y0] = 1 Labellist[x0-1][y0].config(bg = ’green’, relief = tk.RAISED) Labellist[x0][y0].config(bg = ’white’, relief = tk.RAISED) del Snakelist[self.snakelen - 1] Snakelist.insert(0,(x0 - 1,y0)) self.x = x0 - 1 self.y = y0 self.x_tail = Snakelist[self.snakelen - 1][0] self.y_tail = Snakelist[self.snakelen - 1][1]else: tk.messagebox.showinfo(title = ’snake’, message = ’game over!!!’) self.overflag = 1 elif self.direction == down:if x0+1 == self.food_x and y0 == self.food_y: Labellist[x0+1][y0].config(bg = ’green’, relief = tk.RAISED) Labellist[x0][y0].config(bg = ’white’, relief = tk.RAISED) self.food_x = random.randint(0,14) self.food_y = random.randint(0,19) while Blocklist[self.food_x][self.food_y] == 1:self.food_x = random.randint(0,14)self.food_y = random.randint(0,19) Blocklist[self.food_x][self.food_y] = 1 Labellist[self.food_x][self.food_y].config(bg = ’red’, relief = tk.RIDGE) self.snakelen += 1 Snakelist.insert(0,(x0+1,y0)) self.x = x0 + 1 self.y = y0 elif (x0+1 >=0 and x0+1 <height and y0>=0 and y0<width and Blocklist[x0+1][y0] == 0) or (self.x_tail == x0+1 and self.y_tail == y0):Blocklist[self.x_tail][self.y_tail] = 0 Labellist[self.x_tail][self.y_tail].config(bg = ’black’, relief = tk.FLAT) Blocklist[x0+1][y0] = 1 Labellist[x0+1][y0].config(bg = ’green’, relief = tk.RAISED) Labellist[x0][y0].config(bg = ’white’, relief = tk.RAISED) del Snakelist[self.snakelen - 1] Snakelist.insert(0,(x0 + 1,y0)) self.x = x0 + 1 self.y = y0 self.x_tail = Snakelist[self.snakelen - 1][0] self.y_tail = Snakelist[self.snakelen - 1][1]else: tk.messagebox.showinfo(title = ’snake’, message = ’game over!!!’) self.overflag = 1 elif self.direction == right:if x0 == self.food_x and y0+1 == self.food_y: Labellist[x0][y0+1].config(bg = ’green’, relief = tk.RAISED) Labellist[x0][y0].config(bg = ’white’, relief = tk.RAISED) self.food_x = random.randint(0,14) self.food_y = random.randint(0,19) while Blocklist[self.food_x][self.food_y] == 1:self.food_x = random.randint(0,14)self.food_y = random.randint(0,19) Blocklist[self.food_x][self.food_y] = 1 Labellist[self.food_x][self.food_y].config(bg = ’red’, relief = tk.RIDGE) self.snakelen += 1 Snakelist.insert(0,(x0,y0 + 1)) self.x = x0 self.y = y0 + 1 elif (x0>=0 and x0<height and y0+1>=0 and y0+1<width and Blocklist[x0][y0+1] == 0) or (self.x_tail == x0 and self.y_tail == y0+1): Blocklist[self.x_tail][self.y_tail] = 0 Labellist[self.x_tail][self.y_tail].config(bg = ’black’, relief = tk.FLAT) Blocklist[x0][y0+1] = 1 Labellist[x0][y0+1].config(bg = ’green’, relief = tk.RAISED) Labellist[x0][y0].config(bg = ’white’, relief = tk.RAISED) del Snakelist[self.snakelen - 1] Snakelist.insert(0,(x0,y0 + 1)) self.x = x0 self.y = y0 + 1 self.x_tail = Snakelist[self.snakelen - 1][0] self.y_tail = Snakelist[self.snakelen - 1][1]else: tk.messagebox.showinfo(title = ’snake’, message = ’game over!!!’) self.overflag = 1self.after(self.time,self.Onetime)def Start_Stop(): app.Istart = 1 - app.Istart def Restart(): app.Restart(0) #主菜單mainmenu = tk.Menu(window)window[’menu’] = mainmenu#二級菜單:gamegamemenu=tk.Menu(mainmenu)mainmenu.add_cascade(label=’游戲’,menu=gamemenu)gamemenu.add_command(label = ’開始/暫停’,command=Start_Stop)gamemenu.add_command(label = ’重置’,command=Restart)gamemenu.add_command(label = ’退出’,command=window.quit)app = App(window) window.mainloop()

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

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩免费视频| 欧美日韩亚洲一区三区| 欧美激情视频一区二区三区免费 | 亚洲五月综合| 免费在线看一区| 最近国产精品视频| 日韩在线成人| 国产日韩一区二区三免费高清| 欧美日一区二区在线观看| 青草综合视频| 麻豆中文一区二区| 超碰在线99| 亚洲成人二区| 视频一区二区三区中文字幕| 日韩一区二区三区四区五区| 国产精品嫩草影院在线看| 久久97视频| 久久久久.com| 丝袜脚交一区二区| 久久国产三级| 亚洲综合电影| 亚洲免费高清| 日本少妇一区二区| 福利视频一区| 91九色精品国产一区二区| 麻豆精品网站| 国产精品久久久久77777丨| 成人国产精品| 久久福利影视| 国产精品久久久久9999高清| 精品日韩视频| 日日夜夜免费精品视频| 久久香蕉精品香蕉| 亚洲小说欧美另类婷婷| 日本不卡不码高清免费观看| 麻豆一区二区三区| 国精品一区二区三区| 少妇精品久久久一区二区三区| 精品三区视频| 不卡一区综合视频| 国产情侣一区在线| 国产91精品对白在线播放| 蜜臀久久99精品久久久久久9| 欧美国产极品| 国产午夜久久| 国产一区二区三区不卡av| 亚洲免费激情| 国产精久久久| 一区免费在线| 精品国产成人| 一本综合精品| 快播电影网址老女人久久| 日韩精品一级| 欧美日韩激情| 精品视频97| 日本欧洲一区二区| 日韩欧美自拍| 日韩av三区| 五月婷婷六月综合| 麻豆精品一区二区综合av| 亚洲欧美日韩国产| 日韩免费在线| 国产精品成人一区二区网站软件| 精品1区2区3区4区| 国产一区二区三区日韩精品| 亚洲ww精品| 亚洲精品在线观看91| 麻豆91精品91久久久的内涵| 免费在线观看视频一区| 欧美aa在线观看| 在线观看亚洲精品福利片| 不卡一二三区| 久久超级碰碰| 亚洲精品在线二区| 国产专区一区| 精品三级久久久| 亚洲精品日韩久久| 欧美二区视频| a国产在线视频| 国产精品毛片视频| 亚洲欧美在线综合| 九九综合在线| 久久久精品五月天| 国产福利91精品一区二区| 欧美日韩一区二区高清| 好吊日精品视频| 97se综合| 国产福利91精品一区二区| 国产亚洲字幕| 亚洲精品极品| 先锋影音久久久| 欧美日韩激情在线一区二区三区| yellow在线观看网址| 久久久久亚洲精品中文字幕| 欧美午夜三级| 91精品日本| 日韩精品成人| 日韩国产在线一| 午夜电影一区| 蜜桃视频一区二区| 波多野结衣一区| 99久久视频| 久久精品国产68国产精品亚洲| 国产一区二区三区四区五区| 国产欧美激情| 欧美亚洲国产日韩| 日韩一区二区三区在线看| 伊人国产精品| 亚洲影院天堂中文av色| 亚洲专区在线| 久热综合在线亚洲精品| 视频一区在线播放| 亚洲三级网址| 日韩欧美中文字幕一区二区三区| 中文无码日韩欧| 国产亚洲欧洲| 噜噜噜躁狠狠躁狠狠精品视频| 日韩午夜电影| 亚洲有吗中文字幕| 日韩精品免费视频一区二区三区| 日韩在线成人| 久久国产欧美日韩精品| 国产欧美精品| 精品国产欧美日韩| 久久男人天堂| 国产99亚洲| 美女网站一区| 玖玖玖国产精品| 五月激激激综合网色播| 7777精品| 国产福利资源一区| 另类专区亚洲| 亚洲精品一区二区妖精| 玖玖玖国产精品| 日韩福利视频一区| 久久av资源| 毛片在线网站| 欧美午夜不卡| 日韩一区二区三区四区五区| 国产精品黄色| 日韩欧美一区二区三区免费看| 欧美肉体xxxx裸体137大胆| 好吊一区二区三区| 午夜久久av| 久久久亚洲欧洲日产| 成人在线免费观看91| 欧美亚洲国产激情| 蜜臀va亚洲va欧美va天堂| 青青伊人久久| 午夜影院一区| 久久av在线| 国产精品白丝av嫩草影院| 色网在线免费观看| 国产视频一区免费看| 日韩福利视频导航| 精品国产a一区二区三区v免费| 久久久蜜桃一区二区人| 视频一区二区不卡| 国产精品天天看天天狠| 日韩国产综合| 好看的av在线不卡观看| 日韩精品国产精品| а√天堂中文在线资源8| 亚洲一区日韩| 久久亚洲黄色| 亚洲一区日韩| 欧美国产精品| 欧美日韩精品一本二本三本| 日韩国产91| 日韩电影免费在线观看| 三级欧美在线一区| 精品中文在线| 99国产一区| 国产激情一区| 西西人体一区二区| 国产黄色一区| 欧美日韩视频| 国产极品模特精品一二| 亚洲精品电影| 欧美激情视频一区二区三区免费| 国产韩日影视精品| 国产欧美日韩在线一区二区| 久久在线电影| 国产精品天堂蜜av在线播放| 久久精品一区二区不卡| 欧美偷窥清纯综合图区| 91精品在线观看国产| 欧美日韩精品一区二区三区在线观看| 欧洲在线一区| 久久国内精品| 久久亚洲国产| 国产精品久久免费视频| 99国产精品久久久久久久| 麻豆国产精品视频| 天堂成人国产精品一区| 在线看片福利| 国产日韩三级| 亚洲欧美日韩国产| 午夜精品成人av| 麻豆精品av|