source: 2011/26/OttoS/Space Race/Space Race/Space Race/Peli.cs @ 2374

Revision 2374, 6.2 KB checked in by oteeansa, 12 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 UFO;
12    Image olionKuva = LoadImage("ufo");
13    Image taustaKuva = LoadImage("m101");
14    Image ValikonKuva = LoadImage("valikko2");
15    int nopeutus = 0;
16    Timer aikaLaskuri;
17    DoubleMeter alaspainLaskuri;
18
19    List<Label> valikonKohdat;
20    Timer ajastin;
21
22    ScoreList topLista = new ScoreList(20, false, 0);
23    ExplosionSystem rajahdys = new ExplosionSystem(LoadImage("123"), 200);
24
25    public override void Begin()
26    {
27        rajahdys.Color = Color.Transparent;
28        Add(rajahdys);
29        Valikko();
30        //ValikossaLiikkuminen();
31        //AsetaOhjaimet();
32        //LuoAikaLaskuri();
33
34        if (DataStorage.Exists("pisteet.xml"))
35            topLista = DataStorage.Load<ScoreList>(topLista, "pisteet.xml");
36
37
38    }
39
40    void LuoSatunnainenEste(Timer sender)
41    {
42        double y = RandomGen.NextDouble(Level.Bottom, Level.Top);
43        PhysicsObject Este = PhysicsObject.CreateStaticObject(35.0, 300.0);
44        Add(Este);
45        Este.Tag = "este";
46        Este.X = Level.Left + RandomGen.NextDouble(800, 1200);
47        Este.Y = y;
48        Este.Color = Color.Black;
49        Este.Velocity = new Vector(-250 - (RandomGen.NextDouble(nopeutus / 2, nopeutus)), 0.0);
50
51        nopeutus += 9;
52    }
53
54    void AsetaOhjaimet()
55    {
56        Keyboard.Listen(Key.Escape, ButtonState.Released, Exit, null);
57        Keyboard.Listen(Key.Up, ButtonState.Down,
58          LiikutaUFO, null, new Vector(0, 1000));
59        Keyboard.Listen(Key.Down, ButtonState.Down,
60          LiikutaUFO, null, new Vector(0, -1000));
61
62    }
63
64    void LiikutaUFO(Vector vektori)
65    {
66        UFO.Push(vektori);
67
68    }
69    void LuoRajahdys()
70    {
71        rajahdys.AddEffect(UFO.X, UFO.Y, 200);
72        aikaLaskuri.Stop();
73        ajastin.Stop();
74    }
75
76    void KasitteleUfonTormays(PhysicsObject UFO, PhysicsObject kohde)
77    {
78        LuoRajahdys();
79        UFO.Destroy();
80        EsitaPistelista();
81    }
82
83    void LuoAikaLaskuri()
84    {
85        alaspainLaskuri = new DoubleMeter(0);
86
87        aikaLaskuri = new Timer();
88        aikaLaskuri.Interval = 0.1;
89        aikaLaskuri.Trigger += LaskeAlaspain;
90        aikaLaskuri.Start();
91
92        Label aikaNaytto = new Label();
93        aikaNaytto.TextColor = Color.White;
94        aikaNaytto.DecimalPlaces = 1;
95        aikaNaytto.BindTo(alaspainLaskuri);
96        Add(aikaNaytto);
97        aikaNaytto.X = 500;
98        aikaNaytto.Y = 450;
99    }
100
101    void LaskeAlaspain(Timer timer)
102    {
103        alaspainLaskuri.Value += 2;
104
105    }
106
107    void Palaavalikkoon()
108    {
109        ajastin.Stop();
110        Valikko();
111    }
112
113    void AloitaPeli()
114    {
115        ClearAll();
116        rajahdys = new ExplosionSystem(LoadImage("123"), 200);
117        Add(rajahdys);
118        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Palaavalikkoon, "Palaa valikkoon");
119        AsetaOhjaimet();
120        LuoAikaLaskuri();
121
122        UFO = new PhysicsObject(30.0, 30.0);
123        Add(UFO);
124        UFO.Image = olionKuva;
125        UFO.X = Level.Left + 250;
126        UFO.Y = 0.0;
127        UFO.IgnoresCollisionResponse = true;
128
129        Vector impulssi = new Vector(500.0, 0.0);
130        UFO.Restitution = 1.0;
131        Level.BackgroundColor = Color.White;
132        Camera.ZoomToLevel();
133        Level.Background.Image = taustaKuva;
134        Level.CreateBorders(true);
135
136        ajastin = new Timer();
137        ajastin.Interval = 1.5;
138        ajastin.Trigger += LuoSatunnainenEste;
139        ajastin.Start();
140        AddCollisionHandler(UFO, KasitteleUfonTormays);
141
142       
143
144    }
145
146    void Valikko()
147    {
148        ClearAll();
149        Camera.ZoomFactor = 1;
150        Level.Background.Image = ValikonKuva;
151        valikonKohdat = new List<Label>();
152
153        Label kohta1 = new Label("Aloita uusi peli");
154        kohta1.Position = new Vector(-500, -100);
155        valikonKohdat.Add(kohta1);
156
157        Label kohta2 = new Label("Lopeta");
158        kohta2.Position = new Vector(-500, -200);
159        valikonKohdat.Add(kohta2);
160
161        Label kohta3 = new Label("Pistelista");
162        kohta3.Position = new Vector(-500, -150);
163        valikonKohdat.Add(kohta3);
164
165        foreach (Label valikonKohta in valikonKohdat)
166        {
167            Add(valikonKohta);
168        }
169
170        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
171        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Exit, null);
172        Mouse.ListenOn(kohta3, MouseButton.Left, ButtonState.Pressed, Pistelista, null);
173        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "");
174
175        Mouse.IsCursorVisible = true;
176        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
177
178    }
179
180    void Pistelista()
181    {
182        HighScoreWindow topIkkuna = new HighScoreWindow("Space Race",
183                              "Parhaat pisteet",
184                              topLista);
185        topIkkuna.Closed += TallennaPisteet;
186        Add(topIkkuna);
187        topIkkuna.ActiveColor = Color.White;
188        topIkkuna.CloseButton.Color = Color.White;
189        topIkkuna.OKButton.Color = Color.White;
190        topIkkuna.TitleBarActiveColor = Color.Blue;
191    }
192
193
194    void ValikossaLiikkuminen(AnalogState hiirenTila)
195    {
196        foreach (Label kohta in valikonKohdat)
197        {
198            if (Mouse.IsCursorOn(kohta))
199            {
200                kohta.TextColor = Color.Black;
201            }
202            else
203            {
204                kohta.TextColor = Color.White;
205            }
206
207        }
208    }
209
210
211    void EsitaPistelista()
212    {
213        HighScoreWindow topIkkuna = new HighScoreWindow("Space Race",
214                         "Parhaat pisteet",
215                         "Etkö nyt parempaan pystynyt? %p! No, Syötä nyt nimesi:",
216                         topLista, alaspainLaskuri.Value);
217        topIkkuna.Closed += TallennaPisteet;
218        Add(topIkkuna);
219    }
220
221
222    void TallennaPisteet(Window sender)
223    {
224        DataStorage.Save<ScoreList>(topLista, "pisteet.xml");
225        Valikko();
226    }
227
228}
229
Note: See TracBrowser for help on using the repository browser.