Criação de janela de diálogo entre personagens

Olá!
Estou desenvolvendo um jogo 2d em Python e pygame para o meu TCC (estilo Zelda Link's Awakening, ou seja, estou usando Sprites 2D e o personagem se move para as quatro direções). Porém, gostaria de, quando dois personagens se encontram, mostrar um balão de diálogo ou algo do tipo, com direito a opções. Alguém sabe, por favor, se existe algum framework para isso em Python, ou tenho que fazer o balão "na mão"?

Obs.: Já me indicaram Ren'Py, mas não é isso que estou procurando rs.

Obrigado desde já!

Fazer isso “na mão” não é complicado, embora requeira algum trabalho.

Não sei o quanto você entende de desenvolvimento de jogos, mas uma abordagem simples seria:

  • verificar a distância entre os personagens: uma vez que você possui a posição x e y de ambos, fica fácil saber isso;
  • se estão perto o suficiente e o jogador aperta uma tecla ( “A”, digamos), carregue o diálogo (conjunto de strings) associado à aquele personagem;
  • para exibir o texto, desenhe um retângulo preto e o texto em branco por cima (vi que isso é possível no Pygame)

Obviamente, se for entrar no código propriamente dito, muitas coisas podem estar envolvidas. Minha recomendação é fazer por partes: primeiro, descubra como desenhar o retângulo, depois como desenhar o texto, depois como ativar o texto a partir de uma tecla e aí associe ao ato de pressionar a tecla perto de um NPC.

Abraço.

1 curtida

Muito obrigado!
Na verdade, estou iniciando em desenvolvimento de jogos rs!

Então, já consigo detectar a proximidade entre ambos (através do personagem1.colliderect(personagem2.getRect())), só preciso implementar a parte do diálogo. É que me falaram que tinha um framework que trabalha com isso, mas fucei a internet e livros e não achei nada do tipo.

Abraço!

Framework eu não sei dizer, mas qual o seu problema em específico? Como você é iniciante, acredito que será mais interessante fazer por conta do que usar algum framework que faz o trabalho bruto, mas que você não faz ideia de como funciona.

Basicamente, o que você precisa é exibir uma mensagem a partir da ação do usuário (apertar uma tecla). O texto pode estar junto do personagem ou numa lista à parte, que você referencia usando um índice.

Se o que você quer é um sistema de diálogo completo e com escolhas, obviamente vai dar mais trabalho, mas não é nada impossível. Um jeito simples seria usar uma máquina de estados (pesquise para saber mais), em que as escolhas fizessem a transição entre os estados.

Abraço.

1 curtida

Então, na verdade pretendo desenvolver um jogo em que um personagem (controlado pelo usuário, chamarei de P1) chega num certo ponto e tem que conversar com outro (controlado pelo código em Python/Pygame, chamarei de P2). O P2 deve fazer uma questão referente a matemática, e caso P1 acerte, poderá avançar.

Vou dar uma pesquisada sobre máquina de estados mais a fundo. Andei lendo a respeito, vi em um livro um código (sem interação do usuário) em que formigas - através da máquina de estados - colhiam folhas, levavam para o formigueiro, caçavam aranhas que se aproximassem do formigueiro e levavam as aranhas para dentro do formigueiro.

Acabei achando uma biblioteca do Al Sweigart que mexe com textos na tela junto com Pygame, chamada Pygcurses… Mas ao que parece ela está meio que num estágio inicial…

Obrigado, abraço!