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

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