Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #
- # Pokemon Battle Simulator Python Code
- # Created by Draglash for PKA
- # http://aminoapps.com/p/swodup
- #
- import random
- class Pokemon:
- def __init__(self, name, type1, type2, hp, atk, df, spatk, spdf, spd, move1, move2, move3, move4):
- self.name = name
- self.type1 = type1
- self.type2 = type2
- self.hp = hp
- self.atk = atk
- self.df = df
- self.spatk = spatk
- self.spdf= spdf
- self.spd = spd
- self.move1 = move1
- self.move2 = move2
- self.move3 = move3
- self.move4 = move4
- class Move:
- def __init__(self, name, form, typ, pwr):
- self.name = name
- self.form = form
- self.typ = typ
- self.pwr = pwr
- Flamethrower = Move("Flamethrower", "Special", "Fire", 90)
- Slash = Move("Slash", "Physical", "Normal", 70)
- Air_Slash = Move("Air Slash", "Special", "Flying", 75)
- Fire_Fang = Move("Fire Fang", "Physical","Fire", 65)
- Aqua_Tail = Move("Aqua Tail", "Physical", "Water", 90)
- Water_Pulse = Move("Water Pulse", "Special", "Water", 60)
- Bite = Move("Bite", "Physical","Dark", 60)
- Rapid_Spin = Move("Rapid Spin", "Physical", "Normal", 50)
- Seed_Bomb = Move("Seed Bomb","Physical","Grass",60)
- Sludge_Bomb = Move("Sludge Bomb", "Special","Poison", 90)
- Razor_Leaf = Move("Razor Leaf", "Physical","Grass", 55)
- Double_Edge = Move("Double Edge","Physical","Normal", 120)
- Pok1 = Pokemon("Charizard", "Fire", "Flying", 185, 149, 143, 177, 150, 167, Flamethrower, Air_Slash, Fire_Fang, Slash)
- Pok2 = Pokemon("Blastoise", "Water", None, 186, 148, 167, 150, 172, 143, Water_Pulse, Aqua_Tail, Bite, Rapid_Spin)
- Pok3 = Pokemon("Venusaur", "Grass", "Poison", 187, 147, 148, 167, 167, 145, Seed_Bomb, Sludge_Bomb, Double_Edge, Razor_Leaf)
- def PokAttack(pok1, pok2, move):
- critChance = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.5]
- randDamage = [85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
- STABdmg = 1
- gamestate = 0 # if gamestate = 1, Pokemon is fainted and game is over
- if move.typ == pok1.type1:
- STABdmg = 1.5
- elif move.typ == pok1.type2:
- STABdmg = 1.5
- else: pass
- dmg = move.pwr
- # changes formula so moves use the correct attack stat
- if move.form == "Physical" :
- damage = (((22 * dmg * (pok1.atk / pok2.df)) / 50) + 2) * random.choice (critChance) * (random. choice (randDamage)) * STABdmg
- else:
- damage = (((22 * dmg * (pok1.spatk / pok2.spdf)) / 50) + 2) * random.choice (critChance) * (random .choice (randDamage)) * STABdmg
- if move.typ == "Fire" and pok2.type1 == "Water": # all the type combinations. probably better to use a dictionary or array in the future
- damage *= 0.5
- if move.typ == "Fire" and pok2.type1 == "Grass":
- damage *= 1.8
- if move.typ == "Fire" and pok2.type1 == "Fire":
- damage *= 0.5
- if move.typ == "Grass" and pok2.type1 == "Water":
- damage *= 1.8
- if move.typ == "Grass" and pok2.type1 == "Flying":
- damage *= 0.5
- if move.typ == "Grass" and pok2.type1 == "Grass":
- damage *= 0.5
- if move.typ == "Grass" and pok2.type1 == "Fire":
- damage *= 0.5
- if move.typ == "Water" and pok2.type1 == "Water":
- damage *= 0.5
- if move.typ == "Water" and pok2.type1 == "Grass":
- damage *= 0.5
- if move.typ == "Water" and pok2.type1== "Fire":
- damage *= 1.8
- if move.typ == "Flying" and pok2.type1 == "Grass":
- damage *= 1.8
- damage = round(damage,0)
- damage = int(damage/100)
- print(f'{pok1.name} used {move.name}')
- pok2.hp -= damage
- print(f"{pok2.name} takes {damage} damage !")
- if pok2.hp <= 0:
- gamestate = 1
- pok2.hp = 0
- print(f'{pok2.name} has {pok2.hp} HP left. \n')
- return gamestate
- party = []
- pokedex = [Pok1, Pok2, Pok3]
- pokemonChoice = int(input(f'Please choose a Pokemon to use: (1) {Pok1.name} (2) {Pok2.name} (3) {Pok3.name}: '))
- if pokemonChoice == 1:
- party.append (Pok1)
- print (f"You have chosen {Pok1.name}.")
- elif pokemonChoice == 2:
- party.append (Pok2)
- print(f"You have chosen {Pok2.name}.")
- elif pokemonChoice == 3:
- party.append (Pok3)
- print (f"You have chosen {Pok3.name}.")
- else:
- choicelol = random.choice(pokedex)
- party.append(choicelol)
- print (f'Invalid input. Random Pokemon chosen... {choicelol.name}.\n')
- pokemonChoice2 = int(input(f'Please choose a Pokemon to battle against: (1) {Pok1.name} (2) {Pok2.name} (3) {Pok3.name}: '))
- if pokemonChoice2 == 1:
- party.append(Pok1)
- print (f"You have chosen to battle {Pok1.name}.")
- elif pokemonChoice2 == 2:
- party.append (Pok2)
- print(f"You have chosen to battle {Pok2.name}.")
- elif pokemonChoice2 == 3:
- party.append (Pok3)
- print (f"You have chosen to battle {Pok3.name}.")
- else:
- choicelol = random.choice(pokedex)
- party.append(choicelol)
- print (f'Invalid input. Random Pokemon chosen... {choicelol.name}.\n')
- gamestate = 0
- while gamestate == 0:
- if party[0].spd >= party [1].spd:
- print(f"Choose a move: (1) {party[0].move1.name} (2) {party[0].move2.name } (3) {party[0].move3.name} (4) {party[0].move4.name}")
- moveChoice1 = int(input())
- if moveChoice1 == 1:
- if PokAttack(party[0], party[1], party[0].move1) == 1:
- gamestate = 1
- elif moveChoice1 == 2:
- if PokAttack(party[0], party [1], party[0].move2) == 1:
- gamestate = 1
- elif moveChoice1 == 3:
- if PokAttack (party[0], party[1], party [0] .move3) == 1:
- gamestate = 1
- elif moveChoice1 == 4:
- if PokAttack(party[0], party[1], party[0].move4) == 1:
- gamestate = 1
- if gamestate != 1:
- randMove = random.randint(1,4)
- if randMove == 1:
- if PokAttack (party[1], party[0], party [1] .move1) == 1:
- gamestate = 2
- elif randMove == 2:
- if PokAttack (party[1], party[0], party [1] .move2) == 1:
- gamestate = 2
- elif randMove == 3:
- if PokAttack (party[1], party[0], party [1] .move3) == 1:
- gamestate = 2
- elif randMove == 4:
- if PokAttack (party[1], party[0], party [1] .move4) == 1:
- gamestate = 2
- else:
- randMove = random.randint(1,4)
- if randMove == 1:
- if PokAttack (party[1], party[0], party [1] .move1) == 1:
- gamestate = 2
- elif randMove == 2:
- if PokAttack (party[1], party[0], party [1] .move2) == 1:
- gamestate = 2
- elif randMove == 3:
- if PokAttack (party[1], party[0], party [1] .move3) == 1:
- gamestate = 2
- elif randMove == 4:
- if PokAttack (party[1], party[0], party [1] .move4) == 1:
- gamestate = 2
- if gamestate != 2:
- print(f"Choose a move: (1) {party[0].move1.name} (2) {party[0].move2.name } (3) {party[0].move3.name} (4) {party[0].move4.name}")
- moveChoice2 = int(input())
- if moveChoice2 == 1:
- if PokAttack(party[0], party[1], party[0].move1) == 1:
- gamestate = 1
- elif moveChoice2 == 2:
- if PokAttack(party[0], party [1], party[0].move2) == 1:
- gamestate = 1
- elif moveChoice2 == 3:
- if PokAttack (party[0], party[1], party [0] .move3) == 1:
- gamestate = 1
- elif moveChoice2 == 4:
- if PokAttack(party[0], party[1], party[0].move4) == 1:
- gamestate = 1
- if gamestate == 1:
- print("You win!")
- elif gamestate == 2:
- print("You lose...")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement