source: 2016/24/JamiP/sokkelo/sokkelo/sokkelo/sokkelo.cs @ 7388

Revision 7388, 4.8 KB checked in by karkaite, 4 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class sokkelo : PhysicsGame
10{
11
12    PhysicsObject pelaaja;
13    private string kenttaMenossa = "kentta";
14    private int level = 1;
15    public override void Begin()
16    {
17        LuoAlkuValikko();
18    }
19
20    void LuoAlkuValikko()
21    {
22        ClearAll();
23        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
24"Aloita peli", "Ohjeet", "Lopeta");
25        Add(alkuValikko);
26        alkuValikko.AddItemHandler(0, AloitaPeli);
27        alkuValikko.AddItemHandler(1, Ohjeet);
28        alkuValikko.AddItemHandler(2, Exit);
29    }
30
31    void AloitaPeli()
32    {
33        ClearAll();
34        LuoKentta();
35        Camera.ZoomFactor = 30;
36        Camera.FollowedObject = pelaaja;
37        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
38        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
39    }
40
41    void Ohjeet()
42    {
43        Label tekstikentta = new Label("Peli ideana on päästä punaiseen palikkaan, joka vie sinut toiseen kenttään.");
44        Add(tekstikentta);
45        Keyboard.Listen(Key.Escape, ButtonState.Pressed, LuoAlkuValikko, "Palaa alkuvalikkoon");
46    }
47
48    void LuoKentta()
49    {
50        //1. Luetaan kuva uuteen ColorTileMappiin, kuvan nimen perässä ei .png-päätettä.
51        ColorTileMap ruudut = ColorTileMap.FromLevelAsset(kenttaMenossa);
52
53        //2. Kerrotaan mitä aliohjelmaa kutsutaan, kun tietyn värinen pikseli tulee vastaan kuvatiedostossa.
54        ruudut.SetTileMethod(Color.FromHexCode("0026FF"), LuoPelaaja);
55        ruudut.SetTileMethod(Color.Black, LuoSeina);
56        ruudut.SetTileMethod(Color.FromHexCode("FF0000"), LuoMaali);
57        ruudut.SetTileMethod(Color.Yellow, LuoTahti);
58        LuoRotta();
59        //3. Execute luo kentän
60        //   Parametreina leveys ja korkeus
61        ruudut.Execute(20, 20);
62        Level.Background.Color = Color.Gray;
63    }
64
65    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
66    {
67        pelaaja = new PhysicsObject(10, 10);
68        pelaaja.Position = paikka;
69        //AddCollisionHandler(pelaaja, "tahti", TormaaTahteen);
70        Add(pelaaja);
71        pelaaja.Shape = Shape.Circle;
72        pelaaja.Restitution = 0;
73        AddCollisionHandler(pelaaja, "maali", PelaajaOsuuMaaliin);
74     //   AddCollisionHandler(pelaaja, "rotta", PelaajaOsuuRottaan);
75
76        Keyboard.Listen(Key.Left, ButtonState.Down,
77           LiikutaPelaajaa, null, new Vector(-200, 0));
78        Keyboard.Listen(Key.Right, ButtonState.Down,
79          LiikutaPelaajaa, null, new Vector(200, 0));
80        Keyboard.Listen(Key.Up, ButtonState.Down,
81          LiikutaPelaajaa, null, new Vector(0, 200));
82        Keyboard.Listen(Key.Down, ButtonState.Down,
83          LiikutaPelaajaa, null, new Vector(0, -200));
84
85    }
86
87
88    void LuoRotta()
89    {
90        const int RUUDUN_KOKO = 10; 
91        PhysicsObject rotta = new PhysicsObject(RUUDUN_KOKO / 2, RUUDUN_KOKO / 2);
92        Add(rotta);
93        rotta.Tag = "rotta";
94
95        LabyrinthWandererBrain labyrinttiAivot = new LabyrinthWandererBrain(RUUDUN_KOKO);
96        labyrinttiAivot.Speed = 50.0;
97        labyrinttiAivot.LabyrinthWallTag = "seina";
98
99
100        rotta.Brain = labyrinttiAivot;
101    }
102
103
104    void PelaajaOsuuMaaliin(PhysicsObject pelaaja, PhysicsObject maali)
105    {
106        ClearAll();
107        level++;
108        if (level == 2) kenttaMenossa = "kentta2";
109        else if (level == 3) kenttaMenossa = "kentta3";
110        else if (level >= 4) kenttaMenossa = "kentta4";
111        Begin();
112    }
113
114   // void PelaajaOsuuRottaan(PhysicsObject pelaaja, PhysicsObject rotta)
115  //  {
116       // pelaaja.Destroy();
117  //  }
118
119    void LuoSeina(Vector paikka, double leveys, double korkeus)
120    {
121        PhysicsObject seina = PhysicsObject.CreateStaticObject(leveys, korkeus);
122        seina.Position = paikka;
123        //seina.Image = groundImage;
124        seina.CollisionIgnoreGroup = 1;
125        Add(seina);
126        seina.Color = Color.Black;
127    }
128
129    void LuoMaali(Vector paikka, double leveys, double korkeus)
130    {
131        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
132        maali.Position = paikka;
133        //seina.Image = groundImage;
134        Add(maali);
135        maali.Tag = "maali";
136        maali.Color = Color.Red;
137    }
138
139
140    void LuoTahti(Vector paikka, double leveys, double korkeus)
141    {
142        PhysicsObject tahti = new PhysicsObject(5, 5);
143        tahti.IgnoresCollisionResponse = true;
144        tahti.Position = paikka;
145        //tahti.Image = tahdenKuva;
146        tahti.Tag = "tahti";
147        Add(tahti, 1);
148    }
149
150    void LiikutaPelaajaa(Vector vektori)
151    {
152        pelaaja.Push(vektori);
153    }
154}
Note: See TracBrowser for help on using the repository browser.