source: 2011/26/LasseV/ShapeRace/ShapeRace/ShapeRace/Peli.cs @ 2379

Revision 2379, 5.9 KB checked in by lavirtan, 8 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Peli : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 200;
13    const int RUUDUN_KOKO = 46;
14   
15    PlatformCharacter pelaaja1;
16
17    Image tahtiKuva = LoadImage("tahti");
18    Image Ylapiikki = LoadImage("Ylapiikki");
19    Image Alapiikki = LoadImage("Alapiikki");
20
21    public override void Begin()
22    {
23        Gravity = new Vector(0, -1000);
24       
25
26        luoKentta();
27        lisaaNappaimet();
28       
29        Camera.Follow(pelaaja1);
30        Camera.ZoomFactor = 1.2;
31        Camera.StayInLevel = true;
32       
33    }
34
35    void AloitaAlusta()
36    {
37        ClearAll();
38        luoKentta();
39        lisaaNappaimet();
40    }
41   
42    void luoKentta()
43    {
44        TileMap kentta = TileMap.FromFile("kentta1.txt");
45        kentta['#'] = lisaaTaso;
46        kentta['*'] = lisaaTahti;
47        kentta['P'] = lisaaPelaaja;
48        kentta['v'] = lisaaYlaPiikki;
49        kentta['^'] = lisaaAlaPiikki;
50        kentta['M'] = lisaaMaali;
51        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
52        Level.CreateBorders();
53        Level.BackgroundColor = Color.DarkGray;
54    }
55
56    PhysicsObject lisaaYlaPiikki()
57    {
58        PhysicsObject piikki = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
59        Shape shape = Shape.FromImage(Ylapiikki);
60        piikki.Image = Ylapiikki;
61        piikki.Shape = shape;
62        piikki.Tag = "piikki";
63        piikki.Height = 26;
64        piikki.Width = 26;
65       
66        return piikki;
67    }
68
69    PhysicsObject lisaaMaali()
70    {
71        PhysicsObject maali = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO, Shape.Rectangle, CollisionShapeQuality.Best);
72        maali.Color = Color.Red;
73        maali.Tag = "maali";
74        return maali;
75    }
76
77    PhysicsObject lisaaAlaPiikki()
78    {
79        PhysicsObject alapiikki = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
80        Shape shape = Shape.FromImage(Alapiikki);
81        alapiikki.Image = Alapiikki;
82        alapiikki.Shape = shape;
83        alapiikki.Tag = "alapiikki";
84        alapiikki.Height = 26;
85        alapiikki.Width = 26;
86       
87        return alapiikki;
88    }
89
90
91    PhysicsObject lisaaTaso()
92    {
93        PhysicsObject taso = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO, Shape.Rectangle, CollisionShapeQuality.Best);
94        taso.Color = Color.Gray;
95        return taso;
96    }
97
98    PhysicsObject lisaaTahti()
99    {
100        PhysicsObject tahti = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
101        tahti.Image = tahtiKuva;
102        tahti.Tag = "tahti";
103        tahti.Height = 20;
104        tahti.Width = 20;
105        return tahti;
106    }
107
108    PlatformCharacter lisaaPelaaja()
109    {
110
111
112        pelaaja1 = new PlatformCharacter(30, 30);
113        pelaaja1.Mass = 10.0;
114        pelaaja1.Shape = Shape.Circle;
115        pelaaja1.Color = Color.Orange;
116        AddCollisionHandler(pelaaja1, osuTahteen);
117        AddCollisionHandler(pelaaja1, osuPiikkiin);
118        AddCollisionHandler(pelaaja1, osuMaaliin);
119        return pelaaja1;
120    }
121
122
123    void lisaaNappaimet()
124    {
125        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
126        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
127        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
128        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
129        Keyboard.Listen(Key.B, ButtonState.Down, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
130        Keyboard.Listen(Key.Space, ButtonState.Pressed, vaihdapainovoimaa, "Vaihda painovoiman suuntaa", pelaaja1);
131        Keyboard.Listen(Key.Down, ButtonState.Pressed, vaihdapienemmaksi, "Muutu pieneksi", pelaaja1);
132        Keyboard.Listen(Key.Up, ButtonState.Pressed, vaihdasuuremmaksi,"Muutu takaisin suureksi", pelaaja1);
133    }
134
135    void vaihdasuuremmaksi(PlatformCharacter pelaaja1)
136    {
137        pelaaja1.Height = 30;
138        pelaaja1.Width = 30;
139        pelaaja1.Color = Color.Orange;
140    }
141   
142   
143   
144   
145    void vaihdapainovoimaa(PlatformCharacter pelaaja1)
146    {
147        if (pelaaja1.Height > 16)
148        {
149           
150       
151            if (Gravity.Y < 0)
152            {
153                Gravity = new Vector(0, 1000);
154                pelaaja1.Jump(nopeus);
155            }
156
157            else
158            {
159                Gravity = new Vector(0, -1000);
160                //pelaaja1.Hit(new Vector(0, -1000));
161            }
162        }
163    }
164
165    void vaihdapienemmaksi(PlatformCharacter pelaaja1)
166    {       
167        pelaaja1.Height = 16; 
168        pelaaja1.Width = 16;
169        pelaaja1.Color = Color.DarkOrange;
170    }
171
172    void liikuta(PlatformCharacter hahmo, double nopeus)
173    {
174        hahmo.Walk(nopeus);
175    }
176
177    void hyppaa(PlatformCharacter hahmo, double nopeus)
178    { 
179        if (pelaaja1.Height < 30)
180        {
181            hahmo.Jump(nopeus);
182        }
183       
184       
185    }
186
187    void osuTahteen(PhysicsObject hahmo, PhysicsObject kohde)
188    {
189        if (kohde.Tag.ToString() == "tahti")
190        {
191            MessageDisplay.Add("Keräsit tähden!");
192            kohde.Destroy();
193        }
194    }
195
196    void osuPiikkiin(PhysicsObject hahmo, PhysicsObject kohde)
197    {
198       
199
200        if (kohde.Tag.ToString() == "piikki")
201        {
202           
203            AloitaAlusta();
204        }
205
206        if (kohde.Tag.ToString() == "alapiikki")
207        {
208
209            AloitaAlusta();
210        }
211
212    }
213
214    void osuMaaliin(PhysicsObject hahmo, PhysicsObject kohde)
215    {
216        if (kohde.Tag.ToString() == "maali")
217        {
218            AloitaAlusta();
219        }
220   
221    }
222
223}
224
Note: See TracBrowser for help on using the repository browser.