#python #pygame
#python #pygame
Вопрос:
РЕДАКТИРОВАТЬ: распознавание текста из связанного изображения.
def drawPieces (gameBoard):
global goblin1a
global goblin1b
global goblin2a
global goblin2b, goblin3a, goblin3b, goblin4a, goblin4b
global xcoordinate
global ycoordinate
global i
global j
for x in range (0,20):
for y in range (0,20):
xcoordinate.append(((margin width) * x margin 32) xDistanceFromEdge)
ycoordinate.append((margintheight) * y margin 33
#if gameBoard [x] [y]=="NormalBlack"
goblin1a=xcoordinate[2]#goblin 1
goblin1b=ycoordinate[2]#goblin 1
goblin2a=xcoordinate[3]#goblin 1
goblin2b=ycoordinate[3]#goblin 1
goblin3a=xcoordinate[7]#goblin 1
goblin3b=ycoordinate[5]#goblin 1
goblin4a=xcoordinate[9]#goblin 1
goblin4b=ycoordinate[2]#goblin 1
screen.blit(walkLeft, (goblin1a, goblin1b))
print (xcoordinate)
drawPieces (gameBoard)
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
if event.type == pygameMOUSEBUTTONDOWN:
pos = pygame.mouse.get_pos()
Ответ №1:
Код увязает во всех этих координатах!
Что, если бы существовал какой-то способ хранить все о Goblin вместе, чтобы поддерживать порядок и разрешать передавать его в качестве параметра или сохранять в списке.
Итак, что мы знаем о Goblin … ну, у него есть:
- координата игровой сетки
- изображение (PyGame surface)
Это можно легко поместить в список python (например, массив):
goblin1 = [ 0, 0, walkLeft ]
goblin2 = [ 1, 0, walkLeft ]
...
Их можно сохранить в другом списке:
goblins = [ goblin1, goblin2, ... ]
Упрощение drawPieces()
:
# window border constants
X_BORDER = 40
Y_BORDER = 40
drawPieces( screen, goblin_list ):
global X_BORDER, Y_BORDER
# paint background white
screen.fill( ( 255,255,255 ) )
# draw each goblin in the list
for single_goblin in goblin_list:
# copy the three parts of the goblin's info from the list
board_x, board_y, bitmap = single_goblin
# convert game grid-position to screen-position
screen_x = X_BORDER ( board_x * 32 )
screen_y = Y_BORDER ( board_y * 33 )
screen.blit( bitmap, ( screen_x, screen_y ) )
# flush the updates to the display
pygame.display.flip()
Также существуют спрайты PyGame, которые являются программными объектами, поэтому они инкапсулируют как переменные для объекта, так и функции для работы с ним.
class GoblinSprite( pygame.sprite.Sprite ):
def __init__( self, bitmap, board_position ):
self.position = board_position
self.image = bitmap
self.rect = self.image.get_rect()
self.setScreenPosition()
def setScreenPosition( self ):
global X_BORDER, Y_BORDER
screen_x = X_BORDER ( self.position[0] * 32 )
screen_y = Y_BORDER ( self.position[1] * 33 )
self.rect.x = screen_x
self.rect.y = screen_y
return (screen_x, screen_y)
На веб-сайте PyGame есть короткое руководство по спрайтам.