source: 2012/11-17/TuukkaT/Delta/Delta/Delta.cs @ 3910

Revision 3910, 7.1 KB checked in by jypeleht, 8 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 Delta : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    PlatformCharacter pelaaja2;
17    PhysicsObject kasi2;
18    PhysicsObject kasi;
19
20    Image pelaajanKuva = LoadImage("norsu");
21    Image tahtiKuva = LoadImage("tahti");
22   
23    IntMeter pisteLaskuri;
24    IntMeter pisteLaskuri2;
25   
26    SoundEffect maaliAani = LoadSoundEffect("maali");
27
28    public override void Begin()
29    {
30        LuoPistelaskuri();
31        Gravity = new Vector(0, -1000);
32
33        LuoKentta();
34        LisaaNappaimet();
35
36        Camera.Follow(pelaaja1);
37        Camera.ZoomFactor = 1.0;
38        Camera.StayInLevel = true;
39    }
40
41
42    void LuoKentta()
43    {
44        TileMap kentta = TileMap.FromLevelAsset("kentta1");
45        kentta.SetTileMethod('#', LisaaTaso);
46        //kentta.SetTileMethod('*', LisaaTahti);
47        kentta.SetTileMethod('p', LisaaPelaaja);
48        kentta.SetTileMethod('P', LisaaPelaaja2);
49        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
50        Level.CreateBorders();
51        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
52    }
53
54   
55    void LisaaTaso(Vector paikka, double leveys, double korkeus)
56    {
57        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
58        taso.Position = paikka;
59        taso.Color = Color.Green;
60        Add(taso);
61    }
62
63
64    void LisaaTahti(Vector paikka, double leveys, double korkeus)
65    {
66        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
67        tahti.IgnoresCollisionResponse = true;
68        tahti.Position = paikka;
69        tahti.Image = tahtiKuva;
70        tahti.Tag = "tahti";
71        Add(tahti);
72    }
73
74
75    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
76    {
77        pelaaja1 = new PlatformCharacter(leveys*2, korkeus*4);
78        pelaaja1.Position = paikka;
79        pelaaja1.Mass = 4.0;
80        pelaaja1.Image = pelaajanKuva;
81        pelaaja1.CollisionIgnoreGroup = 1;
82        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
83        Add(pelaaja1);
84    }
85
86   
87    void LisaaPelaaja2(Vector paikka, double leveys, double korkeus)
88    {
89        pelaaja2 = new PlatformCharacter(leveys * 2, korkeus * 4);
90        pelaaja2.Position = paikka;
91        pelaaja2.Mass = 4.0;
92        pelaaja2.Image = pelaajanKuva;
93        pelaaja2.CollisionIgnoreGroup = 2;
94        AddCollisionHandler(pelaaja2, "tahti", TormaaTahteen);
95        Add(pelaaja2);
96    }
97
98   
99    void LisaaNappaimet()
100    {
101        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
102        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
103
104        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
105        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
106        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
107        Keyboard.Listen(Key.K, ButtonState.Pressed, Lyo, "Lyönti1", pelaaja1);
108
109        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus);
110        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, nopeus);
111        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, hyppyNopeus);
112        Keyboard.Listen(Key.G, ButtonState.Pressed, Lyo2, "Lyönti1", pelaaja2);
113
114        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
115
116        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
117        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
118        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
119
120        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
121    }
122
123   
124    void Liikuta(PlatformCharacter hahmo, double nopeus)
125    {
126        hahmo.Walk(nopeus);
127    }
128
129   
130    void Hyppaa(PlatformCharacter hahmo, double nopeus)
131    {
132        hahmo.Jump(nopeus);
133    }
134
135   
136    void Lyo(PlatformCharacter hahmo)
137    {
138        if (kasi != null) kasi.Destroy();
139        kasi = new PhysicsObject(100.0, 20.0);
140        kasi.Shape = Shape.Rectangle;
141        kasi.X = hahmo.Left -20.0;
142        kasi.Y = hahmo.Y;
143        kasi.Restitution = 1.0;
144        kasi.CanRotate = false; 
145        //kasi2.IgnoresCollisionResponse = true;
146        kasi.CollisionIgnoreGroup = 1;
147        AddCollisionHandler(kasi, pelaaja2, Pelaajan1kasiTormaaPelaajaan2);
148        AxleJoint liitos = new AxleJoint(pelaaja1, kasi); 
149        Add(liitos);
150        Timer.SingleShot(0.2, PoistaKasi);
151    }
152
153
154    void Lyo2(PlatformCharacter hahmo)
155    {
156        if (kasi2 != null) kasi2.Destroy();
157        kasi2 = new PhysicsObject(100.0, 20.0);
158        kasi2.Shape = Shape.Rectangle;
159        kasi2.X = hahmo.Right + 20.0;
160        kasi2.Y = hahmo.Y;
161        kasi2.Restitution = 1.0;
162        kasi2.CanRotate = false;
163        //kasi2.IgnoresCollisionResponse = true;
164        kasi2.CollisionIgnoreGroup = 2;
165        AddCollisionHandler(kasi2, pelaaja1, Pelaajan2kasiTormaaPelaajaan1);
166        AxleJoint liitos = new AxleJoint(pelaaja2, kasi2);
167        Add(liitos);
168        Timer.SingleShot(0.2, PoistaKasi2);
169    }
170   
171    void PoistaKasi2()
172    {
173        kasi2.Destroy();
174    }
175
176    void PoistaKasi()
177    {
178        kasi.Destroy();
179     }
180
181    void Pelaajan2kasiTormaaPelaajaan1(PhysicsObject kasi2, PhysicsObject pelaaja1)
182    {
183        pisteLaskuri.Value -= 3;
184
185        MessageDisplay.Add("Pelaaja 2 osui pelaajaan 1!!!");
186        PoistaKasi2();
187    }
188
189    void Pelaajan1kasiTormaaPelaajaan2(PhysicsObject kasi, PhysicsObject pelaaja2)
190    {
191        pisteLaskuri2.Value -= 3;
192
193        MessageDisplay.Add("Pelaaja 1 osui pelaajaan 2!!!");
194        PoistaKasi();
195    }
196
197    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
198    {
199        maaliAani.Play();
200        MessageDisplay.Add("Keräsit tähden!");
201        tahti.Destroy();
202    }
203
204
205
206    void LuoPistelaskuri()
207    {
208        pisteLaskuri = new IntMeter(100);
209
210        Label pisteNaytto = new Label();
211        pisteNaytto.X = Screen.Right -100;
212        pisteNaytto.Y = Screen.Top - 100;
213        pisteNaytto.TextColor = Color.Black;
214        pisteNaytto.Color = Color.White;
215
216        pisteNaytto.BindTo(pisteLaskuri);
217        Add(pisteNaytto);
218
219
220        pisteLaskuri2 = new IntMeter(100);
221
222        Label pisteNaytto2 = new Label();
223        pisteNaytto2.X = Screen.Left + 100;
224        pisteNaytto2.Y = Screen.Top - 100;
225        pisteNaytto2.TextColor = Color.Black;
226        pisteNaytto2.Color = Color.White;
227
228        pisteNaytto2.BindTo(pisteLaskuri2);
229        Add(pisteNaytto2);
230
231
232    }
233}
Note: See TracBrowser for help on using the repository browser.