Heim > Artikel > Backend-Entwicklung > Beispiel für ein Snake-Spiel, geschrieben in Python_python
In diesem Artikel werden hauptsächlich Beispiele für das in Python geschriebene Snake-Spiel vorgestellt. Es ist ein praktisches Werk, das Spaß macht und Freunde, die es brauchen, darauf verweisen kann.
Dies ist das erste Mal Um diese Art von Vergleich in Python zu schreiben, ist es praktisch und macht Spaß, es einfach zu üben
Spielbeschreibung:
* P-Taste steuert „Pause/Start“
* Pfeiltasten steuern die Richtung der Schlange
Der Quellcode lautet wie folgt:
Kopieren Sie den CodeDer Code lautet wie folgt:
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()
Das obige ist der detaillierte Inhalt vonBeispiel für ein Snake-Spiel, geschrieben in Python_python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!