我正在为一款战舰游戏制作一个小项目,但是我在让代码理解当我点击对象时要改变颜色方面遇到了一些问题。
到目前为止,我有这个类:
我使用我编写的这个函数创建了这个板子:
到目前为止,我已经将正方形/矩形对象添加到列表“board”中。当玩家点击时,我获取像素并使用此方法来确定被点击的是哪个正方形:
到目前为止,我有这个类:
class Tile:
def __init__(self, xstart, ystart, game_display, colour):
self.tile = pygame.Rect(xstart, ystart, 50, 50)
pygame.draw.rect(game_display, colour, self.tile, 1)
print(self.tile)
def ChangeColour(self, game_display, colour):
pygame.draw.rect(game_display, colour, self.tile, 0)
我使用我编写的这个函数创建了这个板子:
def new_board():
global board
xstart = 70
ystart = 50
#pygame.draw.rect(game_display, BLACK, (70, 50, 500, 500), 3)
for square in range(PLAYER_NUMBER_SQUARES):
board.append(Tile(xstart, ystart, game_display, BLACK))
xstart += 50
if xstart == 570:
ystart += 50
xstart = 70
return board
到目前为止,我已经将正方形/矩形对象添加到列表“board”中。当玩家点击时,我获取像素并使用此方法来确定被点击的是哪个正方形:
def get_x_number(x):
index = None
if x >= 70 and x < 120:
index = 70
if x >= 120 and x < 170:
index = 120
if x >= 170 and x < 220:
index = 170
if x >= 220 and x < 270:
index = 220
if x >= 270 and x < 320:
index = 270
if x >= 320 and x < 370:
index = 320
if x >= 370 and x < 420:
index = 370
if x >= 420 and x < 470:
index = 420
if x >= 470 and x < 520:
index = 470
return index
def get_y_number(y):
index = None
if y >= 50 and y < 100:
index = 70
if y >= 100 and y < 150:
index = 120
if y >= 150 and y < 200:
index = 170
if y >= 200 and y < 250:
index = 220
if y >= 250 and y < 300:
index = 270
if y >= 300 and y < 350:
index = 320
if y >= 350 and y < 400:
index = 370
if y >= 400 and y < 450:
index = 420
if y >= 450 and y < 500:
index = 470
return index
(我知道这是一种略微冗长的方法,但如果有更好的方法,请告诉我,尝试了循环,但无法使其正常工作。)
最后,我到达了获取点击方块的位置,但它并没有改变方块,这是因为当我从列表中索引方块时,它返回了这个:<__main__.Tile object at 0x068A5590>
如何让它返回pygame.Rect而不是这个?我已经研究了类,尝试了__repr__
和__str__
,但没有成功,如果有人能帮助我,那就太好了!
谢谢!