//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); }
//--------------------------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; }