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

Revision 6934, 6.2 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
27
28
29    public override void Begin()
30    {
31        Gravity = new Vector(0, -1000);
32
33        LuoKentta();
34        LisaaNappaimet();
35
36        LuoPistelaskuri();
37
38        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(100);
39        satunnaisAivot.ChangeMovementSeconds = 1;
40        vihollinen.Brain = satunnaisAivot;
41        satunnaisAivot.WanderRadius = 20;
42
43
44
45        Camera.Follow(pelaaja1);
46        Camera.ZoomFactor = 1.2;
47        Camera.StayInLevel = true;
48
49
50    }
51
52    void LuoKentta()
53    {
54
55        Level.AmbientLight = 0.3;
56
57        Light valo = new Light();
58        valo.Intensity = 0.8;
59        valo.Distance = 1200;
60        valo.Position = valo.Position;
61        Add(valo);
62
63        Smoke savu = new Smoke();
64        savu.Position = valo.Position;
65        Add(savu);
66        Wind = new Vector( 0, 0);
67
68        Level.CreateBottomBorder();
69        Level.CreateTopBorder();
70
71        TileMap kentta = TileMap.FromLevelAsset("kentta1");
72        kentta.SetTileMethod('#', LisaaTaso);
73        kentta.SetTileMethod('*', LisaaTahti);
74        kentta.SetTileMethod('V', LisaaVihollinen);
75
76        kentta.SetTileMethod('N', LisaaPelaaja);
77        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
78        Level.CreateBorders();
79        Level.Background.CreateGradient(Color.Blue, Color.SkyBlue);
80    }
81    void PelaajaTormasi(PhysicsObject vihollinen, PhysicsObject pelaaja1)
82    {
83
84        {
85
86        }
87
88
89
90    }
91
92    void LisaaTaso(Vector paikka, double leveys, double korkeus)
93    {
94        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
95        taso.Position = paikka;
96        taso.Color = Color.Green;
97        Add(taso);
98    }
99
100    void LisaaTahti(Vector paikka, double leveys, double korkeus)
101    {
102        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
103        tahti.IgnoresCollisionResponse = true;
104        tahti.Position = paikka;
105        tahti.Image = tahtiKuva;
106        tahti.Tag = "kolikko";
107        Add(tahti);
108    }
109
110    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
111    {
112        pelaaja1 = new PlatformCharacter(leveys, korkeus);
113        pelaaja1.Position = paikka;
114        pelaaja1.Mass = 4.0;
115        pelaaja1.Image = pelaajanKuva;
116        AddCollisionHandler(pelaaja1, "kolikko", TormaaTahteen);
117        AddCollisionHandler(pelaaja1, "pahis", PelaajaOsuu);
118        Add(pelaaja1);
119        pelaaja1.CanRotate = false;
120
121        pelaaja1.Weapon = new PlasmaCannon(20, 5);
122        pelaaja1.Weapon.Ammo.Value = 1000;
123       
124       
125       
126       
127
128    }
129    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
130    {
131        vihollinen = new PlatformCharacter(leveys, korkeus);
132        vihollinen.Position = paikka;
133        vihollinen.Mass = 5.0;
134        vihollinen.Image = vihollisenKuva;
135        Add(vihollinen);
136        vihollinen.Tag = "pahis";
137
138
139
140
141
142
143
144
145
146
147
148    }
149
150    void LisaaNappaimet()
151    {
152        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
153        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
154
155        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
156        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
157        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
158
159        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
160
161
162        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
163
164        Keyboard.Listen(Key.P, ButtonState.Pressed, Pause, "Pysäyttää pelin");
165
166        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
167        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
168        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
169
170        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
171    }
172
173    void Liikuta(PlatformCharacter hahmo, double nopeus)
174    {
175        hahmo.Walk(nopeus);
176    }
177
178    void Hyppaa(PlatformCharacter hahmo, double nopeus)
179    {
180        hahmo.Jump(nopeus);
181    }
182
183    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
184    {
185        maaliAani.Play();
186        MessageDisplay.Add("Keräsit kolikon!");
187        tahti.Destroy();
188    }
189    void PelaajaOsuu(PhysicsObject hahmo, PhysicsObject vihollinen)
190    {
191
192        pelaaja1.Destroy();
193        ClearAll();
194        LuoKentta();
195        LisaaNappaimet();
196        LuoPistelaskuri();
197
198        Camera.Follow(pelaaja1);
199
200
201        Gravity = new Vector(0, -1000);
202
203
204
205
206
207
208    }
209    void AloitaAlusta()
210    {
211        ClearAll();
212        LuoKentta();
213        LisaaNappaimet();
214
215
216    }IntMeter pisteLaskuri;
217
218    void LuoPistelaskuri()
219    {
220        pisteLaskuri = new IntMeter(0);
221
222
223        Label pisteNaytto = new Label();
224        pisteNaytto.X = Screen.Left + 100;
225        pisteNaytto.Y = Screen.Top - 100;
226        pisteNaytto.TextColor = Color.Black;
227        pisteNaytto.Color = Color.White;
228
229        IntMeter keratytEsineet = new IntMeter(0);
230       
231       
232
233        pisteNaytto.BindTo(pisteLaskuri);
234        Add(pisteNaytto);
235
236        pisteNaytto.IntFormatString = "Kolikoita: {0:D1}";
237
238    }
239    void AmmuAseella(PlatformCharacter pelaaja1)
240    {
241        PhysicsObject ammus = pelaaja1.Weapon.Shoot();
242
243    }
244}
245
246
247
248
249     
250   
251
252
253
254   
255
Note: See TracBrowser for help on using the repository browser.