source: 2012/27/NikoKi/EpicTankBattle/EpicTankBattle/EpicTankBattle/EpicTankBattle.cs @ 3611

Revision 3611, 7.9 KB checked in by nivikinn, 9 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 Tankki : PlatformCharacter2
10{
11    public bool liikkumassa = false;
12    public Tankki(double leveys, double korkeus)
13        : base(leveys, korkeus)
14    {
15    }
16}
17
18public class EpicTankBattle : PhysicsGame
19{
20    Image Keltainentankki = LoadImage("Keltainentankki");
21    Image Sininentankki = LoadImage("Sininentankki");
22    Image Vihreatankki = LoadImage("Vihreatankki");
23    Image Punainentankki = LoadImage("Punainentankki");
24    Image Valkoinentankki = LoadImage("Valkoinentankki");
25    Image Mustatankki = LoadImage("Mustatankki");
26    Image Tykki = LoadImage("Tykki");
27    Image Rajahdys = LoadImage("Rajahdys");
28
29
30
31    Tankki P1;
32    Tankki P2;
33    Cannon P1tykki;
34    Cannon P2tykki;
35    Direction tankki1suunta = Direction.Right;
36    Direction tankki2suunta = Direction.Left;
37
38    public override void Begin()
39    {
40        // TODO: Kirjoita ohjelmakoodisi tähän
41
42
43
44        Gravity = new Vector(0, -2000);
45        //Level.CreateBorders();
46        //Surface maasto = Surface.CreateBottom(Level, 20, 200, 20);
47        //Add(maasto);
48
49        ColorTileMap Ruudut = ColorTileMap.FromLevelAsset("Maapera");
50        Ruudut.SetTileMethod(Color.Black, LuoNelio);
51        Ruudut.Execute(20, 10);
52
53        Level.CreateBorders();
54        Camera.StayInLevel = false;
55        Camera.ZoomToLevel();
56        /*Surface.CreateLeft(Level);
57        Surface.CreateRight(Level);*/
58
59        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
60        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
61
62        P1 = new Tankki(40, 25);
63        P1.Tag = "tankki";
64        P1.Image = Punainentankki;
65        P1.PlatformTolerance = 1;
66        P1.Acceleration = 0.6;
67        P1.MaxVelocity = 3;
68        P1.KineticFriction = 0;
69        Add(P1);
70
71        P1tykki = new Cannon(60, 7);
72        P1tykki.Tag = "tykki";
73        P1tykki.Image = LoadImage("tykki");
74        P1tykki.Angle = Angle.StraightAngle;
75        P1.Add(P1tykki);
76
77        P2 = new Tankki(40, 25);
78        P2.Tag = "tankki";
79        P2.Image = Vihreatankki;
80        P2.PlatformTolerance = 1;
81        P2.FacingDirection = Direction.Left;
82        Add(P2);
83
84        P1.X = -700;
85        P1.Y = 10;
86        P2.X = 700;
87        P2.Y = 10;
88
89        P2tykki = new Cannon(60, 7);
90        P2tykki.Tag = "tykki";
91        P2tykki.Image = LoadImage("tykki");
92        P2.Add(P2tykki);
93
94        Nappaimisto();
95    }
96
97    void LuoNelio(Vector paikka, double leveys, double korkeus)
98    {
99        PhysicsObject nelio = PhysicsObject.CreateStaticObject(leveys, korkeus);
100        nelio.Position = paikka;
101        nelio.Color = Color.Brown;
102        nelio.CollisionIgnoreGroup = 1;
103        nelio.KineticFriction = 0;
104        nelio.Tag = "nelio";
105        Add(nelio);
106    }
107
108    void LiikutaP1(PlatformCharacter2 P1, Vector liike)
109    {
110
111        // LiikutaP1.Velocity = LiikutaP1.Velocity + Liike;
112
113    }
114
115    void Nappaimisto()
116    {
117        Vector vasemmalle = new Vector(-1400, 1400);
118        Vector oikealle = new Vector(1400, 1400);
119
120        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, null, P1, vasemmalle);
121        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, null, P1, oikealle);
122
123        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, null, P2, vasemmalle);
124        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, null, P2, oikealle);
125
126        Keyboard.Listen(Key.LeftControl, ButtonState.Down, Ammu, null, P1);
127        Keyboard.Listen(Key.RightControl, ButtonState.Down, Ammu, null, P2);
128
129        Keyboard.Listen(Key.W, ButtonState.Down, KaannaTykki1, null, P1tykki, 2);
130        Keyboard.Listen(Key.S, ButtonState.Down, KaannaTykki1, null, P1tykki, -2);
131
132        Keyboard.Listen(Key.Down, ButtonState.Down, KaannaTykki2, null, P2tykki, 2);
133        Keyboard.Listen(Key.Up, ButtonState.Down, KaannaTykki2, null, P2tykki, -2);
134
135        Keyboard.Listen(Key.LeftControl, ButtonState.Pressed, Ammu, null, P1, P1tykki);
136        Keyboard.Listen(Key.RightControl, ButtonState.Pressed, Ammu, null, P2, P2tykki);
137
138    }
139
140    void Liikuta(Tankki tankki, Vector liike)
141    {
142        if (Keyboard.GetKeyState(Key.Left) == ButtonState.Down && Keyboard.GetKeyState(Key.Right) == ButtonState.Down)
143            return;
144
145        if (Keyboard.GetKeyState(Key.A) == ButtonState.Down && Keyboard.GetKeyState(Key.D) == ButtonState.Down)
146            return;
147
148        if (liike.X < 0)
149        {
150            if (tankki == P1 && tankki1suunta == Direction.Right)
151            {
152                tankki1suunta = Direction.Left;
153                Vector v = Vector.FromAngle(P1tykki.Angle);
154                P1tykki.Angle = new Vector(-v.X, v.Y).Angle;
155            }
156            if (tankki == P2 && tankki2suunta == Direction.Right)
157            {
158                tankki2suunta = Direction.Left;
159                Vector v = Vector.FromAngle(P2tykki.Angle);
160                P2tykki.Angle = new Vector(-v.X, v.Y).Angle;
161            }
162
163        }
164
165        else if (liike.X > 0)
166        {
167            if (tankki == P1 && tankki1suunta == Direction.Left)
168            {
169                tankki1suunta = Direction.Right;
170                Vector v = Vector.FromAngle(P1tykki.Angle);
171                P1tykki.Angle = new Vector(-v.X, v.Y).Angle;
172            }
173            if (tankki == P2 && tankki2suunta == Direction.Left)
174            {
175                tankki2suunta = Direction.Right;
176                Vector v = Vector.FromAngle(P2tykki.Angle);
177                P2tykki.Angle = new Vector(-v.X, v.Y).Angle;
178            }
179        }
180
181        // Tankki.Walk(Direction.Left);
182        tankki.Push(liike);
183    }
184
185    void Ammu(PlatformCharacter2 Tankki)
186    {
187        //    Tankki.Shoot(1000000);
188    }
189
190    void KaannaTykki1(Cannon tykki, int suunta)
191    {
192        double tykinkulma = tykki.Angle.Degrees;
193        double uusikulma;
194       
195        if (tankki1suunta == Direction.Right)
196            uusikulma = tykinkulma + suunta;
197        else
198            uusikulma = tykinkulma - suunta;
199
200        if ( (tankki1suunta == Direction.Right && uusikulma <= -90 && uusikulma >= -180 ) ||
201            (tankki1suunta == Direction.Left && uusikulma <= 0 && uusikulma >= -90))
202        {
203            tykki.Angle = Angle.FromDegrees(uusikulma);
204        }
205    }
206
207    void KaannaTykki2(Cannon tykki, int suunta)
208    {
209        double tykinkulma = tykki.Angle.Degrees;
210        double uusikulma;
211
212        if (tankki2suunta == Direction.Right)
213            uusikulma = tykinkulma - suunta;
214        else
215            uusikulma = tykinkulma + suunta;
216
217        if ((tankki2suunta == Direction.Right && uusikulma <= -90 && uusikulma >= -180) ||
218            (tankki2suunta == Direction.Left && uusikulma <= 0 && uusikulma >= -90))
219        {
220            tykki.Angle = Angle.FromDegrees(uusikulma);
221        }
222    }
223
224    void Ammu(PhysicsObject pelaaja, Cannon tykki)
225    {
226        PhysicsObject ammus = new PhysicsObject(30, 30);
227        ammus.Position = pelaaja.Position - Vector.FromLengthAndAngle(tykki.Width / 2, tykki.Angle);
228        //ammus.LifetimeLeft = TimeSpan.FromMilliseconds(500);
229        Add(ammus);
230
231        ammus.Hit(-2000 * Vector.FromAngle(tykki.Angle));
232        AddCollisionHandler(ammus, "nelio", CollisionHandler.DestroyBoth);
233        AddCollisionHandler(ammus, "", CollisionHandler.DestroyObject);
234        AddCollisionHandler(ammus, "tankki", OsuuPelaajaan);
235    }
236
237    void OsuuPelaajaan(PhysicsObject ammus, PhysicsObject pelaaja)
238    {
239        pelaaja.Destroy();
240    }
241
242    void AlustaRajahdys()
243    {
244        //rajahdyssysteemi = new ExplosionSystem(Rajahdys, 5000);
245        //rajahdyssysteemi.MinScale = 1;
246        //rajahdyssysteemi.MaxScale = 5;
247        //Add(rajahdyssysteemi);
248    }
249
250}
251
252
Note: See TracBrowser for help on using the repository browser.