gpt4 book ai didi

python - 在 Pygame 中移动一个矩形

转载 作者:行者123 更新时间:2023-11-28 21:50:19 25 4
gpt4 key购买 nike

我正在尝试制作游戏并遇到问题...我无法移动矩形,它也没有给我错误代码吗?..我认为问题在于它一直在移动矩形在 while 循环中一遍又一遍……但我不知道如何解决这个问题……

#! /usr/bin/env python

import os
import random
import pygame
import math
import sys

os.environ["SDL_VIDEO_CENTERED"] = "1"

screen = pygame.display.set_mode((600, 600))
pygame.display.set_caption("LEVEL 2 = Find the Correct Square!")

clock = pygame.time.Clock()

class Player(object):
def __init__(self):
self.rect = pygame.draw.rect(screen, (0, 0, 128), (64, 54, 16, 16))

def handle_keys(self):
key = pygame.key.get_pressed()
dist = 1
if key[pygame.K_LEFT]:
self.rect.move(-1, 0)
if key[pygame.K_RIGHT]:
self.rect.move(1, 0)
if key[pygame.K_UP]:
self.rect.move(0, -1)
if key[pygame.K_DOWN]:
self.rect.move(0, 1)

def draw(self, surface):
pygame.draw.rect(screen, (0, 0, 128), (64, 54, 16, 16))

pygame.init()

player = Player()
clock = pygame.time.Clock()

running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
break
running = False

screen.fill((255, 255, 255))

player.draw(screen)
player.handle_keys()
pygame.display.update()

clock.tick(40)

最佳答案

您需要对 Player 类进行一些更改。您要么需要将 self.rect 重新分配给 self.rect.move() 的结果,要么使用就地变体 self.rect.move_ip()

class Player(object):
def __init__(self):
self.rect = pygame.rect.Rect((64, 54, 16, 16))

def handle_keys(self):
key = pygame.key.get_pressed()
dist = 1
if key[pygame.K_LEFT]:
self.rect.move_ip(-1, 0)
if key[pygame.K_RIGHT]:
self.rect.move_ip(1, 0)
if key[pygame.K_UP]:
self.rect.move_ip(0, -1)
if key[pygame.K_DOWN]:
self.rect.move_ip(0, 1)

def draw(self, surface):
pygame.draw.rect(surface, (0, 0, 128), self.rect)

每次按键,矩形都会移动一次。如果你想在按住一个键时继续移动,你需要缩进你的主循环的一部分

while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
break
running = False

screen.fill((255, 255, 255))

player.draw(screen)
player.handle_keys()
pygame.display.update()

clock.tick(40)

关于python - 在 Pygame 中移动一个矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32061507/

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