source: 2016/26/MikkoJ/NakkiPaukku/NakkiPaukku/NakkiPaukku/NakkiPaukku.cs @ 7628

Revision 7628, 9.3 KB checked in by mijuntti, 4 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 NakkiPaukku : PhysicsGame
10{
11    Image kenttamuoto = LoadImage("Kentta");
12    Image nakkipommi = LoadImage("Nakki");
13
14    PhysicsObject[] pelaajat = new PhysicsObject[4];
15
16    const double ukkelinopeus = 250;
17    Vector nopeusYlos = new Vector(0, ukkelinopeus);
18    Vector nopeusAlas = new Vector(0, -ukkelinopeus);
19    Vector nopeusVasen = new Vector(-ukkelinopeus, 0);
20    Vector nopeusOikea = new Vector(ukkelinopeus, 0);
21
22    public override void Begin()
23    {
24
25       
26        MultiSelectWindow alkuValikko = new MultiSelectWindow("NakkiPaukku",
27            "Paukuta!", "Huomenna uusiks!");
28        IsFullScreen = true;
29        alkuValikko.AddItemHandler(0, AloitaPeli);
30        alkuValikko.AddItemHandler(1, Exit);
31        alkuValikko.Color = Color.White;
32        Level.BackgroundColor = Color.Orange;
33        Add(alkuValikko);
34
35    }
36    void AloitaAlusta()
37    {
38        ClearAll();
39        Begin();
40    }
41    void AloitaPeli()
42    {
43        LuoMailma();
44        AsetaOhjaimet();
45    }
46    void LuoMailma()
47    {
48        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("Kentta");
49
50        ruudut.SetTileMethod(Color.Black, LuoTaso);
51        ruudut.SetTileMethod(Color.FromHexCode("FFB400F8"), LuoMuuri);
52        ruudut.SetTileMethod(Color.FromHexCode("FFEA00"), LuoPelaaja, 0, Color.Red);
53        ruudut.SetTileMethod(Color.Red, LuoPelaaja, 1, Color.Blue);
54        ruudut.SetTileMethod(Color.FromHexCode("0026FF"), LuoPelaaja, 2, Color.ForestGreen);
55        ruudut.SetTileMethod(Color.FromHexCode("4CFF00"), LuoPelaaja, 3, Color.Violet);
56       
57
58
59        ruudut.Execute(10.0, 10.0);
60    }
61    void LuoMuuri(Vector paikka, double leveys, double korkeus)
62    {
63        PhysicsObject muuri = PhysicsObject.CreateStaticObject(leveys, korkeus);
64        muuri.Position = paikka;
65        muuri.Color = Color.DarkBrown;
66
67        Add(muuri);
68    }
69    void LuoTaso(Vector paikka, double leveys, double korkeus)
70    {
71        PhysicsObject seina = PhysicsObject.CreateStaticObject(leveys, korkeus);
72        seina.Position = paikka;
73        seina.Color = Color.Black;
74        seina.IgnoresExplosions = true;
75        seina.IgnoresPhysicsLogics = true;
76        Add(seina);
77
78        seina.Tag = "seina";
79        Level.Background.Color = Color.White;
80        Camera.ZoomToLevel();
81        IsFullScreen = true;
82    }
83    void LuoPelaaja(Vector paikka, double leveys, double korkeus, int paikkaNumero, Color vari)
84    {
85        PhysicsObject pelaaja = new PhysicsObject(leveys, korkeus);
86        pelaaja.Shape = Shape.Circle;
87        pelaaja.X = paikka.X;
88        pelaaja.Y = paikka.Y;
89        pelaaja.Color = vari;
90        pelaaja.LinearDamping = 0.1;
91        pelaaja.CanRotate = false;
92        Add(pelaaja);
93        pelaajat[paikkaNumero] = pelaaja; //Luo pelaajat 1, 2, 3 & 4 nimisiin muuttujiin
94        AddCollisionHandler(pelaaja, "rajahdys", PelaajaTormaaRajahdykseen);
95    }
96    void PelaajaTormaaRajahdykseen(PhysicsObject tormaaja, PhysicsObject kohde)
97    {
98        tormaaja.Destroy();
99    }
100    void AsetaOhjaimet()
101    {
102        Keyboard.Listen(Key.S,          ButtonState.Down, AsetaNopeus,"", pelaajat[0], nopeusAlas);
103        Keyboard.Listen(Key.W,          ButtonState.Down, AsetaNopeus,"", pelaajat[0], nopeusYlos); 
104        Keyboard.Listen(Key.A,          ButtonState.Down, AsetaNopeus,"", pelaajat[0], nopeusVasen);
105        Keyboard.Listen(Key.D,          ButtonState.Down, AsetaNopeus,"", pelaajat[0], nopeusOikea);
106        Keyboard.Listen(Key.Q,          ButtonState.Pressed, PudotaNakki, "", pelaajat[0]);
107
108        Keyboard.Listen(Key.Up,         ButtonState.Down, AsetaNopeus,"", pelaajat[1], nopeusYlos);
109        Keyboard.Listen(Key.Down,       ButtonState.Down, AsetaNopeus,"", pelaajat[1], nopeusAlas);
110        Keyboard.Listen(Key.Left,       ButtonState.Down, AsetaNopeus,"", pelaajat[1], nopeusVasen);
111        Keyboard.Listen(Key.Right,      ButtonState.Down, AsetaNopeus,"", pelaajat[1], nopeusOikea);
112        Keyboard.Listen(Key.NumPad0,    ButtonState.Pressed, PudotaNakki, "", pelaajat[1]);
113
114        Keyboard.Listen(Key.NumPad8,    ButtonState.Down, AsetaNopeus,"", pelaajat[2], nopeusYlos);
115        Keyboard.Listen(Key.NumPad5,    ButtonState.Down, AsetaNopeus,"", pelaajat[2], nopeusAlas);
116        Keyboard.Listen(Key.NumPad4,    ButtonState.Down, AsetaNopeus,"", pelaajat[2], nopeusVasen);
117        Keyboard.Listen(Key.NumPad6,    ButtonState.Down, AsetaNopeus,"", pelaajat[2], nopeusOikea);
118        Keyboard.Listen(Key.NumPad7,    ButtonState.Pressed, PudotaNakki, "", pelaajat[2]);
119
120        Keyboard.Listen(Key.I,          ButtonState.Down, AsetaNopeus,"", pelaajat[3], nopeusYlos);
121        Keyboard.Listen(Key.K,          ButtonState.Down, AsetaNopeus,"", pelaajat[3], nopeusAlas);
122        Keyboard.Listen(Key.J,          ButtonState.Down, AsetaNopeus,"", pelaajat[3], nopeusVasen);
123        Keyboard.Listen(Key.L,          ButtonState.Down, AsetaNopeus,"", pelaajat[3], nopeusOikea);
124        Keyboard.Listen(Key.U,          ButtonState.Pressed, PudotaNakki,"", pelaajat[3]);
125       
126        Keyboard.Listen(Key.W,          ButtonState.Released, AsetaNopeus, null, pelaajat[0], Vector.Zero);
127        Keyboard.Listen(Key.S,          ButtonState.Released, AsetaNopeus, null, pelaajat[0], Vector.Zero);
128        Keyboard.Listen(Key.A,          ButtonState.Released, AsetaNopeus, null, pelaajat[0], Vector.Zero);
129        Keyboard.Listen(Key.D,          ButtonState.Released, AsetaNopeus, null, pelaajat[0], Vector.Zero);
130        Keyboard.Listen(Key.Up,         ButtonState.Released, AsetaNopeus, null, pelaajat[1], Vector.Zero);
131        Keyboard.Listen(Key.Down,       ButtonState.Released, AsetaNopeus, null, pelaajat[1], Vector.Zero);
132        Keyboard.Listen(Key.Left,       ButtonState.Released, AsetaNopeus, null, pelaajat[1], Vector.Zero);
133        Keyboard.Listen(Key.Right,      ButtonState.Released, AsetaNopeus, null, pelaajat[1], Vector.Zero);
134        Keyboard.Listen(Key.NumPad8,    ButtonState.Released, AsetaNopeus, null, pelaajat[2], Vector.Zero);
135        Keyboard.Listen(Key.NumPad5,    ButtonState.Released, AsetaNopeus, null, pelaajat[2], Vector.Zero);
136        Keyboard.Listen(Key.NumPad4,    ButtonState.Released, AsetaNopeus, null, pelaajat[2], Vector.Zero);
137        Keyboard.Listen(Key.NumPad6,    ButtonState.Released, AsetaNopeus, null, pelaajat[2], Vector.Zero);
138        Keyboard.Listen(Key.I,          ButtonState.Released, AsetaNopeus, null, pelaajat[3], Vector.Zero);
139        Keyboard.Listen(Key.K,          ButtonState.Released, AsetaNopeus, null, pelaajat[3], Vector.Zero);
140        Keyboard.Listen(Key.J,          ButtonState.Released, AsetaNopeus, null, pelaajat[3], Vector.Zero);
141        Keyboard.Listen(Key.L,          ButtonState.Released, AsetaNopeus, null, pelaajat[3], Vector.Zero);
142
143        Keyboard.Listen(Key.End, ButtonState.Pressed, AloitaAlusta, "");
144    }
145    void AsetaNopeus(PhysicsObject pelaaja, Vector nopeus)
146    {
147        pelaaja.Hit(nopeus);
148    }
149    void PudotaNakki(PhysicsObject pelaaja)
150    {
151        PhysicsObject nakki = new PhysicsObject(10, 10);
152        nakki.Position = pelaaja.Position;
153        nakki.Image = nakkipommi;
154        nakki.Tag = "nakki";
155        nakki.CanRotate = false;
156
157        Timer.SingleShot(3.0, delegate
158        {
159            Explosion rajahdys = new Explosion(21);
160            rajahdys.Speed = 100;
161            rajahdys.Position = nakki.Position;
162            rajahdys.Force = 1.0;
163            //rajahdys.UseShockWave = false;
164            rajahdys.ShockwaveReachesObject += RajahdysOsuu;
165            //rajahdys.Tag = "rajahdys";
166            Add(rajahdys);
167
168            /*
169            Vector tamanhetkinenrajahdyspaikka = rajahdys.Position;
170            int o = 0;
171            while (o < 10)
172            {
173                List<GameObject> vasenRajahdysTila = this.GetObjectsBetween(tamanhetkinenrajahdyspaikka, (tamanhetkinenrajahdyspaikka + new Vector(-10, 0)));
174                MessageDisplay.Add(tamanhetkinenrajahdyspaikka + " " + (tamanhetkinenrajahdyspaikka + new Vector(-10, 0)));
175                int i = 0;
176                while (i < vasenRajahdysTila.Count)
177                {
178                    MessageDisplay.Add(vasenRajahdysTila[i].Tag + " paikassa: " + vasenRajahdysTila[i].Position);
179                    if (vasenRajahdysTila[i].Tag == "seina")
180                    {
181                        return;
182                    }
183                    else
184                    {
185                        Explosion rajahdys2 = new Explosion(15);
186                        rajahdys2.Position = tamanhetkinenrajahdyspaikka + new Vector(-10, 0);
187                        rajahdys2.Force = 10.0;
188                        rajahdys2.Tag = "rajahdys";
189                        Add(rajahdys2);
190                    }
191                    i++;
192                }
193                rajahdys.Position = tamanhetkinenrajahdyspaikka + new Vector(-10, 0);
194                o++;
195            }*/
196           
197        });
198       
199       
200        Add(nakki, -1);
201        AddCollisionHandler(nakki, "rajahdys", PelaajaTormaaRajahdykseen);
202       
203    }
204
205    private void RajahdysOsuu(IPhysicsObject objekti, Vector v)
206    {
207        objekti.Destroy();
208    }
209}
Note: See TracBrowser for help on using the repository browser.