欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python寫的貪吃蛇游戲例子

系統(tǒng) 1958 0

第一次用Python寫這種比較實用且好玩的東西,權(quán)當(dāng)練手吧

游戲說明:

* P鍵控制“暫停/開始”
* 方向鍵控制貪吃蛇的方向

源代碼如下:

復(fù)制代碼 代碼如下:

from Tkinter import *
import tkMessageBox,sys
from random import randint

class Grid(object):
??? def __init__(self,master=None,window_width=800,window_height=600,grid_width=50,offset=10):
??????? self.height = window_height
??????? self.width = window_width
??????? self.grid_width = grid_width
??????? self.offset = offset
??????? self.grid_x = self.width/self.grid_width
??????? self.grid_y = self.height/self.grid_width
??????? self.bg = "#EBEBEB"
??????? self.canvas = Canvas(master, width=self.width+2*self.offset, height=self.height+2*self.offset, bg=self.bg)
??????? self.canvas.pack()
??????? self.grid_list()
??? def draw(self, pos, color,):
??????? x = pos[0]*self.grid_width + self.offset
??????? y = pos[1]*self.grid_width + self.offset
??????? self.canvas.create_rectangle(x, y, x+self.grid_width, y+self.grid_width,fill=color,outline=self.bg)
??? def grid_list(self):
??????? grid_list = []
??????? for y in range(0,self.grid_y):
??????????? for x in range(0,self.grid_x):
??????????????? grid_list.append((x,y))
??????? self.grid_list = grid_list

class Food(object):
??? def __init__(self, Grid):
??????? self.grid = Grid
??????? self.color = "#23D978"???????
??????? self.set_pos()
??? def set_pos(self):
??????? x = randint(0,self.grid.grid_x - 1)
??????? y = randint(0,self.grid.grid_y - 1)
??????? self.pos =? (x, y)???
??? def display(self):
??????? self.grid.draw(self.pos,self.color)

class Snake(object):
??? def __init__(self, Grid):
??????? self.grid = Grid
??????? self.body = [(10,6),(10,7),(10,8)]
??????? self.direction = "Up"
??????? self.status = ['run','stop']
??????? self.speed = 300
??????? self.color = "#5FA8D9"???????
??????? self.food = Food(self.grid)
??????? self.display_food()
??????? self.gameover = False
??????? self.score = 0
??? def available_grid(self):
??????? return [i for i in self.grid.grid_list if i not in self.body[2:]]
??? def change_direction(self, direction):
??????? self.direction = direction
??? def display(self):
??????? for (x,y) in self.body:
??????????? self.grid.draw((x,y),self.color)
??? def display_food(self):
??????? while(self.food.pos in self.body):
??????????? self.food.set_pos()
??????? self.food.display()
??? def move(self):
??????? head = self.body[0]
??????? if self.direction == 'Up':
??????????? new = (head[0], head[1]-1)
??????? elif self.direction == 'Down':
??????????? new = (head[0], head[1]+1)
??????? elif self.direction == 'Left':
??????????? new = (head[0]-1,head[1])
??????? else:
??????????? new = (head[0]+1,head[1])
??????? if not self.food.pos == head:????????
??????????? pop = self.body.pop()
??????????? self.grid.draw(pop,self.grid.bg)
??????? else:
??????????? self.display_food()
??????????? self.score += 1
??????? self.body.insert(0,new)?????
??????? if not new in self.available_grid():
??????????? self.status.reverse()???????????
??????????? self.gameover = True
??????? else:
??????????? self.grid.draw(new,color=self.color)

class SnakeGame(Frame):
??? def __init__(self,master=None, *args, **kwargs):
??????? Frame.__init__(self, master)
??????? self.master = master
??????? self.grid = Grid(master=master,*args, **kwargs)
??????? self.snake = Snake(self.grid)
??????? self.bind_all("", self.key_release)
??????? self.snake.display()
??? def run(self):
??????? if not self.snake.status[0] == 'stop':
??????????? self.snake.move()
??????? if self.snake.gameover == True:
??????????? message =? tkMessageBox.showinfo("Game Over", "your score: %d" % self.snake.score)
??????????? if message == 'ok':
??????????????? sys.exit()
??????? self.after(self.snake.speed,self.run)
??? def key_release(self, event):
??????? key = event.keysym
??????? key_dict = {"Up":"Down","Down":"Up","Left":"Right","Right":"Left"}
??????? if key_dict.has_key(key) and not key == key_dict[self.snake.direction]:
??????????? self.snake.change_direction(key)
??????????? self.snake.move()
??????? elif key == 'p':
??????????? self.snake.status.reverse()

if __name__ == '__main__':
??? root = Tk()
??? snakegame = SnakeGame(root)
??? snakegame.run()
??? snakegame.mainloop()


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 91亚洲国产成人久久精品网站 | 日韩在线播放视频 | 日韩综合一区二区 | 99热久久66是国产免费 | 精品人成 | 黑人狂躁日本妞无码A片 | 国产福利视频一区美女 | 久久九九久精品国产 | 婷婷激情久久 | 91看片淫黄大片一级在线观看 | 国产精品久久久久不卡 | 一卡二卡三免费乱码 | av毛片在线免费看 | 日本资源站 | 猛龙怪客 | 天天摸天天添 | 多男操一女视频 | 欧美性高清视频免费看www | 国产福利视频一区二区 | 久久精品无码一区二区日韩av | 亚洲品质自拍视频 | 精品视频www| 免费在线国产视频 | 免费在线成人av | 九九久久精品 | 国产精品国产成人国产三级 | 狠狠伊人| 欧美一级α片 | 9966av| 久久99国产亚洲精品观看 | 欧美精品亚洲一区二区在线播放 | 欧美视频在线观看一区二区 | 亚洲第一在线 | 老司机精品视频个人在观看 | 久久久国产视频 | 超级成人97碰碰碰免费 | 国产日产亚洲欧美综合另类 | 国产黄色网址在线观看 | 超碰人人人 | 国产精品秒播无毒不卡 | 久久免费看少妇高潮A片麻豆 |