source: 2014/moro/moro/moro/moro.cs @ 5783

Revision 5783, 7.8 KB checked in by anlakane, 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 moro : PhysicsGame
10{
11    const double nopeusSivulle = 100;
12    const double nopeusYlos = 400;
13    const int RUUDUN_KOKO = 40;
14
15    PhysicsObject pelaaja1;
16    PhysicsObject pelaaja2;
17    Vector aloituspaikka;
18    Vector aloituspaikka2;
19    Image Oikealle = LoadImage("oregano2");
20    Image Vasemmalle = LoadImage("oregano");
21    Image Oikeelle = LoadImage("Pquli2");
22    Image Vasurille = LoadImage("Pquli");
23    Image tahtiKuva = LoadImage("pussi");
24
25
26    bool peliKaynnissa = true;
27    bool peliKaynnissa2 = true;
28
29    public override void Begin()
30    {
31        MultiSelectWindow msw = new MultiSelectWindow("Tervetuloa peliin", "Yksinpeli", "Kaksinpeli");
32        msw.AddItemHandler(0, delegate { AloitaPeli(false); });
33        msw.AddItemHandler(1, delegate { AloitaPeli(true); });
34        Add(msw);
35    }
36
37    void AloitaPeli(bool onkokaksinpeli)
38    {
39        Gravity = new Vector(0, -1000);
40
41        LuoKentta(onkokaksinpeli);
42        LisaaNappaimet(onkokaksinpeli);
43        LuoPistelaskuri();
44        if (onkokaksinpeli)
45        {
46            LuoPistelaskuri2();
47            Camera.Follow(pelaaja1, pelaaja2);
48        }
49        else
50        {
51            Camera.Follow(pelaaja1);
52        }
53    }
54
55    IntMeter pisteLaskuri;
56    IntMeter pisteLaskuri2;
57    Vector viimeksiTormattyCheckpoint;
58    Vector viimeksiTormattyCheckpoint2;
59
60
61
62    void LuoPistelaskuri()
63    {
64        pisteLaskuri = new IntMeter(0);
65
66        Label pisteNaytto = new Label();
67        pisteNaytto.X = Screen.Right - 120;
68        pisteNaytto.Y = Screen.Top - 50;
69        pisteNaytto.TextColor = Color.Black;
70        pisteNaytto.Color = Color.Red;
71        pisteNaytto.Title = "Oreganoa kerätty";
72
73        pisteNaytto.BindTo(pisteLaskuri);
74        Add(pisteNaytto);
75    }
76
77    void LuoPistelaskuri2()
78    {
79        pisteLaskuri2 = new IntMeter(0);
80
81        Label pisteNaytto2 = new Label();
82        pisteNaytto2.X = Screen.Left + 120;
83        pisteNaytto2.Y = Screen.Top - 50;
84        pisteNaytto2.TextColor = Color.Black;
85        pisteNaytto2.Color = Color.Red;
86        pisteNaytto2.Title = "Oreganoa kerätty";
87
88        pisteNaytto2.BindTo(pisteLaskuri2);
89        Add(pisteNaytto2);
90    }
91
92    void LuoKentta(bool onkokaksinpeli)
93    {
94        TileMap kentta = TileMap.FromLevelAsset("kentta1");
95        kentta.SetTileMethod('#', LisaaTaso);
96        kentta.SetTileMethod('N', LisaaPelaaja);
97        if (onkokaksinpeli) kentta.SetTileMethod('A', LisaaPelaaja2);
98        kentta.SetTileMethod('P', LisaaCheckpoint);
99        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
100        Level.CreateBorders();
101        Level.Background.CreateGradient(Color.White, Color.White);
102    }
103
104    void LisaaTaso(Vector paikka, double leveys, double korkeus)
105    {
106        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
107        taso.Position = paikka;
108        taso.Color = Color.Black;
109        taso.Tag = "seina";
110        Add(taso);
111    }
112
113    void LisaaCheckpoint(Vector paikka, double leveys, double korkeus)
114    {
115        PhysicsObject checkpoint = PhysicsObject.CreateStaticObject(leveys, korkeus);
116        checkpoint.IgnoresCollisionResponse = true;
117        // checkpoint.IsVisible = false;
118        checkpoint.Position = paikka;
119        checkpoint.Image = tahtiKuva;
120        checkpoint.Tag = "checkpoint";
121        Add(checkpoint);
122    }
123
124    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
125    {
126        pelaaja1 = new PhysicsObject(leveys, korkeus);
127        pelaaja1.Position = paikka;
128        pelaaja1.CanRotate = false;
129        pelaaja1.Mass = 4.0;
130        pelaaja1.Image = Vasemmalle;
131        viimeksiTormattyCheckpoint = pelaaja1.Position;
132        aloituspaikka = pelaaja1.Position;
133
134        AddCollisionHandler(pelaaja1, "seina", TormaaTasoon);
135        AddCollisionHandler(pelaaja1, "checkpoint", TormaaCheckpointiin);
136        Add(pelaaja1);
137    }
138    void LisaaPelaaja2(Vector paikka, double leveys, double korkeus)
139    {
140        pelaaja2 = new PhysicsObject(leveys, korkeus);
141        pelaaja2.Position = paikka;
142        pelaaja2.CanRotate = false;
143        pelaaja2.Mass = 4.0;
144        pelaaja2.Image = Vasurille;
145        viimeksiTormattyCheckpoint2 = pelaaja2.Position;
146        aloituspaikka2 = pelaaja2.Position;
147
148        AddCollisionHandler(pelaaja2, "seina", TormaaTasoon2);
149        AddCollisionHandler(pelaaja2, "checkpoint", TormaaCheckpointiin2);
150        Add(pelaaja2);
151    }
152
153    void TormaaCheckpointiin(PhysicsObject tormaaja, PhysicsObject kohde)
154    {
155        if (kohde.Position.Y > viimeksiTormattyCheckpoint.Y)
156        {
157            viimeksiTormattyCheckpoint = kohde.Position;
158            pisteLaskuri.Value++;
159        }
160    }
161
162    void TormaaCheckpointiin2(PhysicsObject tormaaja2, PhysicsObject kohde2)
163    {
164        if (kohde2.Position.Y > viimeksiTormattyCheckpoint2.Y)
165        {
166            viimeksiTormattyCheckpoint2 = kohde2.Position;
167            pisteLaskuri2.Value++;
168        }
169    }
170
171    void TormaaTasoon(PhysicsObject tormaaja, PhysicsObject kohde)
172    {
173        if (peliKaynnissa)
174        {
175            MessageDisplay.Add(" fak juu loser");
176            Keyboard.Disable(Key.Left);
177            Keyboard.Disable(Key.Right);
178            peliKaynnissa = false;
179        }
180    }
181    void TormaaTasoon2(PhysicsObject tormaaja2, PhysicsObject kohde2)
182    {
183        if (peliKaynnissa2)
184        {
185            MessageDisplay.Add(" fak juu luuseri");
186            Keyboard.Disable(Key.A);
187            Keyboard.Disable(Key.D);
188            peliKaynnissa2 = false;
189        }
190    }
191    void LisaaNappaimet(bool onkokaksinpeli)
192    {
193        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
194        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
195
196        Keyboard.Listen(Key.Left, ButtonState.Pressed, Liikuta, "Liikkuu vasemmalle", pelaaja1, new Vector(-nopeusSivulle, nopeusYlos), true);
197        Keyboard.Listen(Key.Right, ButtonState.Pressed, Liikuta, "Liikkuu vasemmalle", pelaaja1, new Vector(nopeusSivulle, nopeusYlos), false);
198        Keyboard.Listen(Key.A, ButtonState.Pressed, Liikuta2, "Liikkuu vasurille", pelaaja2, new Vector(-nopeusSivulle, nopeusYlos), true);
199        Keyboard.Listen(Key.D, ButtonState.Pressed, Liikuta2, "Liikkuu vasurille", pelaaja2, new Vector(nopeusSivulle, nopeusYlos), false);
200        Keyboard.Listen(Key.R, ButtonState.Pressed, Nollaa, "Nollaa", onkokaksinpeli);
201
202
203    }
204
205    void Nollaa(bool onkokaksinpeli)
206    {
207        pelaaja1.Position = aloituspaikka;
208        pisteLaskuri.Reset();
209        viimeksiTormattyCheckpoint = pelaaja1.Position;
210        Keyboard.Enable(Key.Left);
211        Keyboard.Enable(Key.Right);
212        peliKaynnissa = true;
213
214        if (onkokaksinpeli)
215        {
216            pisteLaskuri2.Reset();
217            viimeksiTormattyCheckpoint2 = pelaaja2.Position;
218            pelaaja2.Position = aloituspaikka2;
219            Keyboard.Enable(Key.A);
220            Keyboard.Enable(Key.D);
221            peliKaynnissa2 = true;
222        }
223    }
224
225    void Liikuta(PhysicsObject hahmo, Vector v, bool kuvaVasemmalle)
226    {
227        if (kuvaVasemmalle == true)
228        {
229            hahmo.Image = Vasemmalle;
230
231        }
232        else
233        {
234            hahmo.Image = Oikealle;
235        }
236        //hahmo.Hit (v);
237        hahmo.Velocity = v;
238    }
239    void Liikuta2(PhysicsObject hahmo2, Vector v, bool kuvaVasurille)
240    {
241        if (kuvaVasurille == true)
242        {
243            hahmo2.Image = Vasurille;
244
245        }
246        else
247        {
248            hahmo2.Image = Oikeelle;
249        }
250        //hahmo2.Hit (v);
251        hahmo2.Velocity = v;
252    }
253
254}
Note: See TracBrowser for help on using the repository browser.