source: 2012/26/KasperiK/TheLastBattle/TheLastBattle/TheLastBattle/TheLastBattle.cs @ 3324

Revision 3324, 9.7 KB checked in by jikakuus, 9 years ago (diff)

Talletus.

Line 
1//The Last Battle
2//By: Kasperi Kuusipuro
3//vk26 2012
4
5//Tee asteroidit LOPPUUN!!!!!!!!!! <---------TÄRKEÄÄÄ!!!!!!!!!!!!!!!!!!
6
7using System;
8using System.Collections.Generic;
9using Jypeli;
10using Jypeli.Assets;
11using Jypeli.Controls;
12using Jypeli.Effects;
13using Jypeli.Widgets;
14
15public class TheLastBattle : PhysicsGame
16{
17   //Alustetaan Muuttujia
18    PhysicsObject Pelaaja1;
19    PhysicsObject Pelaaja2;
20    PhysicsObject Asteroidi;
21   
22    Image IhmisAlus = LoadImage("IhmisAlus");
23    Image AlienAlus = LoadImage("AlienAlus");
24    Image taustaKuva = LoadImage("tausta");
25    Image AlienAlus2 = LoadImage("AlienAlus2");
26    Image IhmisAlus2 = LoadImage("IhmisAlus2");
27    Image AsteroidiKuva = LoadImage("asteroidi");
28
29    PlasmaCannon plasmaTykkiP1;
30    PlasmaCannon plasmaTykkiP2;
31
32    DoubleMeter elkkuMittariP1;
33    DoubleMeter elkkuMittariP2;
34
35    IntMeter pistelaskuriP1;
36    IntMeter pistelaskuriP2;
37
38    int AsteroidiLaskuri = 0;
39
40
41    public override void Begin()
42    {
43       //Kutsutaan Pelin luovat aliohjelmat
44        Pelaaja1 = LuoPelaaja(IhmisAlus, Level.Left + 50);
45        Pelaaja2 = LuoPelaaja(AlienAlus, Level.Right - 50);
46
47        LuoKentta();
48        LisaaOhjaimet();
49       
50       
51        elkkuMittariP1 = LisaaElkut(Level.Left + 50, Level.Top, Color.Red);
52        elkkuMittariP2 = LisaaElkut(Level.Right - 50, Level.Top, Color.LimeGreen);
53
54        LisaaNaytot();
55        pistelaskuriP1 = LisaaLaskurit(Level.Left + 20, Level.Top - 50);
56        pistelaskuriP2 = LisaaLaskurit(Level.Right + 20, Level.Top - 50);
57
58        while (AsteroidiLaskuri < 15)
59        {
60            LuoSatunnainenAsteroidi();
61            AsteroidiLaskuri++;
62        }
63
64    }
65
66   // Luodaan Kenttä
67    void LuoKentta()
68    {
69        Level.CreateBorders(0.5, false);
70        Level.Background.Image = taustaKuva;
71        Level.Background.FitToLevel();
72        Camera.ZoomToLevel();
73
74
75        //Luodaan plasmatykki
76        plasmaTykkiP1 = new PlasmaCannon(20, 5);
77        plasmaTykkiP1.ProjectileCollision = PlasmaPalloOsuu;
78        plasmaTykkiP1.IsVisible = false;
79        plasmaTykkiP1.InfiniteAmmo = true;
80        Pelaaja1.Add(plasmaTykkiP1);
81
82        //Luodaan plasmatykki
83        plasmaTykkiP2 = new PlasmaCannon(20, 5);
84        plasmaTykkiP2.ProjectileCollision = PlasmaPalloOsuu;
85        plasmaTykkiP2.IsVisible = false;
86        plasmaTykkiP2.InfiniteAmmo = true;
87        plasmaTykkiP2.Angle = Angle.StraightAngle;
88        Pelaaja2.Add(plasmaTykkiP2);
89
90    }
91
92    PhysicsObject LuoPelaaja(Image kuva, double x)
93    {
94        PhysicsObject Pelaaja = new PhysicsObject(40, 50);
95        Pelaaja.Image = kuva;
96        Pelaaja.Restitution = 0.5;
97        Pelaaja.X = x;
98        Pelaaja.Mass = 100.0;
99        Add(Pelaaja);
100        return Pelaaja;
101    }
102
103    void LuoSatunnainenAsteroidi()
104    {
105        double asteroidiX = RandomGen.NextDouble(Level.Left + 100.0, Level.Right - 100.0);
106        double asteroidiy = RandomGen.NextDouble(Level.Bottom, Level.Top);
107        Asteroidi = new PhysicsObject(50, 50);
108        Asteroidi.Image = AsteroidiKuva;
109        Asteroidi.X = asteroidiX;
110        Asteroidi.Y = asteroidiy;
111        Asteroidi.Mass = 10000;
112        Add(Asteroidi);
113    }
114
115
116    //Aliohjelma elkkumittareiden tekemiseen
117    DoubleMeter LisaaElkut(double x, double y, Color vari)
118    {
119       DoubleMeter mittari = new DoubleMeter(1);
120        mittari.MaxValue = 1;
121        ProgressBar elkkuPalkki = new ProgressBar(200, 25);
122        elkkuPalkki.BindTo(mittari);
123        Add(elkkuPalkki);
124
125        mittari.LowerLimit += elkutLoppu;
126
127        elkkuPalkki.X = x;
128        elkkuPalkki.Y = y;
129        elkkuPalkki.BarColor = vari;
130        elkkuPalkki.BorderColor = vari;
131        return mittari;
132    }
133
134   //Lisätään ohjaimet
135    void LisaaOhjaimet()
136  {
137       Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, "Pelaaja1 kaasu",Pelaaja1, 5000.0, IhmisAlus2);
138       Keyboard.Listen(Key.W, ButtonState.Released, LiikutaPelaajaa, null, Pelaaja1, 0.0, IhmisAlus);
139       Keyboard.Listen(Key.A, ButtonState.Down, KaannaPelaajaa, "Pelaaja1 käänny vasemmalle", Pelaaja1, 3.0);
140       Keyboard.Listen(Key.A, ButtonState.Released, KaannaPelaajaa, null, Pelaaja1, 0.0);
141       Keyboard.Listen(Key.D, ButtonState.Down, KaannaPelaajaa, "Pelaaja1 käänny oikealle", Pelaaja1, -3.0);
142       Keyboard.Listen(Key.D, ButtonState.Released, KaannaPelaajaa, null, Pelaaja1, 0.0);
143       Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Pelaaja1 ammu aseella", plasmaTykkiP1);
144
145       Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, "Pelaaja2 kaasu", Pelaaja2, -5000.0, AlienAlus2);
146       Keyboard.Listen(Key.Up, ButtonState.Released, LiikutaPelaajaa, null, Pelaaja2, 0.0, AlienAlus);
147       Keyboard.Listen(Key.Left, ButtonState.Down, KaannaPelaajaa, "Pelaaja2 käänny vasemmalle", Pelaaja2, 3.0);
148       Keyboard.Listen(Key.Left, ButtonState.Released, KaannaPelaajaa, null, Pelaaja2, 0.0);
149       Keyboard.Listen(Key.Right, ButtonState.Down, KaannaPelaajaa, "Pelaaja2 käänny oikealle", Pelaaja2, -3.0);
150       Keyboard.Listen(Key.Right, ButtonState.Released, KaannaPelaajaa, null, Pelaaja2, 0.0);
151       Keyboard.Listen(Key.RightControl, ButtonState.Down, AmmuAseella, "Pelaaja2 ammu aseella", plasmaTykkiP2);
152
153       Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Ohjeet");
154       PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
155       Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
156    }
157 
158    //Aliohjelma Pelaajan liikuttamiseen
159    void LiikutaPelaajaa(PhysicsObject pelaaja, double nopeus, Image kuva)
160   {
161       Vector pelaajanSuunta = Vector.FromLengthAndAngle(nopeus, pelaaja.Angle);
162       pelaaja.Push(pelaajanSuunta);
163       pelaaja.Image = kuva;
164   }
165
166    //Aliohjelma pelaajan kääntämiseen
167    void KaannaPelaajaa(PhysicsObject pelaaja, double voima)
168   {
169       pelaaja.AngularVelocity = voima;
170   }
171
172   
173    IntMeter LisaaLaskurit( double x, double y)
174    {
175    IntMeter pisteLaskuri = new IntMeter(0);
176    pisteLaskuri.MaxValue = 5;
177    Label pisteNaytto = new Label(); 
178    pisteNaytto.X = x;
179    pisteNaytto.Y = y;
180    pisteNaytto.TextColor = Color.Black;
181    pisteNaytto.Color = Color.White;
182    pisteNaytto.Title = "Pisteet";
183    pisteNaytto.BindTo(pisteLaskuri);
184
185    pisteLaskuri.UpperLimit += Pelaajavoittaa;
186    Add(pisteNaytto);
187    return pisteLaskuri;
188    }
189   
190
191
192 
193   
194    void LisaaNaytot()
195{
196    Label pelaaja1text = new Label("Pelaaja 1");
197    Label pelaaja2text = new Label("Pelaaja 2");
198    pelaaja1text.X = Level.Left + 10;
199    pelaaja1text.Y = Level.Top;
200    pelaaja2text.X = Level.Right - 10;
201    pelaaja2text.Y = Level.Top;
202    pelaaja1text.TextColor = Color.White;
203    pelaaja2text.TextColor = Color.White;
204    Add(pelaaja1text);
205    Add(pelaaja2text);
206}
207
208    //Aliohjelma plasmapallon osumiseen
209    void PlasmaPalloOsuu(PhysicsObject ammus, PhysicsObject kohde)
210   {
211       ammus.Destroy();
212       Explosion rajahdys = new Explosion(20);
213       rajahdys.Position = ammus.Position;
214       rajahdys.Force = 10;
215       Add(rajahdys);
216
217       if (kohde == Pelaaja1)
218       {
219           elkkuMittariP1.Value --;
220       }
221       else if (kohde == Pelaaja2)
222       {
223           elkkuMittariP2.Value--;
224       }
225   }
226
227    //Aliohjelma aseella ampumiseen
228    void AmmuAseella(PlasmaCannon tykki)
229   {
230       PhysicsObject ammus = tykki.Shoot();
231
232       if (ammus != null)
233       {
234           ammus.Size *= 1;
235           
236           if (tykki == plasmaTykkiP1)
237           {
238               ammus.Color = Color.Red; // Pelaaja1 ammusten väri vaihdetaan punaiseksi
239           }   
240        }     
241   }
242
243    void elkutLoppu()
244    {
245        if (elkkuMittariP1.Value == 0)
246        {
247            elkkuMittariP1.Value = 100;
248            Remove(Pelaaja1);
249            Explosion rajahdys = new Explosion(100);
250            rajahdys.Position = Pelaaja1.Position;
251            rajahdys.Force = 100;
252            Add(rajahdys);
253            pistelaskuriP2.Value++;
254            if (pistelaskuriP2.Value == 5) { return; }
255            MessageDisplay.Add("Pelaaja1 tuhottu.");
256            Timer.SingleShot(2.0, respaaP1);
257
258        }
259        else if (elkkuMittariP2.Value == 0)
260        {
261            elkkuMittariP2.Value = 100;
262            Remove(Pelaaja2);
263            Explosion rajahdys = new Explosion(100);
264            rajahdys.Position = Pelaaja2.Position;
265            rajahdys.Force = 100;
266            Add(rajahdys);
267            pistelaskuriP1.Value++;
268            if (pistelaskuriP1.Value == 5) { return; }
269            MessageDisplay.Add("Pelaaja2 tuhottu.");
270            Timer.SingleShot(2.0, respaaP2);
271
272        }
273    }
274
275    void respaaP1()
276    {
277        Pelaaja1.X = Level.Left + 50;
278        Pelaaja1.Y = 0;
279        Pelaaja1.Angle = Angle.Zero;
280        Add(Pelaaja1);
281    }
282    void respaaP2()
283    {
284        Pelaaja2.X = Level.Right - 50;
285        Pelaaja2.Y = 0;
286        Pelaaja2.Angle = Angle.Zero;
287        Add(Pelaaja2);
288    }
289
290    void Pelaajavoittaa()
291    {
292        ClearAll();
293        string voittaja = "";
294        if (pistelaskuriP1.Value == 5)
295        { voittaja = "Pelaaja 1 "; }
296
297        else if (pistelaskuriP2.Value == 5)
298        { voittaja = "Pelaaja 2"; }
299        Level.Background.Image = taustaKuva;
300        Level.Background.FitToLevel();
301
302        Label tekstikentta = new Label(voittaja + " " + "voitti pelin!!!");
303        tekstikentta.TextColor = Color.HotPink;
304        tekstikentta.TextScale = new Vector(5.0, 5.0);
305        Add(tekstikentta);
306
307        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
308        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
309
310    }
311}
Note: See TracBrowser for help on using the repository browser.