63 lines
1.9 KiB
Python
63 lines
1.9 KiB
Python
import pygame
|
|
|
|
STEP = 44
|
|
|
|
|
|
class Food():
|
|
def __init__(self, x, y, surface):
|
|
self.x = x * STEP
|
|
self.y = y * STEP
|
|
self.surface = surface
|
|
self.image = pygame.image.load("food.png").convert()
|
|
|
|
def draw(self):
|
|
self.surface.blit(self.image, (self.x, self.y))
|
|
|
|
class Snake():
|
|
def __init__(self, x, y, surface):
|
|
self.x = [x*STEP]
|
|
self.y = [y*STEP] # 用两个列表来存储贪吃蛇每个节点的位置
|
|
self.length = 1 # 贪吃蛇的长度
|
|
self.direction = 0 # 0表示向右, 1表示向下, 2表示向左, 3表示向上
|
|
self.image = pygame.image.load("snake.png").convert() # 加载蛇
|
|
self.surface = surface
|
|
self.step = 44 # 运动步长
|
|
self.updateCount = 0 # 更新次数
|
|
|
|
# 虽然有这么多节点,但是有length来控制界面上画出多少蛇的节点
|
|
for i in range(1, 100):
|
|
self.x.append(-100)
|
|
self.y.append(-100)
|
|
|
|
def draw(self):
|
|
for i in range(self.length):
|
|
self.surface.blit(self.image, (self.x[i],self.y[i]))
|
|
|
|
def moveRight(self):
|
|
self.direction = 0
|
|
|
|
def moveLeft(self):
|
|
self.direction = 2
|
|
|
|
def moveUp(self):
|
|
self.direction = 3
|
|
|
|
def moveDown(self):
|
|
self.direction = 1
|
|
|
|
def update(self):
|
|
self.updateCount += 1
|
|
if self.updateCount > 2:
|
|
for i in range(self.length-1, 0, -1):
|
|
self.x[i] = self.x[i-1]
|
|
self.y[i] = self.y[i-1]
|
|
if self.direction == 0:
|
|
self.x[0] = self.x[0] + self.step # 向右
|
|
if self.direction == 1:
|
|
self.y[0] = self.y[0] + self.step # 向下
|
|
if self.direction == 2:
|
|
self.x[0] = self.x[0] - self.step # 向左
|
|
if self.direction == 3:
|
|
self.y[0] = self.y[0] - self.step # 向上
|
|
self.updateCount = 0
|