gpt4 book ai didi

python - 蛇的问题 - 运动

转载 作者:太空宇宙 更新时间:2023-11-03 17:28:55 28 4
gpt4 key购买 nike

我的 python 代码遇到一些问题,我正在制作蛇的一个版本,我的问题涉及蛇本身的运动。我已经得到了工作正常的方向,我只需要做到这一点,以便蛇继续沿着通过按键告诉它的方向移动,我还需要使它成为一个 block ,目前一旦移动,它就会显示所有以前的 block 。

import pygame, sys, time, random
from pygame.locals import *

pygame.init()

size = width,height = 480, 480 #16x30,16x30
grey = (128,128,128)
screen = pygame.display.set_mode(size)
icon = pygame.image.load('snakeIcon.png')
newDir = 0
prevDir = 0
FPS = 8

xCoord = 10.0
yCoord = 10.0

#Main Program:
pygame.display.set_caption('Anthony\'s Snake')
pygame.display.set_icon(icon)
screen.fill(grey)

fpsTime = pygame.time.Clock()

gameB = pygame.image.load('gameB.png')
border = {}
createLvl()

snakeH = pygame.image.load('snakeH.png')
snake = {}

refreshScreen()

keyCheck = {'LEFT':bool(0), 'RIGHT':bool(0), 'UP':bool(0), 'DOWN':bool(0), 'ESC':bool(0)}

pygame.mixer.music.load('retroMusik.mp3')
pygame.mixer.music.set_volume(0.5)
pygame.mixer.music.play(-1)

while bool(1):
for i in range(1):
snake[str(len(snake))]=snakeH.get_rect()
x = xCoord
y = yCoord
for i in range(len(snake)):
snake[str(i)].x = x*16
snake[str(i)].y = y*16

for event in pygame.event.get():
if event.type==QUIT:
pygame.quit()
sys.exit()
if event.type == KEYDOWN:
if event.key == K_UP :
keyCheck['UP'] = bool(1)
if event.key == K_DOWN :
keyCheck['DOWN'] = bool(1)
if event.key == K_LEFT :
keyCheck['LEFT'] = bool(1)
if event.key == K_RIGHT :
keyCheck['RIGHT'] = bool(1)
if event.key == K_ESCAPE :
keyCheck['ESC'] = bool(1)

if event.type == KEYUP:
if event.key == K_UP :
keyCheck['UP'] = bool(0)
elif event.key == K_DOWN :
keyCheck['DOWN'] = bool(0)
elif event.key == K_LEFT :
keyCheck['LEFT'] = bool(0)
elif event.key == K_RIGHT :
keyCheck['RIGHT'] = bool(0)
elif event.key == K_ESCAPE :
keyCheck['ESC'] = bool(0)

if keyCheck['UP']:
if prevDir != 'DOWN':
newDir = 'UP'
print('Direction changed to UP')
if keyCheck['DOWN']:
if prevDir != 'UP':
newDir = 'DOWN'
print('Direction changed to DOWN')
if keyCheck['LEFT']:
if prevDir != 'RIGHT':
newDir = 'LEFT'
print('Direction changed to LEFT')
if keyCheck['RIGHT']:
if prevDir != 'LEFT':
newDir = 'RIGHT'
print('Direction changed to RIGHT')
prevDir = newDir


if keyCheck['UP'] == bool(1):
yCoord -= 1
if keyCheck['DOWN'] == bool(1):
yCoord += 1
if keyCheck['LEFT'] == bool(1):
xCoord -= 1
if keyCheck['RIGHT'] == bool(1):
xCoord += 1

refreshScreen()
fpsTime.tick(FPS)

请对我温柔一些,我对此还是新手。预先感谢您。

最佳答案

我认为你的动画无法正常工作,因为你在绘制之前没有删除(用背景覆盖)屏幕。请参阅this Pygame 教程,缓慢而详细的解释。

不要使用bool(1)。使用 TrueFalse

我不确定,但我认为蛇不移动的问题要么是A)您重置了控制/运动变量,要么B)您没有每“轮”/帧检查它。

我真的建议找到一些教程(或其他东西)并阅读其他人的一些Python代码,你的代码可以进行很多改进(这并不是,重要的是努力改进)。

关于python - 蛇的问题 - 运动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32181410/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com