问题描述
大家好,我开始学习pygames,我开始玩snake,但遇到了障碍。我不知道如何让我的蛇在吃苹果时生长的功能,我看过很多蛇代码,但我仍然不知道该怎么做。我不知道该怎么做,我真的希望你能给我一些建议来改进我的游戏。
你的帮助会做我很好,谢谢
import pygame
import random
import math
# Init
pygame.init()
# Screen
screen = pygame.display.set_mode((800,600))
# Caption and Icon
pygame.display.set_caption("Snake Game")
icon = pygame.image.load('icon.png')
pygame.display.set_icon(icon)
# Background
background = pygame.image.load('background.jpg')
# Snake
snakeImg = pygame.image.load('snake.png')
snakeX = 300
snakeY = 300
snakeX_change = 0
snakeY_change = 0
# Apple
appleImg = pygame.image.load('apple.png')
appleX = random.randint(32,768)
appleY = random.randint(32,568)
def snake(x,y):
screen.blit(snakeImg,(x,y))
def apple(x,y):
screen.blit(appleImg,y))
# Collision
def isCollision(appleX,appleY,snaketX,snakeY):
distance = distance = math.sqrt(math.pow(appleX - snakeX,2) + (math.pow(appleY - snakeY,2)))
if distance < 27:
return True
else:
return False
# Game Loop
score = 0
running = True
while running:
# Background Image
screen.blit(background,(0,0))
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Snake Movment
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
snakeX_change = -0.1
snakeY_change = 0
if event.key == pygame.K_UP:
snakeY_change = -0.1
snakeX_change = 0
if event.key == pygame.K_RIGHT:
snakeX_change = 0.1
snakeY_change = 0
if event.key == pygame.K_DOWN:
snakeY_change = 0.1
snakeX_change = 0
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT:
snakeX_change = -0.1
if event.key == pygame.K_RIGHT:
snakeX_change = 0.1
if event.key == pygame.K_DOWN:
snakeY_change = 0.1
if event.key == pygame.K_UP:
snakeY_change = -0.1
snakeX += snakeX_change
snakeY += snakeY_change
if snakeX <= 0:
snakeX = 0
elif snakeX >= 770:
snakeX = 770
if snakeY <= 0:
snakeY = 0
elif snakeY >= 570:
snakeY = 570
# Collision
collision = isCollision(appleX,snakeX,snakeY)
if collision:
score += 1
print(score)
appleX = random.randint(32,768)
appleY = random.randint(32,568)
snake(snakeX,snakeY)
apple(appleX,appleY)
pygame.display.flip()
解决方法
当蛇的头与苹果碰撞时,在蛇的身体内添加1个元素,你可以将蛇的身体解释为一个元素列表,可能包含元组。