source: 2015/26/PatrikL/Soccer/Soccer/Soccer/Soccer.cs @ 6447

Revision 6447, 6.8 KB checked in by patlahti, 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 Soccer : PhysicsGame
10{
11    const double nopeus = 300;
12    const double hyppyNopeus = 800;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    PlatformCharacter pelaaja2;
17
18   
19    Image tahtiKuva = LoadImage("tahti");
20    Image pelaajan1Kuva = LoadImage("Tyyppi3");
21    Image pelaajan2Kuva = LoadImage("tyyppi2");
22    Image MaalinKuva = LoadImage("Maali");
23    Image tausta = LoadImage("Tausta");
24    Image pallonKuva = LoadImage("pallo");
25    IntMeter pelaajan1pistelaskuri = new IntMeter(0);
26    IntMeter pelaajan2pistelaskuri = new IntMeter(0);
27    int pelaajan1pisteet = 0;
28    int pelaajan2pisteet = 0;
29   
30
31    public override void Begin()
32    {
33
34        ClearAll();
35        Gravity = new Vector(0, -1400);
36
37        LuoKentta();
38        LisaaNappaimet();
39
40
41        //Camera.Follow(pelaaja1, pelaaja2);
42        //Camera.ZoomFactor = 1.5;
43        //Camera.StayInLevel = false;
44        Camera.ZoomToLevel();
45    }
46
47    void LuoKentta()
48    {
49        TileMap kentta = TileMap.FromLevelAsset("kentta1");
50        kentta.SetTileMethod('#', LisaaTaso);
51        kentta.SetTileMethod('*', LisaaMaali);
52        kentta.SetTileMethod('1', LisaaPelaaja);
53        kentta.SetTileMethod('2', LisaaPelaaja2);
54        kentta.SetTileMethod('M', LisaaMaali);
55        kentta.SetTileMethod('p', LisaaPallo);
56        kentta.SetTileMethod('m', LisaaMaali2);
57        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
58        Level.Background.Image = tausta;
59    }
60
61
62    void LisaaTaso(Vector paikka, double leveys, double korkeus)
63    {
64        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
65        taso.Position = paikka;
66        taso.Color = Color.Green;
67        Add(taso);
68    }
69
70    void LisaaMaali(Vector paikka, double leveys, double korkeus)
71    {
72        PhysicsObject Maali = PhysicsObject.CreateStaticObject(MaalinKuva);
73        Maali.IgnoresCollisionResponse = true;
74        Maali.Position = paikka;
75        Maali.Size = new Vector(leveys * 3, korkeus * 5);
76        Maali.Tag = "Maali";
77        Maali.MirrorImage();
78        AddCollisionHandler(Maali, "pallo", PalloMeneeMaaliin);
79        Add(Maali);
80    }
81    void LisaaMaali2(Vector paikka, double leveys, double korkeus)
82    {
83        PhysicsObject Maali = PhysicsObject.CreateStaticObject(MaalinKuva);
84        Maali.IgnoresCollisionResponse = true;
85        Maali.Position = paikka;
86        Maali.Size = new Vector(leveys * 3, korkeus * 5);
87        Maali.Tag = "Maali";
88        AddCollisionHandler(Maali, "pallo", PalloMeneeMaaliin2);
89        Add(Maali);
90
91    }
92    void PalloMeneeMaaliin(PhysicsObject Maali, PhysicsObject pallo)
93    {
94        pelaajan1pistelaskuri.Value += 1;
95        pelaajan1pisteet = pelaajan1pistelaskuri.Value;
96        Timer.SingleShot(1, Begin);
97    }
98    void PalloMeneeMaaliin2(PhysicsObject Maali, PhysicsObject pallo)
99    {
100        pelaajan2pistelaskuri.Value += 1;
101        pelaajan2pisteet = pelaajan2pistelaskuri.Value;
102        Timer.SingleShot(1, Begin);
103    }
104    void LisaaPallo(Vector paikka, double leveys, double korkeus)
105    {
106        PhysicsObject pallo = new PhysicsObject(pallonKuva);
107        pallo.IgnoresCollisionResponse = false;
108        pallo.Position = paikka;
109        pallo.Size = new Vector(leveys * 1, korkeus * 1);
110        pallo.Tag = "pallo";
111        pallo.Mass = 2.0;
112        Add(pallo);
113    }
114
115    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
116    {
117        pelaaja1 = new PlatformCharacter(leveys, korkeus);
118        pelaaja1.Position = paikka;
119        pelaaja1.Mass = 4.0;
120        pelaaja1.Image = pelaajan1Kuva;
121        pelaaja1.Shape = Shape.FromImage(pelaajan1Kuva);
122        Add(pelaaja1);
123        pelaaja1.Width = 50;
124        pelaaja1.Height = 110;
125        LuoPistelaskuri(Screen.Left + 100, Screen.Top - 100, pelaajan1pistelaskuri);
126    }
127
128    void LisaaPelaaja2(Vector paikka, double leveys, double korkeus)
129    {
130        pelaaja2 = new PlatformCharacter(leveys, korkeus);
131        pelaaja2.Position = paikka;
132        pelaaja2.Mass = 4.0;
133        pelaaja2.Image = pelaajan2Kuva;
134        pelaaja2.Shape = Shape.FromImage(pelaajan2Kuva);
135        Add(pelaaja2);
136        pelaaja2.Width = 50;
137        pelaaja2.Height = 110;
138        LuoPistelaskuri(Screen.Right - 100, Screen.Top - 100, pelaajan2pistelaskuri);
139    }
140
141    void LisaaNappaimet()
142    {
143        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
144        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
145
146        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
147        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
148        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
149
150        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus);
151        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, nopeus);
152        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, hyppyNopeus);
153
154        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
155
156        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
157        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
158        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
159
160        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
161
162        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja2, -nopeus);
163        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja2, nopeus);
164        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, hyppyNopeus);
165
166        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
167    }
168
169    void Liikuta(PlatformCharacter hahmo, double nopeus)
170    {
171        hahmo.Walk(nopeus);
172    }
173
174    void Hyppaa(PlatformCharacter hahmo, double nopeus)
175    {
176        hahmo.Jump(nopeus);
177    }
178    void LuoPistelaskuri(double x, double y, IntMeter laskuri)
179    {
180       
181
182        Label pisteNaytto = new Label();
183        pisteNaytto.X = x; 
184        pisteNaytto.Y = y; 
185        pisteNaytto.TextColor = Color.Black;
186        pisteNaytto.Color = Color.White;
187
188        pisteNaytto.BindTo(laskuri);
189        Add(pisteNaytto);
190    }
191
192   
193}
Note: See TracBrowser for help on using the repository browser.