🚀 Crie uma Inteligência Artificial para Jogar Tamagotchi em Python! 🐣💻
- Marcelo Póvoa
- 29 de dez. de 2024
- 4 min de leitura
Introdução:
Quem lembra do clássico Tamagotchi dos anos 90? 🐾 Aqueles bichinhos virtuais que precisavam de comida, carinho e atenção conquistaram o coração de uma geração. Mas que tal trazer essa ideia para os tempos modernos? Neste post, você vai aprender a criar um jogo estilo Tamagotchi em Python, implementar uma IA para jogar por você e até explorar como integrá-lo a projetos com Arduino ou ESP32. 🤖
Além disso, daremos dicas para turbinar o projeto, como criar uma interface gráfica em Python com a biblioteca Tkinter ou PyQt. Vamos transformar nostalgia em inovação?
Acessando o Google Colab
Vamos acessar o site do Google Colab, coloque o nome para o arquivo de "Jogo Tamagotchi com IA"
Passo 1: Criando o Tamagotchi no Python
Para começar, precisamos de uma base simples que simule as interações com o bichinho virtual: alimentar, brincar e monitorar seu estado (felicidade, energia, fome, etc.).
Definir os atributos do Tamagotchi:
fome (0 a 100)
felicidade (0 a 100)
energia (0 a 100)
Definir o estado do Tamagotchi:
vivo (true/false)
# Atributos
atributos = {
"fome": 50,
"energia": 50,
"felicidade": 50
}
vivo = True
Observe a lógica do game, aqui iniciamos o nosso bichinho com tudo em 50 por estar na média.
Definir as ações possíveis:
Alimentar, brincar, dormir e nada.
# Ações
# Alimentar
def alimentar():
atributos["fome"] = atributos["fome"]-20
atributos["energia"] = atributos["energia"]-10
atributos["felicidade"] = atributos["felicidade"]+5
maximo()
# Dormir
def dormir():
atributos["fome"] = atributos["fome"]+10
atributos["energia"] = atributos["energia"]+10
atributos["felicidade"] = atributos["felicidade"]+5
maximo()
# Brincar
def brincar():
atributos["fome"] = atributos["fome"]+20
atributos["energia"] = atributos["energia"]-20
atributos["felicidade"] = atributos["felicidade"]+20
maximo()
# Nada
def nada():
atributos["fome"] = atributos["fome"]+10
atributos["energia"] = atributos["energia"]-5
atributos["felicidade"] = atributos["felicidade"]-20
maximo()
# máximo
def maximo():
if atributos["fome"] < 0:
atributos["fome"] = 0
if atributos["energia"] > 100:
atributos["energia"] = 100
if atributos["felicidade"] > 100:
atributos["felicidade"] = 100
Definido emoções:
Morto: quando a fome chega em 100 e ou energia/felicidade a 0.
Feliz: quando a fome menor de 50 e ou energia/felicidade maior 50.
Fome: a fome maior 50.
Cansado: a energia menor 50
Triste: a felicidade menor 50
# Exibir estado emoção
def exibir_estado_emocao():
global vivo
mensagem = ""
# converter o fome 0 mais baixo e 100
necessidades = {k: (100 - v if k == "fome" else v) for k, v in atributos.items()}
# Encontrar a necessidade mais crítica
necessidade_mais_critica = min(necessidades, key=necessidades.get)
# Checar vida
for (atributo, valor) in necessidades.items():
if valor <= 0:
mensagem = "Seu Tamagoshi morreu! *_*"
vivo = False
return mensagem
break
if all(valor > 49 for valor in necessidades.values()):
mensagem = "Seu Tamagoshi está feliz! º_º"
else:
# Identificar o atributo critico
#atributos_criticos = [ atributos for atributo, valor in necessidades.items() if atributo == necessidade_mais_critica ]
#print(atributos_criticos)
atributos_criticos = []
for atributo, valor in necessidades.items():
if atributo == necessidade_mais_critica:
atributos_criticos = [atributo]
atributo_critico = random.choice(atributos_criticos)
# Mensagem
if atributo_critico == "fome":
mensagem = "Seu Tamagoshi está com fome! @_@"
elif atributo_critico == "energia":
mensagem = "Seu Tamagoshi está cansado! -_-"
elif atributo_critico == "felicidade":
mensagem = "Seu Tamagoshi está triste! '_'"
return mensagem
Menu de Interação:
# Menu
def menu():
print("Bem-vindo criador de Tamagoshi!")
while True:
print("1. Alimentar")
print("2. Dormir")
print("3. Brincar")
print("4. Nada")
print("5. Modo Automatico [IA]")
print("6. Sair")
escolha = input("Escolha uma ação: ")
# ação
if escolha == "1":
alimentar()
elif escolha == "2":
dormir()
elif escolha == "3":
brincar()
elif escolha == "4":
nada()
elif escolha == "5":
modoautomatico()
elif escolha == "6":
print("Obrigado por criar um Tamagoshi!")
break
else:
print("Opção inválida. Tente novamente.")
print(f"fome: {atributos['fome']} / energia: {atributos['energia']} / fecilidade: {atributos['felicidade']}")
print(exibir_estado_emocao())
if not vivo:
break
# Execução
menu()
Rodando o Jogo:
Agora é a hora de dar Play, e festejar, caso haja erros leia sempre o erro que ele sempre indica aonde está.
Passo 2: Criando uma IA - Modo Automático
Agora vamos implementar uma IA que monitore o estado do bichinho e tome decisões automaticamente.
import random #aleatorio
def modoautomatico():
global vivo, atributos
print("Modo Automatico IA ativado!")
contador = 1
while True:
print(f"Rodada: {contador}")
print(f"fome: {atributos['fome']} / energia: {atributos['energia']} / felicidade: {atributos['felicidade']}")
mensagem = exibir_estado_emocao()
print(f"[IA] Analizando mensagem: {mensagem}")
if not vivo:
break
# Tomada de decisao
if "fome" in mensagem:
alimentar()
print("[IA] Alimentando...")
elif "cansado" in mensagem:
dormir()
print("[IA] Dormindo...")
elif "triste" in mensagem:
brincar()
print("[IA] Brincando...")
else:
nada()
print("[IA] Nada...")
contador += 1
Ficou bom, né!?
Agora é contigo, melhore aumente o nível de dificuldade, explore novas regras, ações aleatórias... Dica por onde começar, mude os atributos e adicione regras como se por 2 turnos a fome estiver em 0 ele morre de indigestão... Use a criatividade!
Passo 3: Expandindo para Arduino/ESP32
Se você quiser dar um passo além, pode usar Arduino ou ESP32 para adicionar um display LCD ou LEDs ao seu Tamagotchi.
Componentes Necessários:
Arduino Uno ou ESP32
Display LCD (16x2 ou OLED) ou Matriz de Led
Botões para interagir (alimentar, brincar, etc.)
Use a comunicação serial para que o Python envie dados para o Arduino:
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
}
void loop() {
if (Serial.available() > 0) {
String comando = Serial.readString();
if (comando == "ALIMENTAR") {
lcd.print("Alimentando...");
}
// Outras ações...
}
}
Passo 4: Melhorando a Interface Gráfica no Python
Você pode criar uma interface gráfica usando Tkinter ou PyQt.
Exemplo com Tkinter:
import tkinter as tk
class TamagotchiApp:
def __init__(self, root):
self.tamagotchi = Tamagotchi("Tama")
self.root = root
self.root.title("Tamagotchi Virtual")
self.status_label = tk.Label(root, text="Status do Tamagotchi")
self.status_label.pack()
self.fome_label = tk.Label(root, text="Fome: 50")
self.fome_label.pack()
self.energia_label = tk.Label(root, text="Energia: 50")
self.energia_label.pack()
self.felicidade_label = tk.Label(root, text="Felicidade: 50")
self.felicidade_label.pack()
tk.Button(root, text="Alimentar", command=self.alimentar).pack()
tk.Button(root, text="Brincar", command=self.brincar).pack()
tk.Button(root, text="Descansar", command=self.descansar).pack()
...
root = tk.Tk()
app = TamagotchiApp(root)
root.mainloop()
Dicas para Melhorias
Adicionar Emoções: Crie estados emocionais para o Tamagotchi com base em interações e níveis de felicidade.
Gráficos: Substitua o Tkinter por Pygame para criar uma interface visual com sprites e animações.
Sistema de Níveis: Adicione evolução ao bichinho conforme o tempo e as interações.
Persistência: Salve o progresso do Tamagotchi em um arquivo para continuar de onde parou.
Vou ficar super feliz se mandarem seu projetos feitos!!!
Yorumlar