source: 2016/25/AaroV/Tankz/Tankz/Tankz/Tankz.cs @ 7489

Revision 7489, 3.5 KB checked in by koannak, 3 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 Tankz : PhysicsGame
10{
11    Tankki tankki;
12    Tankki tankki2;
13    Tankki tankki3;
14    public override void Begin()
15    {
16        tankki = Luotankki(-300,0,2);
17        tankki2 = Luotankki(300,0,3);
18        tankki3 = Luotankki(0, 0,4);
19        Surface maasto = Surface.CreateBottom(Level, 50, 200, 20, 50);
20        Add(maasto);
21        maasto.Restitution = 0.1;
22        Gravity = new Vector(0, -600);
23        Keyboard.Listen(Key.Down, ButtonState.Down, KaannaTykkia,null, tankki, -1.0);
24        Keyboard.Listen(Key.Up, ButtonState.Down, KaannaTykkia,null, tankki, 1.0);
25        Keyboard.Listen(Key.RightShift, ButtonState.Released, Ammu,null, tankki);
26        Keyboard.Listen(Key.W, ButtonState.Down, KaannaTykkia, null, tankki2, -1.0);
27        Keyboard.Listen(Key.S, ButtonState.Down, KaannaTykkia, null, tankki2, 1.0);
28        Keyboard.Listen(Key.Q, ButtonState.Released, Ammu, null, tankki2);
29        Keyboard.Listen(Key.A, ButtonState.Down, KaannaTykkia, null, tankki3, -1.0);
30        Keyboard.Listen(Key.Z, ButtonState.Down, KaannaTykkia, null, tankki3, 1.0);
31        Keyboard.Listen(Key.LeftShift, ButtonState.Released, Ammu, null, tankki3);
32
33        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
34        Level.Background.Color = Color.MediumTurquoise;
35        Camera.ZoomToAllObjects();
36
37    }
38     void KaannaTykkia(Tankki tankki, Double kulma)
39    { 
40        tankki.kulma += kulma;
41    }void Ammu(Tankki tankki) {
42        if (tankki.ElamaLaskuri.Value == 0) return;
43        Vector suunta = Vector.FromLengthAndAngle(tankki.tykki.Width, tankki.tykki.AbsoluteAngle);
44        PhysicsObject ammus = new PhysicsObject(10, 2);
45        ammus.Position = tankki.Position + suunta;
46        ammus.CollisionIgnoreGroup = tankki.CollisionIgnoreGroup;
47        ammus.Angle = tankki.tykki.AbsoluteAngle ;
48        Add(ammus);
49        ammus.Tag = "ammus";
50        AddCollisionHandler(ammus, CollisionHandler.DestroyObject);
51        ammus.LifetimeLeft = TimeSpan.FromSeconds(4);
52        ammus.Velocity = Vector.FromLengthAndAngle(850, tankki.tykki.AbsoluteAngle ) ;
53    }
54    Tankki Luotankki(Double X, Double Y,int tormausryhma) {
55       Tankki tankki = new Tankki(30, 30);
56        tankki.CollisionIgnoreGroup = tormausryhma;
57        Add(tankki);
58        tankki.X = X;
59        tankki.Y = Y;
60        tankki.Mass = 5;
61
62
63        AddCollisionHandler(tankki, "ammus", tankkiinosui);
64        return tankki;
65    }
66
67    void tankkiinosui(PhysicsObject tankki,PhysicsObject ammus)
68    {
69        Tankki pelaaja = (Tankki)tankki;
70        pelaaja.ElamaLaskuri.Value--;
71       
72    }
73}
74
75class Tankki : PhysicsObject
76{
77    private IntMeter elamaLaskuri = new IntMeter(3, 0, 3);
78    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
79    public GameObject tykki { get; set; }
80    public Double kulma { get; set; }
81    public Tankki(double leveys, double korkeus)
82        : base(leveys, korkeus)
83    {
84        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
85        tykki = new GameObject(this.Width / 1.5, this.Width / 5.0);
86        Add(tykki);
87        IsUpdated = true;
88    }
89
90    public override void Update(Time time)
91    {
92        tykki.Position = Vector.FromLengthAndAngle(tykki.Width * 1, Angle.FromDegrees(kulma));
93        tykki.Angle = Angle.FromDegrees(kulma);
94
95        base.Update(time);
96
97    }
98}
Note: See TracBrowser for help on using the repository browser.