source: 2016/koodauskerho/JereM/MurkkuPeli/MurkkuPeli/MurkkuPeli/MurkkuPeli.cs @ 9380

Revision 9380, 5.3 KB checked in by npo17_80, 23 months ago (diff)

Tehtiin Elämämittari

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class MurkkuPeli : PhysicsGame
10{
11    PhysicsObject isomurkku;
12    Image taustaKuva = LoadImage("grass");
13
14    Image OlionKuva = LoadImage("isomurkku");
15
16
17    DoubleMeter elamalaskuri;
18
19    public override void Begin()
20    {
21        LuoAlkuvalikko();
22
23     
24
25    }
26
27   
28
29    void luoElamaLaskuri ()
30    {
31
32        elamalaskuri = new DoubleMeter(10);
33        elamalaskuri.MaxValue = 10;
34        elamalaskuri.LowerLimit += ElamaLoppui;
35
36        ProgressBar elamaPalkki = new ProgressBar(150, 20);
37        elamaPalkki.X = Screen.Left + 150;
38        elamaPalkki.Y = Screen.Top - 50;
39        elamaPalkki.BindTo(elamalaskuri);
40        Add(elamaPalkki);
41
42       
43
44
45    }
46
47    void ElamaLoppui()
48    {
49    MessageDisplay. Add("Kuolit");
50
51       
52       
53    }
54    void LuoAlkuvalikko()
55    {
56        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
57"Aloita peli", "Lopeta");
58
59        alkuValikko.AddItemHandler(0, AloitaPeli);
60        alkuValikko.AddItemHandler(1, Exit);
61
62        Add(alkuValikko);
63
64       
65
66 
67   
68    }
69
70    void AloitaPeli()
71    {
72        Level.Width = 1500;
73        Level.Height = 1500;
74
75        Level.Background.Image = taustaKuva;
76        Level.Background.FitToLevel();
77
78        Camera.StayInLevel = true;
79        isomurkku = new PhysicsObject(100.0, 100.0);
80        Add(isomurkku);
81        isomurkku.CanRotate = false;
82        isomurkku.Image = OlionKuva;
83        isomurkku.LinearDamping = 0.95;
84        AddCollisionHandler(isomurkku, "marja", SyoMarja);
85        AddCollisionHandler(isomurkku, "pienimurkku", TormaaMurkkuun); 
86
87        PienetMurkut();
88       
89
90        Marjat
91            ();
92       
93
94        Mouse.ListenMovement(0.1, Tahtaa, "tähtää");
95
96
97        IsMouseVisible = true;
98
99        Camera.Follow(isomurkku);
100
101        Camera.Zoom(2.0);
102        // TODO: Kirjoita ohjelmakoodisi tähän
103
104        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
105
106        //Level.CreateBorders();
107        PhysicsObject ylareuna = Level.CreateTopBorder(0.0, false);
108
109        PhysicsObject alareuna = Level.CreateBottomBorder(0.0, false);
110
111        PhysicsObject oikeareuna = Level.CreateRightBorder(0.0, false);
112
113        PhysicsObject vasenreuna = Level.CreateLeftBorder(0.0, false);
114
115
116        luoElamaLaskuri();
117
118
119
120        Keyboard.Listen(Key.Left, ButtonState.Down,
121          LiikutaPelaajaa, null, new Vector(-500, 0));
122        Keyboard.Listen(Key.Right, ButtonState.Down,
123          LiikutaPelaajaa, null, new Vector(500, 0));
124        Keyboard.Listen(Key.Up, ButtonState.Down,
125          LiikutaPelaajaa, null, new Vector(0, 500));
126        Keyboard.Listen(Key.Down, ButtonState.Down,
127          LiikutaPelaajaa, null, new Vector(0, -500));
128    }
129
130    void Tahtaa(AnalogState hiirenLiike)
131    {
132        Vector suunta = Mouse.PositionOnWorld - isomurkku.Position;
133        isomurkku.Angle = suunta.Angle;
134    }
135    void PienetMurkut()
136    {
137        PieniMurkku(Level.Left, Level.Top);
138        PieniMurkku(Level.Right, Level.Top);
139        PieniMurkku(Level.Right, Level.Bottom);
140        PieniMurkku(Level.Left, Level.Bottom);
141
142       
143
144    }
145
146    void PieniMurkku(double x, double y)
147    {
148        PhysicsObject pienimurkku = new PhysicsObject(40.0, 40.0);
149        Add(pienimurkku);
150        pienimurkku.Image = OlionKuva;
151
152        pienimurkku.X = x;
153        pienimurkku.Y = y;
154        pienimurkku.Tag =  "pienimurkku";
155
156        FollowerBrain seuraajanAivot = new FollowerBrain(isomurkku);
157
158        seuraajanAivot.Speed = 150;                 // Millä nopeudella kohdetta seurataan
159        seuraajanAivot.DistanceFar = 6000;           // Etäisyys jolla aletaan seurata kohdetta
160        seuraajanAivot.DistanceClose = 100;         // Etäisyys jolloin ollaan lähellä kohdetta
161        seuraajanAivot.StopWhenTargetClose = false;  // Pysähdytään kun ollaan lähellä kohdetta
162        //seuraajanAivot.FarBrain = satunnaisAivot;   // Käytetään satunnaisaivoja kun ollaan kaukana
163
164        pienimurkku.Brain = seuraajanAivot;
165    }
166
167
168    void LiikutaPelaajaa(Vector vektori)
169    {
170        isomurkku.Push(vektori);
171
172
173    }
174
175
176
177
178    void AsetaOhjaimet()
179    {
180
181    }
182
183    void FollowerBrain()
184    {
185
186       
187    }
188
189    void Marjat()
190    {
191        for (int i = 0; i < 20; i++)
192        {
193
194            Marja();
195           
196        }
197
198    }
199
200    void Marja()
201    {
202        PhysicsObject pallo = new PhysicsObject(15.0, 15.0);
203        Add(pallo);
204        pallo.Color = Color.Red;
205        pallo.Shape = Shape.Circle;
206        pallo.Tag = "marja";
207        pallo.X = RandomGen.NextDouble(Level.Left, Level.Right);
208        pallo.Y = RandomGen.NextDouble(Level.Bottom, Level.Top);
209
210       
211    }
212    void Törmäys()
213    {
214
215    }
216
217    void SyoMarja(PhysicsObject tormaaja, PhysicsObject kohde)
218    {
219        kohde.Destroy();
220        MessageDisplay.Add("Sait elämän!");
221
222        elamalaskuri.Value += 2;
223
224    }
225   
226    void TormaaMurkkuun(PhysicsObject tormaaja, PhysicsObject isomurkku)
227    {
228        MessageDisplay.Add("Törmäsit");
229        elamalaskuri.Value -= 2;
230    }
231   
232
233}
Note: See TracBrowser for help on using the repository browser.