source: 2010/31/hesasnel/Teron seikkailu/Peli.cs @ 1668

Revision 1668, 7.8 KB checked in by hesasnel, 12 years ago (diff)

Kuopasta kuolee. Taivas on eri värinen.

Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5
6
7class Tasohyppely : PhysicsGame
8{
9    const int ruudunKorkeus = 30;
10    const int ruudunLeveys = 30;
11    const double nopeus = 400;
12    const double hyppyVoima = 3500;
13
14    Vector normaalipainovoima = new Vector(0, -1000);
15    Vector leijumisvoima = new Vector(0, 50);
16    Vector aloitusPaikka;
17
18    Image paikallaanVasemmalle = LoadImage("Tero vasen");
19    Image paikallaanOikealle = LoadImage("Tero");
20    Image[] kavelyVasemmalle = LoadImages("Tero vasen", "Tero 2 vasen");
21    Image[] kavelyOikealle = LoadImages("Tero", "Tero 2");
22    Image[] hyppyOikealle = LoadImages("Tero hyppää");
23    Image[] hyppyVasemmalle = LoadImages ("Tero hyppää vasen");
24    Image[] leijuntaOikealle = LoadImages("ropelli pyörii","ropelli pyörii2");
25    Image[] leijuntaVasemmalle = LoadImages("ropelli pyörii vasen", "ropelli pyörii2 vasen");
26    Image[] multa = LoadImages("multa");
27    Image[] ruoho = LoadImages("Ruohikko");
28    Image[] ovi = LoadImages("Ovi");
29    Image[] taikajuoma = LoadImages("Taikajuoma");
30    Image[] tramppa = LoadImages("Tramppa");
31
32    bool taikajuomakaytossa = false;
33
34    Animation hyppyanim;
35    Animation kavelyanim;
36    Animation leijuntaOikealleanim;
37    Animation leijuntaVasemmalleanim;
38    PlatformCharacter pelaaja1;
39
40    protected override void Begin()
41    {
42        Gravity = new Vector(0, -1000);
43        hyppyanim = new Animation(hyppyOikealle);
44        //kavelyanim = new Animation();
45        leijuntaOikealleanim = new Animation(leijuntaOikealle);
46        leijuntaVasemmalleanim = new Animation(leijuntaVasemmalle);
47
48        luoKentta();
49        lisaaNappaimet();
50
51        Camera.Follow(pelaaja1);
52        Camera.ZoomFactor = 2.0;
53        Camera.StayInLevel = true;
54    }
55
56    void luoKentta()
57    {
58        TileMap ruudut = TileMap.FromFile("Kenttä1.txt");
59        ruudut['='] = LuoMulta;
60        ruudut['.'] = LuoRuohikko;
61        ruudut['F'] = LuoTaikajuoma;
62        ruudut['T'] = LuoTramppa;
63        ruudut['M'] = LuoOvi;
64        ruudut['P'] = LuoTero;
65        ruudut['D'] = LuoPohjatonrotko;
66        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
67        Level.CreateBorders();
68        Level.Background.CreateGradient(Color.SkyBlue, Color.Blue);
69
70        aloitusPaikka = pelaaja1.Position;
71        //lisaaPelaajat();
72    }
73
74    void lisaaTaso(double x, double y)
75    {
76        PhysicsObject taso = PhysicsObject.CreateStaticObject(100, 30);
77        taso.Color = Color.Green;
78        taso.X = x;
79        taso.Y = y;
80        Add(taso);
81    }
82
83    void lisaaPelaajat()
84    {
85        pelaaja1 = new PlatformCharacter(70, 100);
86        pelaaja1.Mass = 4.0;
87        pelaaja1.KineticFriction = 1.0;       
88        pelaaja1.Image = LoadImage("Tero");
89        AddCollisionHandler(pelaaja1, KasittelePelaajanTormays);
90
91        pelaaja1.X = 0;
92        pelaaja1.Y = Level.Bottom + 120;
93        pelaaja1.LeftIdleAnimation = new Animation(paikallaanVasemmalle);
94        pelaaja1.RightIdleAnimation = new Animation(paikallaanOikealle);
95
96        pelaaja1.LeftWalkingAnimation = new Animation(kavelyVasemmalle);
97        pelaaja1.RightWalkingAnimation = new Animation(kavelyOikealle);
98
99        Add(pelaaja1);
100    }
101
102    void KasittelePelaajanTormays(PhysicsObject pelaaja, PhysicsObject kohde)
103    {
104        string tagi = kohde.Tag.ToString();
105
106        if (tagi == "taikajuoma")
107        {
108            kohde.Destroy();
109            taikajuomakaytossa = true;
110        }
111        if (tagi == "taso")
112        {
113            //Gravity = normaalipainovoima;
114        }
115        if (tagi == "pohjatonrotko")
116        {
117            pelaaja1.Position = aloitusPaikka;
118        }
119        if (tagi == "tramppa")
120        {
121            //Gravity = new Vector(0, -50);
122            //pelaaja1.Velocity = new Vector(1000.0, 0.0);
123            //pelaaja1.Hit(new Vector(0.0, 7000.0));
124            pelaaja1.Jump(-7000.0);
125        }
126        if (tagi == "OVI")
127        {
128         
129        }
130    }
131
132    void lisaaNappaimet()
133    {
134        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
135        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
136
137        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
138        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
139        Keyboard.Listen(Key.Space, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
140        Keyboard.Listen(Key.Space, ButtonState.Down, leiju, "Leiju");
141
142        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
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, hyppyVoima);
147
148    }
149
150    void leiju()
151    {
152        if (taikajuomakaytossa)
153        {
154            //Gravity = new Vector(0, -200);
155
156            pelaaja1.Hit(leijumisvoima);
157            pelaaja1.Animation = new Animation(leijuntaOikealle);
158            pelaaja1.Animation = new Animation(leijuntaVasemmalle);
159        }
160    }
161
162    void liikuta(PlatformCharacter hahmo, double nopeus)
163    {
164        hahmo.Walk(nopeus);
165    }
166
167    void hyppaa(PlatformCharacter hahmo, double voima)
168    {
169        hahmo.Jump(voima);
170        hahmo.Animation = new Animation(hyppyOikealle);
171        hahmo.Animation.Start(1);
172    }
173    PhysicsObject LuoMulta()
174    {
175        PhysicsObject multa = PhysicsObject.CreateStaticObject(31.0,31.0);
176        multa.Image = LoadImage("multa");
177        return multa;
178           
179    }
180    PhysicsObject LuoRuohikko()
181    {
182        PhysicsObject Ruohikko = PhysicsObject.CreateStaticObject(31.0, 31.0);
183        Ruohikko.Image = LoadImage("Ruohikko");
184        Ruohikko.Tag = "taso";
185        return Ruohikko;
186    }
187    PhysicsObject LuoTaikajuoma()
188    {
189        PhysicsObject Taikajuoma = PhysicsObject.CreateStaticObject(50.0, 80.0);
190        Taikajuoma.Image = LoadImage("Taikajuoma");
191        Taikajuoma.Tag = "taikajuoma";
192        return Taikajuoma;
193    }
194    PhysicsObject LuoTramppa()
195    {
196        PhysicsObject Tramppa = PhysicsObject.CreateStaticObject(80.0, 50.0);
197        Tramppa.Image = LoadImage("Tramppa");
198        Tramppa.Tag = "tramppa";
199        return Tramppa;
200    }
201    PhysicsObject LuoOvi()
202    {
203        PhysicsObject Ovi = PhysicsObject.CreateStaticObject(50.0, 140.0);
204        Ovi.Image = LoadImage("Ovi");
205        Ovi.Tag = "OVI";
206        return Ovi;
207    }
208    PhysicsObject LuoTero()
209    {
210        pelaaja1 = new PlatformCharacter(70, 100);
211        pelaaja1.Shape = Shapes.FromImage(LoadImage("Tero"));
212        pelaaja1.Mass = 4.0;
213        pelaaja1.KineticFriction = 0.0;
214        pelaaja1.Image = LoadImage("Tero");
215        AddCollisionHandler(pelaaja1, KasittelePelaajanTormays);
216        pelaaja1.LeftIdleAnimation = new Animation(paikallaanVasemmalle);
217        pelaaja1.RightIdleAnimation = new Animation(paikallaanOikealle);
218
219        pelaaja1.LeftWalkingAnimation = new Animation(kavelyVasemmalle);
220        pelaaja1.RightWalkingAnimation = new Animation(kavelyOikealle);
221        return (PhysicsObject)pelaaja1;
222    }
223    PhysicsObject LuoPohjatonrotko()
224    {
225        PhysicsObject Pohjatonrotko = PhysicsObject.CreateStaticObject(31.0, 31.0);
226        //Pohjatonrotko.Image = LoadImage("Eikerrassaanmitään");
227        Pohjatonrotko.Tag = "pohjatonrotko";
228        Pohjatonrotko.IsVisible = false;
229
230        return Pohjatonrotko;
231    }
232
233    protected override void Update(Time time)
234    {
235        //if (pelaaja1.a
236        base.Update(time);
237    }
238       
239} 
Note: See TracBrowser for help on using the repository browser.