source: 2013/30/MikkoK/7ank/7ank/7ank/_7ank.cs @ 4672

Revision 4672, 7.3 KB checked in by mikkoivu, 6 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 _7ank : PhysicsGame
10{
11   
12    Tankki pelaaja1;
13    Tankki pelaaja2;
14
15
16    Image taustaKuva = LoadImage("Puuta");
17    Image PahviKuva = LoadImage("Pahvia");
18    Image MetalliKuva = LoadImage("Ruosteistametallia");
19    Image tankinKuva = LoadImage("Tankkipelaaja1 V2");
20    Image Nurmi = LoadImage("Nurmi");
21    Image PunainenMatto = LoadImage("Punanenmatoo");
22
23    int kenttaNro = 1;
24
25    public override void Begin()
26    {
27        ClearAll();
28        //Luokentta();
29        Pause();
30
31        MultiSelectWindow alkuValikko = new MultiSelectWindow("7ank", "Valitse kenttä", "Lopeta");
32        Add(alkuValikko);
33
34
35        alkuValikko.AddItemHandler(0, Kenttavalikko);
36        alkuValikko.AddItemHandler(1, Exit);
37
38
39    }
40
41    void AsetaOhjaimet()
42    {
43
44        Keyboard.Listen(Key.A, ButtonState.Down, KaannaPelaajaa, null, pelaaja1, 15000.0);
45        Keyboard.Listen(Key.D, ButtonState.Down, KaannaPelaajaa, null, pelaaja1, -15000.0);
46        Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, null, pelaaja1, 2000.0);
47        Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, null, pelaaja1, -1000.0);
48        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1.Ase);
49
50        Keyboard.Listen(Key.Left, ButtonState.Down, KaannaPelaajaa, null, pelaaja2, 15000.0);
51        Keyboard.Listen(Key.Right, ButtonState.Down, KaannaPelaajaa, null, pelaaja2, -15000.0);
52        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, pelaaja2, 2000.0);
53        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, null, pelaaja2, -1000.0);
54        Keyboard.Listen(Key.Enter, ButtonState.Down, AmmuAseella, "Ammu", pelaaja2.Ase);
55
56        IsPaused = false;
57        Keyboard.Listen(Key.P, ButtonState.Pressed, Pause, "Pysäyttää pelin");
58
59
60        Keyboard.Listen(Key.M, ButtonState.Pressed, Begin, "menee alkuvalikkoon");
61    }
62
63
64    void Luokentta(string kenttaTiedosto, Image Taustakuva)
65    {
66
67
68        ColorTileMap ruudut = ColorTileMap.FromLevelAsset(kenttaTiedosto);
69        ruudut.SetTileMethod(Color.Black, LuoTaso);
70        ruudut.SetTileMethod("4CFF00", LuoPelaaja1);
71        ruudut.SetTileMethod(Color.Red, LuoPelaaja2);
72        ruudut.Execute(20.0, 20.0);
73
74        MessageDisplay.Add("7ank BETA");
75
76        Camera.ZoomToLevel();
77
78        AsetaOhjaimet();
79        Level.Background.Image = Taustakuva;
80        Level.Background.FitToLevel();
81
82
83        //Camera.Follow(pelaaja1);
84        //Camera.Zoom(5);
85
86        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
87        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
88        MediaPlayer.Play("Kalimba");
89
90        Label tekstikentta = new Label("FIGHT!");
91        Add(tekstikentta);
92    }
93    void Kenttavalikko()
94    {
95        MultiSelectWindow Kenttavalikko = new MultiSelectWindow("Valitse kenttä", "Kenttä 1", "Kenttä 2", "Kenttä 3", " Kenttä 4", "Kenttä 5");
96        Add(Kenttavalikko);
97        Kenttavalikko.AddItemHandler(0, delegate { kenttaNro = 1; LuoValittuKentta();});
98        Kenttavalikko.AddItemHandler(1, delegate { kenttaNro = 2; LuoValittuKentta(); });
99        Kenttavalikko.AddItemHandler(2, delegate { kenttaNro = 3; LuoValittuKentta(); });
100        Kenttavalikko.AddItemHandler(3, delegate { kenttaNro = 4; LuoValittuKentta(); });
101        Kenttavalikko.AddItemHandler(4, delegate { kenttaNro = 5; LuoValittuKentta(); });
102       
103
104    }
105
106    void LuoValittuKentta()
107    {
108         if(kenttaNro == 1) Luokentta("7ank lvl1", taustaKuva); 
109         if(kenttaNro == 2) Luokentta("Kenttä2", PahviKuva); 
110         if(kenttaNro == 3) Luokentta("Kenttä3", MetalliKuva);
111         if(kenttaNro == 4) Luokentta("Kenttä 4", Nurmi);
112         if(kenttaNro == 5) Luokentta("Kenttä5", PunainenMatto);
113
114         if (kenttaNro > 5)
115         {
116             kenttaNro = 1;
117             LuoValittuKentta();
118         }
119
120    }
121
122
123
124    void VaihdaSeuraavaKentta()
125    {
126        ClearAll();
127        kenttaNro++;
128        LuoValittuKentta();
129
130    }
131
132
133    void LuoTaso(Vector paikka, double x, double y)
134    {
135        PhysicsObject taso = PhysicsObject.CreateStaticObject(x, y);
136        taso.Position = paikka;
137        taso.Color = Color.Orange;
138        //taso.Image = groundimage;
139        taso.CollisionIgnoreGroup = 1;
140        Add(taso);
141
142    }
143
144    void LuoPelaaja1(Vector paikka, double x, double y)
145    {
146        pelaaja1 = LuoTankki(paikka, Level.Left - 100, Screen.Top - 20);
147        //pelaaja1.Color = Color.Blue;
148        pelaaja1.Image = LoadImage("Tankkipelaaja1 V2");
149        pelaaja1.Shape = Shape.FromImage(tankinKuva);
150        //Add(pelaaja1);
151        pelaaja1.Ase.ProjectileCollision = AmmusOsui;
152        pelaaja1.Destroyed += delegate { Timer.SingleShot(1, delegate { VaihdaSeuraavaKentta(); }); };
153       
154        //tykki.ProjectileCollision = AmmusOsui;
155
156    }
157
158    void LuoPelaaja2(Vector paikka, double x, double y)
159    {
160        pelaaja2 = LuoTankki(paikka, Level.Right + 100, Screen.Top - 20);
161        //pelaaja2.Color = Color.Red;
162        pelaaja2.Image = LoadImage("Tankkipelaaja2 V2");
163        pelaaja2.Shape = Shape.FromImage(tankinKuva);
164        pelaaja2.LinearDamping = 0.8;
165        pelaaja2.AngularDamping = 0.9;
166        Add(pelaaja2);
167        pelaaja2.Destroyed += delegate { Timer.SingleShot(1, delegate { VaihdaSeuraavaKentta(); }); };
168        pelaaja2.Ase.ProjectileCollision = AmmusOsui;
169
170    }
171
172
173    Tankki LuoTankki(Vector paikka, double x, double y)
174    {
175        Tankki tankki = new Tankki(100, 50);
176        tankki.Position = paikka;
177        tankki.LinearDamping = 0.8;
178        tankki.AngularDamping = 0.9;
179        //tankki.Color = Color.Red;
180        Add(tankki);
181
182        ProgressBar elamaPalkki = new ProgressBar(150, 20);
183        elamaPalkki.X = x;
184        elamaPalkki.Y = y;
185        elamaPalkki.BindTo(tankki.ElamaLaskuri);
186        Add(elamaPalkki);
187
188        return tankki;
189    }
190
191    void LiikutaPelaajaa(PhysicsObject pelaaja, double nopeus)
192    {
193        pelaaja.Push(pelaaja.Angle.GetVector() * nopeus);
194    }
195
196    void KaannaPelaajaa(PhysicsObject pelaaja, double suunta)
197    {
198        pelaaja.ApplyTorque(suunta);
199    }
200
201    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
202    {
203        ammus.Destroy();
204
205        if (kohde is Tankki)
206        {
207            ((Tankki)kohde).ElamaLaskuri.Value--;
208        }
209    }
210    void AmmuAseella(AssaultRifle ase)
211    {
212        PhysicsObject ammus = ase.Shoot();
213
214        if (ammus != null)
215        {
216            //ammus.Size '= 3;
217            //ammus.Image = Image."Raketttttti";
218            //ammus.MaximumLifeTime = TimeSpan.FromSeconds(2.0)
219        }
220    }
221
222}
223
224
225class Tankki : PhysicsObject
226{
227    private IntMeter elamaLaskuri = new IntMeter(10, 0, 10);
228    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
229
230    public AssaultRifle Ase;
231
232    public Tankki(double leveys, double korkeus)
233        : base(leveys, korkeus)
234    {
235        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
236
237        Ase = new AssaultRifle(30, 10);
238        Ase.Ammo.Value = 1000;
239        Ase.IsVisible = false;
240        Add(Ase);
241    }
242
243
244}
Note: See TracBrowser for help on using the repository browser.