Question

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>

using namespace std;

void divider();

int main()
{
    int cstats, choice;
    int rhp, hp, i, init, atk, def, matk, mdef, dmg, mdmg, agi, magi;
    divider();
    cout << "Kill the Zombie! (Text-Based Game)\n";
    divider();
    cout << "Please choose your specialty: ";
    cout << "[1] Offense [2] Magic [3] Defense [4] Speed\n";
    do{cin >> cstats; }
    while(cstats > 4 || cstats < 1);
    {
    switch(cstats)
    {
    case 1:
        atk = 15;
        def = 8;
        agi = 6;
        matk = 5;
        mdef = 5;
        magi = 5;
        break;
    case 2:
        atk = 5;
        def = 5;
        agi = 5;
        matk = 15;
        mdef = 7;
        magi = 10;
        break;
    case 3:
        atk = 7;
        def = 15;
        agi = 5;
        matk = 1;
        mdef = 14;
        magi = 3;
        break;
    case 4:
        atk = 7;
        def = 4;
        agi = 15;
        matk = 3;
        mdef = 4;
        magi = 14;
        break;
    }
    if(cstats == 1)
    {
    cout << "You have chosen Offense\n";
    }
    if(cstats == 2)
    {
    cout << "You have chosen Magic\n";
    }
    if(cstats == 3)
    {
    cout << "You have chosen Defense\n";
    }
    if(cstats == 4)
    {
    cout << "You have chosen Speed\n";
    }
    }
    srand((unsigned)time(0));
    rhp = rand()%50 + 60;
    hp = rand()%20 + 80;
    while(hp >0 || rhp > 0 )
    {
    cout << "What do you want to do? [1] Normal Attack [2] Magic Attack [3] Defend [4] Dodge\n";
    do{cin >> choice; }
    while(choice > 4 || choice < 1);
    {
    switch(choice)
    {
        case 1:
            atk = rand()%20+10;
            def = rand()%10+10;
            agi = rand()%5;
            break;
        case 2:
            matk = rand()%20+10;
            mdef = rand()%10+10;
            magi = rand()%15;
            break;
        case 3:
            def = rand()%10+15;
            mdef = rand()%10+15;
            magi = rand()%10+15;
            break;
        case 4:
            agi = rand()%5;
            magi = rand()%10+10;
            mdef = rand()%10+5;
            break;
    }

    mdmg = (atk - magi) - (mdef/atk);
    if(mdmg = 0)
    {
        mdmg = 0;
    }
    rhp = rhp - mdmg;
    cout << "You did " << mdmg << "damage to the zombie!\n";
    cin.get();
    if(rhp <1)
    {
        cout << "You killed the Zombie! Congratulations, You won with " << hp << "hp left.\n";
        cin.get();
        system("pause>0");
        return 0;
    }
    cout << "The Zombie now has " << rhp << "hp left.\n";
    dmg = (matk - agi) - (def/matk);
    if(dmg < 0)
    {
        dmg = 0;
    }
    hp = hp - dmg;
    cout << "The Zombie hit you for " << dmg << " damage.\n";
    if(hp < 1 )
    {
        cout << "You dided. The Zombie still has " << rhp << "hp left.\n";
        cin.get();
        system("pause>0");
        return 0;
    }
    cout << "You now have " << hp << " hp left.\n";
}
}
}
void divider()
{
    cout << "*************************************\n";
}

So, yeah. This is the game that I made. All of the things are working but the damage thing is not working. I don't know if I made something wrong. I can't find whats wrong in here. My eyes are now ready to sleep. O.O I haven't had a decent sleep for 3 days now. Thanks in Advance!

Was it helpful?

Solution

In if(mdmg = 0) should be boolean if(mdmg == 0). You are assigning it to be 0 not checking if it is 0.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top