汇智学堂-phthon小游戏(贪吃蛇游戏之四-创建蛇及食物)

4.4创建蛇及食物
我们将在600*600像素的画布上,按类来管理我们蛇及食物。下面是我们要做的事情。
1、创建蛇的类,__init__函数中生成蛇。
2、创建食物的类,__init__函数中生成食物。

实现代码如下:

class Snake:
def init(self):
self.x1=40
self.y1=40
self.x2=60
self.y2=60
def drawsnake(self,g):
g.canvas.create_rectangle(self.x1,self.y1,self.x2,self.y2,fill=‘green’)
class Food:
def init(self):
self.a=random.randint(1,30)
self.b=random.randint(1,30)

    self.x11rec=self.a*20
    self.y12rec=self.b*20
    self.x21rec=self.a*20+20
    self.y22rec=self.b*20+20    
    
def drawfood(self,g):
    g.canvas.create_rectangle(self.x11rec,self.y12rec,self.x21rec,self.y22rec,fill='red')    

g=Game()
f=Food()

这里我们处理的蛇及食物,通过创建不同的类来实现的,这样做的好处是:当程序扩展时,结构更加清晰。

将代码整合起来,整合后完整代码如下:

from tkinter import*
import random
import time

‘’‘汇制矩形蛇及矩形实物2’’’

class Game:
def init(self):

    self.tk=Tk()
    self.canvas=Canvas(self.tk,width=600,height=600)
    self.canvas.pack()

    self.canvas.bind_all('<KeyPress-Left>',self.turn_left)
    self.canvas.bind_all('<KeyPress-Right>',self.turn_right)
    self.canvas.bind_all('<KeyPress-Up>',self.turn_up)
    self.canvas.bind_all('<KeyPress-Down>',self.turn_down)  

def turn_left(self,evt):
    pass       
def turn_right(self,evt):
    pass        
def turn_up(self,evt):
    pass        
def turn_down(self,evt):
    pass       

class Snake:
def init(self):
self.x1=40
self.y1=40
self.x2=60
self.y2=60
def drawsnake(self,g):
g.canvas.create_rectangle(self.x1,self.y1,self.x2,self.y2,fill=‘green’)
class Food:
def init(self):
self.a=random.randint(1,30)
self.b=random.randint(1,30)

    self.x11rec=self.a*20
    self.y12rec=self.b*20
    self.x21rec=self.a*20+20
    self.y22rec=self.b*20+20    
    
def drawfood(self,g):
    g.canvas.create_rectangle(self.x11rec,self.y12rec,self.x21rec,self.y22rec,fill='red')    

g=Game()
f=Food()
while 1:
g.canvas.delete(“all”) #clear canvas
s=Snake()
s.drawsnake(g)
f.drawfood(g)

g.tk.update_idletasks()
g.tk.update()
v=0.3
time.sleep(v)

运行这段代码,在画布上,我们看到通过类的__init__函数创建的蛇及食物。见下图4-6。
在这里插入图片描述
图4-6

猜你喜欢

转载自blog.csdn.net/weixin_39593940/article/details/88400369