微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

pygame 中的增长函数 - SnakeGame

如何解决pygame 中的增长函数 - SnakeGame

大家好,我开始学习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个元素,你可以将蛇的身体解释为一个元素列表,可能包含元组。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。