source: 2016/26/JonniN/TankHero/TankHero/TankHero/TankHero.cs @ 7606

Revision 7606, 5.3 KB checked in by jonnurmi, 5 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 TankHero : PhysicsGame
10{
11   
12    Cannon torni;
13    Cannon botintorni;
14    Image leopard2a4 = LoadImage("leopard2a4");
15    Image torninKuva = LoadImage("leopard2a4valmistorni");
16    Image kartanKuva = LoadImage("kartta");
17    Image puuKuva = LoadImage("puu");
18    Image hiekanKuva = LoadImage("hiekka");
19    Image bottiRunko = LoadImage("t90runko");
20    Image bottiTorni = LoadImage("t90torni");
21    PhysicsObject pelaaja;
22    PhysicsObject botti;
23    Vector spawn = new Vector(-1400, -1300);
24    public override void Begin()
25    {
26        Mouse.IsCursorVisible = true;
27       
28        Vector kursoriruudulla = Mouse.PositionOnScreen;
29        Vector paikkakentällä = Mouse.PositionOnWorld;
30        LuoValikko();
31        LuoKentta();
32        LuoPelaaja();
33        LuoBotti();
34        LuoOhjaimet();
35        MediaPlayer.Play("684240_Zound---Metallic");
36       
37
38        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
39        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
40    }
41   
42    void LuoValikko()
43    {
44        MultiSelectWindow alkuValikko = new MultiSelectWindow("Main Menu", "Start game", "Quit the game");
45        alkuValikko.AddItemHandler(0, Begin);
46        alkuValikko.AddItemHandler(1, Quit);
47        Add(alkuValikko);
48    }
49    void Quit()
50    {
51       
52    }
53    void LuoPelaaja()
54    {
55        pelaaja = new PhysicsObject(150, 200);
56        pelaaja.Shape = Shape.FromImage(leopard2a4);
57        pelaaja.Image = leopard2a4;
58        pelaaja.LinearDamping = 0.90;
59        pelaaja.AngularDamping = 0.99;
60        pelaaja.Position = spawn;
61        pelaaja.Tag = "pelaaja1";
62        Add(pelaaja);
63        Camera.Zoom(1.5);
64        Camera.Follow(pelaaja);
65        //Camera.ZoomToAllObjects();
66        pelaaja.IgnoresExplosions = true;
67
68
69        torni = new Cannon(180, 100);
70        torni.Shape = Shape.FromImage(torninKuva);
71        torni.Image = torninKuva;
72        torni.Position = new Vector(-7, -37);
73        torni.Ammo.Value = 10000;
74        pelaaja.Add(torni);
75
76    }
77    void LuoBotti()
78    {
79        PhysicsObject botti = new PhysicsObject(150, 200);
80        botti.Image = bottiRunko;
81        botti.LinearDamping = 0.90;
82        botti.AngularDamping = 0.99;
83        Add(botti);
84
85        botintorni = new Cannon(100, 180);
86        botintorni.Image = bottiTorni;
87        botintorni.Position = new Vector(-10, 40);
88        botti.Add(botintorni);
89
90        FollowerBrain botinaivot = new FollowerBrain("pelaaja1");
91        botinaivot.Speed = 200;
92        botinaivot.DistanceFar = 500;
93        botti.Brain = botinaivot;
94        botinaivot.Active = true;
95
96        botinaivot.TargetClose += mitaTapahtuuKunOllaanLahella;
97
98
99
100    }
101    void mitaTapahtuuKunOllaanLahella()
102    {
103       
104    }
105    void LuoKentta()
106    {
107        Level.Background.Color = Color.LightGreen;
108        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kartta");
109        ruudut.SetTileMethod(Color.FromHexCode("FFD800"), LuoHiekka);
110        ruudut.SetTileMethod(Color.FromHexCode("4CFF00"), LuoPuu);
111        ruudut.Execute(100, 100);
112       
113
114    }
115
116    void LuoHiekka(Vector paikka, double leveys, double korkeus)
117    {
118        GameObject hiekka = new GameObject(100, 100);
119        hiekka.Image = hiekanKuva;
120        hiekka.Position = paikka;
121        Add(hiekka); 
122    }
123    void LuoPuu(Vector paikka, double leveys, double korkeus)
124    {
125        PhysicsObject puu = PhysicsObject.CreateStaticObject(leveys, korkeus);
126        puu.Position = paikka;
127        puu.Image = puuKuva;
128        Add(puu);
129    }
130
131    void LuoOhjaimet()
132    {
133        Keyboard.Listen(Key.W, ButtonState.Down, Aja, null, new Vector(0, 1200));
134        Keyboard.Listen(Key.S, ButtonState.Down, Aja, null, new Vector(0, -400));
135        Keyboard.Listen(Key.A, ButtonState.Down, Kaanny, null, 1);
136        Keyboard.Listen(Key.D, ButtonState.Down, Kaanny, null, -1);
137
138        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, AmmuTykilla, "Ammu", torni);
139        Mouse.ListenMovement(0.1, TorninLiike, "Käännä tornia");
140
141       
142
143    }
144    void AmmuTykilla(Cannon tykki)
145    {
146        PhysicsObject ammus = tykki.Shoot();
147
148        if(ammus !=null)
149        {
150            ammus.Size *= 1;
151            tykki.FireRate = 10;
152            Explosion rajahdys = new Explosion(60);
153            rajahdys.Position = torni.AbsolutePosition + torni.AbsoluteAngle.GetVector().Normalize() * 95;
154            rajahdys.Speed = 500;
155            rajahdys.UseShockWave = false;
156            Add(rajahdys);
157        }
158        tykki.ProjectileCollision = AmmusOsuu;
159    }
160    void AmmusOsuu(PhysicsObject ammus, PhysicsObject kohde)
161    {
162        ammus.Destroy();
163        kohde.Destroy();
164       
165    }
166    void TorninLiike(AnalogState hiirenLiike)
167    {
168        Vector suunta = (Mouse.PositionOnWorld - torni.AbsolutePosition).Normalize();
169        torni.AbsoluteAngle = suunta.Angle;
170    }
171    void Aja(Vector suunta)
172    {
173        Vector menosuunta = Vector.FromLengthAndAngle(suunta.Y, pelaaja.Angle);
174        pelaaja.Push(menosuunta);
175
176    }
177    void Kaanny(int kaannos)
178    {
179        pelaaja.Angle += Angle.FromDegrees(kaannos);
180    }
181}
Note: See TracBrowser for help on using the repository browser.