tuoheng_algN/test/游戏/Food.py

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