Pokémon Versão Texto: Episódio 1
POKÉMON EM TEXTO: EPISÓDIO 1
meu primeiro post aqui :) tive a ideia de um projeto de fazer um "jogo" de pokémon com todos os pokémon da primeira geração, só que uma versão em texto, sem nenhum gráfico. Então eu decidi que vou documentar todo o processo de fazer isso aqui, então lá vamos nós >:D.
Esse é meu primeiro projeto pessoal que tem realmente um objetivo, então por favor, me ajudem onde eu posso melhorar :)
Eu to estudando python como primeira linguagem, então obviamente eu vou usar ela (afinal eu não sei fazer nada com outras linguagens 😅)
EP 1: "MALDITA ARRAY TODA BUGADA!!" (╯°□°)╯︵ ┻━┻!
SIMBORA!!
A primeira coisa que eu fiz foi procurar na internet se tinha alguma coisa parecida para eu me inspirar, acabei não achando muita coisa, a única coisa que eu encontrei foi uma array em JavaScript com o nome dos pokémon e os status deles (nota: depois tenho que ver se os status são os mesmos que estão na wiki)
Depois de encontrar isso, eu fiquei pensando "como que eu vou transformar esse array GIGANTE numa lista em python sem ficar 20 anos fazendo? 🤔" Então eu pedi para meu amigo ChatGPT, assim, ele converteu aquela array gigante em uma lista gigante em python, prontinha para ser usada ;)
pokedex = [
{
"name": "Bulbasaur",
"base": {
"Attack": 49,
"Defense": 49,
"HP": 45,
"Speed": 45
}
},
{
"name": "Ivysaur",
"base": {
"Attack": 62,
"Defense": 63,
"HP": 60,
"Speed": 60
}
},
{
"name": "Venusaur",
"base": {
"Attack": 82,
"Defense": 83,
"HP": 80,
"Speed": 80
}
E assim por diante...
Só que a lista tava meio esquisita, por exemplo se eu quisesse pegar os dados de um pokémon específico, por exemplo o Onix, eu teria que saber o Índice do Onix na lista da pokedex, o que ia deixar o código bem confuso e difícil de escrever, então eu queria simplificar a lista, como fazer isso? Poderia mudar um pouco a lista.
em vez de ser {'name': 'nome do pokémon'}, {'base': status do pokémon}
ser: nome_do_pokemon: {status_do_pokemon}
Então eu fiz um código que ia resolver isso pra mim, o código era um for, que para cada pokémon, escrevia {nome: {status}}
Ele ficou mais ou menos assim(eu nao me lembro direito)
for pokemon in pokedex:
pokedex_nova.append({pokemon ["name"]: pokemon["base"]})
A lista ficou assim
[{'Bulbasaur': {'Attack': 49, 'Defense': 49, 'HP': 45, 'Speed': 45}},
{'Ivysaur': {'Attack': 62, 'Defense': 63, 'HP': 60, 'Speed': 60}},
{'Venusaur': {'Attack': 82, 'Defense': 83, 'HP': 80, 'Speed': 80}}
E assim por diante...
MAS... esse código gerava varios problemas, meu objetivo era conseguir pegar um valor apenas digitando pokedex["Onix"]
, por exemplo, mas isso não acontecia... pedi ajuda novamente pro meu amigo ChatGPT e acontece que, em vez de eu criar UM grande dicionário, eu criei UMA LISTA de dicionários, então o problema inicial continua, para resolver isso, é bem fácil, só preciso tirar esses primeiros colchetes, então a lista ficaria assim:
pokedex = 'Bulbasaur': {'Attack': 49, 'Defense': 49, 'HP': 45, 'Speed': 45},
'Ivysaur': {'Attack': 62, 'Defense': 63, 'HP': 60, 'Speed': 60},
'Venusaur': {'Attack': 82, 'Defense': 83, 'HP': 80, 'Speed': 80}
mas como eu vou fazer um código que faz isso pros 151 itens dessa lista? passei o resto do dia quebrando a cabeça pra ver se eu conseguia pensar em alguma coisa que faria isso, novamente recorri ao ChatGPT e eleme passou um código todo cheio de erros, eu modifiquei e ele ficou assim:
for pokemon in pokedex:
for atributo, valor in pokemon.items():
print(f"{atributo}: {valor}")
(não entendi muito bem como funciona esse código, porque o for tem duas variaveis? Alguém pode me explicar por favor?)
depois foi só dar Ctrl+C e Ctrl+V e a lista está 100% pronta para a ação, eu posso só procurar o valor do Onix fazendo pokedex["Onix"]["HP"]
, por exemplo.
enfim, esse foi o fim da primeira semana mechendo nisso aí, no próximo episódio eu vou tentar:
- criar um repostório no GitHub com esse projeto (sou uniciante no GitHub também)
- começar o sistema de Batalhas
E também alguns objetivos extras: - sistema de tipos
- itens de cura
- sistma de nível
- colocar alguma coisa parecida com um sistema de história/escolhas
muito obrigado por acompanhar essa jornada até aqui (っ◔◡◔)っ...
se quiser pode deixar sugestões ou dias nos comentários e ATÉ O PRÓXIMO EPISÓDIO!! :D