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 @ 2987

Revision 2987, 6.3 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 Elämät;
19    ScoreList TopLista = new ScoreList(10, false, 0);
20    bool peliLoppui = false;
21    int Vihollisia = 10;
22
23    public override void Begin()
24    {
25        //  Kirjoita ohjelmakoodisi tähän
26
27        LuoKenttä  ();
28        Pelaaja ();
29        Aseet();
30        LisääOhjaimet();
31        LuoKierrosLaskuri();
32
33        if (DataStorage.Exists("pisteet.xml"))
34            TopLista = DataStorage.Load<ScoreList>(TopLista, "pisteet.xml");
35
36        int i = 0;
37        while (i < Vihollisia)
38        {
39            vihollinen (Level.Right - 30, RandomGen.NextDouble(Level.Bottom + 30, Level.Top - 30));
40            i++;
41        }
42
43        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
44        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
45    }
46
47    void LuoKenttä()
48    {
49        Level.Background.CreateStars();
50        Level.CreateBorders();
51        Camera.ZoomToLevel();
52        VihollisiaJaljella = new IntMeter(Vihollisia);
53        VihollisiaTuhottu = new IntMeter(0);
54        VihollisiaJaljella.LowerLimit += KaikkiVihollisetTuhottu;
55
56        Label Pistenaytto = new Label();
57        Pistenaytto.X = Level.Right - 30;
58        Pistenaytto.Y = Level.Top - 5;
59        Pistenaytto.TextColor = Color.White;
60        Pistenaytto.Color = Color.Red;
61
62        Pistenaytto.BindTo(VihollisiaTuhottu);
63        Add(Pistenaytto);
64
65        Label Pisteteksti = new Label("Tuhottu:");
66        Pisteteksti.X = Level.Right - 98;
67        Pisteteksti.Y = Level.Top - 5;
68        Pisteteksti.TextColor = Color.White;
69        Pisteteksti.Color = Color.Red;
70        Add(Pisteteksti);
71    }
72
73    PhysicsObject vihollinen(double x, double y)
74    {
75        FollowerBrain SeuraajanAivot = new FollowerBrain(pelaaja);
76        SeuraajanAivot.Speed = 100;
77        PhysicsObject enemy = new PhysicsObject (30, 30);
78        enemy.Brain = SeuraajanAivot;
79        enemy.X = x;
80        enemy.Y = y;
81        enemy.Shape = Shape.Circle;
82        enemy.Color = Color.Red;
83        enemy.Tag = "vihollinen";
84        Add (enemy);
85        return enemy;
86    } 
87
88       
89   
90    void Pelaaja()
91    {
92        pelaaja = new PhysicsObject(30, 30);
93        pelaaja.Shape = Shape.Circle;
94        pelaaja.Color = Color.Blue;
95        pelaaja.X = -400;
96        pelaaja.Y = 0;
97        Add (pelaaja);
98        pelaaja.LinearDamping = 0.9;
99        pelaaja.Restitution = 1.0;
100        pelaaja.CanRotate = false;
101
102        Elämät = new DoubleMeter(100);
103        Elämät.MaxValue = 100;
104        Elämät.LowerLimit += GameOver;
105
106        ProgressBar ElämäPalkki = new ProgressBar(150, 10);
107        ElämäPalkki.BindTo(Elämät);
108        ElämäPalkki.X = Level.Left - 50;
109        ElämäPalkki.Y = Level.Top - 5;
110        ElämäPalkki.BarColor = Color.Red;
111        ElämäPalkki.BorderColor = Color.Green;
112        Add(ElämäPalkki);
113
114        Elämät.Value = 101;
115
116        AddCollisionHandler(pelaaja, "vihollinen", VihollinenOsuuPelaajaan);
117
118    }
119   
120    void LisääOhjaimet()
121    {
122        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.1, LiikutaPelaajaa, 
123        "Liikuta pelaajaa tattia pyörittämällä");
124        ControllerOne.Listen(Button.X, ButtonState.Pressed, Ampuminen, "ammu");
125
126    }
127    void LiikutaPelaajaa (AnalogState TatinTila)
128    {
129        Vector tatinAsento = TatinTila.StateVector;
130        pelaaja.Push(tatinAsento*5000);
131    }
132    void Aseet()
133    {
134        AssaultRifle pyssy = new AssaultRifle(20, 5);
135        pelaaja.Add(pyssy);
136        pyssy.Ammo.Value = 99999999;
137        Ase = pyssy;
138       
139    }
140
141    void LuotiOsuu(PhysicsObject ammus, PhysicsObject kohde)
142    {
143        ammus.Destroy();
144        Explosion rajahdys = new Explosion(10);
145        rajahdys.Position = ammus.Position;
146
147        if (kohde.Tag == "vihollinen")
148        {
149            kohde.Destroy();
150            VihollisiaJaljella.Value--;
151            VihollisiaTuhottu.Value++;
152        }
153        Add(rajahdys);
154       
155    }
156
157    void KaikkiVihollisetTuhottu(int vihollisia)
158    {
159        MessageDisplay.Add("Viholliset tuhottu!");
160
161        Timer.SingleShot(1.5, LisaaVihollisia);
162
163    }
164
165    void Ampuminen()
166    {
167        PhysicsObject panos = Ase.Shoot();
168        if (panos != null)
169        {
170            AddCollisionHandler(panos, LuotiOsuu);
171        }
172    }
173    void VihollinenOsuuPelaajaan(IPhysicsObject pelaaja, IPhysicsObject enemy)
174    {
175        Elämät.Value -= 10;
176    }
177
178    void GameOver(double Elämät)
179    {
180        if (peliLoppui) return;
181
182        MessageDisplay.Add("Hävisit pelin");
183        HighScoreWindow topIkkuna = new HighScoreWindow(
184                             "Parhaat pisteet",
185                             "Onneksi olkoon, pääsit listalle tapoilla %p! Syötä nimesi:",
186                             TopLista, VihollisiaTuhottu.Value);
187        topIkkuna.Closed += TallennaPisteet;
188        Add(topIkkuna);
189        peliLoppui = true;
190       
191
192    }
193    void TallennaPisteet(Window sender)
194    {
195        DataStorage.Save<ScoreList>(TopLista, "pisteet.xml");
196
197        Timer.SingleShot(3.0, Exit);
198
199    }
200    void LisaaVihollisia()
201    {
202        Vihollisia = Vihollisia + 10;
203
204        VihollisiaJaljella.Value = Vihollisia;
205
206        KierrosLaskuri.Value += 1;
207
208        int i = 0;
209        while (i < Vihollisia)
210        {
211            vihollinen(Level.Right - 30, RandomGen.NextDouble(Level.Bottom + 30, Level.Top - 30));
212            i++;
213        }
214    }
215    void LuoKierrosLaskuri()
216    {
217        KierrosLaskuri = new IntMeter(1);
218        Label KierrosNaytto = new Label();
219        KierrosNaytto.X = Level.Center.X - 100;
220        KierrosNaytto.Y = Level.Top - 5;
221        KierrosNaytto.TextColor = Color.White;
222        KierrosNaytto.Color = Color.Red;
223        KierrosNaytto.Title = "Kierros";
224        KierrosNaytto.BindTo(KierrosLaskuri);
225        Add (KierrosNaytto);
226    }
227
228}
Note: See TracBrowser for help on using the repository browser.