• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Python写的贪吃蛇游戏例子_python

python 搞代码 4年前 (2022-01-09) 12次浏览 已收录 0个评论

这篇文章主要介绍了Python写的贪吃蛇游戏例子,练手作品,又好玩又可以学到东西,需要的朋友可以参考下

第一次用Python写这种比较实用且好玩的东西,权当练手吧

游戏说明:

* P键控制“暂停/开始”
* 方向键控制贪吃蛇的方向

源代码如下:

代码如下:

from Tkinter import *import tkMessageBox,sysfrom random import randintclass 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_listclass 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_rel<b>本文来源gao@!dai!ma.com搞$$代^@码5网@</b>ease(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()

以上就是Python写的贪吃蛇游戏例子_python的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Python写的贪吃蛇游戏例子_python
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址