汇智学堂-phthon小游戏(贪吃蛇游戏之五-创建蛇身及动画)

4.5创建蛇身及动画
我们在上一节中创建的蛇,只是一个方形,为了更加逼真,我们改用矩形-三个正方形连在一起来代表蛇,这样更能体现蛇的身长。我们将在600*600像素的画布上,创建一条蛇-由三个正方形连在一起的蛇,并使让能够向右运动。下面是我们要做的事情。
1、创建“长”蛇。
2、创建“长”蛇的动画。

实现代码如下:

class Snake:

def __init__(self):       
     self.y=0             
def draw(self,g):
    if(g.x==0):
        a=8       
    elif g.x==1 and g.y==0:
        print("已进入")
        a=g.body[0][0]+1              
        g.body.insert(0,(a,g.body[0][1]))
        del g.body[3]       

    print(g.x)
    print(g.y)

    #tkinter.messagebox.showinfo(len(self.body))            
    
    for i in g.body:
         print(i)
         x1=i[0]*20+g.x*20
         y1=i[1]*20+g.y*20        
         g.canvas.create_rectangle(x1,y1,x1+20,y1+20,fill='green')  

g.body.insert(0,(a,g.body[0][1]))是对数组body,在第一元素位置前,插入一个新的元素。
del g.body[3]是对数组body,第四个元素的删除。

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

from tkinter import*
import random
import time
import tkinter.messagebox #messagebox

‘’‘三个方框蛇向右行动’’’

class Game:
def init(self):

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

    #横坐标增量
    self.x=0
    self.y=0
    self.body = [(8, 11), (8, 12), (8, 13)]

    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):
    self.x=1
    self.y=0        
def turn_up(self,evt):
    pass
def turn_down(self,evt):
    pass           

class Snake:
def init(self):
self.y=0
def draw(self,g):
if(g.x0):
a=8
elif g.x
1 and g.y==0:
print(“已进入”)
a=g.body[0][0]+1
g.body.insert(0,(a,g.body[0][1]))
del g.body[3]

    print(g.x)
    print(g.y)

    #tkinter.messagebox.showinfo(len(self.body))            
    
    for i in g.body:
         print(i)
         x1=i[0]*20+g.x*20
         y1=i[1]*20+g.y*20        
         g.canvas.create_rectangle(x1,y1,x1+20,y1+20,fill='green')    

class Food:
def init(self):

    self.a=random.randint(1,29)
    self.b=random.randint(1,29)

    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()
s=Snake()

while 1:
g.canvas.delete(“all”) #clear canvas
s.draw(g)
f.drawfood(g)

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

运行这段代码,在画布上,我们看到三节蛇身的蛇向右运动。见下图4-7。
在这里插入图片描述

图4-7

猜你喜欢

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