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

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