gpt4 book ai didi

python - Pygame -> 在类方法中移动一个矩形

转载 作者:太空宇宙 更新时间:2023-11-04 05:28:45 28 4
gpt4 key购买 nike

我有一个名为 Block 的类,我用它来绘制和移动 block :

class Block:
def __init__(self, pos_x, pos_y, size_x, size_y):
self._posX = pos_x
self._posY = pos_y
self._sizeX = size_x
self._r = pygame.draw.rect(gameDisplay, (200,100,100), (pos_x,pos_y,size_x,size_y), 0)

def bMove(self, new_x, new_y):
self._r.left = new_x
self._r.top = new_y

现在,绘制部分效果很好。问题是我无法使用 ie 的 bMove 类移动矩形。 'Box1.bMove(100, 100)'。代码编译没有任何错误,但在游戏中矩形没有发生任何变化。即使使用 'move(x,y)' 或将类修改为如下所示:

class Block:
def __init__(self, pos_x, pos_y, size_x, size_y):
self._posX = pos_x
self._posY = pos_y
self._sizeX = size_x
pygame.draw.rect(gameDisplay, (200,100,100), (pos_x,pos_y,size_x,size_y), 0)

def bMove(self, new_x, new_y):
self.left = new_x
self.top = new_y

没有任何好处。有人知道如何解决这个问题吗?任何帮助将不胜感激

最佳答案

__init__ 仅在您创建类的实例时被调用一次。

您正在尝试更新 block 的位置并绘制它,因此您需要有一个可以重复执行此操作的方法。

class Block:
def __init__(self, pos_x, pos_y, size_x, size_y):
self._posX = pos_x
self._posY = pos_y
self._sizeX = size_x
self._sizeY = size_y
self._r = pygame.Rect(pos_x,pos_y,size_x,size_y)

def bMove(self, new_x, new_y):
self._r.left = new_x
self._r.top = new_y

pygame.draw.rect(gameDisplay, (200,100,100), self._r)

这是一些测试代码:

import pygame

pygame.init()

size = [640, 480]
screen = pygame.display.set_mode(size)
pygame.display.set_caption('Block')

clock = pygame.time.Clock()

class Block():
def __init__(self, pos_x, pos_y, size_x, size_y):
self._posX = pos_x
self._posY = pos_y
self._sizeX = size_x
self._sizeY = size_y
self._r = pygame.Rect(pos_x,pos_y,size_x,size_y)

def bMove(self, new_x, new_y):
self._r.left = new_x
self._r.top = new_y

pygame.draw.rect(screen, (200,100,100), self._r)

block = Block(0, 0, 50, 50)

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

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

x, y = pygame.mouse.get_pos()
block.bMove(x, y)

pygame.display.update()
clock.tick(20)

pygame.quit()

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

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