public static Level CreateLevel1(Form formular, Hrac hrac) { if (Nepritel.listNepratel != null) { Nepritel.listNepratel.Clear(); } Nepritel N1 = new Nepritel(400, 160, false, Nepritel.Typ.skeleton, 8, false); Nepritel N2 = new Nepritel(1000, 520, false, Nepritel.Typ.ghost, 10, false); Nepritel N3 = new Nepritel(80, 40, false, Nepritel.Typ.spider, 3, true); int Top = 550; int Left = 100; Level L1 = new Level(0, hrac, Top, Left, formular, 5); aktualniLevel = L1; return(L1); }
public static Level CreateLevel2(Form formular, Hrac hrac) { if (Nepritel.listNepratel != null) { Nepritel.listNepratel.Clear(); } Nepritel N1 = new Nepritel(1000, 520, false, Nepritel.Typ.ghost, 12, false); Nepritel N2 = new Nepritel(600, 200, false, Nepritel.Typ.skeleton, 5, false); Nepritel N3 = new Nepritel(200, 200, true, Nepritel.Typ.skeleton, 5, false); int Top = 550; int Left = 100; Level L2 = new Level(1, hrac, Top, Left, formular, 5); aktualniLevel = L2; return(L2); }
private void Update(object sender, EventArgs e) { Hrac hrac = gamesetup.hrac; // pro lepší čitelnost kódu PictureBox pb; #region Ovládání hráče if (gamesetup.jeSpusteno) { if (StavOvladani.Right == true && !JeBlokNapravo(Blok.solidBlokList, hrac.postavicka)) { hrac.postavicka.Left += hrac.rychlostPohybu; // hrac.postavicka je PictureBox hráče hrac.postavicka.BackgroundImage = Image.FromFile("PlayerTransparent.png"); } if (StavOvladani.Left == true && !JeBlokNalevo(Blok.solidBlokList, hrac.postavicka)) { hrac.postavicka.Left -= hrac.rychlostPohybu; hrac.postavicka.BackgroundImage = Image.FromFile("PlayerTransparentReversed.png"); } if (StavOvladani.Jump == true) { // pokud hráč skočil if (JeBlokNahore(Blok.solidBlokList, hrac.postavicka, out pb)) { if (hrac.rychlostPadu > 2) // aby se neaktivovalo několikrát zasebou a hráč pak nevypadl z levelu { hrac.rychlostPadu -= 8; } } hrac.postavicka.Top -= hrac.rychlostPadu; if (hrac.rychlostPadu > -10) // aby hráč nevypadl z levelu { hrac.rychlostPadu -= 1; } } if (StavOvladani.Restart == true) { hrac.UberZivot(); Level.RestartLevelu(gamesetup.formular, hrac, gamesetup.aktualniIDLevelu); } if (StojiNaZemi(Blok.solidBlokList, hrac.postavicka, out pb)) { if (Blok.zrychlovaciBlokList.Contains(pb)) { hrac.rychlostPohybu = 10; } else if (Blok.zpomalovaciBlokList.Contains(pb)) { hrac.rychlostPohybu = 2; } else if (Blok.propadavaciBlokList.Contains(pb)) { if (pb.Top < this.Height - 120) { pb.Top += 1; } } else { hrac.rychlostPohybu = 5; } hrac.postavicka.Top = pb.Top - hrac.postavicka.Height; // drží hráče na zemi StavOvladani.Jump = false; } else { if (hrac.postavicka.Bottom >= 600) // padá mimo hrací plochu { hrac.postavicka.Top = 560; } else { hrac.postavicka.Top += hrac.rychlostPohybu; // padá } } #endregion ; #region Logika nepřátel foreach (Nepritel n in Nepritel.listNepratel) { if (n.typ == Nepritel.Typ.ghost || n.typ == Nepritel.Typ.skeleton) { if (n.smer) // směr == true -> pohyb doleva; jinak pohyb doprava { if (n.typ == Nepritel.Typ.ghost) { n.postavicka.Image = Image.FromFile("Enemy1Transparent.png"); } else if (n.typ == Nepritel.Typ.skeleton) { n.postavicka.Image = Image.FromFile("Enemy2-40x80.png"); } } else { if (n.typ == Nepritel.Typ.ghost) { n.postavicka.Image = Image.FromFile("Enemy1TransparentReversed.png"); } else if (n.typ == Nepritel.Typ.skeleton) { n.postavicka.Image = Image.FromFile("Enemy2-40x80Reversed.png"); } } bool vlevo; if (StojiNaZemi(Blok.solidBlokList, n.postavicka, out pb)) { n.postavicka.Top = pb.Top - n.postavicka.Height; // drží nepřítele na zemi Nepritel.Pohyb(n); } else if (!JeHracVeStejneVysce(hrac.postavicka, n.postavicka, out vlevo)) { n.ProhodSmer(); // posune nepřitele od kraje, aby se nezasekl if (n.smer) { n.postavicka.Left += n.rychlostPohybu; } else { n.postavicka.Left -= n.rychlostPohybu; } } // jinak se neprovádí nic, protože nepřítel čeká na kraji na hráče if (JeBlokNalevo(Blok.solidBlokList, n.postavicka)) { Nepritel.PohybSOtočením(n); } if (JeBlokNapravo(Blok.solidBlokList, n.postavicka)) { Nepritel.PohybSOtočením(n); } bool vlevo2; if (JeHracVeStejneVysce(hrac.postavicka, n.postavicka, out vlevo2) && n.typ == Nepritel.Typ.skeleton) { if (n.smer == vlevo2) { n.ProhodSmer(); // otočí se za hráčem } } } else if (n.typ == Nepritel.Typ.spider) { if (n.smer) { n.postavicka.Top -= n.rychlostPohybu; } else { n.postavicka.Top += n.rychlostPohybu; } if (JeBlokNahore(Blok.solidBlokList, n.postavicka, out pb)) { if (n.random) { Random r = new Random(); n.rychlostPohybu = r.Next(3, 21); n.ProhodSmer(); } else { n.ProhodSmer(); } } if (StojiNaZemi(Blok.solidBlokList, n.postavicka, out pb)) { n.ProhodSmer(); } if (n.postavicka.Bottom > 610) // padá mimo hrací plochu { n.postavicka.Top = 570; n.ProhodSmer(); } if (n.postavicka.Top < 20) // letí nahoru z hrací plochy { n.postavicka.Top = 60; n.ProhodSmer(); } } } #endregion ; #region Kolize hráče s nepřítelem bool kolize = false; foreach (Nepritel n in Nepritel.listNepratel) { if (n.postavicka.Bounds.IntersectsWith(hrac.postavicka.Bounds)) { kolize = true; break; } } if (kolize) // ubrání životu hráči a restart levelu { hrac.UberZivot(); if (hrac.zivoty > 0) { Level.RestartLevelu(gamesetup.formular, hrac, gamesetup.aktualniIDLevelu); } } #endregion ; #region Sebrání klíče a postup do dalšího levelu PictureBox Sebrany = null; foreach (PictureBox k in Blok.klicList) { if (hrac.postavicka.Bounds.IntersectsWith(k.Bounds)) { Sebrany = k; k.Image = null; Controls.Remove(k); ScoreBoard.SeberKlic(); GameSetup.SKeyPickUp.Play(); break; } } Blok.klicList.Remove(Sebrany); if (ScoreBoard.zbyvaKlicu == 0) { Cil.aktualniCil.Otevri(); } // Hráč vstoupil na otevřený cíl if (gamesetup.aktualniIDLevelu == 0 && Cil.jeLevelDokoncen && hrac.postavicka.Bounds.IntersectsWith(Cil.aktualniCil.pbox.Bounds)) { GameSetup.SNextLevel.Play(); ScoreBoard.VypocitejSkoreZaLevel(hrac); Level L2 = Level.CreateLevel2(gamesetup.formular, hrac); L2.Generuj(); gamesetup.ZvysAktualniIDLevelu(); } else if (gamesetup.aktualniIDLevelu == 1 && Cil.jeLevelDokoncen && hrac.postavicka.Bounds.IntersectsWith(Cil.aktualniCil.pbox.Bounds)) { //GameSetup.SNextLevel.Play(); ScoreBoard.VypocitejSkoreZaLevel(hrac); //Level L3 = Level.CreateLevel3(gamesetup.formular, hrac); //L3.Generuj(); //gamesetup.ZvysAktualniIDLevelu(); gamesetup.HappyEnd(); } /*else if (gamesetup.aktualniIDLevelu == 2 && Cil.jeLevelDokoncen && hrac.postavicka.Bounds.IntersectsWith(Cil.aktualniCil.pbox.Bounds)) * { * ScoreBoard.VypocitejSkoreZaLevel(hrac); * gamesetup.HappyEnd(); * }*/ #endregion ; #region AirBar ScoreBoard.airBarHodnota -= Level.aktualniLevel.rychlostBaru; // Ubývání AirBaru if (ScoreBoard.airBarHodnota > 10) { ScoreBoard.airBar.Width = ScoreBoard.airBarHodnota / 10; } else { ScoreBoard.airBar.Width = 0; // jinak by se nikdy nedostalo na nulu kvůli zaokrouhlování } // Nastavení barev AirBaru - do poloviny zelená, pak do čtvrtiny oranžová, jinak červená if (ScoreBoard.airBar.BackColor != Color.Orange && ScoreBoard.airBar.Width < 1280 / 2 && ScoreBoard.airBar.Width > 1280 / 4) { ScoreBoard.airBar.BackColor = Color.Orange; } else if (ScoreBoard.airBar.BackColor != Color.DarkRed && ScoreBoard.airBar.Width < 1280 / 4) { ScoreBoard.airBar.BackColor = Color.DarkRed; } // Pokud je AirBar na nule, hráč ztratí život a level se restartuje if (ScoreBoard.airBar.Width == 0 && hrac.zivoty > 0) { hrac.UberZivot(); if (hrac.zivoty > 0) { Level.RestartLevelu(gamesetup.formular, hrac, gamesetup.aktualniIDLevelu); } } // Hráč ztratil všechny životy if (hrac.zivoty == 0) { gamesetup.GameOver(); } #endregion ; } }