Question: import tkinter as tk from tkinter import messagebox import pandas as pd import random # Read the Pok mon dataset df = pd . read

import tkinter as tk
from tkinter import messagebox
import pandas as pd
import random
# Read the Pokmon dataset
df = pd.read_csv('pokemon.csv')
pokemon_list =['Bulbasaur', 'Ivysaur', 'Venusaur', 'Charmander', 'Charmeleon', 'Charizard', 'Squirtle',
'Wartortle', 'Blastoise', 'Caterpie', 'Metapod', 'Butterfree', 'Weedle', 'Kakuna', 'Beedrill',
'Pidgey', 'Pidgeotto', 'Pidgeot']
df = df[df['Name'].isin(pokemon_list)]
df = df.rename(columns={'Type 1': 'Element'})
df = df[['Name', 'Element', 'HP', 'Attack']]
df.reset_index(drop=True, inplace=True)
# Function to calculate damage
def calculate_damage(attacker_attack, defender_hp, is_elemental, is_stronger):
if is_elemental and is_stronger:
damage = random.randint(int(0.5* attacker_attack), attacker_attack)*2
elif is_elemental:
damage = random.randint(int(0.5* attacker_attack), attacker_attack)
else:
damage = random.randint(int(0.75* attacker_attack), attacker_attack)
return min(damage, defender_hp)
# Function to handle attacks
def attack(attacker, defender, elemental):
attacker_info = df.loc[df['Name']== attacker.get()]
defender_info = df.loc[df['Name']== defender.get()]
attacker_hp = attacker_info['HP'].values[0]
attacker_attack = attacker_info['Attack'].values[0]
defender_hp = defender_info['HP'].values[0]
defender_element = defender_info['Element'].values[0]
is_elemental = elemental.get()== 'Elemental'
is_stronger =(attacker_element == 'Fire' and defender_element == 'Grass') or \
(attacker_element == 'Water' and defender_element == 'Fire') or \
(attacker_element == 'Grass' and defender_element == 'Water')
damage = calculate_damage(attacker_attack *5, defender_hp, is_elemental, is_stronger)
defender_hp -= damage
return defender_hp
# Function to handle player turns
def player_turn(player_num):
global player1_score, player2_score
if player_num ==1:
player1_btn.config(state='disabled')
player2_btn.config(state='active')
player1_score +=1
player1_score_label.config(text=f"Player 1 Score: {player1_score}")
else:
player2_btn.config(state='disabled')
player1_btn.config(state='active')
if player2_score 3:
player2_score +=1
player2_score_label.config(text=f"Player 2 Score: {player2_score}")
if player2_score ==3:
messagebox.showinfo("Win!", "Player 2 Won! Now you can analyze players performance.")
return
# Function to handle attacks
def perform_attack():
global player1_hp, player2_hp
if player1_hp.get()=0:
messagebox.showinfo("Lose!", f"{player1_selection.get()} lost! Player 2 chooses a pokemon and player 1 gets evolved!")
# Code to evolve player 1
elif player2_hp.get()=0:
messagebox.showinfo("Lose!", f"{player2_selection.get()} lost! Player 1 chooses a pokemon and player 2 gets evolved!")
# Code to evolve player 2
else:
if player1_btn['state']== 'active':
player2_hp.set(attack(player1_selection, player2_selection, attack_type))
player_turn(1)
else:
player1_hp.set(attack(player2_selection, player1_selection, attack_type))
player_turn(2)
# Initialize Tkinter
root = tk.Tk()
root.title("Pokmon Battle")
# Initialize player scores
player1_score =0
player2_score =0
# Initialize player HP
player1_hp = tk.IntVar()
player1_hp.set(500) # Assuming 100 HP for a level 1 Pokmon
player2_hp = tk.IntVar()
player2_hp.set(500)
# Initialize attack type
attack_type = tk.StringVar()
attack_type.set("Physical")
# Player 1 selection
player1_label = tk.Label(root, text="Player 1")
player1_label.grid(row=0, column=0)
player1_selection = tk.StringVar()
player1_listbox = tk.Listbox(root, height=6, selectmode='single')
for pokemon in pokemon_list:
player1_listbox.insert(tk.END, pokemon)
player1_listbox.grid(row=1, column=0)
player1_image_label = tk.Label(root, text="Image Placeholder")
player1_image_label.grid(row=2, column=0)
player1_choose_btn = tk.Button(root, text="Choose", command=player_turn)
player1_choose_btn.grid(row=3, column=0)
# Player 2 selection
player2_label = tk.Label(root, text="Player 2")
player2_label.grid(row=0, column=2)
player2_selection = tk.StringVar()
player2_listbox = tk.Listbox(root, height=6, selectmode='single')
for pokemon in pokemon_list:
player2_listbox.insert(tk.END, pokemon)
player2_listbox.grid(row=1, column=2)
player2_image_label = tk.Label(root, text="Image Placeholder")
player2_image_label.grid(row=2, column=2)
player2_choose_btn = tk.Button(root, text="Choose", command=player_turn)
player2_choose_btn.grid(row=3, column=2)
the gui should be same as this photo
 import tkinter as tk from tkinter import messagebox import pandas as

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!