attacks randomizer help please?

Game Editor comments and discussion.

attacks randomizer help please?

Postby Fojam » Sat Feb 11, 2012 6:59 pm

can someone help me with this code? for some reason, everytime i execute it, all mario does is shoot a fireball and do a bUp attack at the same time. thats all he will do for some reason. Im not sure what im doing wrong

Code: Select all
void cpu_marioRandomAttacks(char type[50], int power)
{
    if(type="projectile")
    {
        cpu_marioB();
    }
 
    if(type="melee")
    {
        double random=300;
        switch(power)
        {
            case 0:
            //just punches
            cpu_marioA();
            break;
 
            case 1:
            //low power
            if((random>=0)&&(random<150))
            {
                cpu_marioA();
            }
            if((random>=150)&&(random<250))
            {
                cpu_marioSideA();
            }
            if((random>=250)&&(random<270))
            {
                cpu_marioDownA();
            }
            if((random>=270)&&(random<275))
            {
                cpu_marioSideB();
            }
            if((random>=275)&&(random<279))
            {
                cpu_marioB();
            }
            if((random>=279)&&(random<282))
            {
                cpu_marioSideSmash();
            }
            if((random>=282)&&(random<285))
            {
                cpu_marioDownSmash();
            }
            if((random>=285)&&(random<288))
            {
                cpu_marioUpSmash();
            }
            if(random>=288)
            {
                cpu_marioA();
            }
            break;
 
            case 2:
            //average shuffling
            if((random>=0)&&(random<120))
            {
                cpu_marioA();
            }
            if((random>=120)&&(random<200))
            {
                cpu_marioSideA();
            }
            if((random>=200)&&(random<260))
            {
                cpu_marioDownA();
            }
            if((random>=260)&&(random<210))
            {
                cpu_marioSideB();
            }
            if((random>=210)&&(random<240))
            {
                cpu_marioUpB();
            }
            if((random>=240)&&(random<260))
            {
                cpu_marioB();
            }
            if((random>=260)&&(random<270))
            {
                cpu_marioSideSmash();
            }
            if((random>=270)&&(random<280))
            {
                cpu_marioDownSmash();
            }
            if((random>=280)&&(random<295))
            {
                cpu_marioUpSmash();
            }
            if(random>=295)
            {
                cpu_marioA();
            }
            break;
 
            case 3:
            //high power
            if((random>=0)&&(random<50))
            {
                cpu_marioA();
            }
            if((random>=50)&&(random<95))
            {
                cpu_marioSideA();
            }
            if((random>=95)&&(random<130))
            {
                cpu_marioDownA();
            }
            if((random>=130)&&(random<150))
            {
                cpu_marioSideB();
            }
            if((random>=150)&&(random<210))
            {
                cpu_marioUpB();
            }
            if((random>=210)&&(random<230))
            {
                cpu_marioB();
            }
            if((random>=230)&&(random<255))
            {
                cpu_marioSideSmash();
            }
            if((random>=255)&&(random<280))
            {
                cpu_marioDownSmash();
            }
            if(random>=280)
            {
                cpu_marioUpSmash();
            }
            break;
        }
    }
 
    if(type="upAttack")
    {
        double random=rand(300);
        switch(power)
        {
            case 0:
            //constant standard up attack
            cpu_marioUpA();
            break;
 
            case 1:
            //low power
            if((random>=0)&&(random<250))
            {
                cpu_marioUpA();
            }
            if(random>=250)
            {
                cpu_marioUpSmash();
            }
            break;
 
            case 2:
            //average shuffling
            if((random>=0)&&(random<100))
            {
                cpu_marioUpA();
            }
            if((random>=100)&&(random<200))
            {
                cpu_marioUpB();
            }
            if(random>=200)
            {
                cpu_marioUpSmash();
            }
            break;
 
            case 3:
            //high power
            if((random>=0)&&(random<50))
            {
                cpu_marioUpA();
            }
            if((random>=50)&&(random<150))
            {
                cpu_marioUpB();
            }
            if(random>=150)
            {
                cpu_marioUpSmash();
            }
            break;
        }
    }
 
    if(type="standardAttack")
    {
        double random=rand(400);
        switch(power)
        {
            case 0:
            //normal and side
            if(random<200)
            {
                cpu_marioA();
            }
            if(random>=200)
            {
                cpu_marioSideA();
            }
            break;
 
            case 1:
            //low power
            if((random>=0)&&(random<200))
            {
                cpu_marioA();
            }
            if((random>=200)&&(random<300))
            {
                cpu_marioSideA();
            }
            if((random>=300)&&(random<365))
            {
                cpu_marioDownA();
            }
            if(random>=365)
            {
                cpu_marioUpA();
            }
            break;
 
            case 2:
            //average shuffling
            if((random>=0)&&(random<150))
            {
                cpu_marioA();
            }
            if((random>=150)&&(random<250))
            {
                cpu_marioSideA();
            }
            if((random>=250)&&(random<335))
            {
                cpu_marioDownA();
            }
            if(random>=335)
            {
                cpu_marioUpA();
            }
            break;
 
            case 3:
            //high power
            if((random>=0)&&(random<100))
            {
                cpu_marioA();
            }
            if((random>=100)&&(random<220))
            {
                cpu_marioSideA();
            }
            if((random>=220)&&(random<340))
            {
                cpu_marioDownA();
            }
            if(random>=340)
            {
                cpu_marioUpA();
            }
            break;
        }
    }
 
    if(type="downAttack")
    {
        double random=rand(200);
        switch(power)
        {
            case 0:
            cpu_marioDownA();
            break;
 
            case 1:
            //low power
            if(random<160)
            {
                cpu_marioDownA();
            }
            if(random>=160)
            {
                switch(onGround)
                {
                    case 0:
                    cpu_marioSideA();
                    break;
 
                    case 1:
                    cpu_marioDownSmash();
                    break;
                }
            }
            break;
 
            case 2:
            //average shuffling
            if(random<120)
            {
                cpu_marioDownA();
            }
            if(random>=120)
            {
                switch(onGround)
                {
                    case 0:
                    cpu_marioSideA();
                    break;
 
                    case 1:
                    cpu_marioDownSmash();
                    break;
                }
            }
            break;
 
            case 3:
            //high power
            if(random<80)
            {
                cpu_marioDownA();
            }
            if(random>=80)
            {
                switch(onGround)
                {
                    case 0:
                    cpu_marioSideA();
                    break;
 
                    case 1:
                    cpu_marioDownSmash();
                    break;
                }
            }
            break;
        }
    }
 
    if(type="defensive")
    {
        cpu_marioSideB();
    }
 
    if(type="upMove")
    {
        cpu_marioUpB();
    }
}
CLICK TO GIVE ME POINTS

My Latest Projects:
Super Smash Bros: viewtopic.php?f=6&t=12307 PLEASE help by making sprites!
User avatar
Fojam
 
Posts: 513
Joined: Thu Mar 19, 2009 10:02 pm
Location: under your bed!!!
Score: 69 Give a positive score

Re: attacks randomizer help please?

Postby skydereign » Sat Feb 11, 2012 8:05 pm

You can't compare strings like that. In fact you aren't comparing at all. What you are doing is setting the type string equal projectile, which returns a 1 if it is true. So normally you would use == instead of =, but in the case of strings you can't do that either. What you have to use is strcmp. Its input is two strings, and it returns a 0 if they are equal. Also I'd make all of those else if statements, assuming only one attack can be done at once, it would make things cleaner. That or not use string comparisons, and switch those to stand for values of an integer, and that way you can use a switch statement instead (a lot nicer than string comparisons).
User avatar
skydereign
 
Posts: 3510
Joined: Mon Jul 28, 2008 8:29 am
Score: 589 Give a positive score

Re: attacks randomizer help please?

Postby Fojam » Sat Feb 11, 2012 8:33 pm

like that so i wouldnt have to make a list of what integers stand for what attack, but if thats the only way then ill just do that.
CLICK TO GIVE ME POINTS

My Latest Projects:
Super Smash Bros: viewtopic.php?f=6&t=12307 PLEASE help by making sprites!
User avatar
Fojam
 
Posts: 513
Joined: Thu Mar 19, 2009 10:02 pm
Location: under your bed!!!
Score: 69 Give a positive score

Re: attacks randomizer help please?

Postby skydereign » Sat Feb 11, 2012 8:39 pm

Well you can still use strings like I said, but using integers is a lot better. And you can use definitions/enum to store the values, so you can treat them like actual text.
Global Code
Code: Select all
#define projectile 0
#define melee 1
#define upAttack 2
// and so on

// so you can do this
void
cpu_marioRandomAttacks(int type, int power)
{
    switch(type)
    {
        case projectile:
        // do stuff
        break;

        case melee:
        break;

        caseupAttack:
        break;
    }
}
User avatar
skydereign
 
Posts: 3510
Joined: Mon Jul 28, 2008 8:29 am
Score: 589 Give a positive score

Re: attacks randomizer help please?

Postby Fojam » Sun Feb 12, 2012 3:33 pm

thanks actually that will make it a lot easier.
CLICK TO GIVE ME POINTS

My Latest Projects:
Super Smash Bros: viewtopic.php?f=6&t=12307 PLEASE help by making sprites!
User avatar
Fojam
 
Posts: 513
Joined: Thu Mar 19, 2009 10:02 pm
Location: under your bed!!!
Score: 69 Give a positive score


Return to GE - General

Who is online

Users browsing this forum: No registered users and 1 guest