当前位置: 首页 > 知识库问答 >
问题:

Pygame-Snakegame中的生长函数

邢寒
2023-03-14

嗨,伙计们,我开始学习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, (x, 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, appleY, 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个答案

长孙瑞
2023-03-14

当蛇的头与苹果碰撞时,在蛇体内加入一个元素,就可以将蛇的身体解释为一个元素列表,可能包含元组。

 类似资料:
  • Pygame 中提供了一个 模块用来绘制一些简单的图形状,比如矩形、多边形、圆形、直线、弧线等。 模块的常用方法如下表所示: 方法 说明 pygame.draw.rect()  绘制矩形 pygame.draw.polygon()  绘制多边形 pygame.draw.circle()  根据圆心和半径绘制圆形 pygame.draw.ellipse()  绘制一个椭圆形 pygame.draw.

  • 问题内容: import pygame as pg import sys 上面是FrontPage的剥离代码,上面有一个按钮,单击该按钮应将用户带到菜单屏幕,在该屏幕上将显示另外6个按钮,以移至用户选择的加密方法。 但是,当我按继续按钮时,什么也没有发生。 是因为Button类有问题吗?还是有其他原因使按钮停止工作? 提前致谢 问题答案: 您必须调用该函数。 我还对代码结构有一些建议。我将使用另一

  • 函数名称:长按 函数功能:在一点进行长按 函数方法 event.press((x,y,time) 参数 类型 必填 说明 x number 是 横坐屏幕标 y number 是 屏幕纵坐标 time number 否 长按时间,单位:毫秒,不写默认为 1000 毫秒 函数用例 --在点(100,100)长按 3 秒 --仅支持安卓 7 及其以上系统 event.press(100,100,300

  • 各位。我正在为一个编程课做一个游戏,由两条蛇组成,它们朝相反的方向走在一条边界上。它们需要阻挡障碍物,我使用协调使它们不会相互对抗。这意味着第二个尝试访问细胞,需要等到第一个解锁细胞。我已经在这个网站上阅读了很多主题,但我仍然没有找到解决问题的方法。 现在我已经看到蛇在板上四处移动,并在障碍物中阻塞。下面是我的两大问题,我非常感谢您的帮助: 1-有特定的情况,例如,两条蛇走paralell,当他们

  • 我已经安装了pygame,在我的Python菜单上,它显示: 每当我在我的终端上看到它时,它就会说它已经下载了。 但是,当我打开PyCharm或Visual Studio代码并键入: 它会出现以下错误: 我已经尝试了从卸载所有内容到在YouTube上观看各种视频的所有方法。

  • 本文向大家介绍Python函数中不定长参数的写法,包括了Python函数中不定长参数的写法的使用技巧和注意事项,需要的朋友参考一下 1、不定长参数的写法,用 *变量名 表示 2、不定长参数累加 3、不定长参数,使用**c接受m=23,n=56的值; 传参时,a必写,b、c可以缺省 结果: 1 2 (3, 4) ============================== 10 1,2分别赋值给a,