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

Revision 7600, 7.9 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        LuoMailma();
24        AsetaOhjaimet();
25       
26
27
28    }
29    void LuoMailma()
30    {
31        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("Kentta");
32
33       
34       
35        ruudut.SetTileMethod(Color.Black, LuoTaso);
36        ruudut.SetTileMethod(Color.FromHexCode("FFEA00"), LuoPelaaja, 0);
37        ruudut.SetTileMethod(Color.Red, LuoPelaaja, 1);
38        ruudut.SetTileMethod(Color.FromHexCode("0026FF"), LuoPelaaja, 2);
39        ruudut.SetTileMethod(Color.FromHexCode("4CFF00"), LuoPelaaja, 3);
40       
41
42
43        ruudut.Execute(10.0, 10.0);
44    }
45    void LuoTaso(Vector paikka, double leveys, double korkeus)
46    {
47        PhysicsObject kentta = PhysicsObject.CreateStaticObject(leveys, korkeus);
48        kentta.Position = paikka;
49        kentta.Color = Color.Black;
50        kentta.IgnoresExplosions = true;
51        Add(kentta);
52
53        kentta.Tag = "seina";
54        Level.Background.Color = Color.White;
55        Camera.ZoomToLevel();
56        IsFullScreen = true;
57    }
58    void LuoPelaaja(Vector paikka, double leveys, double korkeus, int paikkaNumero)
59    {
60        PhysicsObject pelaaja = new PhysicsObject(leveys * 0.65, korkeus * 0.65);
61        pelaaja.Shape = Shape.Circle;
62        pelaaja.X = paikka.X;
63        pelaaja.Y = paikka.Y;
64        pelaaja.Color = Color.HotPink;
65        pelaaja.LinearDamping = 0.1;
66        Add(pelaaja);
67        pelaajat[paikkaNumero] = pelaaja; //Luo pelaajat 1, 2, 3 & 4 nimisiin muuttujiin
68        AddCollisionHandler(pelaaja, "rajahdys", PelaajaTormaaRajahdykseen);
69    }
70    void PelaajaTormaaRajahdykseen(PhysicsObject tormaaja, PhysicsObject kohde)
71    {
72        tormaaja.Destroy();
73    }
74    void AsetaOhjaimet()
75    {
76        Keyboard.Listen(Key.S,          ButtonState.Down, AsetaNopeus,"", pelaajat[0], nopeusAlas);
77        Keyboard.Listen(Key.W,          ButtonState.Down, AsetaNopeus,"", pelaajat[0], nopeusYlos); 
78        Keyboard.Listen(Key.A,          ButtonState.Down, AsetaNopeus,"", pelaajat[0], nopeusVasen);
79        Keyboard.Listen(Key.D,          ButtonState.Down, AsetaNopeus,"", pelaajat[0], nopeusOikea);
80        Keyboard.Listen(Key.Q,          ButtonState.Pressed, PudotaNakki, "", pelaajat[0]);
81
82        Keyboard.Listen(Key.Up,         ButtonState.Down, AsetaNopeus,"", pelaajat[1], nopeusYlos);
83        Keyboard.Listen(Key.Down,       ButtonState.Down, AsetaNopeus,"", pelaajat[1], nopeusAlas);
84        Keyboard.Listen(Key.Left,       ButtonState.Down, AsetaNopeus,"", pelaajat[1], nopeusVasen);
85        Keyboard.Listen(Key.Right,      ButtonState.Down, AsetaNopeus,"", pelaajat[1], nopeusOikea);
86        Keyboard.Listen(Key.NumPad0,    ButtonState.Pressed, PudotaNakki, "", pelaajat[1]);
87
88        Keyboard.Listen(Key.NumPad8,    ButtonState.Down, AsetaNopeus,"", pelaajat[2], nopeusYlos);
89        Keyboard.Listen(Key.NumPad5,    ButtonState.Down, AsetaNopeus,"", pelaajat[2], nopeusAlas);
90        Keyboard.Listen(Key.NumPad4,    ButtonState.Down, AsetaNopeus,"", pelaajat[2], nopeusVasen);
91        Keyboard.Listen(Key.NumPad6,    ButtonState.Down, AsetaNopeus,"", pelaajat[2], nopeusOikea);
92        Keyboard.Listen(Key.NumPad7,    ButtonState.Pressed, PudotaNakki, "", pelaajat[2]);
93
94        Keyboard.Listen(Key.I,          ButtonState.Down, AsetaNopeus,"", pelaajat[3], nopeusYlos);
95        Keyboard.Listen(Key.K,          ButtonState.Down, AsetaNopeus,"", pelaajat[3], nopeusAlas);
96        Keyboard.Listen(Key.J,          ButtonState.Down, AsetaNopeus,"", pelaajat[3], nopeusVasen);
97        Keyboard.Listen(Key.L,          ButtonState.Down, AsetaNopeus,"", pelaajat[3], nopeusOikea);
98        Keyboard.Listen(Key.U,          ButtonState.Pressed, PudotaNakki,"", pelaajat[3]);
99       
100        Keyboard.Listen(Key.W,          ButtonState.Released, AsetaNopeus, null, pelaajat[0], Vector.Zero);
101        Keyboard.Listen(Key.S,          ButtonState.Released, AsetaNopeus, null, pelaajat[0], Vector.Zero);
102        Keyboard.Listen(Key.A,          ButtonState.Released, AsetaNopeus, null, pelaajat[0], Vector.Zero);
103        Keyboard.Listen(Key.D,          ButtonState.Released, AsetaNopeus, null, pelaajat[0], Vector.Zero);
104        Keyboard.Listen(Key.Up,         ButtonState.Released, AsetaNopeus, null, pelaajat[1], Vector.Zero);
105        Keyboard.Listen(Key.Down,       ButtonState.Released, AsetaNopeus, null, pelaajat[1], Vector.Zero);
106        Keyboard.Listen(Key.Left,       ButtonState.Released, AsetaNopeus, null, pelaajat[1], Vector.Zero);
107        Keyboard.Listen(Key.Right,      ButtonState.Released, AsetaNopeus, null, pelaajat[1], Vector.Zero);
108        Keyboard.Listen(Key.NumPad8,    ButtonState.Released, AsetaNopeus, null, pelaajat[2], Vector.Zero);
109        Keyboard.Listen(Key.NumPad5,    ButtonState.Released, AsetaNopeus, null, pelaajat[2], Vector.Zero);
110        Keyboard.Listen(Key.NumPad4,    ButtonState.Released, AsetaNopeus, null, pelaajat[2], Vector.Zero);
111        Keyboard.Listen(Key.NumPad6,    ButtonState.Released, AsetaNopeus, null, pelaajat[2], Vector.Zero);
112        Keyboard.Listen(Key.I,          ButtonState.Released, AsetaNopeus, null, pelaajat[3], Vector.Zero);
113        Keyboard.Listen(Key.K,          ButtonState.Released, AsetaNopeus, null, pelaajat[3], Vector.Zero);
114        Keyboard.Listen(Key.J,          ButtonState.Released, AsetaNopeus, null, pelaajat[3], Vector.Zero);
115        Keyboard.Listen(Key.L,          ButtonState.Released, AsetaNopeus, null, pelaajat[3], Vector.Zero);
116       
117    }
118    void AsetaNopeus(PhysicsObject pelaaja, Vector nopeus)
119    {
120        pelaaja.Hit(nopeus);
121    }
122    void PudotaNakki(PhysicsObject pelaaja)
123    {
124        PhysicsObject nakki = new PhysicsObject(1, 1);
125        nakki.Position = pelaaja.Position;
126        nakki.Color = Color.Blue;
127
128        Timer.SingleShot(3.0, delegate
129        {
130            Explosion rajahdys = new Explosion(15);
131            rajahdys.Position = nakki.Position;
132            rajahdys.Force = 10.0;
133            rajahdys.Tag = "rajahdys";
134            Add(rajahdys);
135
136            ////////TODO
137            Vector tamanhetkinenrajahdyspaikka = rajahdys.Position;
138            ///////
139            while (true)
140            {
141                List<GameObject> vasenRajahdysTila = this.GetObjectsBetween(tamanhetkinenrajahdyspaikka, (tamanhetkinenrajahdyspaikka + new Vector(-10, 0)));
142                MessageDisplay.Add(tamanhetkinenrajahdyspaikka + " " + (tamanhetkinenrajahdyspaikka + new Vector(-10, 0)));
143                int i = 0;
144                while (i < vasenRajahdysTila.Count)
145                {
146                    MessageDisplay.Add(vasenRajahdysTila[i].Tag + " paikassa: " + vasenRajahdysTila[i].Position);
147                    if (vasenRajahdysTila[i].Tag == "seina")
148                    {
149                        return;
150                    }
151                    else
152                    {
153                        Explosion rajahdys2 = new Explosion(15);
154                        rajahdys2.Position = tamanhetkinenrajahdyspaikka + new Vector(-10, 0);
155                        rajahdys2.Force = 10.0;
156                        rajahdys2.Tag = "rajahdys";
157                        Add(rajahdys2);
158                    }
159                    i++;
160                }
161
162                tamanhetkinenrajahdyspaikka = tamanhetkinenrajahdyspaikka + new Vector(-10, 0);
163            }
164            ////////
165        });
166       
167       
168        Add(nakki);
169       
170    }
171}
Note: See TracBrowser for help on using the repository browser.