source: 2013/24/JuhoR/FysiikkaPeli3/FysiikkaPeli3/FysiikkaPeli3/FysiikkaPeli3.cs @ 4118

Revision 4118, 5.8 KB checked in by juelreim, 6 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class FysiikkaPeli3 : PhysicsGame
10{
11    int kenttanro = 1;
12
13   
14
15    PhysicsObject pelaaja;
16    Image pelaajankuva = LoadImage("pelaaja");
17    Image vihunkuva = LoadImage("vihulainen");
18
19    void LuoKentta()
20    {
21        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kenttä2");
22
23        ruudut.SetTileMethod(Color.FromHexCode("4CFF00"), LuoPelaaja);
24        ruudut.SetTileMethod(Color.Black, LuoTaso);
25        ruudut.SetTileMethod(Color.FromHexCode("FFD800"), LuoTahti);
26        ruudut.SetTileMethod(Color.FromHexCode("FF0000"), LuoVihollinen);
27
28        ruudut.Execute(20, 20);
29    }
30
31    public override void Begin()
32    {
33        LuoKentta();
34        TeeKontrollit();
35
36        Level.BackgroundColor = Color.DarkBrown;
37        Level.CreateBorders(false);
38    }
39
40    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
41    {
42        pelaaja = new PhysicsObject(22, 22);
43        pelaaja.Shape = Shape.Circle;
44        pelaaja.Restitution = 0.0;
45        pelaaja.Image = pelaajankuva;
46        pelaaja.Tag = "pelaaja";
47        pelaaja.Position = paikka;
48        pelaaja.Destroyed += peliloppuu;
49        pelaaja.LinearDamping = 0.9;
50
51        Camera.Follow(pelaaja);
52        Camera.Zoom(2.5);
53
54        Add(pelaaja);
55    }
56
57    void peliloppuu()
58    {
59        MessageWindow window = new MessageWindow ("Karhu söi sinut...");
60        Camera.Reset();
61        Add(window);
62    }
63
64    void Restart(Window restart)
65    {
66        ClearAll();
67        LuoKentta();
68        TeeKontrollit();
69    }
70
71    void LuoVihollinen(Vector paikka, double leveys, double korkeus)
72    {
73        PhysicsObject vihu = new PhysicsObject(20, 20);
74       
75
76
77        FollowerBrain seuraajanAivot = new FollowerBrain("pelaaja");
78        vihu.Brain = seuraajanAivot;
79        seuraajanAivot.Speed = 77;
80        vihu.LifetimeLeft = TimeSpan.FromSeconds(300.0);
81        vihu.Position = paikka;
82        vihu.Image = vihunkuva;
83        AddCollisionHandler(vihu, "pelaaja", VihollinenOsuuPelaajaan);
84        Add(vihu);
85    }
86
87
88    void VihollinenOsuuPelaajaan(PhysicsObject vihu, PhysicsObject pelaaja)
89    {
90        pelaaja.Destroy();
91
92    }
93
94    void LuoTaso(Vector paikka, double leveys, double korkeus)
95    {
96        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
97        taso.Position = paikka;
98        taso.Color = Color.Black;
99        taso.CollisionIgnoreGroup = 1;
100        Add(taso);
101    }
102
103    void LuoTahti(Vector paikka, double leveys, double korkeus)
104    {
105        PhysicsObject tahti = new PhysicsObject(20, 20);
106        tahti.IgnoresCollisionResponse = true;
107        tahti.Position = paikka;
108        tahti.Color = Color.Yellow;
109        AddCollisionHandler(tahti, "pelaaja", Maali);
110        tahti.Tag = "tahti";
111        Add(tahti, 1);
112    }
113
114    void Maali(PhysicsObject pelaaja, PhysicsObject tahti)
115    {
116        Window ikkuna = new Window();
117        Add(ikkuna);
118        ikkuna.Closed += uusikenttä;
119
120        Label tarina = new Label("pääsi siis karhuja pakoon...");
121        tarina.Width = 300;
122        tarina.SizeMode = TextSizeMode.Wrapped;
123        ikkuna.Add(tarina);
124        kenttanro++;
125        Camera.Reset();
126        Seuraavakenttä();
127    }
128
129    void uusikenttä(Window ikkuna)
130    {
131        Seuraavakenttä();
132    }
133
134    void TeeKontrollit()
135    {
136        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
137        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
138        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
139
140
141        Keyboard.Listen(Key.Left, ButtonState.Down,
142           LiikutaPelaajaa, null, new Vector(-450, 0));
143        Keyboard.Listen(Key.Right, ButtonState.Down,
144          LiikutaPelaajaa, null, new Vector(450, 0));
145        Keyboard.Listen(Key.Up, ButtonState.Down,
146          LiikutaPelaajaa, null, new Vector(0, 450));
147        Keyboard.Listen(Key.Down, ButtonState.Down,
148          LiikutaPelaajaa, null, new Vector(0, -450));
149       
150    }
151    void LiikutaPelaajaa(Vector vektori)
152    {
153        pelaaja.Push(vektori);
154    }
155
156    void Seuraavakenttä()
157    {
158        ClearAll();
159
160        if (kenttanro == 1) LuoKentta();
161        else if (kenttanro == 2) LuoKentta2();
162        else if (kenttanro == 3) LuoKentta3();
163        else if (kenttanro == 4) LuoKentta4();
164
165        TeeKontrollit();
166    }
167
168    void LuoKentta2()
169    {
170        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kenttä3");
171
172        ruudut.SetTileMethod(Color.FromHexCode("4CFF00"), LuoPelaaja);
173        ruudut.SetTileMethod(Color.Black, LuoTaso);
174        ruudut.SetTileMethod(Color.FromHexCode("FFD800"), LuoTahti);
175        ruudut.SetTileMethod(Color.FromHexCode("FF0000"), LuoVihollinen);
176
177        ruudut.Execute(20, 20);
178    }
179
180    void LuoKentta3()
181    {
182        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kenttä4");
183
184        ruudut.SetTileMethod(Color.FromHexCode("4CFF00"), LuoPelaaja);
185        ruudut.SetTileMethod(Color.Black, LuoTaso);
186        ruudut.SetTileMethod(Color.FromHexCode("FFD800"), LuoTahti);
187        ruudut.SetTileMethod(Color.FromHexCode("FF0000"), LuoVihollinen);
188
189        ruudut.Execute(20, 20);
190    }
191
192    void LuoKentta4()
193    {
194        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kenttä");
195
196        ruudut.SetTileMethod(Color.FromHexCode("4CFF00"), LuoPelaaja);
197        ruudut.SetTileMethod(Color.Black, LuoTaso);
198        ruudut.SetTileMethod(Color.FromHexCode("FFD800"), LuoTahti);
199        ruudut.SetTileMethod(Color.FromHexCode("FF0000"), LuoVihollinen);
200
201        ruudut.Execute(20, 20);
202    }
203}
Note: See TracBrowser for help on using the repository browser.