source: 2015/27/JesseS/VoltsTank/VoltsTank/VoltsTank/VoltsTank.cs @ 6753

Revision 6753, 8.2 KB checked in by jesirkia, 4 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class VoltsTank : PhysicsGame
10{
11    AssaultRifle pelaajan1Ase;
12    AssaultRifle pelaajan2Ase;
13    AssaultRifle pelaajan3Ase;
14    PhysicsObject pelaaja1;
15    PhysicsObject pelaaja2;
16    PhysicsObject pelaaja3;
17
18    DoubleMeter pelaajan1Health;
19    DoubleMeter pelaajan2Health;
20    DoubleMeter pelaajan3Health;
21
22    Image ammuksenKuva = LoadImage("Ammus");
23
24    Image pelaaja1tank = LoadImage("pelaaja1tank");
25    Image pelaaja2tank = LoadImage("pelaaja2tank");
26    Image pelaaja3tank = LoadImage("pelaaja3tank");
27
28    Image taustakuva = LoadImage("taustakuva");
29
30    double maxNopeus = 2000.0;
31    int pelaajienMaara = 3;
32
33    public override void Begin()
34    {
35
36        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Quit game");
37        ControllerOne.Listen(Button.Back, ButtonState.Pressed, ConfirmExit, "Quit game");
38
39
40        IsFullScreen = true;
41        MultiSelectWindow alkuValikko = new MultiSelectWindow("VoltsTank",
42"Play", "Quit game");
43        Add(alkuValikko);
44        alkuValikko.DefaultCancel = 1;
45        alkuValikko.AddItemHandler(0, AloitaPeli);
46        alkuValikko.AddItemHandler(1, Exit);
47
48
49
50    }
51
52    void AloitaPeli()
53    {
54        ClearAll();
55        IsFullScreen = true;
56        LuoKentta();
57
58        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.1,
59        LiikutaPelaajaa, "Liikuta pelaajaa tattia pyörittämällä.", pelaaja1);
60
61        ControllerOne.ListenAnalog(AnalogControl.RightTrigger, 0.1,
62        AmmuTykilla, "Käytä oikeaa liipasinta ampumisen tavoin.", pelaaja1);
63
64        ControllerTwo.ListenAnalog(AnalogControl.LeftStick, 0.1,
65    LiikutaPelaajaa, "Liikuta pelaajaa tattia pyörittämällä.", pelaaja2);
66
67        ControllerTwo.ListenAnalog(AnalogControl.RightTrigger, 0.1,
68        AmmuTykilla, "Käytä oikeaa liipasinta ampumisen tavoin.", pelaaja2);
69
70        ControllerOne.Listen(Button.RightTrigger, ButtonState.Down, AmmuAseella, "Ammu", pelaajan1Ase);
71        ControllerOne.Listen(Button.LeftTrigger, ButtonState.Down, AmmuAseella, "Ammu", pelaajan1Ase);
72        ControllerTwo.Listen(Button.RightTrigger, ButtonState.Down, AmmuAseella, "Ammu", pelaajan2Ase);
73        ControllerTwo.Listen(Button.LeftTrigger, ButtonState.Down, AmmuAseella, "Ammu", pelaajan2Ase);
74
75        ControllerThree.Listen(Button.RightTrigger, ButtonState.Down, AmmuAseella, "Ammu", pelaajan3Ase);
76        ControllerThree.Listen(Button.LeftTrigger, ButtonState.Down, AmmuAseella, "Ammu", pelaajan3Ase);
77
78        ControllerThree.ListenAnalog(AnalogControl.LeftStick, 0.1,
79  LiikutaPelaajaa, "Liikuta pelaajaa tattia pyörittämällä.", pelaaja3);
80
81        ControllerThree.ListenAnalog(AnalogControl.RightTrigger, 0.1,
82        AmmuTykilla, "Käytä oikeaa liipasinta ampumisen tavoin.", pelaaja3);
83
84    }
85
86    void LiikutaPelaajaa(AnalogState tatinTila, PhysicsObject pelaaja)
87    {
88        pelaaja.Angle = tatinTila.StateVector.Angle;
89        pelaaja.Move(tatinTila.StateVector * maxNopeus);
90
91    }
92    void AmmuTykilla(AnalogState liipasimenTila, PhysicsObject pelaaja)
93    {
94        double liipasimenAsento = liipasimenTila.State;
95    }
96    void LuoPelaaja1(Vector paikka, double leveys, double korkeus)
97    {
98        pelaaja1 = LuoPelaaja(paikka, leveys, korkeus, pelaaja1tank);
99
100        pelaajan1Ase = new AssaultRifle(30, 10);
101        pelaajan1Ase.Ammo.Value = 1000;
102        pelaajan1Ase.ProjectileCollision = AmmusOsui;
103        pelaajan1Ase.IsVisible = false;
104
105        pelaaja1.Add(pelaajan1Ase);
106
107        pelaajan1Health = new DoubleMeter(100, 0, 100);
108        pelaajan1Health.LowerLimit += delegate
109        {
110            pelaajan1Ase.Ammo.Value = 0;
111            pelaajan1Ase.Destroy();
112            pelaajienMaara--;
113            Explosion rajahdys = new Explosion(200);
114            rajahdys.Position = pelaaja1.Position;
115            Add(rajahdys);
116
117            pelaaja1.Destroy();
118            if (pelaajienMaara < 2)
119                LoppuValikko();
120
121        };
122    }
123    void LuoPelaaja2(Vector paikka, Double leveys, Double korkeus)
124    {
125        pelaaja2 = LuoPelaaja(paikka, leveys, korkeus, pelaaja2tank);
126
127        pelaajan2Ase = new AssaultRifle(30, 10);
128        pelaajan2Ase.Ammo.Value = 1000;
129        pelaajan2Ase.ProjectileCollision = AmmusOsui;
130        pelaajan2Ase.IsVisible = false;
131
132        pelaaja2.Add(pelaajan2Ase);
133
134        pelaajan2Health = new DoubleMeter(100, 0, 100);
135        pelaajan2Health.LowerLimit += delegate
136        {
137            pelaajan2Ase.Ammo.Value = 0;
138            pelaajan2Ase.Destroy();
139            pelaajienMaara--;
140            Explosion rajahdys = new Explosion(200);
141            rajahdys.Position = pelaaja1.Position;
142            Add(rajahdys);
143
144            pelaaja1.Destroy();
145            if (pelaajienMaara < 2)
146                LoppuValikko();
147
148        };
149    }
150    void LuoPelaaja3(Vector paikka, Double leveys, Double korkeus)
151    {
152        pelaaja3 = LuoPelaaja(paikka, leveys, korkeus, pelaaja3tank);
153
154        pelaajan3Ase = new AssaultRifle(30, 10);
155        pelaajan3Ase.Ammo.Value = 1000;
156        pelaajan3Ase.ProjectileCollision = AmmusOsui;
157        pelaajan3Ase.IsVisible = false;
158
159        pelaaja3.Add(pelaajan3Ase);
160
161        pelaajan3Health = new DoubleMeter(100, 0, 100);
162        pelaajan3Health.LowerLimit += delegate
163        {
164            pelaajan3Ase.Ammo.Value = 0;
165            pelaajan3Ase.Destroy();
166            pelaajienMaara--;
167            Explosion rajahdys = new Explosion(200);
168            rajahdys.Position = pelaaja3.Position;
169            Add(rajahdys);
170
171            pelaaja3.Destroy();
172            if (pelaajienMaara < 2)
173                LoppuValikko();
174
175        };
176    }
177
178    PhysicsObject LuoPelaaja(Vector paikka, double leveys, double korkeus, Image kuva)
179    {
180
181        PhysicsObject pelaaja1 = new PhysicsObject(leveys, korkeus);
182        pelaaja1.LinearDamping = 0.1;
183        pelaaja1.AngularDamping = 0.1;
184        Add(pelaaja1);
185
186        pelaaja1.Image = kuva;
187
188        pelaaja1.Position = paikka;
189
190
191        return pelaaja1;
192    }
193
194    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
195    {
196        ammus.Destroy();
197        if (kohde == pelaaja1)
198        {
199            pelaajan1Health.Value -= 20;
200        }
201        else if (kohde == pelaaja2)
202        {
203            pelaajan2Health.Value -= 20;
204        }
205        else if (kohde == pelaaja3)
206        {
207           
208            pelaajan3Health.Value -= 20;
209        }
210    }
211    void AmmuAseella(AssaultRifle ase)
212    {
213        PhysicsObject ammus = ase.Shoot();
214
215        if (ammus != null)
216        {
217            ammus.Size *= 1;
218            ammus.Image = ammuksenKuva;
219            ammus.MaximumLifetime = TimeSpan.FromSeconds(1.5);
220        }
221        if (ammus != null)
222        {
223            ammus.Size *= 1;
224            ammus.Image = ammuksenKuva;
225            ammus.MaximumLifetime = TimeSpan.FromSeconds(1.5);
226        }
227    }
228    void LoppuValikko()
229    {
230        MultiSelectWindow loppuValikko = new MultiSelectWindow("Do you want to play again?",
231"Play again", "Main menu");
232        Add(loppuValikko);
233        loppuValikko.DefaultCancel = 1;
234        loppuValikko.AddItemHandler(0, AloitaPeli);
235        loppuValikko.AddItemHandler(1, Exit);
236
237    }
238    void LuoKentta()
239    {
240        TileMap ruudut = TileMap.FromLevelAsset("Map1");
241        ruudut.SetTileMethod('#', LuoPalikka);
242        ruudut.SetTileMethod('1', LuoPelaaja1);
243        ruudut.SetTileMethod('2', LuoPelaaja2);
244        ruudut.SetTileMethod('3', LuoPelaaja3);
245
246        ruudut.Execute(40, 40);
247        Camera.ZoomToLevel();
248
249        //GameObject kehys = new GameObject(taustakuva);
250        //kehys.Width = 3000;
251        //kehys.Height = Screen.Height;
252        //Add(kehys, -3);
253
254        Level.Background.Color = Color.Aqua;
255
256    }
257    void LuoPalikka(Vector paikka, double leveys, double korkeus)
258    {
259        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
260        palikka.Position = paikka;
261        palikka.Color = Color.Black;
262        Add(palikka);
263
264    }
265
266
267}
Note: See TracBrowser for help on using the repository browser.