【发布时间】:2021-02-02 18:51:07
【问题描述】:
我正在编写一个小型 Python 游戏,只是为了学习如何更好地使用 Python。我想尝试开始使用多个脚本,因为将所有代码保存在一个脚本中可能会有点拥挤。我制作了第二个脚本,创建了一个函数 main(scrn),一切似乎都运行良好。在我的主脚本 game.py 中调用该函数,它将创建屏幕并且 main(scrn) 函数中的所有内容都会显示出来。但是,什么都不会更新。我的角色根本不会移动,使用我之前测试过的重力控制器,或者向左或向右。我尝试将角色控制器从 hi.py 脚本 (main(scrn)) 移动到 while Running: 函数,但仍然没有移动。然后我尝试将 main(scrn) 函数移回我的原始脚本,但它仍然无法正常工作。似乎什么都没有更新。 这是组合脚本,描述中最后提到的一个
import pygame
from pygame.locals import *
pygame.init()
SIZE = 800, 600
screen = pygame.display.set_mode(SIZE)
def main(scrn):
#VARIABLES
RED = (255, 0, 0)
GRAY = (150, 150, 150)
DGRAY = (75, 75, 75)
rx = 0
ry = 450
x = 50
y = 50
grounded = False
grv = 0
acc = .1
ground = Rect(rx, ry, 200, 800)
ch = Rect(x, y, 50, 50)
#INPUT MOVEMENT
pressed = pygame.key.get_pressed()
if pressed[pygame.K_RIGHT]:
x += 3
if pressed[pygame.K_LEFT]:
x -= 3
if pressed[pygame.K_UP] and grounded:
for z in range(1):
grv = -5
grounded = False
#GRAVITY
self = ch
if ch.colliderect(ground):
grounded = True
if not grounded:
acc = .1
y += grv
grv += acc
if grounded:
y = 400
acc = 0
if y > 600:
return False
#UPDATE
scrn.fill(GRAY)
pygame.draw.rect(scrn, DGRAY, ground)
pygame.draw.rect(scrn, RED, ch)
pygame.display.update()
#RUNNING
running = True
while running:
for event in pygame.event.get():
if event.type == QUIT:
running = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
running = False
if event.key == pygame.K_r and main:
main
main(screen)
pygame.quit()
【问题讨论】:
标签: python visual-studio-code while-loop pygame