source: 2011/31/TommiL/pallopeli/pallopeli/pallopeli/Peli.cs @ 2605

Revision 2605, 4.4 KB checked in by tolinnav, 10 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 robotti;
12    Timer aikaLaskuri;
13    int elama = 0;
14
15    Image olionKuva = LoadImage("kuva");
16    Image olionKuva2 = LoadImage("sydän");
17    Image olionKuva3 = LoadImage("pallonpää");
18
19    PhysicsObject[] sydamet = new PhysicsObject[10];
20    ScoreList topLista = new ScoreList(10, false, 5);
21
22    public override void Begin()
23    {
24        if (DataStorage.Exists("pisteet.xml"))
25            topLista = DataStorage.Load<ScoreList>(topLista, "pisteet.xml");
26
27       
28
29
30        robotti = new PhysicsObject(30,30);
31        Add(robotti);
32        robotti.X = (-450);
33        robotti.Y = (-350);
34        robotti.Color = Color.LightGray;
35        robotti.Image = olionKuva;
36        robotti.Tag = "robotti";
37       
38
39
40        robotti.CanRotate = false;
41
42        Keyboard.Listen(Key.Left, ButtonState.Down,
43    LiikutaPelaajaa, null, new Vector(-1000, 0));
44        Keyboard.Listen(Key.Right, ButtonState.Down,
45          LiikutaPelaajaa, null, new Vector(1000, 0));
46        Keyboard.Listen(Key.Up, ButtonState.Down,
47          LiikutaPelaajaa, null, new Vector(0, 1000));
48        Keyboard.Listen(Key.Down, ButtonState.Down,
49          LiikutaPelaajaa, null, new Vector(0, -1000));
50       
51
52        Level.Background.CreateGradient(Color.DarkOrange
53      , Color.DarkRed);
54
55        Level.CreateBorders(1, true);
56        Camera.Zoom(1.2);
57
58        tehdapallot();
59        LuoAikaLaskuri();
60        while (elama < 3)
61        {
62            tehdasydan();
63        }
64       
65    }
66
67
68
69    void LiikutaPelaajaa(Vector vektori)
70    {
71        robotti.Push(vektori);
72    }
73
74    void tehdapallot()
75    {
76        int i = 0;
77        while (i < 32)
78        {
79            PhysicsObject pallo = new PhysicsObject(20, 20);
80            Add(pallo);
81            pallo.X = RandomGen.NextDouble ( -400,400);
82            pallo.Y = RandomGen.NextDouble ( -400,400);
83            pallo.Color = Color.Yellow;
84            pallo.Shape = Shape.Circle;
85            pallo.Restitution = 1.5;
86            pallo.Tag = "pallo";
87            pallo.CollisionIgnoreGroup = (1);
88            robotti.LinearDamping = 0.95;
89            pallo.Image = olionKuva3;
90
91
92            i++;
93            pallo.Hit(new Vector(RandomGen.NextDouble(400, -400), RandomGen.NextDouble(-400, 400)));
94            AddCollisionHandler(pallo, KasittelePallonTormays);
95        }
96     }
97           
98
99
100    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde)
101    {
102        if (kohde.Tag.ToString() == "robotti")
103        {
104            Explosion rajahdys = new Explosion(100.100);
105            rajahdys.Position = robotti.Position;
106            Add(rajahdys);
107            rajahdys.Speed = 150.0;
108            rajahdys.Force = 30;
109            elama--;
110            sydamet[elama].Destroy();
111            if (elama == 0) 
112            {
113                kohde.Destroy();
114                double aikaaKulunut = aikaLaskuri.SecondCounter.Value;
115                aikaLaskuri.Stop();
116
117                HighScoreWindow topIkkuna = new HighScoreWindow("pallopeli",
118                             "Parhaat pisteet",
119                             "Onneksi olkoon, pääsit listalle pisteillä %p! Syötä nimesi:",
120                             topLista, aikaaKulunut);
121                topIkkuna.Closed += TallennaPisteet;
122                Add(topIkkuna);
123            }
124           
125
126
127
128
129
130        }     
131    }
132
133    void tehdasydan()
134    {
135
136 PhysicsObject sydän = new PhysicsObject(40.0, 40.0);
137           Add(sydän, -1);
138           sydän.Image = olionKuva2;
139           sydän.IgnoresCollisionResponse = true;
140           sydän.IgnoresExplosions = true;
141           sydamet[elama] = sydän;
142           elama++;
143           sydän.X = 300 + elama * 50;
144           sydän.Y = -300;
145       
146
147       
148
149    }
150   
151
152   
153   
154
155    void LuoAikaLaskuri()
156{
157    aikaLaskuri = new Timer();
158    aikaLaskuri.Start();
159
160    Label aikaNaytto = new Label();
161    aikaNaytto.TextColor = Color.Gray;
162    aikaNaytto.DecimalPlaces = 1;
163    aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
164    Add(aikaNaytto);
165}
166
167    void TallennaPisteet(Window sender)
168    {
169        DataStorage.Save<ScoreList>(topLista, "pisteet.xml");
170    }   
171}
172   
173
174
175
176   
177
Note: See TracBrowser for help on using the repository browser.