source: 2015/30/TomiM/Tasohyppelypeli/Tasohyppelypeli/Tasohyppelypeli/Tasohyppelypeli.cs @ 6906

Revision 6906, 5.3 KB checked in by tomikkon, 4 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 Tasohyppelypeli : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    PlatformCharacter vihollinen;
17
18    Image pelaajanKuva = LoadImage("tyyppi3");
19    Image tahtiKuva = LoadImage("kolikko");
20    Image vihollisenKuva = LoadImage("vihollinen");
21
22    SoundEffect maaliAani = LoadSoundEffect("maali");
23
24
25
26    PhysicsObject vasenReuna;
27    PhysicsObject oikeaReuna;
28
29
30    public override void Begin()
31    {
32        Gravity = new Vector(0, -1000);
33
34        LuoKentta();
35        LisaaNappaimet();
36
37        LuoPistelaskuri();
38       
39
40        Camera.Follow(pelaaja1);
41        Camera.ZoomFactor = 1.2;
42        Camera.StayInLevel = true;
43
44       
45    }
46
47    void LuoKentta()
48    {
49
50        PhysicsObject pelaaja1 = new PhysicsObject(40, 40, Shape.Rectangle);
51        Add(pelaaja1);
52
53        vasenReuna = Level.CreateLeftBorder();
54        oikeaReuna = Level.CreateRightBorder();
55        Level.CreateBottomBorder();
56        Level.CreateTopBorder();
57
58        TileMap kentta = TileMap.FromLevelAsset("kentta1");
59        kentta.SetTileMethod('#', LisaaTaso);
60        kentta.SetTileMethod('*', LisaaTahti);
61        kentta.SetTileMethod('V', LisaaVihollinen);
62
63        kentta.SetTileMethod('N', LisaaPelaaja);
64        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
65        Level.CreateBorders();
66        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
67    }
68    void PelaajaTormasi(PhysicsObject vihollinen, PhysicsObject pelaaja1)
69    {
70        if ((pelaaja1 == vasenReuna) || (pelaaja1 == oikeaReuna))
71        {
72            AloitaAlusta();
73        }
74
75
76
77    }
78
79    void LisaaTaso(Vector paikka, double leveys, double korkeus)
80    {
81        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
82        taso.Position = paikka;
83        taso.Color = Color.Green;
84        Add(taso);
85    }
86
87    void LisaaTahti(Vector paikka, double leveys, double korkeus)
88    {
89        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
90        tahti.IgnoresCollisionResponse = true;
91        tahti.Position = paikka;
92        tahti.Image = tahtiKuva;
93        tahti.Tag = "kolikko";
94        Add(tahti);
95    }
96
97    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
98    {
99        pelaaja1 = new PlatformCharacter(leveys, korkeus);
100        pelaaja1.Position = paikka;
101        pelaaja1.Mass = 4.0;
102        pelaaja1.Image = pelaajanKuva;
103        AddCollisionHandler(pelaaja1, "kolikko", TormaaTahteen);
104        AddCollisionHandler(pelaaja1, "pahis", PelaajaOsuu);
105        Add(pelaaja1);
106
107
108    }
109    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
110    {
111        vihollinen = new PlatformCharacter(leveys, korkeus);
112        vihollinen.Position = paikka;
113        vihollinen.Mass = 5.0;
114        vihollinen.Image = vihollisenKuva;
115        Add(vihollinen);
116        vihollinen.Tag = "pahis";
117
118
119
120
121
122
123
124
125
126    }
127
128    void LisaaNappaimet()
129    {
130        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
131        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
132
133        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
134        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
135        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
136
137
138
139
140        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
141
142
143
144        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
145        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
146        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
147
148        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
149    }
150
151    void Liikuta(PlatformCharacter hahmo, double nopeus)
152    {
153        hahmo.Walk(nopeus);
154    }
155
156    void Hyppaa(PlatformCharacter hahmo, double nopeus)
157    {
158        hahmo.Jump(nopeus);
159    }
160
161    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
162    {
163        maaliAani.Play();
164        MessageDisplay.Add("Keräsit kolikon!");
165        tahti.Destroy();
166    }
167    void PelaajaOsuu(PhysicsObject hahmo, PhysicsObject vihollinen)
168    {
169        pelaaja1.Destroy();
170
171
172
173    }
174    void AloitaAlusta()
175    {
176        ClearAll();
177        LuoKentta();
178        LisaaNappaimet();
179
180
181    }IntMeter pisteLaskuri;
182
183    void LuoPistelaskuri()
184    {
185        pisteLaskuri = new IntMeter(0);
186
187
188        Label pisteNaytto = new Label();
189        pisteNaytto.X = Screen.Left + 100;
190        pisteNaytto.Y = Screen.Top - 100;
191        pisteNaytto.TextColor = Color.Black;
192        pisteNaytto.Color = Color.White;
193
194        pisteNaytto.BindTo(pisteLaskuri);
195        Add(pisteNaytto);
196
197        pisteNaytto.IntFormatString = "Kolikoita: {0:D1}";
198       
199    }
200   
201    }
202
203
204
205   
206
207     
208   
209
210
211
212   
213
Note: See TracBrowser for help on using the repository browser.