Exemple #1
0
        //vraća je li character pogođen, poziva se iz player.tick ili boss.tick
        public override bool hasHit(Form1 form)
        {
            //ako metak nije ispucan uopce, vraca false jer nista ne moze biti pogodjeno
            if (!fired)
            {
                return(false);
            }

            //ako je metak ispucan
            foreach (Control c in form.Controls)
            {
                //ako pogodi neprijatelja/bossa baca true
                if ((string)c.Tag == "boss" && !form.bossIsDead() && form.bossIsVisible())
                {
                    if (figure.Bounds.IntersectsWith(c.Bounds))
                    {
                        Console.WriteLine("I hit the " + (string)c.Tag);
                        form.bossIsHit();
                        this.reset();
                        return(true);
                    }
                }

                if ((string)c.Tag == "enemy" && !form.enemyIsDead() && form.EnemyIsVisible())
                {
                    if (figure.Bounds.IntersectsWith(c.Bounds))
                    {
                        Console.WriteLine("I hit the " + (string)c.Tag);
                        form.enemyIsHit();
                        this.reset();
                        return(true);
                    }
                }

                //ako pogodi tlo, vraca false
                if (((string)c.Tag == "platform" || (string)c.Tag == "ground") && figure.Bounds.IntersectsWith(c.Bounds))
                {
                    this.reset();
                    return(false);
                }
            }
            return(false);
        }
Exemple #2
0
        //--------------------------FUNKCIJE KOJE SE BAVE LOGISTIKOM PLAYERA------------------------------------------------------------------------------------------------

        //akcije koje se obavljaju kako vrijeme tece; tu se obavlja pokretanje playera, detekcija da li player dotice
        //platforme i ostalo; sve se obavlja na pictureboxu koji je stvoren u formi, tek se onda to prebacuje u informacije
        //koje se ticu bas playera; kad se god u komentarima sljedecim pojavljuje rijec "player" misli se zapravo na
        //picture box;
        public void Tick(object sender, EventArgs e, Form1 form)
        {
            projectil.Tick(sender, e, form);

            //ako je lupio svojim projektilom
            if (projectil.hasHit(form))
            {
                //ovo se tice playera kad boss pogodi
                score += 2;

                //ovo javlja info formi da je boss pogodjen
                form.bossIsHit();
            }

            if (figure.Location.Y > 500 || life <= 0)
            {
                Console.WriteLine("i died");
                alive = false;
                //return;
            }

            //pomakni playera gore ili dolje, ovisno o jumpSpeedu
            figure.Top += jumpSpeed;

            //zaustavi skakanje ako je dosao na kraj skakanja (skakanje je true, ali vise "nema snage skakanja")
            if (jumping && force < 0)
            {
                jumping = false;
            }

            //ako je u procesu skakanja, smanjuj force ("snagu skakanja"), tj polako zaustavljaj skakanje;
            //i je jumpSpeed manje od 0
            if (jumping)
            {
                force    -= 1;
                jumpSpeed = -12;
            }
            else
            {
                jumpSpeed = 12;//ako jednostavno nije u procesu skakanja
            }

            //dokle player moze ici ulijevo, neka ide ulijevo
            if (goingLeft && figure.Left > 10)
            {
                figure.Left -= figureSpeed;
            }//dokle player moze ici udesno, neka ide udesno
            else if (goingRight && figure.Left + (figure.Width + 10) < form.ClientSize.Width)
            {
                figure.Left += figureSpeed;
            }

            foreach (Control c in form.Controls)
            {
                //Console.WriteLine("listing out " + (string)c.Tag);

                if ((string)c.Tag == "platform")
                {
                    if (figure.Bounds.IntersectsWith(c.Bounds) && !jumping && c.Top > figure.Top)//detekcija da li player stoji na platformi
                    {
                        force      = 8;
                        figure.Top = c.Top - figure.Height + 26;
                        jumpSpeed  = 0;
                        score++;
                    }
                }

                if ((string)c.Tag == "ground" && !offground)
                {
                    if (figure.Bounds.IntersectsWith(c.Bounds) && !jumping && c.Top > figure.Top)//detekcija da li player stoji na platformi
                    {
                        force      = 8;
                        figure.Top = c.Top - figure.Height + 26;
                        jumpSpeed  = 0;
                        score++;
                    }
                }

                //boss i bossprojectil (kao dio boss-a) se provjeravaju tu
                if ((string)c.Tag == "boss" && !form.bossIsDead() && form.bossIsVisible())
                {
                    if (figure.Bounds.IntersectsWith(c.Bounds))
                    {
                        Console.WriteLine("contact with " + (string)c.Tag);
                        life--;
                    }
                }

                //boss, enemy i bossprojectil (kao dio boss-a) se provjeravaju tu
                if ((string)c.Tag == "enemy" && !form.enemyIsDead() && form.EnemyIsVisible())
                {
                    if (figure.Bounds.IntersectsWith(c.Bounds))
                    {
                        Console.WriteLine("contact with " + (string)c.Tag);
                        life--;
                    }
                }

                //dotakne bossocin
                if ((string)c.Tag == "bosscoin" && form.BossCoinDropped() && figure.Bounds.IntersectsWith(c.Bounds))
                {
                    Console.WriteLine("contact with " + (string)c.Tag);
                    score = score + form.BossCoinValue();
                    form.resetBossCoin();
                }

                //dotakne enemycoin
                if ((string)c.Tag == "enemycoin" && form.EnemyCoinDropped() && figure.Bounds.IntersectsWith(c.Bounds))
                {
                    Console.WriteLine("contact with " + (string)c.Tag);
                    score = score + form.EnemyCoinValue();
                    form.resetEnemyCoin();
                }
            }

            //uzmi informacije iz pictureboxa, kako bi znali nacrtati playera
            x      = figure.Location.X;
            y      = figure.Location.Y;
            width  = figure.Width;
            height = figure.Height;
        }