Я пытаюсь научить себя программировать в pygame и в настоящее время делаю простую игру для домашнего проекта.Я написал код, думая, что он должен обновлять координаты прямоугольника игрока на каждой итерации игрового цикла, основываясь на входах игрока.Тем не менее, координаты прямоугольника сбрасываются, а не изменяются.Любая помощь будет оценена.
import pygame, sys
from pygame.locals import*
from sys import exit
pygame.init()
##Set up the colours
WHITE =(255, 255, 255)
BLACK = (0, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
RED = (255, 0, 0)
ORANGE = (255, 165, 0)
PINK = (255, 192, 203)
YELLOW = (255, 255, 0)
KHAKI = (189, 183, 107)
MAGENTA = (255, 0, 255)
##Set up the window
WINDOWHEIGHT = 500
WINDOWWIDTH = 1000
screen = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT))
pygame.display.set_caption('Tower')
##Set up level variable
level = 1
##Run game loop
while True:
##Check for quit event
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit(); sys.exit()
##Check for level
if level == 1:
screen.fill(WHITE)
MOVESPEED = 10
##Enemy rectangles
e1 = pygame.Rect(200, 0, 50, 100)
e2 = pygame.Rect(250, 50, 50, 100)
e3 = pygame.Rect(300, 100, 50, 100)
e4 = pygame.Rect(450, 250, 50, 100)
e5 = pygame.Rect(500, 300, 50, 100)
e6 = pygame.Rect(550, 350, 50, 100)
enemies = [e1, e2, e3, e4, e5, e6]
##Draw enemy rectangles
pygame.draw.rect(screen, RED, e1, 0)
pygame.draw.rect(screen, RED, e2, 0)
pygame.draw.rect(screen, RED, e3, 0)
pygame.draw.rect(screen, RED, e4, 0)
pygame.draw.rect(screen, RED, e5, 0)
pygame.draw.rect(screen, RED, e6, 0)
##Player rectangle
player = pygame.Rect(25, 25, 50, 50)
##Change keyboard variables
if event.type == KEYDOWN:
if event.key == K_LEFT or event.key == K_a:
moveRight = False
moveLeft = True
if event.key == K_RIGHT or event.key == K_d:
moveLeft = False
moveRight = True
if event.key == K_UP or event.key == K_w:
moveDown = False
moveUp = True
if event.key == K_DOWN or event.key == K_s:
moveUp = False
moveDown = True
if event.type == KEYUP:
if event.key == K_ESCAPE:
pygame.quit()
sys.exit()
if event.key == K_LEFT or event.key == K_a:
moveLeft = False
if event.key == K_RIGHT or event.key == K_d:
moveRight = False
if event.key == K_UP or event.key == K_w:
moveUp = False
if event.key == K_DOWN or event.key == K_s:
moveDown = False
##Move the player with the keyboard
if event.type == KEYDOWN:
if event.key == K_LEFT or event.key == K_a:
player.left -= MOVESPEED
if event.key == K_DOWN or event.key == K_s:
player.top += MOVESPEED
if event.key == K_RIGHT or event.key == K_d:
player.left += MOVESPEED
if event.key == K_UP or event.key == K_w:
player.top -= MOVESPEED
##Check if player is in the window
if player.top < 0:
#The player has moved past the top
player.top += 1
if player.bottom > WINDOWHEIGHT:
#The player has moved past the bottom
player.top -= 1
if player.left < 0:
#The player has moved past the left side
player.left += 1
if player.right > WINDOWWIDTH:
#The player has moved past the right side
player.left -= 1
#Draw player onto the screen
pygame.draw.rect(screen, GREEN, player)
pygame.display.flip()