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

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