I have this combat program and if the monsters hitpoints hit 0 or -# on the players swing, it always fires off 1 more monster swing before victory is declared and i cant seem to find whats wrong, ive tried else if, and ive tried adding another tier of if else and still nothing and its driving me nuts lol
Code:int CombatZombie() { mciSendString("stop C:/KingdomOfMythos/Midi/MythosMusic1.mid" ,NULL,0,NULL); // Open Midi Music mciSendString("stop C:/KingdomOfMythos/Midi/MythosIntro.mid" ,NULL,0,NULL); // Open Midi Music mciSendString("stop C:/KingdomOfMythos/Midi/MythosInn.mid" ,NULL,0,NULL); // Open Midi Music mciSendString("play C:/KingdomOfMythos/Midi/MythosCombat1.mid" ,NULL,0,NULL); // Open Midi Music //Initialize function int ExperienceCalculator(); // Strings and extra variables string MonsterName = "Zombie"; // Monster name or type char NextRound; // Continue to next combat cycle // Monster variables int MonsterLevel = 1; int MonsterHitPoints = 10; int MonsterAttack = 6; int MonsterDefense = 3; int MonsterHitRate = 50; // Temporary player variables to check for equipment int TempPlayerAttack = PlayerAttack + PlayerWeapon; int TempPlayerDefense = PlayerDefense + PlayerArmorShield + PlayerArmorBody + PlayerArmorLegs + PlayerArmorHands + PlayerArmorFeet; // Monster damage variables using rand // Also subtracts player defense from monsters damage int LowMonster = 2; int HighMonster = MonsterAttack - TempPlayerDefense; // Player damage variables using rand // Also subtraces monster defense from players damage int LowPlayer = 2; int HighPlayer = TempPlayerAttack - MonsterDefense; // Variable to see if player or monster land a blow int PlayerHitCheck = 0; int MonsterHitCheck = 0; // Player % chance to hit high and low int PlayerHitLow = 1; int PlayerHitHigh = 100; // Monster % chance to hit high and low int MonsterHitLow = 1; int MonsterHitHigh = 100; // Player & Monster damage results die 1 + die 2 int MonsterDamageResults = 0; int PlayerDamageResults = 0; //Variables to hold random values for the first and the second die on each roll. int first_die, sec_die; //Declare variable to hold seconds on clock. time_t seconds; //Get value from system clock and place in seconds variable. time(&seconds); //Convert seconds to a unsigned integer. srand((unsigned int) seconds); /// COMBAT SCRIPT BELOW cout << "You encounter a Level 1 Zombie. Prepare to fight!\n"; cout << "Press <c> and hit enter to continue.\n"; cin >> NextRound; while ( ( PlayerHitPoints >= 1 ) && ( MonsterHitPoints >= 1 ) ) { if ( (MonsterHitPoints >= 1) && (PlayerHitPoints >= 1) ) { cout << "\nStarting combat round between [" << PlayerName <<"] & [" << MonsterName <<"]!\n"; PlayerHitCheck = rand() % (PlayerHitHigh - PlayerHitLow +1) + PlayerHitLow; MonsterHitCheck = rand() % (MonsterHitHigh - MonsterHitLow +1) + MonsterHitLow; if (PlayerHitCheck <= 25) { cout << "" << PlayerName <<" swing's at the " << MonsterName << " and misses!\n"; cout << "Press <c> and enter to continue to the next combat round.\n"; cin >> NextRound; } else { cout << "" << PlayerName <<" swing's at the " << MonsterName <<" and lands a blow!\n"; first_die = rand() % (HighPlayer - LowPlayer + 1) + LowPlayer; // Calculate player damage of first dice roll sec_die = rand() % (HighPlayer - LowPlayer +1) + LowPlayer; // Calculate player damage of second dice roll cout << "" << PlayerName <<"'s attack is (" << first_die << ", " << sec_die << "}\n\n"; PlayerDamageResults = sec_die + first_die; // Calculate total damage done by player cout << "" << PlayerName << " hits " << MonsterName << " for " << PlayerDamageResults << " damage.\n"; MonsterHitPoints = MonsterHitPoints - PlayerDamageResults; // Subtract damage from monsters hitpoints cout << "" << PlayerName <<"'s hitpoints are: " << PlayerHitPoints << ".\n"; cout << "" << MonsterName <<"'s hitpoints are: " << MonsterHitPoints << ".\n"; cout << "Press <c> and enter to continue to the next combat round.\n"; cin >> NextRound; } if (MonsterHitCheck <= 40) { cout << "" << MonsterName <<" swing's at " << PlayerName << " and misses!\n"; cout << "Press <c> and enter to continue to the next combat round.\n"; cin >> NextRound; } else { cout << "" << MonsterName <<" swing's at " << PlayerName <<" and lands a blow!\n"; first_die = rand() % (HighMonster - LowMonster + 1) + LowMonster; // Calculate monster damage of first dice roll sec_die = rand() % (HighMonster - LowMonster + 1) + LowMonster; // Calculate monster damage of second dice roll cout << "" << MonsterName <<"'s attack is (" << first_die << ", " << sec_die << "}\n\n"; MonsterDamageResults = sec_die + first_die; // Calculate total damage done by monster cout << "" << MonsterName <<" hits " << PlayerName <<" for " << MonsterDamageResults << " damage.\n"; PlayerHitPoints = PlayerHitPoints - MonsterDamageResults; // Subtract damage from players hitpoints cout << "" << PlayerName <<"'s hitpoints are: " << PlayerHitPoints << ".\n"; cout << "" << MonsterName <<"'s hitpoints are: " << MonsterHitPoints << ".\n"; cout << "Press <c> and enter to continue to the next combat round.\n"; cin >> NextRound; } } else { // If & Else statements in the event a 1 hit kill blow is scored if (PlayerHitPoints <= 0) { cout << "" << PlayerName <<" has died! [GAME OVER]\n\n"; cout << "Do you wish to reload your saved game? (Currently Unsupported)\n\n"; cin >> NextRound; } else { cout << "" << MonsterName <<" has died! [VICTORY!]\n\n"; cout << "You find 8 gold pieces on the " << MonsterName <<"!\n"; cout << "You gain 10 experience points!\n"; PlayerGold = PlayerGold + 8; // Award player gold PlayerExperience = PlayerExperience + 10; // Award player experience cout << "" << PlayerName <<"'s Current Experience: "<< PlayerExperience <<"\n"; cout << "" << PlayerName <<"'s Total Gold Pieces: "<< PlayerGold <<"\n\n"; cout << "Press <c> and hit enter to continue.\n"; cin >> NextRound; } } } // If & Else statements end of combat cycle if ( (PlayerHitPoints <=0) && ( MonsterHitPoints >=1) ) { cout << "" << PlayerName <<" has died! [GAME OVER]\n\n"; cout << "Do you wish to reload your saved game? (Currently Unsupported)\n\n"; cin >> NextRound; } else { cout << "" << MonsterName <<" has died! [VICTORY!]\n\n"; cout << "You find 8 gold pieces on the " << MonsterName <<"!\n"; cout << "You gain 10 experience points!\n"; PlayerGold = PlayerGold + 8; // Award player gold PlayerExperience = PlayerExperience + 10; // Award player experience cout << "" << PlayerName <<"'s Current Experience: "<< PlayerExperience <<"\n"; cout << "" << PlayerName <<"'s Total Gold Pieces: "<< PlayerGold <<"\n\n"; cout << "Press <c> and hit enter to continue.\n"; cin >> NextRound; } mciSendString("stop C:/KingdomOfMythos/Midi/MythosCombat1.mid" ,NULL,0,NULL); // Open Midi Music ExperienceCalculator(); return 0; }



LinkBack URL
About LinkBacks




since 80%+80% doesn't equal 100%...