1 | using System; |
---|
2 | using System.Collections.Generic; |
---|
3 | using Jypeli; |
---|
4 | using Jypeli.Assets; |
---|
5 | using Jypeli.Controls; |
---|
6 | using Jypeli.Effects; |
---|
7 | using Jypeli.Widgets; |
---|
8 | |
---|
9 | public 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 | } |
---|