Pergunta

Eu apenas comecei a aprender como usar pygame ontem. Fui ler este livro que foi super útil e seguiu todos os seus tutoriais e exemplos e outras coisas. Eu queria tentar fazer um / jogo de plataformas scroller lado muito simples, mas o sorta livro saltou muito rápido em modelagem 3D com a instruindo como fazer a mudança sprites para o movimento de cima para baixo à esquerda e à direita e como para percorrer as imagens animam.

Eu passei tudo hoje a tentar obter um sprite para exibição e ser capaz de se mover com up down esquerda e direita. Mas por causa do script simples que usa uma imagem estática e se recusa a mudança.

Alguém pode me dar algum conhecimento sobre como alterar os sprites. Ou enviar-me para um tutorial que faz?

Cada referência e pessoa experimentando com ele ha sido sempre usando formas geradas assim que eu nunca sou capaz de trabalhar com eles.

Qualquer ajuda é muito apreciada.

Adicionado: antes de descobrir como colocar animações complexas em minha cena que eu gostaria de saber como posso fazer minha mudança 'jogador' para imagens unmoving no que diz respeito à minha pressionando-se para baixo para a esquerda ou direita. talvez diagonal se as pessoas sabem que é algo realmente complicado.

Adicionar: Isto é o que eu coloquei até agora. http://animania1.ca/ShowFriends/dev/dirmove.rar haveria a possibilidade de fazer a direção / action definir a coluna da acção e ter o mínimo de código configuração coluna também torná-lo ciclo para baixo em um loop para fazer a animação? (Ou isso seria um uso perder bruta de eficiência?)

Foi útil?

Solução

Aqui está um exemplo mudo que alernates entre duas primeiras imagens do spritesheet quando você pressiona a esquerda / direita:

import pygame

quit = False
pygame.init()
display = pygame.display.set_mode((640,480))
sprite_sheet = pygame.image.load('sprite.bmp').convert()

# by default, display the first sprite
image_number = 0

while quit == False:
    event = pygame.event.poll()
    no_more_events = True if event == pygame.NOEVENT else False

    # handle events (update game state)
    while no_more_events == False:
        if event.type == pygame.QUIT:
            quit = True
            break
        elif event.type == pygame.NOEVENT:
            no_more_events = True
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                image_number = 0
            elif event.key == pygame.K_RIGHT:
                image_number = 1

        event = pygame.event.poll()

    if quit == False:
        # redraw the screen
        display.fill(pygame.Color('white'))
        area = pygame.Rect(image_number * 100, 0, 100, 150)
        display.blit(sprite_sheet, (0,0), area)
        pygame.display.flip()

Eu nunca realmente utilizado Pygame antes, então talvez este shoudln't código realmente ser tomado como um exemplo. Espero que mostra os conceitos básicos embora.

Para ser mais completo que eu deveria esperar algum tempo antes de atualizar, por exemplo, controle que eu atualizar apenas 60 vezes por segundo.

Além disso, seria útil para escrever uma classe Sprite que simplificar o seu trabalho. Você poderia passar o tamanho de um quadro do sprite no construtor, e você teria metodos como update() e draw() que faria automaticamente o trabalho de selecionar o próximo quadro, blitting o sprite e assim por diante.

Pygame parece fornecer uma classe base para o efeito: texto do link .

Outras dicas

gajo a única coisa que você tem a fazer é offcourse

pygame importação e todas as outras coisas necessárias digite o código e outras coisas .......... então quando se trata de você fazer uma spri

class .your class nam here. (pygame.sprite.Sprite):
     def __init__(self):
          pygame.sprite.Sprite.init(self)
          self.image=pygame.image.load(your image and path)
          self.rect=self.image.get_rect()
          x=0
          y=0

          # any thing else is what you want like posistion and other variables

     def update(self):
          self.rect.move_ip((x,y))

e é isso !!!! mas isso não é o fim. se você fizer isso você vai ony fizeram o sprite para movê-lo você precisa

Eu não sei muito sobre Pygame, mas eu tenho SDL utilizado (em que Pygame é baseado).

Se você usar Surface.blit(): texto do link

Você pode usar o argumento area opcional para selecionar qual parte da superfície para desenhar. Então, se você colocar todas as imagens que fazem parte da animação dentro de um único arquivo, você pode selecionar qual imagem será desenhado. É chamado de "recorte".

Eu acho que você vai ter um loop do jogo que irá atualizar o estado do jogo (mudando a imagem atual da Sprite, se necessário), em seguida, desenhar os sprites usando seu estado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top