У меня проблемы с загрузкой изображения для его отображения - PullRequest
0 голосов
/ 02 апреля 2019

У меня проблемы с загрузкой изображения в определенное место, в котором я выбираю игровую доску

РЕДАКТИРОВАТЬ: OCR-текст со связанного изображения.

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 Ответ

1 голос
/ 03 апреля 2019

Код увязает во всех этих координатах!

Что если бы был какой-то способ хранить все о гоблине вместе, чтобы он был аккуратным и передавался как параметр илихранится в списке.

Итак, что мы знаем о гоблине ... ну, у него есть:

  • координата игровой сетки
  • изображение(Поверхность PyGame)

Это может быть легко помещено в список 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 есть краткое руководство по спрайту .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...