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

Revision 6733, 5.5 KB checked in by jesirkia, 4 years ago (diff)

Laitettiin niin että kun toinen kuolee niin peli kysyy että aloitetaanko uudestaan?

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    PhysicsObject pelaaja1;
14    PhysicsObject pelaaja2;
15
16    DoubleMeter pelaajan1Health;
17    DoubleMeter pelaajan2Health;
18
19    Image ammuksenKuva = LoadImage("Ammus");
20
21    Image pelaaja1tank = LoadImage("pelaaja1tank");
22    Image pelaaja2tank = LoadImage("pelaaja2tank");
23
24    double maxNopeus = 1500.0;
25
26    public override void Begin()
27    {
28        IsFullScreen = true;
29
30        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Quit game");
31        ControllerOne.Listen(Button.Back, ButtonState.Pressed, ConfirmExit, "Quit game");
32
33       
34
35        MultiSelectWindow alkuValikko = new MultiSelectWindow("VoltsTank",
36"Play", "Quit game");
37        Add(alkuValikko);
38        alkuValikko.DefaultCancel = 1;
39        alkuValikko.AddItemHandler(0, AloitaPeli);
40        alkuValikko.AddItemHandler(1, Exit);
41
42
43     
44    }
45
46    void AloitaPeli()
47    {
48        ClearAll();
49        LuoPelaaja1();
50        LuoPelaaja2();
51
52        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.1,
53        LiikutaPelaajaa, "Liikuta pelaajaa tattia pyörittämällä.", pelaaja1);
54
55        ControllerOne.ListenAnalog(AnalogControl.RightTrigger, 0.1,
56        AmmuTykilla, "Käytä oikeaa liipasinta ampumisen tavoin.", pelaaja1);
57
58        ControllerTwo.ListenAnalog(AnalogControl.LeftStick, 0.1,
59    LiikutaPelaajaa, "Liikuta pelaajaa tattia pyörittämällä.", pelaaja2);
60
61        ControllerTwo.ListenAnalog(AnalogControl.RightTrigger, 0.1,
62        AmmuTykilla, "Käytä oikeaa liipasinta ampumisen tavoin.", pelaaja2);
63
64        ControllerOne.Listen(Button.RightTrigger, ButtonState.Down, AmmuAseella, "Ammu", pelaajan1Ase);
65        ControllerOne.Listen(Button.LeftTrigger, ButtonState.Down, AmmuAseella, "Ammu", pelaajan1Ase);
66        ControllerTwo.Listen(Button.RightTrigger, ButtonState.Down, AmmuAseella, "Ammu", pelaajan2Ase);
67        ControllerTwo.Listen(Button.LeftTrigger, ButtonState.Down, AmmuAseella, "Ammu", pelaajan2Ase);
68
69        //ControllerTwo.Listen(Button.RightTrigger, ButtonState.Down, AmmuAseella, "Ammu", pelaajan2Ase);
70        //ControllerTwo.Listen(Button.LeftTrigger, ButtonState.Down, AmmuAseella, "Ammu", pelaajan2Ase);
71    }
72
73    void LiikutaPelaajaa(AnalogState tatinTila, PhysicsObject pelaaja)
74    {
75        pelaaja.Angle = tatinTila.StateVector.Angle;
76        pelaaja.Move(tatinTila.StateVector * maxNopeus);
77
78    }
79    void AmmuTykilla(AnalogState liipasimenTila, PhysicsObject pelaaja)
80    {
81        double liipasimenAsento = liipasimenTila.State;
82    }
83    void LuoPelaaja1()
84    {
85     
86        pelaaja1 = new PhysicsObject(40, 40);
87        pelaaja1.LinearDamping = 0.1;
88        pelaaja1.AngularDamping = 0.1;
89        Add(pelaaja1);
90
91        pelaaja1.Image = pelaaja1tank;
92
93        pelaajan1Ase = new AssaultRifle(30, 10);
94        pelaajan1Ase.Ammo.Value = 1000;
95        pelaajan1Ase.ProjectileCollision = AmmusOsui;
96        pelaajan1Ase.IsVisible = false;
97
98        pelaaja1.Add(pelaajan1Ase);
99
100        pelaajan1Health = new DoubleMeter(100, 0, 100);
101        pelaajan1Health.LowerLimit += delegate {         
102            pelaajan1Ase.Ammo.Value = 0;
103            pelaajan1Ase.Destroy();
104
105            Explosion rajahdys = new Explosion(200);
106            rajahdys.Position = pelaaja1.Position;
107            Add(rajahdys);
108
109            pelaaja1.Destroy();
110            LoppuValikko();
111           
112        };
113    }
114    void LuoPelaaja2()
115    {
116        pelaaja2 = new PhysicsObject(40, 40);
117        pelaaja2.LinearDamping = 0.1;
118        pelaaja2.AngularDamping = 0.1;
119        Add(pelaaja2);
120
121        pelaaja2.Image = pelaaja2tank;
122
123        pelaajan2Ase = new AssaultRifle(30, 10);
124        pelaajan2Ase.ProjectileCollision = AmmusOsui;
125        pelaajan2Ase.IsVisible = false;
126       
127        pelaaja2.Add(pelaajan2Ase);
128
129        pelaajan2Health = new DoubleMeter(100, 0, 100);
130        pelaajan2Health.LowerLimit += delegate
131        {
132            pelaajan2Ase.Ammo.Value = 0;
133            pelaajan2Ase.Destroy();
134
135            Explosion rajahdys = new Explosion(200);
136            rajahdys.Position = pelaaja2.Position;
137            Add(rajahdys);
138            pelaaja2.Destroy();
139            LoppuValikko();
140        };
141    }
142
143    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
144    {
145        ammus.Destroy();
146        if (kohde == pelaaja1) 
147        {
148            pelaajan1Health.Value -= 20;
149        }
150        else if (kohde == pelaaja2)
151        {
152            pelaajan2Health.Value -= 20;
153        }
154    }
155    void AmmuAseella(AssaultRifle ase)
156    {
157        PhysicsObject ammus = ase.Shoot();
158
159        if (ammus != null)
160        {
161            ammus.Size *= 1;
162            ammus.Image = ammuksenKuva;
163            ammus.MaximumLifetime = TimeSpan.FromSeconds(1.5);
164        }
165        if (ammus != null)
166        {
167            ammus.Size *= 1;
168            ammus.Image = ammuksenKuva;
169            ammus.MaximumLifetime = TimeSpan.FromSeconds(1.5);
170        }
171    }
172    void LoppuValikko()
173    {
174        MultiSelectWindow loppuValikko = new MultiSelectWindow("Do you want to play again?",
175"Play again", "Main menu");
176        Add(loppuValikko);
177        loppuValikko.DefaultCancel = 1;
178        loppuValikko.AddItemHandler(0, AloitaPeli);
179        loppuValikko.AddItemHandler(1, Exit);
180
181    }
182}
Note: See TracBrowser for help on using the repository browser.