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

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