Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.IO;
- using Jypeli;
- using Jypeli.Assets;
- using Jypeli.Controls;
- using Jypeli.Effects;
- using Jypeli.Widgets;
- /// <summary>
- /// Jatka selvittämällä miten uhrien määrän ollessa 0 siirrytään seuraavaan kenttään.
- /// </summary>
- public class Puumasimulaattori : PhysicsGame
- {
- PhysicsObject puuma;
- PhysicsObject uhri;
- PhysicsObject vanhus;
- Image taustaKuva = LoadImage("taustalevel1");
- int kenttaNro = 1;
- Vector nopeusYlos = new Vector(0, 200);
- Vector nopeusAlas = new Vector(0, -200);
- Vector nopeusOikealle = new Vector(200, 0);
- Vector nopeusVasemmalle = new Vector(-200, 0);
- public override void Begin()
- {
- MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
- "Aloita peli", "Lopeta");
- Add(alkuValikko);
- SeuraavaKentta();
- }
- void SeuraavaKentta()
- {
- ClearAll();
- if (kenttaNro == 1) LuoKentta("yritystausta");
- else if (kenttaNro == 2) LuoKentta("toinentausta");
- else if (kenttaNro > 3) Exit();
- AsetaOhjaimet();
- }
- /// <summary>
- /// Aliohjelma, jossa luodaan kenttä ja sen oleelliset osaset.
- /// </summary>
- void LuoKentta(string kenttaTiedostonNimi)
- {
- Level.Background.Image = taustaKuva;
- ColorTileMap ruudut = ColorTileMap.FromLevelAsset(kenttaTiedostonNimi);
- ruudut.SetTileMethod(Color.Red, LuoPuuma);
- ruudut.SetTileMethod(Color.Cyan, LuoUhri);
- ruudut.SetTileMethod(Color.Gray, LuoVanhus);
- ruudut.SetTileMethod(Color.Black, LuoTaso);
- ruudut.Execute(20, 15);
- }
- /// <summary>
- /// Aliohjelma luo puuman, eli käyttäjän liikutettavan hahmon.
- /// </summary>
- /// <param name="paikka"></param>
- /// <param name="leveys"></param>
- /// <param name="korkeus"></param>
- void LuoPuuma (Vector paikka, double leveys, double korkeus)
- {
- puuma = new PhysicsObject(40.0, 40.0);
- puuma.Shape = Shape.Circle;
- puuma.Color = Color.Red;
- puuma.Position = paikka;
- AddCollisionHandler(puuma, "uhri", PuumaTormasiUhriin);
- AddCollisionHandler(puuma, "vanhus", PuumaTormasiVanhukseen);
- Add(puuma);
- }
- /// <summary>
- /// Luo uhrin, eli hahmon, johon yritetään osua. Hahmo liikkuu satunnaisesti.
- /// Voisko tämä myös laskea kuinka monta niitä uhreja on ja palauttaa sen arvon muiden aliohjelmien käyttöön?
- /// Vai tehdäänkö se LuoKentassa? Lista siitä joka tapauksessa pitäisi tehdä.
- /// </summary>
- /// <param name="paikka"></param>
- /// <param name="leveys"></param>
- /// <param name="korkeus"></param>
- void LuoUhri(Vector paikka, double leveys, double korkeus)
- {
- uhri = new PhysicsObject(40.0, 40.0);
- uhri.Tag = "uhri";
- uhri.Shape = Shape.Circle;
- uhri.Color = Color.Green;
- uhri.Position = paikka;
- RandomMoverBrain satunnaisAivot = new RandomMoverBrain(50);
- satunnaisAivot.ChangeMovementSeconds = 3;
- uhri.Brain = satunnaisAivot;
- Add(uhri);
- }
- /// <summary>
- /// Luo vanhuksen, eli olennon, jota yritetään välttää. Hahmo liikkuu satunnaisesti.
- /// </summary>
- /// <param name="paikka"></param>
- /// <param name="leveys"></param>
- /// <param name="korkeus"></param>
- void LuoVanhus(Vector paikka, double leveys, double korkeus)
- {
- vanhus = new PhysicsObject(40.0, 40.0);
- vanhus.Tag = "vanhus";
- vanhus.Shape = Shape.Circle;
- vanhus.Color = Color.Gray;
- vanhus.Position = paikka;
- RandomMoverBrain satunnaisAivot = new RandomMoverBrain(50);
- satunnaisAivot.ChangeMovementSeconds = 3;
- vanhus.Brain = satunnaisAivot;
- Add(vanhus);
- }
- /// <summary>
- /// Luo staattisia tasoja
- /// </summary>
- /// <param name="paikka"></param>
- /// <param name="leveys"></param>
- /// <param name="korkeus"></param>
- void LuoTaso(Vector paikka, double leveys, double korkeus)
- {
- PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
- taso.Position = paikka;
- taso.Color = Color.Black;
- taso.CollisionIgnoreGroup = 1;
- Add(taso);
- }
- /// <summary>
- /// Aliohjelma tulostaa tekstitiedostosta viestin ruudulle, kun puuma saa uhrin kiinni.
- /// Uhri tuhoutuu. Jatka muuttamalla siten, että siirtyy seuraavaan kenttään, kun kaikki on saatu kiinni.
- /// </summary>
- /// <param name="puuma"></param>
- /// <param name="uhri"></param>
- void PuumaTormasiUhriin(PhysicsObject puuma, PhysicsObject uhri)
- {
- string[] nimet = LueTiedosto();
- string viesti = TulostaTiedosto(nimet);
- MessageDisplay.Add(viesti);
- uhri.Destroy();
- }
- /// <summary>
- /// Tulostaa ruudulle viestin "Hävisit!", mikäli vanhus osuu puumaan. Puuma tuhoutuu.
- /// </summary>
- /// <param name="puuma"></param>
- /// <param name="vanhus"></param>
- void PuumaTormasiVanhukseen(PhysicsObject puuma, PhysicsObject vanhus)
- {
- MessageDisplay.Add("Hävisit!");
- puuma.Destroy();
- }
- /// <summary>
- /// Asetetaan ohjaimet, joilla liikutellaan puumaa. Puuma ei just nyt suostu liikkumaan vasemmalle.
- /// </summary>
- void AsetaOhjaimet()
- {
- Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Liiku ylös", puuma, nopeusYlos);
- Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, puuma, Vector.Zero);
- Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Liiku alas", puuma, nopeusAlas);
- Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, puuma, Vector.Zero);
- Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus, "Liiku oikealle", puuma, nopeusOikealle);
- Keyboard.Listen(Key.Right, ButtonState.Released, AsetaNopeus, null, puuma, Vector.Zero);
- Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, "Liiku vasemmalle", puuma, nopeusVasemmalle);
- Keyboard.Listen(Key.Left, ButtonState.Released, AsetaNopeus, null, puuma, Vector.Zero);
- Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
- }
- /// <summary>
- /// Liikkumiseen tarvittava aliohjelma
- /// </summary>
- /// <param name="puuma"></param>
- /// <param name="nopeus"></param>
- void AsetaNopeus(PhysicsObject puuma, Vector nopeus)
- {
- if ((nopeus.Y < 0) && (puuma.Bottom < Level.Bottom)) // "Jos liikkuu alareunaan asti jne."
- {
- puuma.Velocity = Vector.Zero;
- return;
- }
- if ((nopeus.Y > 0) && (puuma.Top > Level.Top))
- {
- puuma.Velocity = Vector.Zero;
- return;
- }
- if ((nopeus.X < 0) && (puuma.Right < Level.Right))
- {
- puuma.Velocity = Vector.Zero;
- return;
- }
- if ((nopeus.X > 0) && (puuma.Left < Level.Left))
- {
- puuma.Velocity = Vector.Zero;
- return;
- }
- puuma.Velocity = nopeus;
- }
- public static string[] LueTiedosto()
- {
- // Määritellään tiedostopolku vakioksi. Pitäisi varmaan lisätä toi tiedosto tuonne contentiin, mutta viimeksi bugasi, kun yritin.
- const string POLKU = @"D:\Documents\Kurssit\Ohj1\harjoitusty\ht\Puumasimulaattori\Puumasimulaattori\PuumasimulaattoriContent\nimet.txt";
- string[] luetutRivit = File.ReadAllLines(POLKU);
- return luetutRivit;
- }
- public static string TulostaTiedosto(string[] tiedosto)
- {
- int i = RandomGen.NextInt(0, tiedosto.Length);
- string nimi = tiedosto[i];
- return nimi;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement