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

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