source: 2011/26/JouniM/MatoPeli/MatoPeli/MatoPeli/Peli.cs @ 2301

Revision 2301, 5.8 KB checked in by jojumuho, 9 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 Peli : PhysicsGame
10{
11    PhysicsObject Mato;
12    PhysicsObject Saalis;
13
14    DoubleMeter alaspainLaskuri;
15
16    Timer ajastin;
17    Timer sadeajastin;
18    Timer aikaLaskuri;
19
20    bool kuolematon = false;
21
22    public override void Begin()
23    {
24        // TODO: Kirjoita ohjelmakoodisi tähän
25       
26        ajastin = new Timer();
27        ajastin.Interval = 0.1;
28        ajastin.Trigger += LiikutaMatoa;
29
30
31        sadeajastin = new Timer();
32        sadeajastin.Trigger += LuoVihollinen;
33
34        aikaLaskuri = new Timer();
35        aikaLaskuri.Interval = 0.1;
36        aikaLaskuri.Trigger += LaskeAlaspain;
37
38       
39
40
41Aloitapeli();
42
43
44 
45
46
47    }
48
49    private void Aloitapeli()
50    {
51        sadeajastin.Interval = 1.1;
52        LuoKentta();
53        LuoMato();
54        AsetaOhjaimet();
55        LuoSaalis(20, 30);
56        LuoLaskuri();
57        LuoAikaLaskuri();
58        ajastin.Start();
59        sadeajastin.Start();
60        aikaLaskuri.Start();
61
62
63    }
64
65    void LuoKentta()
66    {
67        Level.CreateBorders();
68        Camera.ZoomToLevel();
69
70
71    }
72
73    void LuoMato()
74    {
75     Mato = new PhysicsObject(30.0, 40.0);
76     Mato.Tag = "Mato";
77     Add(Mato);
78     Mato.Shape = Shape.Heart;
79     AddCollisionHandler(Mato, KasitteleMadonTormays);
80
81    }
82
83    void KasitteleMadonTormays(PhysicsObject Mato, PhysicsObject kohde)
84
85   
86    {
87
88     if (kohde.Tag.ToString() == "saalis")
89     {
90         kohde.Destroy();
91         Saalis_Destroyed();
92     }
93
94    }
95
96
97    void AsetaOhjaimet()
98
99    {
100        Mouse.IsCursorVisible = true;
101        Keyboard.Listen(Key.G, ButtonState.Down, TuleeKuolemattomaksi,null);
102        Keyboard.Listen(Key.G, ButtonState.Up, Kuolemattomuusloppuu,null);
103        Keyboard.Listen(Key.R, ButtonState.Released, uudestaan, "aloitus");
104
105
106    }
107
108
109     void TuleeKuolemattomaksi()
110      {
111          kuolematon = true;
112      }
113
114    void Kuolemattomuusloppuu()
115    {
116        kuolematon = false;
117    }
118
119    void KuunteleLiiketta(AnalogState hiirenTila)
120    {
121        Mato.X = Mouse.PositionOnWorld.X;
122        Mato.Y = Mouse.PositionOnWorld.Y;
123
124        Vector hiirenLiike = hiirenTila.MouseMovement;
125
126    }
127
128    void LiikutaMatoa (Timer sender )
129    {
130        Vector etaisyys = Mouse.PositionOnWorld - Mato.Position;
131        Mato.MoveTo(Mouse.PositionOnWorld, etaisyys.Magnitude*1.5 );
132        Mato.Angle = etaisyys.Angle+Angle.RightAngle;
133       
134    }
135
136    void LuoSaalis(double X, double Y)
137    {
138        Saalis = new PhysicsObject(30, 30);
139        Saalis.Tag = "saalis";
140        Add(Saalis);
141        Saalis.Shape = Shape.Star;
142        Saalis.X = RandomGen.NextDouble(Level.Left, Level.Right);
143        Saalis.Y = RandomGen.NextDouble(Level.Bottom, Level.Top);
144        FollowerBrain karkuunSaalis = new FollowerBrain(Mato, -50);
145        karkuunSaalis.Target = Mato;
146        Saalis.Brain = karkuunSaalis;
147        //Saalis.Destroyed += new Action(Saalis_Destroyed);
148       
149
150
151
152
153    }
154
155    void Saalis_Destroyed() 
156    { 
157        LuoSaalis(RandomGen.NextDouble(Level.Left, Level.Right), RandomGen.NextDouble(Level.Bottom, Level.Top) );
158        LuoSaalis(RandomGen.NextDouble(Level.Left, Level.Right), RandomGen.NextDouble(Level.Bottom, Level.Top));
159        pisteLaskuri.Value = pisteLaskuri.Value + 1;
160    }
161 
162    IntMeter pisteLaskuri;
163
164    void LuoLaskuri()
165    {
166        pisteLaskuri = new IntMeter(0);
167
168        Label pisteTeksti = new Label("Pisteitä: ");
169        pisteTeksti.X = Screen.Right - 160;
170        pisteTeksti.Y = Screen.Top - 100;
171        pisteTeksti.TextColor = Color.Red;
172        Add(pisteTeksti);
173
174        Label pisteNaytto = new Label();
175        pisteNaytto.X = Screen.Right - 110;
176        pisteNaytto.Y = Screen.Top - 100;
177        pisteNaytto.TextColor = Color.Red;
178
179        pisteNaytto.BindTo(pisteLaskuri);
180        Add(pisteNaytto);
181
182
183    }
184
185    void LuoVihollinen(Timer sender)
186    {
187        sender.Interval = sender.Interval-0.019;
188
189        Vector suunta = new Vector(0, 1);
190       
191        Vector position;
192        if (RandomGen.NextBool())
193        {
194            position = new Vector(RandomGen.NextDouble(Level.Left, Level.Right), Level.Top);
195            suunta = new Vector(0.0, -1);
196        }
197
198        else
199        {
200            position = new Vector ( Level.Left, RandomGen.NextDouble(Level.Bottom, Level.Top));
201            suunta = new Vector(1, 0);
202        }
203    PhysicsObject Vihollinen = new PhysicsObject(new RaySegment(position, suunta, 2000) );
204    Vihollinen.MaximumLifetime = TimeSpan.FromSeconds(2.0);
205
206         AddCollisionHandler(Vihollinen, KasitteleVihollisenTormays);
207
208        Add(Vihollinen);
209     
210    }
211
212    void KasitteleVihollisenTormays(PhysicsObject Vihollinen, PhysicsObject kohde)
213    {
214
215        if (kohde.Tag.ToString() == "Mato" && kuolematon == false)
216        {
217            kohde.Destroy();
218
219        }
220
221    }
222       
223
224
225    void LuoAikaLaskuri()
226    {
227        alaspainLaskuri = new DoubleMeter(30);
228
229       
230
231        Label aikaNaytto = new Label();
232        aikaNaytto.TextColor = Color.White;
233        aikaNaytto.DecimalPlaces = 1;
234        aikaNaytto.BindTo(alaspainLaskuri);
235        aikaNaytto.X = 0;
236        aikaNaytto.Y = Screen.Top - 100;
237        Add(aikaNaytto);
238    }
239
240    void LaskeAlaspain(Timer timer)
241    {
242        alaspainLaskuri.Value -= 0.1;
243
244        if (alaspainLaskuri.Value <= 0)
245        {
246            MessageDisplay.Add("total anhilation");
247            timer.Stop();
248
249            // täydennä mitä tapahtuu, kun aika loppuu
250        }
251    }
252
253
254    void uudestaan()
255    {
256        ClearAll();
257
258        Aloitapeli();
259    }
260
261}
Note: See TracBrowser for help on using the repository browser.