【发布时间】:2018-10-18 04:27:47
【问题描述】:
import random
import sys
import pygame
from pygame.locals import *
pygame.init()
pygame.mouse.set_visible(False)
grid = list(range(0, 581, 20))
screenW, screenH = 600, 600
fodrawn_snake = False
wn = pygame.display.set_mode((screenW, screenH))
pygame.display.set_caption("Snake @codingeagle")
class player(object):
def __init__(self, x, y, w, h):
self.x = x
self.y = y
self.w = w
self.h = h
self.xvel = 20
self.yvel = 0
self.l = 0
def move(self):
self.x += self.xvel
self.y += self.yvel
if self.x >= 600:
self.x = 0
elif self.x < 0:
self.x = 580
if self.y >= 600:
self.y = 0
elif self.y < 0:
self.y = 580
def draw(self, wn):
pygame.draw.rect(wn, (5, 125, 125), (self.x, self.y, self.w, self.h), 1)
class enemy(object):
def __init__(self, x, y, w, h):
self.x = x
self.y = y
self.w = w
self.h = h
def draw(self, wn):
pygame.draw.rect(wn, (255, 0, 0), (self.x, self.y, self.w, self.h), 1)
def snakeCreate():
global fodrawn_snake
if not(fodrawn_snake):
snakes.append(player(screenW/2, screenH/2, 20, 20))
fodrawn_snake = True
for snake in snakes:
if snake.l > len(snakes):
snakes.append(player(snake.x - snake.xvel, snake.y - snake.yvel, 20, 20))
def eatFood():
global food
for snake in snakes:
if snake.x == food.x and snake.y == food.y:
snake.l += 1
food = enemy(grid[random.randint(0, 30)], grid[random.randint(0, 30)], 20, 20)
def fps():
pygame.time.Clock().tick(10)
def events():
for ev in pygame.event.get():
if ev.type == QUIT:
pygame.quit()
sys.exit()
if ev.type == KEYDOWN:
if ev.key == K_LEFT:
for snake in snakes:
snake.xvel = -20
snake.yvel = 0
if ev.key == K_RIGHT:
for snake in snakes:
snake.xvel = 20
snake.yvel = 0
if ev.key == K_UP:
for snake in snakes:
snake.xvel = 0
snake.yvel = -20
if ev.key == K_DOWN:
for snake in snakes:
snake.xvel = 0
snake.yvel = 20
def drawing():
food.draw(wn)
for snake in snakes:
snake.move()
snake.draw(wn)
pygame.display.update()
wn.fill((0, 0, 0))
## Anouncements ##
snakes = []
food = enemy(grid[random.randint(0, 30)], grid[random.randint(0, 30)], 20, 20)
while True:
fps()
events()
eatFood()
snakeCreate()
drawing()
因此,当我的蛇吃掉食物时,它会创建一条新蛇,但它会在不知名的地方而不是蛇旁边的某个地方。它像 x 和 y vel 一样移动,但它不在 Snake 旁边,也不像实际的蛇那样。希望你能解决问题。谢谢,乔里斯 (PS:我是 pygame 的新手,这就是我制作这些简单代码的原因。) 这是我的问题的图片:
【问题讨论】: