コード例 #1
0
        /// <summary>
        /// provjera je li neprijateljski metak se sudario
        /// </summary>
        /// <param name="scene">scene</param>
        void ProvjeriNeprijateljskiMetak(GlavnaScena scene)
        {
            // Provjera je li metak neprijateljski
            if (Collider.Tags[0] == (int)Oznake.Neprijatelj)
            {
                // Provjeri je li se sudara s objektima od igrača
                if (Collider.CollideEntity(X, Y, Oznake.Igrac) != null)
                {
                    // je li se sudario s igračem
                    if (!(Collider.CollideEntities(X, Y, Oznake.Igrac)[0].GetType() == typeof(Metak)))
                    {
                        if (scene.Igrac.JeZiv)
                        {
                            RemoveSelf();
                            scene.Igrac.ZivotiIgraca -= 1;
                            scene.Igrac.Smrt();
                            scene.PreostaloZivotaText.String = scene.Igrac.ZivotiIgraca.ToString();
                            scene.PreostaloZivotaText.Refresh();
                        }

                        // Check if enemy bullet collides with player bullet
                        else
                        {
                            RemoveSelf();
                        }
                    }
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// Azuriraj pokrete igrača
        /// </summary>
        void AzurirajKretanje()
        {
            GlavnaScena glavnaScena = Program.Igra.GetScene <GlavnaScena>();

            if (JeZiv)
            {
                // provjeri jel se igrač kreće lijevo
                if (Input.KeyDown(Key.A) || Input.KeyDown(Key.Left))
                {
                    X -= BrzinaKretanja;
                }

                // provjeri jel se igrač kreće desno
                if (Input.KeyDown(Key.D) || Input.KeyDown(Key.Right))
                {
                    X += BrzinaKretanja;
                }

                // provjeri jel igrač puca
                if (Input.KeyDown(Key.Space) && !metak.Visible)
                {
                    Pucaj();
                }
            }

            // Check if player is in play area
            if (X < glavnaScena.PlayPosition.X)
            {
                X = glavnaScena.PlayPosition.X;
            }
            else if (X > glavnaScena.PlayPosition.X + glavnaScena.PlayWidth.X)
            {
                X = glavnaScena.PlayPosition.X + glavnaScena.PlayWidth.X;
            }
        }
コード例 #3
0
        public Igrac()
        {
            GlavnaScena glavnaScena = Program.Igra.GetScene <GlavnaScena>();

            // Set position
            SetPosition(new Vector2(glavnaScena.PlayPosition.X + glavnaScena.PlayWidth.X,
                                    glavnaScena.PlayPosition.Y + glavnaScena.PlayWidth.Y));

            // Set image
            AddGraphic(SlikaIgraca);

            // Add collider
            BoxCollider Collider = new BoxCollider(30, 30, Oznake.Igrac);

            AddCollider(Collider);

            // Initialize bullet
            Image       metakIgraca    = new Image("Slike/playerBullet.png");
            BoxCollider bulletCollider = new BoxCollider(metakIgraca.Width, metakIgraca.Height, Oznake.Igrac);

            metak            = new Metak(-6.0f, new Vector2(0, 0), bulletCollider);
            metak.Visible    = false;
            metak.Collidable = false;
            metak.AddGraphic(metakIgraca);
            glavnaScena.Add(metak);
        }
コード例 #4
0
        /// <summary>
        /// Inicijalizacija igre
        /// mora se dodati u prvu scenu prije pozivanja
        /// </summary>
        public void Initialize()
        {
            OnBegin = delegate
            {
                Neprijatelj.Postavljanje();
                Stit.Postavljanje();
                GlavnaScena scene = Program.Igra.GetScene <GlavnaScena>();

                Ufo = new UFO();

                Program.Igra.GetScene <GlavnaScena>().Add(Ufo);

                // Create player and add to scene
                Igrac = new Igrac();
                Add(Igrac);
                // Gametext for the entire game pretty much
                #region gameText

                var background = new Image("Slike/background.png");
                background.Alpha = 0.4f;
                scene.AddGraphic(background);

                //Setting a default config file for the RichText to use
                var txtConfig = new RichTextConfig()
                {
                    TextAlign = TextAlign.Center,
                    CharColor = Color.Green,
                    FontSize  = 18,
                    SineAmpX  = 1,
                    SineAmpY  = 2,
                    SineRateX = 1,
                    Font      = new Font("Slike/VCR_OSD_MONO.ttf"),
                };

                // Writing the text graphics and setting position
                var livesLeftTxtLabel = new RichText("Zivoti", txtConfig);
                livesLeftTxtLabel.SetPosition(50, 16);

                scene.PreostaloZivotaText      = new RichText(scene.Igrac.ZivotiIgraca.ToString(), txtConfig);
                scene.PreostaloZivotaText.Name = "livesLeftTxt";
                scene.PreostaloZivotaText.SetPosition(70, 32);

                var curScoreTxtLabel = new RichText("Bodovi", txtConfig);
                curScoreTxtLabel.SetPosition(650, 15);

                scene.TrenutniBodoviText      = new RichText(scene.Igrac.IznosBodova.ToString(), txtConfig);
                scene.TrenutniBodoviText.Name = "curScoreTxt";
                scene.TrenutniBodoviText.SetPosition(670, 32);

                // Adds Graphic to Scene
                scene.AddGraphic(livesLeftTxtLabel);
                scene.AddGraphic(curScoreTxtLabel);

                scene.AddGraphic(scene.PreostaloZivotaText);
                scene.AddGraphic(scene.TrenutniBodoviText);

                #endregion gameText
            };
        }
コード例 #5
0
        /// <summary>
        /// Check if bullet collides with entities.
        /// </summary>
        void ProvjeriSudaranjeMetka()
        {
            GlavnaScena glavnaScena = Program.Igra.GetScene <GlavnaScena>();

            ProvjeriMetakIgraca(glavnaScena);
            ProvjeriNeprijateljskiMetak(glavnaScena);
            CheckBarricade(glavnaScena);
            CheckUfo(glavnaScena);
        }
コード例 #6
0
        /// <summary>
        /// Provjera je li metak pogodio UFO neparijetelja
        /// </summary>
        /// <param name="glavnaScena">scene</param>
        void CheckUfo(GlavnaScena glavnaScena)
        {
            UFO ufo = (UFO)Collider.CollideEntity(X, Y, Oznake.Ufo);

            // ako se sudario s UFO, ukloni ga
            if (ufo != null)
            {
                ufo.Smrt();
                glavnaScena.Igrac.IznosBodova     += ufo.Bodovi;
                glavnaScena.Igrac.metak.Visible    = false;
                glavnaScena.Igrac.metak.Collidable = false;
            }
        }
コード例 #7
0
        static void Main(string[] args)
        {
            // Creates game window
            Igra       = new Game("Andrea Space Invader", 800, 600, 60, false);
            Igra.Color = Color.Blue;
            FreeConsole();

            // Kreiranje scene igre
            GlavnaScena glavnaScena = new GlavnaScena();

            Igra.AddScene(glavnaScena);
            glavnaScena.Initialize();

            Igra.WindowResize = false;
            Igra.SetIcon("Slike/windowPicture.png");
            Igra.Start();
        }
コード例 #8
0
        /// <summary>
        /// Ažurira metak
        /// </summary>
        public override void Update()
        {
            base.Update();

            if (Visible)
            {
                Y += BrzinaKretanja;
                ProvjeriGraniceMetka();
                ProvjeriSudaranjeMetka();

                // provjeri je li igrač ima 0 života, ako ima 0, završi igru
                GlavnaScena glavnaScena = Program.Igra.GetScene <GlavnaScena>();
                if (BrojZivota == 0)
                {
                    Game.SwitchScene(new HighScoresScene(glavnaScena.Igrac.IznosBodova));
                }
            }
        }
コード例 #9
0
        /// <summary>
        /// Ažuriraj kretanje
        /// </summary>
        void AzurirajKretanje()
        {
            GlavnaScena        glavnaScena  = Program.Igra.GetScene <GlavnaScena>();
            List <Neprijatelj> neprijatelji = Scene.GetEntities <Neprijatelj>();

            SetPosition(Position + SmjerKretanja);

            // Provjeri je li se neprijatelj pomakao 24p po Y osi, ako jeste pomakni ga u X os
            if (VisinaPomaka <= 0)
            {
                SmjerKretanja = SljedeciSmjerKretanja;
                VisinaPomaka  = 24;
                SePomaknuo    = true;
            }

            // Provjeri je li neprijatelj na krajnjoj desnoj strani ekrana, ako jeste, spusti ga dole
            if (Position.X > glavnaScena.GetPlayArea().X)
            {
                SetPosition(Position - SmjerKretanja);
                SmjerKretanja         = new Vector2(0.0f, BrzinaKretanja);
                SljedeciSmjerKretanja = new Vector2(-1.0f * BrzinaKretanja, 0.0f);
            }

            // Provjeri je li neprijatelj na krajnjoj lijevoj strani ekrana, ako jeste, spusti ga dole
            if (Position.X < glavnaScena.PlayPosition.X)
            {
                SetPosition(Position - SmjerKretanja);
                SmjerKretanja         = new Vector2(0.0f, BrzinaKretanja);
                SljedeciSmjerKretanja = new Vector2(1.0f * BrzinaKretanja, 0.0f);
            }

            // Provjeri je li neprijatelj na najnižoj točki, ako jeste, završi igru

            if (Position.Y >= glavnaScena.GetPlayArea().Y - 100)
            {
                Game.SwitchScene(new HighScoresScene(glavnaScena.Igrac.IznosBodova));
            }

            // Pomiče neprijatelja
            VisinaPomaka -= SmjerKretanja.Y / neprijatelji.Count;
        }
コード例 #10
0
        /// <summary>
        /// provjeri sudaranje sa štitom
        /// </summary>
        /// <param name="glavnaScena">scene</param>
        void CheckBarricade(GlavnaScena glavnaScena)
        {
            Stit stit = (Stit)Collider.CollideEntity(X, Y, Oznake.Stit);

            if (stit != null)
            {
                // provjera je li igračev metak pogodio štit
                if (Collider.Tags[0] == (int)Oznake.Igrac)
                {
                    stit.OstetiSe();
                    Visible    = false;
                    Collidable = false;
                }

                // provjera je li neprijateljev metak pogodio štit
                else
                {
                    stit.OstetiSe();
                    RemoveSelf();
                }
            }
        }
コード例 #11
0
        /// <summary>
        /// Check if player bullet collides with entities.
        /// </summary>
        /// <param name="glavnaScena">scene</param>
        void ProvjeriMetakIgraca(GlavnaScena glavnaScena)
        {
            // Check if bullet is player bullet
            if (Collider.Tags[0] == (int)Oznake.Igrac)
            {
                // Provjeri je li se metak sudario s neprijateljima
                if (Collider.CollideEntity(X, Y, Oznake.Neprijatelj) != null)
                {
                    // provjeri je li metak pogodio metak
                    if ((Collider.CollideEntities(X, Y, Oznake.Neprijatelj)[0].GetType() == typeof(Metak)))
                    {
                        Collider.CollideEntities(X, Y, Oznake.Neprijatelj)[0].RemoveSelf();
                        Visible    = false;
                        Collidable = false;
                    }
                    // Check if bullet hits enemy
                    else
                    {
                        Neprijatelj neprijatelj = (Neprijatelj)Collider.CollideEntities(X, Y, Oznake.Neprijatelj)[0];
                        neprijatelj.RemoveSelf();
                        Visible    = false;
                        Collidable = false;

                        if (glavnaScena.GetEntities <Neprijatelj>().Count <= 1)
                        {
                            glavnaScena.NextLevel();
                        }

                        glavnaScena.Igrac.IznosBodova        += neprijatelj.Bodovi;
                        glavnaScena.TrenutniBodoviText.String = glavnaScena.Igrac.IznosBodova.ToString();
                        Program.TrenutniBodoviTekst           = glavnaScena.Igrac.IznosBodova.ToString();
                        glavnaScena.TrenutniBodoviText.Refresh();
                    }
                }
            }
        }
コード例 #12
0
        /// <summary>
        /// Učitava sve neprijatelje po levelu
        /// </summary>
        /// <param level="level">level koji treba učitati</param>
        public static void UcitajNeprijatelje(string level)
        {
            GlavnaScena glavnaScena = Program.Igra.GetScene <GlavnaScena>();

            List <string> neprijateljiLevel = DohvatiNeprijatelje(level);

            // Current enemy position to load
            Vector2 trenutnaPozicija = new Vector2(glavnaScena.PlayPosition.X, glavnaScena.PlayPosition.Y);

            foreach (var n in neprijateljiLevel)
            {
                Neprijatelj neprijatelj = SviNeprijatelji[n]();
                neprijatelj.Position = trenutnaPozicija;
                glavnaScena.Add(neprijatelj);

                // Set enemy position
                trenutnaPozicija.X += VelicinaNeprijatelja;
                if (trenutnaPozicija.X > 420)
                {
                    trenutnaPozicija.X  = glavnaScena.PlayPosition.X;
                    trenutnaPozicija.Y += VelicinaNeprijatelja;
                }
            }
        }
コード例 #13
0
        /// <summary>
        /// poziva svaki frame
        /// </summary>
        public override void Update()
        {
            base.Update();
            Ozivljavanje.Update();

            if (!JeZiv && Ozivljavanje.AtMax)
            {
                GlavnaScena glavnaScena = Program.Igra.GetScene <GlavnaScena>();
                JeZiv = true;
                RemoveGraphic(SlikaUnistenogIgraca);
                AddGraphic(SlikaIgraca);
                glavnaScena.Igrac.SetPosition(new Vector2(glavnaScena.PlayPosition.X + glavnaScena.PlayWidth.X,
                                                          glavnaScena.PlayPosition.Y + glavnaScena.PlayWidth.Y));
            }

            AzurirajKretanje();

            //If playerLives are 0, then switch to highscore screen

            if (ZivotiIgraca == 0)
            {
                Game.SwitchScene(new HighScoresScene(IznosBodova));
            }
        }