source: 2012/24/AtteJ/Räiskintä-mättöpeli/Räiskintä-mättöpeli/Räiskintä-mättöpeli/Räiskintä_mättöpeli.cs @ 3009

Revision 3009, 8.4 KB checked in by atjokine, 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 Räiskintä_mättöpeli : PhysicsGame
10{
11
12    Vector liikuYlös = new Vector(0.0, 250.0);
13    PhysicsObject pelaaja;
14    Weapon Ase;
15    IntMeter VihollisiaJaljella;
16    IntMeter VihollisiaTuhottu;
17    IntMeter KierrosLaskuri;
18    DoubleMeter Elamat;
19    ScoreList TopLista = new ScoreList(10, false, 0);
20    bool peliLoppui = false;
21    int Vihollisia = 10;
22    int vihollisiaV2 = 0;
23    int vihollisiaV3 = 0;
24
25    public override void Begin()
26    {
27        //  Kirjoita ohjelmakoodisi tähän
28
29        LuoKenttä  ();
30        Pelaaja ();
31        Aseet();
32        LisääOhjaimet();
33        LuoKierrosLaskuri();
34
35        if (DataStorage.Exists("pisteet.xml"))
36            TopLista = DataStorage.Load<ScoreList>(TopLista, "pisteet.xml");
37
38        int i = 0;
39        while (i < Vihollisia)
40        {
41            vihollinenV1 (Level.Right - 30, RandomGen.NextDouble(Level.Bottom + 30, Level.Top - 30));
42            i++;
43        }
44
45        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
46        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
47    }
48
49    void LuoKenttä()
50    {
51        Level.Background.CreateStars();
52        Level.CreateBorders();
53        Camera.ZoomToLevel();
54        VihollisiaJaljella = new IntMeter(Vihollisia);
55        VihollisiaTuhottu = new IntMeter(0);
56        VihollisiaJaljella.LowerLimit += KaikkiVihollisetTuhottu;
57
58        Label Pistenaytto = new Label();
59        Pistenaytto.X = Level.Right - 30;
60        Pistenaytto.Y = Level.Top - 5;
61        Pistenaytto.TextColor = Color.White;
62        Pistenaytto.Color = Color.Red;
63
64        Pistenaytto.BindTo(VihollisiaTuhottu);
65        Add(Pistenaytto);
66
67        Label Pisteteksti = new Label("Tuhottu:");
68        Pisteteksti.X = Level.Right - 98;
69        Pisteteksti.Y = Level.Top - 5;
70        Pisteteksti.TextColor = Color.White;
71        Pisteteksti.Color = Color.Red;
72        Add(Pisteteksti);
73    }
74
75    PhysicsObject vihollinenV1
76        (double x, double y)
77    {
78        FollowerBrain SeuraajanAivot = new FollowerBrain(pelaaja);
79        SeuraajanAivot.Speed = 100;
80        PhysicsObject enemy = new PhysicsObject (30, 30);
81        enemy.Brain = SeuraajanAivot;
82        enemy.X = x;
83        enemy.Y = y;
84        enemy.Shape = Shape.Circle;
85        enemy.Color = Color.Green;
86        enemy.Tag = "vihollinen1";
87        Add (enemy);
88        return enemy;
89    }
90
91    PhysicsObject vihollinenV2(double x, double y)
92    {
93        FollowerBrain SeuraajanAivot = new FollowerBrain(pelaaja);
94        SeuraajanAivot.Speed = 100;
95        PhysicsObject enemy = new PhysicsObject(30, 30);
96        enemy.Brain = SeuraajanAivot;
97        enemy.X = x;
98        enemy.Y = y;
99        enemy.Shape = Shape.Circle;
100        enemy.Color = Color.Yellow;
101        enemy.Tag = "vihollinen2";
102        Add(enemy);
103        return enemy;
104    }
105    PhysicsObject vihollinenV3(double x, double y)
106    {
107        FollowerBrain SeuraajanAivot = new FollowerBrain(pelaaja);
108        SeuraajanAivot.Speed = 100;
109        PhysicsObject enemy = new PhysicsObject(30, 30);
110        enemy.Brain = SeuraajanAivot;
111        enemy.X = x;
112        enemy.Y = y;
113        enemy.Shape = Shape.Circle;
114        enemy.Color = Color.Red;
115        enemy.Tag = "vihollinen3";
116        Add(enemy);
117        return enemy;
118    }
119
120       
121   
122    void Pelaaja()
123    {
124        pelaaja = new PhysicsObject(30, 30);
125        pelaaja.Shape = Shape.Circle;
126        pelaaja.Color = Color.Blue;
127        pelaaja.X = -400;
128        pelaaja.Y = 0;
129        Add (pelaaja);
130        pelaaja.LinearDamping = 0.9;
131        pelaaja.Restitution = 1.0;
132        pelaaja.CanRotate = false;
133
134        Elamat = new DoubleMeter(100);
135        Elamat.MaxValue = 100;
136        Elamat.LowerLimit += GameOver;
137
138        ProgressBar ElämäPalkki = new ProgressBar(150, 10);
139        ElämäPalkki.BindTo(Elamat);
140        ElämäPalkki.X = Level.Left - 50;
141        ElämäPalkki.Y = Level.Top - 5;
142        ElämäPalkki.BarColor = Color.Red;
143        ElämäPalkki.BorderColor = Color.Green;
144        Add(ElämäPalkki);
145
146        Elamat.Value = 101;
147
148        AddCollisionHandler(pelaaja, "vihollinen1", VihollinenOsuuPelaajaan);
149        AddCollisionHandler(pelaaja, "vihollinen2", VihollinenOsuuPelaajaan);
150    }
151   
152    void LisääOhjaimet()
153    {
154        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.1, LiikutaPelaajaa, 
155        "Liikuta pelaajaa tattia pyörittämällä");
156        ControllerOne.Listen(Button.X, ButtonState.Pressed, Ampuminen, "ammu");
157
158    }
159    void LiikutaPelaajaa (AnalogState TatinTila)
160    {
161        Vector tatinAsento = TatinTila.StateVector;
162        pelaaja.Push(tatinAsento*5000);
163    }
164    void Aseet()
165    {
166        AssaultRifle pyssy = new AssaultRifle(20, 5);
167        pelaaja.Add(pyssy);
168        pyssy.Ammo.Value = 99999999;
169        Ase = pyssy;
170       
171    }
172
173    void LuotiOsuuViholliseen(PhysicsObject ammus, PhysicsObject kohde)
174    {
175        ammus.Destroy();
176        Explosion rajahdys = new Explosion(10);
177        rajahdys.Force = 0;
178        rajahdys.Position = ammus.Position;
179        string vihollisTagi = kohde.Tag.ToString();
180
181        if (vihollisTagi.StartsWith("vihollinen"))
182        {
183            int hp = int.Parse(vihollisTagi.Substring(10));
184            hp--;
185
186            if (hp <= 0)
187            {
188                kohde.Destroy();
189                VihollisiaJaljella.Value--;
190                VihollisiaTuhottu.Value++;
191            }
192            else
193            {
194                kohde.Tag = "vihollinen" + hp;
195            }
196        }
197        Add(rajahdys);
198       
199    }
200
201    void KaikkiVihollisetTuhottu(int vihollisia)
202    {
203        MessageDisplay.Add("Viholliset tuhottu!");
204
205        Timer.SingleShot(1.5, LisaaVihollisia);
206
207    }
208
209    void Ampuminen()
210    {
211        PhysicsObject panos = Ase.Shoot();
212        if (panos != null)
213        {
214            AddCollisionHandler(panos, LuotiOsuuViholliseen);
215        }
216    }
217    void VihollinenOsuuPelaajaan(IPhysicsObject pelaaja, IPhysicsObject enemy)
218    {
219        if (enemy.Tag == "vihollinenV3")
220        {
221            Elamat.Value -= 30;
222        }
223        else if (enemy.Tag == "vihollinenV2")
224        {
225            Elamat.Value -= 20;
226        }
227        else if (enemy.Tag == "vihollinenV1")
228        {
229            Elamat.Value -= 10;
230        }
231    }
232
233    void GameOver(double Elämät)
234    {
235        if (peliLoppui) return;
236
237        MessageDisplay.Add("Hävisit pelin");
238        HighScoreWindow topIkkuna = new HighScoreWindow(
239                             "Parhaat pisteet",
240                             "Onneksi olkoon, pääsit listalle tapoilla %p! Syötä nimesi:",
241                             TopLista, VihollisiaTuhottu.Value);
242        topIkkuna.Closed += TallennaPisteet;
243        Add(topIkkuna);
244        peliLoppui = true;
245       
246
247    }
248    void TallennaPisteet(Window sender)
249    {
250        DataStorage.Save<ScoreList>(TopLista, "pisteet.xml");
251
252        Timer.SingleShot(1.0, Exit);
253
254    }
255    void LisaaVihollisia()
256    {
257        Vihollisia = Vihollisia + 20;
258
259        if (KierrosLaskuri.Value >= 10)
260        {
261            vihollisiaV3 = vihollisiaV3 + 5;
262        }
263       
264        if (KierrosLaskuri.Value >= 5)
265        {
266            vihollisiaV2 = vihollisiaV2 + 10;
267        }
268
269        VihollisiaJaljella.Value = Vihollisia + vihollisiaV2;
270
271        KierrosLaskuri.Value += 1;
272
273        int i = 0;
274        while (i < Vihollisia)
275        {
276            vihollinenV1(Level.Right - 30, RandomGen.NextDouble(Level.Bottom + 30, Level.Top - 30));
277            i++;
278        }
279
280        i = 0;
281        while (i < vihollisiaV2)
282        {
283            vihollinenV2(Level.Right - 30, RandomGen.NextDouble(Level.Bottom + 30, Level.Top - 30));
284            i++;
285        }
286    }
287    void LuoKierrosLaskuri()
288    {
289        KierrosLaskuri = new IntMeter(1);
290        Label KierrosNaytto = new Label();
291        KierrosNaytto.X = Level.Center.X - 100;
292        KierrosNaytto.Y = Level.Top - 5;
293        KierrosNaytto.TextColor = Color.White;
294        KierrosNaytto.Color = Color.Red;
295        KierrosNaytto.Title = "Kierros";
296        KierrosNaytto.BindTo(KierrosLaskuri);
297        Add (KierrosNaytto);
298    }
299
300
301}
Note: See TracBrowser for help on using the repository browser.