//dodrio, hypno, joleon, victrebel, venusaur, sandslash, articuno, moltres, kingler //plays pokemon //12-13-12 #include #include #include #include #include #include using namespace std; int player_pokemon=0; int enemy_pokemon=0; int your_choice; int enemy_choice; int your_switch=0; int enemy_switch=0; int damage; int move_choices; float reflect=1.00; int reflect_ctr=-1; float t_speed=1; float t_def=1; float t_spc=1; float evasion=1.00; int confusion=0; int confusion_ctr; int substitute=0; int counter_power=0; int mimic_choice=-1; int recharge=0; int enemy_recharge=0; void enemy_r_switch(); void player_switch(); void enemy_death(); void player_death(); //MOVESET Constants void initialize_deck(); void output_deck(); void output_moves(); void move_list(); void output_party(); void instructions(); void teambuilder(); void create_enemy_team(); void your_battlecode(); void enemy_battlecode(); class Moves { friend ostream&operator<<(ostream& os, const Moves& pmoves); public: Moves(string move, string move_type, int power, int acr, int pp, int cat); string get_move() const; string get_move_type() const; int get_power() const; int get_acr() const; int get_pp() const; int get_cat() const; string m_move; string m_move_type; int m_power; int m_acr; int m_pp; int m_cat; private: }; class Pokemon_card { friend ostream&operator<<(ostream& os, const Pokemon_card& pcard); public: Pokemon_card(string name, string type1, string type2, float max_hp, float hp, float atk, float def, float spc, float speed, float health); string get_name() const; string get_type1() const; string get_type2() const; int get_max_hp() const; int get_hp() const; int get_atk() const; int get_def() const; int get_spc() const; int get_speed() const; int get_health() const; string m_name; string m_type1; string m_type2; int m_max_hp; int m_hp; int m_atk; int m_def; int m_spc; int m_speed; int m_health; vector m_moves; vector m_party_moves; private: }; string Pokemon_card::get_name() const { return m_name; } string Pokemon_card::get_type1() const { return m_type1; } string Pokemon_card::get_type2() const { return m_type2; } int Pokemon_card::get_max_hp() const { return m_max_hp; } int Pokemon_card::get_hp() const { return m_hp; } int Pokemon_card::get_atk() const { return m_atk; } int Pokemon_card::get_def() const { return m_def; } int Pokemon_card::get_spc() const { return m_spc; } int Pokemon_card::get_speed() const { return m_speed; } int Pokemon_card::get_health() const { return m_health; } // string Moves::get_move() const { return m_move; } string Moves::get_move_type() const { return m_move_type; } int Moves::get_power() const { return m_power; } int Moves::get_acr() const { return m_acr; } int Moves::get_pp() const { return m_pp; } int Moves::get_cat() const { return m_cat; } ostream&operator<<(ostream& os, const Pokemon_card& pcard); Pokemon_card::Pokemon_card(string name, string type1, string type2, float max_hp, float hp, float atk, float def, float spc, float speed, float health): m_name(name), m_type1(type1), m_type2(type2), m_max_hp(max_hp), m_hp(hp), m_atk(atk), m_def(def), m_spc(spc), m_speed(speed), m_health(health) {} ostream&operator<<(ostream& os, const Moves& pmove); Moves::Moves(string move, string move_type, int power, int acr, int pp, int cat): m_move(move), m_move_type(move_type), m_power(power), m_acr(acr), m_pp(pp), m_cat(cat) {} vector deck; vector list; vector::iterator my_interator; vector::const_iterator iter; vectorenemy_team; vectorparty; vectoryour_moves; vectorenemy_moves; vectortemp_team; vectortemp_moves; void initialize_deck() { temp_team.push_back(Pokemon_card("Temp Pokemon", "Psychic", "", 313, 313,198,188,368,338, 1)); temp_team[temp_team.size()-1].m_moves.push_back(Moves("Temp Move", "Psychic", 90, 100, 16, 3)); deck.push_back(Pokemon_card("Alakazam ", "Psychic", "", 313, 313,198,188,368,338, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Psychic", "Psychic", 90, 100, 16, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Recover","Normal", 0, 100, 16, 0)); deck[deck.size()-1].m_moves.push_back(Moves("Thunder Wave","Electric",0, 100, 32, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Seismic Toss","Fighting", 100, 100, 32, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Reflect","Psychic", 0, 100, 32, 0)); deck[deck.size()-1].m_moves.push_back(Moves("Kinesis","Psychic", 0, 80, 24, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Counter","Fighting", 0, 100, 32, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Mimic","Normal", 0, 100, 16, 1)); deck.push_back(Pokemon_card("Chansey ", "Normal", "",703, 703,108,108,308,198, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Ice Beam", "Ice", 95, 100, 16, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Softboiled","Psychic", 0, 100, 16, 0)); deck[deck.size()-1].m_moves.push_back(Moves("Counter","Fighting", 0, 100, 32, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Thunderbolt", "Electric", 95, 100, 24, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Thunder Wave","Electric",0, 100, 32, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Reflect","Psychic", 0, 100, 32, 0)); deck[deck.size()-1].m_moves.push_back(Moves("Sing","Psychic", 0, 55, 24, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Blizzard","Ice",120, 90, 8, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Flash","Normal", 0, 70, 32, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Seismic Toss","Fighting", 100, 100, 32, 1)); // deck[deck.size()-1].m_moves.push_back(Moves("Defense Curl","Normal", 0, 100, 64, 0)); deck.push_back(Pokemon_card("Cloyster ", "Water", "Ice",303, 303,288,458,268,238, 1)); // deck[deck.size()-1].m_moves.push_back(Moves("Clamp","Water",35, 75, 16, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Blizzard","Ice",120, 90, 8, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Hyper Beam","Normal",150, 90, 8, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Explosion","Normal",340, 100, 8, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Double Edge", "Normal", 100, 100, 24, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Rest","Psychic", 0, 100, 16, 0)); deck[deck.size()-1].m_moves.push_back(Moves("Surf", "Water", 95, 100, 24, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Supersonic","Normal", 0, 55, 32, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Mimic","Normal", 0, 100, 16, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Substitute","Normal", 0, 100, 16, 0)); deck[deck.size()-1].m_moves.push_back(Moves("Reflect","Psychic", 0, 100, 32, 0)); deck.push_back(Pokemon_card("Dragonite", "Dragon", "Flying",385, 385,366,288,298,258, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Agility","Psychic", 0, 100, 48, 0)); // deck[deck.size()-1].m_moves.push_back(Moves("Wrap","Normal",15, 85, 32, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Hyper Beam","Normal",150, 90, 8, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Surf", "Water", 95, 100, 24, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Blizzard","Ice",120, 90, 8, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Thunderbolt", "Electric", 95, 100, 24, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Thunder Wave","Electric",0, 100, 32, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Body Slam", "Normal", 85, 100, 24, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Double Edge", "Normal", 100, 100, 24, 2)); deck.push_back(Pokemon_card("Exeggutor", "Grass", "Psychic",393, 393,288,268,348,208, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Sleep Powder","Grass", 0, 75, 24, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Psychic", "Psychic", 90, 100, 16, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Explosion","Normal",340, 100, 8, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Mega Drain","Grass",40, 100, 16, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Double Edge", "Normal", 100, 100, 24, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Stun Spore","Grass", 0, 75, 48, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Rest","Psychic", 0, 100, 16, 0)); deck[deck.size()-1].m_moves.push_back(Moves("Hyper Beam","Normal",150, 90, 8, 2)); // deck[deck.size()-1].m_moves.push_back(Moves("Leech Seed","Grass", 0, 90, 16, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Reflect","Psychic", 0, 100, 32, 0)); deck[deck.size()-1].m_moves.push_back(Moves("Egg Bomb", "Normal", 100, 75, 16, 2)); deck.push_back(Pokemon_card("Gengar ", "Ghost", "Poison",323, 323,228,218,358,318, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Hypnosis","Psychic", 0, 60, 32, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Explosion","Normal",340, 100, 8, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Thunderbolt", "Electric", 95, 100, 24, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Mega Drain","Grass",40, 100, 16, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Confuse Ray","Psychic", 0, 100, 16, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Psychic", "Psychic", 90, 100, 16, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Seismic Toss","Fighting", 100, 100, 32, 1)); deck.push_back(Pokemon_card("Golem ", "Ground", "Rock",363, 363,318,358,208,188, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Body Slam", "Normal", 85, 100, 24, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Earthquake", "Ground", 100, 100, 16, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Rock Slide", "Rock", 75, 90, 16, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Explosion","Normal",340, 100, 8, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Substitute","Normal", 0, 100, 16, 0)); deck.push_back(Pokemon_card("Jynx ", "Ice", "Psychic",333, 333,198,168,288,288, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Lovely Kiss","Psychic", 0, 75, 16, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Blizzard","Ice",120, 90, 8, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Psychic", "Psychic", 90, 100, 16, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Mimic","Normal", 0, 100, 16, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Body Slam", "Normal", 85, 100, 24, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Counter","Fighting", 0, 100, 32, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Rest","Psychic", 0, 100, 16, 0)); deck.push_back(Pokemon_card("Lapras ", "Water", "Ice",463, 463,268,258,288,218, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Blizzard","Ice",120, 90, 8, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Ice Beam", "Ice", 95, 100, 16, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Thunderbolt", "Electric", 95, 100, 24, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Rest","Psychic", 0, 100, 16, 0)); deck[deck.size()-1].m_moves.push_back(Moves("Body Slam", "Normal", 85, 100, 24, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Confuse Ray","Psychic", 0, 100, 16, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Mimic","Normal", 0, 100, 16, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Reflect","Psychic", 0, 100, 32, 0)); deck[deck.size()-1].m_moves.push_back(Moves("Sing","Psychic", 0, 55, 24, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Surf", "Water", 95, 100, 24, 3)); deck.push_back(Pokemon_card("Persian ", "Normal", "",333, 333,238,218,228,328, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Slash", "Normal",140, 100, 32, 2)); deck[deck.size()-1].m_moves.push_back(Moves("BubbleBeam", "Water", 65, 100, 32, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Hyper Beam","Normal",150, 90, 8, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Thunderbolt", "Electric", 95, 100, 24, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Body Slam", "Normal", 85, 100, 24, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Screech","Psychic", 0, 85, 64, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Mimic","Normal", 0, 100, 16, 1)); deck.push_back(Pokemon_card("Rhydon ", "Ground", "Rock",413, 413,358,338,188,178, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Body Slam", "Normal", 85, 100, 24, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Earthquake", "Ground", 100, 100, 16, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Rock Slide", "Rock", 75, 90, 16, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Substitute","Normal", 0, 100, 16, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Hyper Beam","Normal",150, 90, 8, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Rest","Psychic", 0, 100, 16, 0)); deck.push_back(Pokemon_card("Slowbro ", "Water", "Psychic",393, 393,248,318,258,158, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Amnesia","Psychic", 0, 100, 32, 0)); deck[deck.size()-1].m_moves.push_back(Moves("Surf", "Water", 95, 100, 24, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Thunder Wave","Electric",0, 100, 32, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Rest","Psychic", 0, 100, 16, 0)); deck[deck.size()-1].m_moves.push_back(Moves("Psychic", "Psychic", 90, 100, 16, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Ice Beam", "Ice", 95, 100, 16, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Withdraw","Normal", 0, 100, 64, 0)); deck[deck.size()-1].m_moves.push_back(Moves("Reflect","Psychic", 0, 100, 32, 0)); deck[deck.size()-1].m_moves.push_back(Moves("Counter","Fighting", 0, 100, 32, 1)); deck.push_back(Pokemon_card("Snorlax ", "Normal", "",523, 523,318,228,228,158, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Body Slam", "Normal", 85, 100, 24, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Hyper Beam","Normal",150, 90, 8, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Surf", "Water", 95, 100, 24, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Earthquake", "Ground", 100, 100, 16, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Selfdestruct","Normal",260, 100, 8, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Amnesia","Psychic", 0, 100, 32, 0)); deck[deck.size()-1].m_moves.push_back(Moves("Ice Beam", "Ice", 95, 100, 16, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Blizzard","Ice",120, 90, 8, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Thunderbolt", "Electric", 95, 100, 24, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Rest","Psychic", 0, 100, 16, 0)); deck[deck.size()-1].m_moves.push_back(Moves("Reflect","Psychic", 0, 100, 32, 0)); deck[deck.size()-1].m_moves.push_back(Moves("Counter","Fighting", 0, 100, 32, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Thunder", "Electric", 120, 75, 16, 3)); deck.push_back(Pokemon_card("Starmie ", "Water", "Psychic",323, 323,248,268,298,328, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Blizzard","Ice",120, 90, 8, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Surf", "Water", 95, 100, 24, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Thunder Wave","Electric",0, 100, 32, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Thunderbolt", "Electric", 95, 100, 24, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Recover","Normal", 0, 100, 16, 0)); deck[deck.size()-1].m_moves.push_back(Moves("Hydro Pump", "Water", 120, 80, 8, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Reflect","Psychic", 0, 100, 32, 0)); deck[deck.size()-1].m_moves.push_back(Moves("Psychic", "Psychic", 90, 100, 16, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Hyper Beam","Normal",150, 90, 8, 2)); deck.push_back(Pokemon_card("Tauros ", "Normal", "",353, 353,298,288,238,318, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Body Slam", "Normal", 85, 100, 24, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Hyper Beam","Normal",150, 90, 8, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Earthquake", "Ground", 100, 100, 16, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Blizzard","Ice",120, 90, 8, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Thunderbolt", "Electric", 95, 100, 24, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Thunder", "Electric", 120, 75, 16, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Substitute","Normal", 0, 100, 16, 0)); deck.push_back(Pokemon_card("Zapdos ", "Electric", "Flying",383, 383,278,268,348,298, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Thunderbolt", "Electric", 95, 100, 24, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Drill Peck", "Flying", 80, 100, 32, 2)); deck[deck.size()-1].m_moves.push_back(Moves("Thunder Wave","Electric",0, 100, 32, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Agility","Psychic", 0, 100, 48, 0)); deck[deck.size()-1].m_moves.push_back(Moves("Thunder", "Electric", 120, 75, 16, 3)); deck[deck.size()-1].m_moves.push_back(Moves("Mimic","Normal", 0, 100, 16, 1)); // deck[deck.size()-1].m_moves.push_back(Moves("Toxic","Poison", 0, 85, 16, 1)); deck[deck.size()-1].m_moves.push_back(Moves("Rest","Psychic", 0, 100, 16, 0)); deck[deck.size()-1].m_moves.push_back(Moves("Reflect","Psychic", 0, 100, 32, 0)); return; } void create_enemy_team() { enemy_team.push_back(Pokemon_card("Tauros ", "Normal", "",353, 353,298,288,238,318, 1)); enemy_team[enemy_team.size()-1].m_moves.push_back(Moves("Body Slam", "Normal", 85, 100, 24, 2)); enemy_team[enemy_team.size()-1].m_moves.push_back(Moves("Hyper Beam","Normal",150, 90, 8, 2)); enemy_team[enemy_team.size()-1].m_moves.push_back(Moves("Earthquake", "Ground", 100, 100, 16, 2)); enemy_team[enemy_team.size()-1].m_moves.push_back(Moves("Blizzard","Ice",120, 90, 8, 3)); enemy_team.push_back(Pokemon_card("Alakazam ", "Psychic", "", 313, 313,198,188,368,338, 1)); enemy_team[enemy_team.size()-1].m_moves.push_back(Moves("Psychic", "Psychic", 90, 100, 16, 3)); enemy_team[enemy_team.size()-1].m_moves.push_back(Moves("Recover","Normal", 0, 100, 16, 0)); enemy_team[enemy_team.size()-1].m_moves.push_back(Moves("Thunder Wave","Electric",0, 100, 32, 1)); enemy_team[enemy_team.size()-1].m_moves.push_back(Moves("Seismic Toss","Fighting", 100, 100, 32, 1)); enemy_team.push_back(Pokemon_card("Chansey ", "Normal", "",703, 703,108,108,308,198, 1)); enemy_team[enemy_team.size()-1].m_moves.push_back(Moves("Ice Beam", "Ice", 95, 100, 16, 3)); enemy_team[enemy_team.size()-1].m_moves.push_back(Moves("Softboiled","Psychic", 0, 100, 16, 0)); enemy_team[enemy_team.size()-1].m_moves.push_back(Moves("Thunderbolt", "Electric", 95, 100, 24, 3)); enemy_team[enemy_team.size()-1].m_moves.push_back(Moves("Thunder Wave","Electric",0, 100, 32, 1)); enemy_team.push_back(Pokemon_card("Golem ", "Ground", "Rock",363, 363,318,358,208,188, 1)); enemy_team[enemy_team.size()-1].m_moves.push_back(Moves("Body Slam", "Normal", 85, 100, 24, 2)); enemy_team[enemy_team.size()-1].m_moves.push_back(Moves("Earthquake", "Ground", 100, 100, 16, 2)); enemy_team[enemy_team.size()-1].m_moves.push_back(Moves("Rock Slide", "Rock", 75, 90, 16, 2)); enemy_team[enemy_team.size()-1].m_moves.push_back(Moves("Explosion","Normal",340, 100, 8, 2)); enemy_team.push_back(Pokemon_card("Exeggutor", "Grass", "Psychic",393, 393,288,268,348,208, 1)); enemy_team[enemy_team.size()-1].m_moves.push_back(Moves("Sleep Powder","Grass", 0, 75, 24, 1)); enemy_team[enemy_team.size()-1].m_moves.push_back(Moves("Psychic", "Psychic", 90, 100, 16, 3)); enemy_team[enemy_team.size()-1].m_moves.push_back(Moves("Explosion","Normal",340, 100, 8, 2)); enemy_team[enemy_team.size()-1].m_moves.push_back(Moves("Mega Drain","Grass",40, 100, 16, 3)); enemy_team.push_back(Pokemon_card("Starmie ", "Water", "Psychic",323, 323,248,268,298,328, 1)); enemy_team[enemy_team.size()-1].m_moves.push_back(Moves("Blizzard","Ice",120, 90, 8, 3)); enemy_team[enemy_team.size()-1].m_moves.push_back(Moves("Thunder Wave","Electric",0, 100, 32, 1)); enemy_team[enemy_team.size()-1].m_moves.push_back(Moves("Thunderbolt", "Electric", 95, 100, 24, 3)); enemy_team[enemy_team.size()-1].m_moves.push_back(Moves("Recover","Normal", 0, 100, 16, 0)); } ostream&operator<<(ostream& os, const Pokemon_card& pcard) { os << pcard.m_name << " | " << pcard.m_type1 << "/"<< pcard.m_type2; return os; } ostream&operator<<(ostream& os, const Moves& pmove) { os << pmove.m_move; return os; } void output_deck() { int i=0; cout << "# Pokemon | Types" << endl; for (iter = deck.begin(); iter != deck.end(); iter++) { cout << i << " " << *iter << endl; i++; } } void output_moves(int input) { int i=0; cout << "# Move" << endl; for (vector::const_iterator iter = deck[input].m_moves.begin(); iter!=deck[input].m_moves.end(); iter++) { cout << i << " " << *iter << endl; i++; } move_choices = deck[input].m_moves.size(); cout << "Choose a move" << endl; } void instructions() { cout << "POKEMON GENERATION 1 SIMULATOR" << endl; cout << "Welcome to the pokemon battle simulator" << endl; cout << "Here you will battle against a fearsome opponent in a pokemon battle" << endl; cout << "First choose each member of your 6 man team and all 4 of their Moves" << endl; cout << "After that the battle begins" << endl; cout << "During each turn of the battle you will select your pokemon's Moves" << endl; cout << "The goal is to be the last man standing as pokemon pummel each other" << endl; cout << "Good luck!" << endl << endl; } void output_party() { cout << "Your final team is" << endl; for (int t=0; t<6; t++) { cout << party[t].get_name() << endl; for (int k=0; k<4; k++) { cout << "-" << party[t].m_moves[k].get_move() << endl; } } } void teambuilder() { int input=0; for (int ctr=0; ctr<6; ctr++) { output_deck(); cout << endl << "Choose a pokemon" << endl; cin >> input; while ((input < 0) || (input > deck.size()-1)) { cout << "Error: enter a valid pokemon number" << endl; cin >> input; } party.push_back(deck.at(input)); string choosen = deck[input].get_name(); cout << choosen << " has been added" << endl<< endl; for (int j=0; j<4; j++) { output_moves(input); int choice; string move_choice; cin >> choice; move_choices--; while ((choice < 0) || (choice > move_choices)) { cout << "Error: enter a valid numbered move" << endl; cin >> choice; } party[party.size()-1].m_moves.push_back(Moves(deck[input].m_moves.at(choice))); party[ctr].m_moves.at(j) = deck[input].m_moves.at(choice); cout << party[ctr].m_moves[j] << " was added." << endl; // deck.erase(Alakazam_moves.begin() + choice); deck[input].m_moves.erase(deck[input].m_moves.begin()+ choice); cout << endl; } deck.erase(deck.begin() + input ); } cout << endl; } void enemy_r_switch() { int temp=0; temp = enemy_pokemon; while (temp == enemy_pokemon) { enemy_pokemon=rand() % enemy_team.size(); } cout << "The enemy switch in "<< enemy_team[enemy_pokemon].get_name() << endl; confusion=0; evasion=1.00; t_def=1; } void enemy_death () { enemy_team.erase(enemy_team.begin() + enemy_pokemon); enemy_pokemon=rand() % enemy_team.size(); cout << "The enemy switch in "<< enemy_team[enemy_pokemon].get_name() << endl; confusion=0; evasion=1.00; t_def=1; } void player_death() { if (mimic_choice!=-1) { party[player_pokemon].m_moves.at(mimic_choice) = temp_team[0].m_moves.at(0); mimic_choice=-1; } party.erase(party.begin() + player_pokemon); for (int t = 0; t> player_pokemon; while ((player_pokemon<0) || (player_pokemon>=party.size())) { cout << "Enter a valid pokemon number" << endl; cin >> player_pokemon; } cout << "You switch in "<< party[player_pokemon].get_name() << endl; counter_power=0; t_spc=1; t_speed=1; } void player_switch() { if (mimic_choice!=-1) { party[player_pokemon].m_moves.at(mimic_choice) = temp_team[0].m_moves.at(0); mimic_choice=-1; } for (int t = 0; t(party.size())) || (player_pokemon<0)) { cout << "Choose a pokemon that is not currently on the field" << endl; cin >> player_pokemon; } cout << "You switched in "<< party[player_pokemon].get_name() << endl; counter_power=0; t_spc=1; t_speed=1; } void your_battlecode() { int accuracy; int C=1; float M=1; float super=1; int para_chance; para_chance = rand() % 4; int critical_hit=0; int crit_rand; crit_rand=rand() % 100; if ((crit_rand) < (floor(ceil(((party[player_pokemon].get_speed()-5)/2)-47)*100 / 512))) { critical_hit=1; } if ((your_switch != 1) && (recharge==0)) { if (party[player_pokemon].get_health()>=20) { cout << party[player_pokemon].get_name() << " is fast asleep" << endl; if (party[player_pokemon].get_health()==20) { cout << party[player_pokemon].get_name() << " woke up" << endl; party[player_pokemon].m_health = 1; } } else if ((para_chance==2) && (party[player_pokemon].get_health()==2)) { cout << party[player_pokemon].get_name() << " is paralized!" << endl; } else { cout << party[player_pokemon].get_name() << " used " << party[player_pokemon].m_moves[your_choice].get_move() << endl; accuracy = rand() % 100; if(accuracy< party[player_pokemon].m_moves[your_choice].get_acr()) { if ((party[player_pokemon].get_type1() == party[player_pokemon].m_moves[your_choice].get_move_type()) || (party[player_pokemon].get_type2() == party[player_pokemon].m_moves[your_choice].get_move_type())) { M *= 1.50; } if (party[player_pokemon].m_moves[your_choice].get_move_type()== "Psychic") { if ((enemy_team[enemy_pokemon].get_type1() == "Psychic") || (enemy_team[enemy_pokemon].get_type2() == "Psychic")) { super /= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Fighting") || (enemy_team[enemy_pokemon].get_type2() == "Fighting")) { super *= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Poison") || (enemy_team[enemy_pokemon].get_type2() == "Poison")) { super *= 2.00; } } if (party[player_pokemon].m_moves[your_choice].get_move_type()== "Water") { if ((enemy_team[enemy_pokemon].get_type1() == "Ground") || (enemy_team[enemy_pokemon].get_type2() == "Ground")) { super *= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Rock") || (enemy_team[enemy_pokemon].get_type2() == "Rock")) { super *= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Water") || (enemy_team[enemy_pokemon].get_type2() == "Water")) { super /= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Grass") || (enemy_team[enemy_pokemon].get_type2() == "Grass")) { super /= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Dragon") || (enemy_team[enemy_pokemon].get_type2() == "Dragon")) { super /= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Fire") || (enemy_team[enemy_pokemon].get_type2() == "Fire")) { super *= 2.00; } } if (party[player_pokemon].m_moves[your_choice].get_move_type()== "Grass") { if ((enemy_team[enemy_pokemon].get_type1() == "Grass") || (enemy_team[enemy_pokemon].get_type2() == "Grass")) { super /= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Water") || (enemy_team[enemy_pokemon].get_type2() == "Water")) { super *= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Grass") || (enemy_team[enemy_pokemon].get_type2() == "Grass")) { super /= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Flying") || (enemy_team[enemy_pokemon].get_type2() == "Flying")) { super /= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Rock") || (enemy_team[enemy_pokemon].get_type2() == "Rock")) { super *= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Ground") || (enemy_team[enemy_pokemon].get_type2() == "Ground")) { super *= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Poison") || (enemy_team[enemy_pokemon].get_type2() == "Poison")) { super /= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Dragon") || (enemy_team[enemy_pokemon].get_type2() == "Dragon")) { super /= 2.00; } } if (party[player_pokemon].m_moves[your_choice].get_move_type()== "Electric") { if ((enemy_team[enemy_pokemon].get_type1() == "Dragon") || (enemy_team[enemy_pokemon].get_type2() == "Dragon")) { super /= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Grass") || (enemy_team[enemy_pokemon].get_type2() == "Grass")) { super /= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Water") || (enemy_team[enemy_pokemon].get_type2() == "Water")) { super *= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Electric") || (enemy_team[enemy_pokemon].get_type2() == "Electric")) { super /= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Flying") || (enemy_team[enemy_pokemon].get_type2() == "Flying")) { super /= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Ground") || (enemy_team[enemy_pokemon].get_type2() == "Ground")) { super *= 0; } } if (party[player_pokemon].m_moves[your_choice].get_move_type()== "Ice") { if ((enemy_team[enemy_pokemon].get_type1() == "Water") || (enemy_team[enemy_pokemon].get_type2() == "Water")) { super /= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Grass") || (enemy_team[enemy_pokemon].get_type2() == "Grass")) { super *= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Ice") || (enemy_team[enemy_pokemon].get_type2() == "Ice")) { super /= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Flying") || (enemy_team[enemy_pokemon].get_type2() == "Flying")) { super *= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Ground") || (enemy_team[enemy_pokemon].get_type2() == "Ground")) { super *= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Dragon") || (enemy_team[enemy_pokemon].get_type2() == "Dragon")) { super /= 2.00; } } if (party[player_pokemon].m_moves[your_choice].get_move_type()== "Normal") { if ((enemy_team[enemy_pokemon].get_type1() == "Rock") || (enemy_team[enemy_pokemon].get_type2() == "Rock")) { super /= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Ghost") || (enemy_team[enemy_pokemon].get_type2() == "Ghost")) { super *= 0; } } if (party[player_pokemon].m_moves[your_choice].get_move_type()== "Flying") { if ((enemy_team[enemy_pokemon].get_type1() == "Rock") || (enemy_team[enemy_pokemon].get_type2() == "Rock")) { super /= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Electric") || (enemy_team[enemy_pokemon].get_type2() == "Electric")) { super /= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Grass") || (enemy_team[enemy_pokemon].get_type2() == "Grass")) { super *= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Fighting") || (enemy_team[enemy_pokemon].get_type2() == "Fighting")) { super *= 2.00; } } if (party[player_pokemon].m_moves[your_choice].get_move_type()== "Ground") { if ((enemy_team[enemy_pokemon].get_type1() == "Fire") || (enemy_team[enemy_pokemon].get_type2() == "Fire")) { super *= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Electric") || (enemy_team[enemy_pokemon].get_type2() == "Electric")) { super *= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Rock") || (enemy_team[enemy_pokemon].get_type2() == "Rock")) { super *= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Poison") || (enemy_team[enemy_pokemon].get_type2() == "Poison")) { super *= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Grass") || (enemy_team[enemy_pokemon].get_type2() == "Grass")) { super /= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Flying") || (enemy_team[enemy_pokemon].get_type2() == "Flying")) { super *= 0; } } if (party[player_pokemon].m_moves[your_choice].get_move_type()== "Rock") { if ((enemy_team[enemy_pokemon].get_type1() == "Fire") || (enemy_team[enemy_pokemon].get_type2() == "Fire")) { super *= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Ice") || (enemy_team[enemy_pokemon].get_type2() == "Ice")) { super *= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Flying") || (enemy_team[enemy_pokemon].get_type2() == "Flying")) { super *= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Fighting") || (enemy_team[enemy_pokemon].get_type2() == "Fighting")) { super /= 2.00; } if ((enemy_team[enemy_pokemon].get_type1() == "Ground") || (enemy_team[enemy_pokemon].get_type2() == "Ground")) { super /= 2.00; } } switch (party[player_pokemon].m_moves[your_choice].get_cat()) { case 0: if ((party[player_pokemon].m_moves[your_choice].get_move()=="Softboiled") || (party[player_pokemon].m_moves[your_choice].get_move()=="Recover")) { party[player_pokemon].m_hp += (party[player_pokemon].get_max_hp() / 2); if (party[player_pokemon].get_max_hp() < party[player_pokemon].get_hp()) { party[player_pokemon].m_hp = party[player_pokemon].get_max_hp(); } cout << "It restored HP" << endl; } else if ((party[player_pokemon].m_moves[your_choice].get_move()=="Reflect")) { if (reflect_ctr<=0) { reflect = 2.00; reflect_ctr=4; } cout << "A psychic layer was put up" << endl; } else if ((party[player_pokemon].m_moves[your_choice].get_move()=="Rest")) { if (party[player_pokemon].m_health == 2) { party[player_pokemon].m_speed *= 2; } party[player_pokemon].m_health=22; party[player_pokemon].m_hp = party[player_pokemon].get_max_hp(); cout << party[player_pokemon].get_name() << " fell asleep and restored HP" << endl; } else if ((party[player_pokemon].m_moves[your_choice].get_move()=="Agility")) { t_speed+=1; cout << party[player_pokemon].get_name() << "'s speed sharply rose" << endl; } else if ((party[player_pokemon].m_moves[your_choice].get_move()=="Amnesia") && t_spc<4) { t_spc+=1; cout << party[player_pokemon].get_name() << "'s special sharply rose" << endl; } else if ((party[player_pokemon].m_moves[your_choice].get_move()=="Substitute") && (substitute<=0) && ((party[player_pokemon].get_max_hp() / 4) < party[player_pokemon].get_hp())) { party[player_pokemon].m_hp -= (party[player_pokemon].get_max_hp() / 4); substitute = (party[player_pokemon].get_max_hp() / 4); cout << party[player_pokemon].get_name() << " set up a substitute" << endl; } else { cout << "but it failed!" << endl; } break; case 1: if ((party[player_pokemon].m_moves[your_choice].get_move()=="Stun Spore") && (enemy_team[enemy_pokemon].get_health() == 1)) { enemy_team[enemy_pokemon].m_health = 2; enemy_team[enemy_pokemon].m_speed /= 2; cout << enemy_team[enemy_pokemon].get_name() << " was paralyzed" << endl; } else if ((party[player_pokemon].m_moves[your_choice].get_move()=="Thunder Wave") && (enemy_team[enemy_pokemon].get_health() == 1) && (enemy_team[enemy_pokemon].get_type1() != "Ground") && (enemy_team[enemy_pokemon].get_type2() != "Ground")) { enemy_team[enemy_pokemon].m_health = 2; enemy_team[enemy_pokemon].m_speed /= 2; cout << enemy_team[enemy_pokemon].get_name() << " was paralyzed" << endl; } else if (((party[player_pokemon].m_moves[your_choice].get_move()=="Sleep Powder") || (party[player_pokemon].m_moves[your_choice].get_move()=="Hypnosis") || (party[player_pokemon].m_moves[your_choice].get_move()=="Sing") || (party[player_pokemon].m_moves[your_choice].get_move()=="Lovely Kiss")) && (enemy_team[enemy_pokemon].get_health() == 1)) { enemy_team[enemy_pokemon].m_health = (rand() % 6 + 21); cout << enemy_team[enemy_pokemon].get_name() << " fell asleep" << endl; } else if (party[player_pokemon].m_moves[your_choice].get_move()=="Seismic Toss") { enemy_team[enemy_pokemon].m_hp -= 100; cout << enemy_team[enemy_pokemon].get_name() << " lost 100 HP" << endl; } else if ((party[player_pokemon].m_moves[your_choice].get_move()=="Flash") || (party[player_pokemon].m_moves[your_choice].get_move()=="Kinesis")) { if (evasion != .131687) { evasion *= (2.00/3.00); cout << enemy_team[enemy_pokemon].get_name() << " lost accuracy" << endl; } else { cout << "but it failed!" << endl; } } else if (((party[player_pokemon].m_moves[your_choice].get_move()=="Supersonic") || (party[player_pokemon].m_moves[your_choice].get_move()=="Confuse Ray"))) { confusion=1; confusion_ctr= (rand() % 4) +1; cout << enemy_team[enemy_pokemon].get_name() << " is confused!" << endl; } else if ((party[player_pokemon].m_moves[your_choice].get_move()=="Counter")) { } else if ((party[player_pokemon].m_moves[your_choice].get_move()=="Mimic")) { temp_team[0].m_moves.at(0) = party[player_pokemon].m_moves.at(your_choice); party[player_pokemon].m_moves.at(your_choice) = enemy_team[enemy_pokemon].m_moves.at(rand() % 4); mimic_choice=your_choice; cout << enemy_team[enemy_pokemon].get_name() << " copied " << party[player_pokemon].m_moves.at(your_choice) << endl; } else if ((party[player_pokemon].m_moves[your_choice].get_move()=="Screech") && (t_def != 3)) { t_def += 1.00; cout << enemy_team[enemy_pokemon].get_name() << "'s defense sharply lowered" << endl; } else { cout << "But it failed" << endl; } break; case 2: if ((critical_hit==1) || (party[player_pokemon].m_moves[your_choice].get_move()=="Slash")) { enemy_team[enemy_pokemon].m_hp -= floor((floor(floor(floor(42.0*party[player_pokemon].get_atk()*party[player_pokemon].m_moves[your_choice].get_power())/enemy_team[enemy_pokemon].get_def())/50)+2)*M*super*2.00*((rand() % 39) + 217)/255.0); cout << "It was a critical hit!" << endl; } else { enemy_team[enemy_pokemon].m_hp -= floor((floor(floor(floor(42.0*party[player_pokemon].get_atk()*party[player_pokemon].m_moves[your_choice].get_power())/enemy_team[enemy_pokemon].get_def())/50)+2)*M*super*t_def*((rand() % 39) + 217)/255.0); }//enemy_team[enemy_pokemon].m_hp -= floor((floor(floor(floor(42.0*party[player_pokemon].get_spc()*party[player_pokemon].m_moves[your_choice].get_power())/enemy_team[enemy_pokemon].get_spc())/50)+2)*M*super*t_spc*((rand() % 39) + 217)/255.0); if ((party[player_pokemon].m_moves[your_choice].get_move()=="Hyper Beam") && (enemy_team[enemy_pokemon].get_hp() >= 0)) { cout << party[player_pokemon].get_name() << " needs to recharge" << endl; recharge = 3; } if (super == 1) { cout << "Its normally effective!" << endl; } else if (super > 1) { cout << "Its super effective!" << endl; } else if (super == 0) { cout << "It didn't do anything" << endl; } else { cout << "Its not very effective!" << endl; } break; case 3: if (critical_hit==1) { enemy_team[enemy_pokemon].m_hp -=floor((floor(floor(floor(42.0*party[player_pokemon].get_spc()*party[player_pokemon].m_moves[your_choice].get_power())/enemy_team[enemy_pokemon].get_spc())/50)+2)*M*super*2*((rand() % 39) + 217)/255.0); cout << "It was a critical hit!" << endl; } else { enemy_team[enemy_pokemon].m_hp -=floor((floor(floor(floor(42.0*party[player_pokemon].get_spc()*party[player_pokemon].m_moves[your_choice].get_power())/enemy_team[enemy_pokemon].get_spc())/50)+2)*M*super*t_spc*((rand() % 39) + 217)/255.0); } if (super == 1) { cout << "Its normally effective!" << endl; } else if (super > 1) { cout << "Its super effective!" << endl; } else if (super == 0) { cout << "It didn't do anything" << endl; } else { cout << "Its not very effective!" << endl; } break; default: cout << "But it failed!" << endl; } } else { cout << "But it missed!" << endl; } } } if (party[player_pokemon].get_health()>20) { party[player_pokemon].m_health--; } } void enemy_battlecode() { float M=1.0; int accuracy; int para_chance; para_chance = rand() % 4; int confusion_chance = rand() % 2; float super=1.00; int critical_hit=0; if ((rand() % 100) < (floor(ceil(((enemy_team[enemy_pokemon].get_speed()-5)/2)-47)*100 / 512))) { critical_hit=1; } if ((enemy_switch !=1) && (enemy_recharge==0)) { if (enemy_team[enemy_pokemon].get_health()>=20) { cout << enemy_team[enemy_pokemon].get_name() << " is fast asleep" << endl; if (enemy_team[enemy_pokemon].get_health()==20) { cout << enemy_team[enemy_pokemon].get_name() << " woke up" << endl; enemy_team[enemy_pokemon].m_health = 1; } } else { if (confusion==1) { cout << enemy_team[enemy_pokemon].get_name() << " is confused!" << endl; confusion_ctr--; if (confusion_ctr==0) { confusion=0; cout << enemy_team[enemy_pokemon].get_name() << " snapped out of confusion" << endl; } } if ((confusion==1) && (confusion_chance == 1)) { enemy_team[enemy_pokemon].m_hp -=floor((floor(floor(floor(42.0*enemy_team[enemy_pokemon].get_atk()*40)/party[player_pokemon].get_def())/50)+2)*((rand() % 39) + 217)/255.0); cout << enemy_team[enemy_pokemon].get_name() << " hurt itself in confustion!" << endl; } else if ((enemy_team[enemy_pokemon].get_health()==2) && (para_chance==0)) { cout << enemy_team[enemy_pokemon].get_name() << " is paralized, it was unable to move!" << endl; } else { cout << enemy_team[enemy_pokemon].get_name() << " used " << enemy_team[enemy_pokemon].m_moves[enemy_choice].get_move() << endl; accuracy = rand() % 100; if(accuracy<(enemy_team[enemy_pokemon].m_moves[enemy_choice].get_acr() * evasion)) { if ((enemy_team[enemy_pokemon].get_type1() == enemy_team[enemy_pokemon].m_moves[enemy_choice].get_move_type()) || (enemy_team[enemy_pokemon].get_type2() == enemy_team[enemy_pokemon].m_moves[enemy_choice].get_move_type())) { M = 1.5; } if (enemy_team[enemy_pokemon].m_moves[enemy_choice].get_move_type()== "Psychic") { if ((party[player_pokemon].get_type1() == "Psychic") || (party[player_pokemon].get_type2() == "Psychic")) { super /= 2.00; } if ((party[player_pokemon].get_type1() == "Fighting") || (party[player_pokemon].get_type2() == "Fighting")) { super *= 2.00; } if ((party[player_pokemon].get_type1() == "Poison") || (party[player_pokemon].get_type2() == "Poison")) { super *= 2.00; } } if (enemy_team[enemy_pokemon].m_moves[enemy_choice].get_move_type()== "Water") { if ((party[player_pokemon].get_type1() == "Ground") || (party[player_pokemon].get_type2() == "Ground")) { super *= 2.00; } if ((party[player_pokemon].get_type1() == "Rock") || (party[player_pokemon].get_type2() == "Rock")) { super *= 2.00; } if ((party[player_pokemon].get_type1() == "Water") || (party[player_pokemon].get_type2() == "Water")) { super /= 2.00; } if ((party[player_pokemon].get_type1() == "Grass") || (party[player_pokemon].get_type2() == "Grass")) { super /= 2.00; } if ((party[player_pokemon].get_type1() == "Dragon") || (party[player_pokemon].get_type2() == "Dragon")) { super /= 2.00; } if ((party[player_pokemon].get_type1() == "Fire") || (party[player_pokemon].get_type2() == "Fire")) { super *= 2.00; } } if (enemy_team[enemy_pokemon].m_moves[enemy_choice].get_move_type()== "Grass") { if ((party[player_pokemon].get_type1() == "Grass") || (party[player_pokemon].get_type2() == "Grass")) { super /= 2.00; } if ((party[player_pokemon].get_type1() == "Water") || (party[player_pokemon].get_type2() == "Water")) { super *= 2.00; } if ((party[player_pokemon].get_type1() == "Grass") || (party[player_pokemon].get_type2() == "Grass")) { super /= 2.00; } if ((party[player_pokemon].get_type1() == "Flying") || (party[player_pokemon].get_type2() == "Flying")) { super /= 2.00; } if ((party[player_pokemon].get_type1() == "Rock") || (party[player_pokemon].get_type2() == "Rock")) { super *= 2.00; } if ((party[player_pokemon].get_type1() == "Ground") || (party[player_pokemon].get_type2() == "Ground")) { super *= 2.00; } if ((party[player_pokemon].get_type1() == "Poison") || (party[player_pokemon].get_type2() == "Poison")) { super /= 2.00; } if ((party[player_pokemon].get_type1() == "Dragon") || (party[player_pokemon].get_type2() == "Dragon")) { super /= 2.00; } } if (enemy_team[enemy_pokemon].m_moves[enemy_choice].get_move_type()== "Electric") { if ((party[player_pokemon].get_type1() == "Dragon") || (party[player_pokemon].get_type2() == "Dragon")) { super /= 2.00; } if ((party[player_pokemon].get_type1() == "Grass") || (party[player_pokemon].get_type2() == "Grass")) { super /= 2.00; } if ((party[player_pokemon].get_type1() == "Water") || (party[player_pokemon].get_type2() == "Water")) { super *= 2.00; } if ((party[player_pokemon].get_type1() == "Electric") || (party[player_pokemon].get_type2() == "Electric")) { super /= 2.00; } if ((party[player_pokemon].get_type1() == "Flying") || (party[player_pokemon].get_type2() == "Flying")) { super /= 2.00; } if ((party[player_pokemon].get_type1() == "Ground") || (party[player_pokemon].get_type2() == "Ground")) { super *= 0; } } if (enemy_team[enemy_pokemon].m_moves[enemy_choice].get_move_type()== "Ice") { if ((party[player_pokemon].get_type1() == "Water") || (party[player_pokemon].get_type2() == "Water")) { super /= 2.00; } if ((party[player_pokemon].get_type1() == "Grass") || (party[player_pokemon].get_type2() == "Grass")) { super *= 2.00; } if ((party[player_pokemon].get_type1() == "Ice") || (party[player_pokemon].get_type2() == "Ice")) { super /= 2.00; } if ((party[player_pokemon].get_type1() == "Flying") || (party[player_pokemon].get_type2() == "Flying")) { super *= 2.00; } if ((party[player_pokemon].get_type1() == "Ground") || (party[player_pokemon].get_type2() == "Ground")) { super *= 2.00; } if ((party[player_pokemon].get_type1() == "Dragon") || (party[player_pokemon].get_type2() == "Dragon")) { super *= 2.00; } } if (enemy_team[enemy_pokemon].m_moves[enemy_choice].get_move_type()== "Normal") { if ((party[player_pokemon].get_type1() == "Rock") || (party[player_pokemon].get_type2() == "Rock")) { super /= 2.00; } if ((party[player_pokemon].get_type1() == "Ghost") || (party[player_pokemon].get_type2() == "Ghost")) { super *= 0; } } if (enemy_team[enemy_pokemon].m_moves[enemy_choice].get_move_type()== "Flying") { if ((party[player_pokemon].get_type1() == "Rock") || (party[player_pokemon].get_type2() == "Rock")) { super /= 2.00; } if ((party[player_pokemon].get_type1() == "Electric") || (party[player_pokemon].get_type2() == "Electric")) { super /= 2.00; } if ((party[player_pokemon].get_type1() == "Grass") || (party[player_pokemon].get_type2() == "Grass")) { super *= 2.00; } if ((party[player_pokemon].get_type1() == "Fighting") || (party[player_pokemon].get_type2() == "Fighting")) { super *= 2.00; } } if (enemy_team[enemy_pokemon].m_moves[enemy_choice].get_move_type()== "Ground") { if ((party[player_pokemon].get_type1() == "Fire") || (party[player_pokemon].get_type2() == "Fire")) { super *= 2.00; } if ((party[player_pokemon].get_type1() == "Electric") || (party[player_pokemon].get_type2() == "Electric")) { super *= 2.00; } if ((party[player_pokemon].get_type1() == "Rock") || (party[player_pokemon].get_type2() == "Rock")) { super *= 2.00; } if ((party[player_pokemon].get_type1() == "Poison") || (party[player_pokemon].get_type2() == "Poison")) { super *= 2.00; } if ((party[player_pokemon].get_type1() == "Grass") || (party[player_pokemon].get_type2() == "Grass")) { super /= 2.00; } if ((party[player_pokemon].get_type1() == "Flying") || (party[player_pokemon].get_type2() == "Flying")) { super *= 0; } } if (enemy_team[enemy_pokemon].m_moves[enemy_choice].get_move_type()== "Rock") { if ((party[player_pokemon].get_type1() == "Fire") || (party[player_pokemon].get_type2() == "Fire")) { super *= 2.00; } if ((party[player_pokemon].get_type1() == "Ice") || (party[player_pokemon].get_type2() == "Ice")) { super *= 2.00; } if ((party[player_pokemon].get_type1() == "Flying") || (party[player_pokemon].get_type2() == "Flying")) { super *= 2.00; } if ((party[player_pokemon].get_type1() == "Fighting") || (party[player_pokemon].get_type2() == "Fighting")) { super /= 2.00; } if ((party[player_pokemon].get_type1() == "Ground") || (party[player_pokemon].get_type2() == "Ground")) { super /= 2.00; } } switch (enemy_team[enemy_pokemon].m_moves[enemy_choice].get_cat()) { case 0: if ((enemy_team[enemy_pokemon].m_moves[enemy_choice].get_move()=="Softboiled") || (enemy_team[enemy_pokemon].m_moves[enemy_choice].get_move()=="Recover")) { enemy_team[enemy_pokemon].m_hp += (enemy_team[enemy_pokemon].get_max_hp() / 2); if (enemy_team[enemy_pokemon].get_max_hp() < enemy_team[enemy_pokemon].get_hp()) { enemy_team[enemy_pokemon].m_hp = enemy_team[enemy_pokemon].get_max_hp(); } cout << "It restored HP" << endl; } else { cout << "but it failed!" << endl; } break; case 1: if (((enemy_team[enemy_pokemon].m_moves[enemy_choice].get_move()=="Stun Spore")) && (party[player_pokemon].get_health() == 1)) { party[player_pokemon].m_health = 2; party[player_pokemon].m_speed /= 2; cout << party[player_pokemon].get_name() << " was paralyzed" << endl; } else if ((enemy_team[enemy_pokemon].m_moves[enemy_choice].get_move()=="Thunder Wave") && (party[player_pokemon].get_health() == 1) && (party[player_pokemon].get_type1() != "Ground") && (party[player_pokemon].get_type2() != "Ground")) { party[player_pokemon].m_health = 2; party[player_pokemon].m_speed /= 2; cout << party[player_pokemon].get_name() << " was paralyzed" << endl; } else if (((enemy_team[enemy_pokemon].m_moves[enemy_choice].get_move()=="Sleep Powder") || (enemy_team[enemy_pokemon].m_moves[enemy_choice].get_move()=="Hypnosis") || (enemy_team[enemy_pokemon].m_moves[enemy_choice].get_move()=="Sing") || (enemy_team[enemy_pokemon].m_moves[enemy_choice].get_move()=="Lovely Kiss")) && (party[player_pokemon].get_health() == 1)) { party[player_pokemon].m_health = (rand() % 6 + 21); cout << party[player_pokemon].get_name() << " fell asleep" << endl; } else if (enemy_team[enemy_pokemon].m_moves[enemy_choice].get_move()=="Seismic Toss") { party[player_pokemon].m_hp -= 100; cout << party[player_pokemon].get_name() << " lost 100 HP" << endl; } else { cout << "But it failed!" << endl; } break; case 2: if (substitute>0) { if (critical_hit==1) { substitute -=floor((floor(floor(floor(42.0*enemy_team[enemy_pokemon].get_atk()*enemy_team[enemy_pokemon].m_moves[enemy_choice].get_power())/party[player_pokemon].get_def())/50)+2)*M*super*2*((rand() % 39) + 217)/255.0)/reflect; cout << "It was a critical hit!" << endl; } else { substitute -=floor((floor(floor(floor(42.0*enemy_team[enemy_pokemon].get_atk()*enemy_team[enemy_pokemon].m_moves[enemy_choice].get_power())/party[player_pokemon].get_def())/50)+2)*M*super*((rand() % 39) + 217)/255.0)/reflect; } if (substitute<=0) { cout << "Subtitute faded" << endl; } } else { if (critical_hit==1) { party[player_pokemon].m_hp -=floor((floor(floor(floor(42.0*enemy_team[enemy_pokemon].get_atk()*enemy_team[enemy_pokemon].m_moves[enemy_choice].get_power())/party[player_pokemon].get_def())/50)+2)*M*super*2*((rand() % 39) + 217)/255.0)/reflect; cout << "It was a critical hit!" << endl; } else { party[player_pokemon].m_hp -=floor((floor(floor(floor(42.0*enemy_team[enemy_pokemon].get_atk()*enemy_team[enemy_pokemon].m_moves[enemy_choice].get_power())/party[player_pokemon].get_def())/50)+2)*M*super*((rand() % 39) + 217)/255.0)/reflect; } } if (party[player_pokemon].m_moves[your_choice].get_move() == "Counter") { counter_power= floor(2*floor((floor(floor(floor(42.0*enemy_team[enemy_pokemon].get_atk()*enemy_team[enemy_pokemon].m_moves[enemy_choice].get_power())/party[player_pokemon].get_def())/50)+2)*M*super*((rand() % 39) + 217)/255.0)/reflect); } if ((enemy_team[enemy_pokemon].m_moves[enemy_choice].get_move()=="Hyper Beam") && (party[player_pokemon].get_hp() >= 0)) { cout << enemy_team[enemy_pokemon].get_name() << " needs to recharge" << endl; enemy_recharge = 3; } if (super == 1) { cout << "Its normally effective!" << endl; } else if (super > 1) { cout << "Its super effective!" << endl; } else if (super == 0) { cout << "It didn't do anything" << endl; } else { cout << "Its not very effective!" << endl; } break; case 3: if (critical_hit==1) { party[player_pokemon].m_hp -=floor((floor(floor(floor(42.0*enemy_team[enemy_pokemon].get_spc()*enemy_team[enemy_pokemon].m_moves[enemy_choice].get_power())/party[player_pokemon].get_spc())/50)+2)*M*super*2*((rand() % 39) + 217)/255.0); cout << "It was a critical hit!" << endl; } else { party[player_pokemon].m_hp -=floor((floor(floor(floor(42.0*enemy_team[enemy_pokemon].get_spc()*enemy_team[enemy_pokemon].m_moves[enemy_choice].get_power())/party[player_pokemon].get_spc())/50)+2)*M*super*(1/t_spc)*((rand() % 39) + 217)/255.0); } if (super == 1) { cout << "Its normally effective!" << endl; } else if (super > 1) { cout << "Its super effective!" << endl; } else if (super == 0) { cout << "It didn't do anything" << endl; } else { cout << "Its not very effective!" << endl; } break; default: cout << endl; } } else { cout << "It missed" << endl; } } } if (enemy_team[enemy_pokemon].get_health() >20) { enemy_team[enemy_pokemon].m_health--; } if (confusion==1) { confusion_ctr--; if (confusion_ctr==0) { confusion=0; cout << enemy_team[enemy_pokemon].get_name() << " snapped out of confusion" << endl; } } } } int main() { int faster=3; int temp; int battle_on=1; instructions(); create_enemy_team(); initialize_deck(); teambuilder(); output_party(); while (battle_on==1) { cout << endl; cout << "Your "<> your_choice; if (party.size() == 1) { while ((your_choice > 3) || (your_choice < 0)) { cout << "Enter a valid number (you can't switch if you are the last pokemon)" << endl; cin >> your_choice; } } else { while ((your_choice > 4) || (your_choice < 0)) { cout << "Enter a valid number" << endl; cin >> your_choice; } } if (your_choice==4) { your_switch=1; } else { your_switch=0; } if (your_switch== 1) { player_switch(); } } else { cout << party[player_pokemon].get_name() << " is recharging " << endl; } srand ( time(NULL) ); enemy_choice=rand() % 5; if (enemy_recharge==0) { if (enemy_team.size() == 1) { enemy_choice=rand() % 4; } if (enemy_choice==4) { enemy_switch=1; } if (enemy_switch==1) { enemy_r_switch(); } } else { cout << enemy_team[enemy_pokemon].get_name() << " is recharging" << endl; } /* else { enemy_choice = enemy_choice + (enemy_pokemon*4); } */ if ( (party[player_pokemon].get_speed()*t_speed) == enemy_team[enemy_pokemon].get_speed()) { faster = rand() % 2; } cout << endl; if (((party[player_pokemon].get_speed()*t_speed) > enemy_team[enemy_pokemon].get_speed()) || (faster ==1)) { your_battlecode(); if (enemy_team[enemy_pokemon].get_hp() <= 0) { cout << enemy_team[enemy_pokemon].get_name() << " fainted" << endl; if (enemy_team.size() == 1) { cout << "You win" << endl; break; } else { enemy_death(); } } else { enemy_battlecode(); } if (party[player_pokemon].get_hp() <= 0) { cout << party[player_pokemon].get_name() << " fainted" << endl; if (party.size() == 1) { cout << "Enemy wins" << endl; break; } else { player_death(); } } } else if (((party[player_pokemon].get_speed()*t_speed) < enemy_team[enemy_pokemon].get_speed()) || (faster==0)) { enemy_battlecode(); if (party[player_pokemon].get_hp() <= 0) { cout << party[player_pokemon].get_name() << " fainted" << endl; if (party.size() == 1) { cout << "Enemy wins" << endl; break; } else { player_death(); } } else { your_battlecode(); } if (enemy_team[enemy_pokemon].get_hp() <= 0) { cout << enemy_team[enemy_pokemon].get_name() << " fainted" << endl; if (enemy_team.size() == 1) { cout << "You win" << endl; break; } else { enemy_death(); } } } if ((counter_power>0)) { enemy_team[enemy_pokemon].m_hp -= counter_power; cout << party[player_pokemon].get_name() << " used counter" << endl; if (enemy_team[enemy_pokemon].get_hp() <= 0) { cout << enemy_team[enemy_pokemon].get_name() << " fainted" << endl; if (enemy_team.size() == 1) { cout << "You win" << endl; break; } else { enemy_death(); } } else { cout << "Counter Failed!" << endl; } } if ((((party[player_pokemon].m_moves[your_choice].get_move()=="Explosion") || party[player_pokemon].m_moves[your_choice].get_move()=="Selfdestruct")) && your_switch==0) { cout << party[player_pokemon].get_name() << " faited!" << endl; if (party.size() == 1) { cout << "Enemy wins" << endl; break; } else { player_death(); } } if (enemy_switch== 0) { if (enemy_team[enemy_pokemon].m_moves[enemy_choice].get_move()=="Explosion") { cout << enemy_team[enemy_pokemon].get_name() << " faited!" << endl; if (enemy_team.size() == 1) { cout << "You win!" << endl; break; } else { enemy_death(); } } if (enemy_recharge>0) { enemy_recharge--; if (enemy_recharge==1) { enemy_recharge=0; } else { cout << enemy_team[enemy_pokemon].get_name() << " is recharging" << endl; } } } if (recharge>0) { recharge--; if (recharge==1) { recharge=0; } else { cout << party[player_pokemon].get_name() << " is recharging" << endl; } } faster=3; your_switch=0; enemy_switch=0; reflect_ctr--; if (reflect_ctr==0) { reflect=1.00; cout << "The psychic shield faded" << endl; } } cout << "GAME OVER" << endl; return 0; }