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

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