source: 2011/31/JoonasM/TankSurvival/TankSurvival/TankSurvival/Peli.cs @ 2540

Revision 2540, 5.2 KB checked in by joarmuho, 8 years ago (diff)

Talletus.

RevLine 
[2509]1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Peli : PhysicsGame
10{
11    Image olionKuva = LoadImage("pelaaja");
[2540]12    Image palikanKuva = LoadImage("seinä");
13    Image vihunKuva = LoadImage("vihollinen");
14
[2509]15    PhysicsObject pelaaja;
[2540]16    PlasmaCannon plasmaTykki;
[2509]17
18    public override void Begin()
19    {
20        LuoKenttä();
[2540]21        Camera.StayInLevel = true;
22        Camera.ZoomFactor = 4;
[2509]23        Level.BackgroundColor = Color.ForestGreen;
[2540]24        pelaaja = new PhysicsObject(29, 50);
25        pelaaja.X = -420.0;
26        pelaaja.Y = 290.0;
[2509]27        pelaaja.Image = olionKuva;
28        pelaaja.Restitution = 1.0;
29        pelaaja.KineticFriction = 1.0;
30        pelaaja.LinearDamping = 0.5;
[2540]31        pelaaja.AngularDamping = 0.5;
32        Add(pelaaja);
33        plasmaTykki = new PlasmaCannon(20, 1);
34        pelaaja.Add(plasmaTykki);
35        plasmaTykki.Power.Value += 0.1;
36        plasmaTykki.Angle += Angle.FromDegrees(-97);
37        Camera.Follow(pelaaja);
38        AddCollisionHandler(pelaaja, Kasittelepelaajantormays);
[2509]39
[2540]40        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-250, 0));
41        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, new Vector(250, 0));
42        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 250));
43        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -250));
[2509]44        Keyboard.Listen(Key.A, ButtonState.Down, KäännäPelaajaa, null, 5.0);
45        Keyboard.Listen(Key.D, ButtonState.Down, KäännäPelaajaa, null, -5.0);
46        Keyboard.Listen(Key.A, ButtonState.Released, KäännäPelaajaa, null, 0.0);
47        Keyboard.Listen(Key.D, ButtonState.Released, KäännäPelaajaa, null, -0.0);
48        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
49        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
[2540]50        Keyboard.Listen(Key.S, ButtonState.Down, AmmuAseella, "Ammu");
[2509]51
[2540]52    }
[2509]53
54    void LuoKenttä()
55    {
[2540]56        TileMap ruudut = TileMap.FromLevelAsset("level1");
57        ruudut.SetTileMethod('=', LuoPalikka);
58        ruudut.SetTileMethod('v', Luovihu);
59        ruudut.Execute();
[2509]60    }
61
[2540]62    void Luovihu(Vector paikka, double leveys, double korkeus)
63    {
64        PhysicsObject vihu = PhysicsObject.CreateStaticObject(leveys, korkeus, Shape.Rectangle);
65        vihu.Position = paikka;
66        vihu.Image = vihunKuva;
67        vihu.Tag = "vihu";
68        Timer ajastin = new Timer();
69        ajastin.Interval = 1.5;
70        ajastin.Timeout += delegate { vihollineAmpuu(vihu); };
71        ajastin.Start();
72
73        Add(vihu);
74    }
75
76    void vihollineAmpuu(PhysicsObject vihollinen)
77    {
78        PhysicsObject ammus;
79
80        int i = 0;
81
82        while (i < 4)
83        {
84            ammus = new PhysicsObject(10, 10);
85            ammus.Position = vihollinen.Position;
86            Add(ammus);
87            ammus.Tag = "vihuammus";
88            switch (i)
89            {
90                case 0: // ylös
91                    ammus.Hit(new Vector(0, 100));
92                    ammus.Y += 10;
93                    break;
94                case 1: // oikealle
95                    ammus.Hit(new Vector(100, 0));
96                    ammus.X += 10;
97                    break;
98                case 2:  // alas
99                    ammus.Hit(new Vector(0, -100));
100                    ammus.Y -= 10;
101                    break;
102                case 3: // vasemalle
103                    ammus.Hit(new Vector(-100, 0));
104                    ammus.X -= 10;
105                    break;
106                default:
107                    break;
108            }           
109           
110            AddCollisionHandler(ammus, kasitteleammuksentormaus);
111            i++;
112        }
113    }
114
115    void LuoPalikka(Vector paikka, double leveys, double korkeus)
116    {
117        PhysicsObject taso = PhysicsObject.CreateStaticObject(
118  leveys, korkeus, Shape.Rectangle);
119        taso.Position = paikka;
120        taso.Image = palikanKuva;
121        Add(taso);
122        taso.Tag = "taso";
123
124
125    }
126
[2509]127    void KäännäPelaajaa(double kulmanopeus)
128    {
129        pelaaja.AngularVelocity = kulmanopeus;
130    }
131
132    void LiikutaPelaajaa(Vector vektori)
133    {
134        pelaaja.Move(vektori);
135    }
[2540]136
137    void Kasittelepelaajantormays(PhysicsObject pelaaja, PhysicsObject kohde)
138    {
139        if (kohde.Tag.ToString() == "vihu")
140        {
141            pelaaja.Destroy();
142            AloitaAlusta();
143        }
144    }
145
146    void AloitaAlusta()
147    {
148        ClearAll();
149        Begin();
150    }
151
152
153    void AmmuAseella()
154    {
155        PhysicsObject ammus = plasmaTykki.Shoot();
156
157        if (ammus != null)
158        {
159            ammus.Size *= 1;
160            AddCollisionHandler(ammus, kasitteleammuksentormaus);
161        }
162    }
163
164    void kasitteleammuksentormaus(PhysicsObject ammus, PhysicsObject kohde)
165    {
166        if (kohde.Tag.ToString() == "vihu" && ammus.Tag.ToString() != "vihuammus")
167        {
168            kohde.Destroy();
169        }
170        if (kohde.Tag.ToString() == "taso")
171        {
172            ammus.Destroy();
173        }
174
175    }
176
177
[2509]178}
Note: See TracBrowser for help on using the repository browser.