source: 2013/27/OttoW/Stickman jump/Stickman jump/Stickman jump/Stickman_jump.cs @ 4412

Revision 4412, 6.0 KB checked in by otweijo, 7 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 Nappi : PhysicsObject
10{
11    public char MitkaTuhoaa { get; set; }
12    public Nappi(double leveys, double korkeus)
13        : base(leveys, korkeus)
14    {
15
16    }
17}
18
19public class Stickman_jump : PhysicsGame
20{
21    const double nopeus = 200;
22    const double hyppyNopeus = 750;
23    const int RUUDUN_KOKO = 40;
24
25    PlatformCharacter pelaaja1;
26
27    Image nappiKuva = LoadImage("nappi");
28    Image[] pelaajanKuva = LoadImages("Pelihahmo");
29    Image[] kavelykuvat = LoadImages("Pelihahmo", "Pelihahmokävelee1");
30    Image piikitKuva = LoadImage("piikit");
31    Image maaliKuva = LoadImage("lippu");
32    Image oviKuva = LoadImage("ovi");
33    SoundEffect maaliAani = LoadSoundEffect("maali");
34    int kenttaNro = 1;
35
36
37    public override void Begin()
38    {
39        AloitaPeli();
40    }
41
42    void AloitaPeli()
43    {
44
45        SeuraavaKentta();
46
47
48    }
49
50    void SeuraavaKentta()
51    {
52        ClearAll();
53        Gravity = new Vector(0, -1000);
54        if (kenttaNro > 2) Exit();
55        else LuoKentta("kentta" + kenttaNro);
56
57        LisaaNappaimet();
58        Camera.Follow(pelaaja1);
59        Camera.ZoomFactor = 1.2;
60        Camera.StayInLevel = true;
61    }
62
63
64   
65    void LuoKentta(string kentanNimi)
66    {
67        TileMap kentta = TileMap.FromLevelAsset(kentanNimi);
68        kentta.SetTileMethod('#', LisaaTaso);
69        kentta.SetTileMethod('*', LisaaPiikit);
70        kentta.SetTileMethod('N', LisaaPelaaja);
71        kentta.SetTileMethod('M', LisaaMaali);
72        kentta.SetTileMethod('B', LisaaNappi, 'O');
73        kentta.SetTileMethod('O', LisaaOvi, 'O');
74        kentta.SetTileMethod('b', LisaaNappi, 'o');
75        kentta.SetTileMethod('o', LisaaOvi, 'o');
76        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
77        Level.CreateBorders();
78        Level.Background.CreateGradient(Color.Red, Color.White);
79    }
80
81    void LisaaTaso(Vector paikka, double leveys, double korkeus)
82    {
83        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
84        taso.Position = paikka;
85        taso.Color = Color.Brown;
86        Add(taso);
87    }
88
89    void LisaaNappi(Vector paikka, double leveys, double korkeus, char mitkaTuhoaa)
90    {
91        Nappi nappi = new Nappi(leveys, korkeus);
92        nappi.MakeStatic();
93        nappi.MitkaTuhoaa = mitkaTuhoaa;
94        nappi.IgnoresCollisionResponse = true;
95        nappi.Position = paikka;
96        nappi.Image = nappiKuva;
97        nappi.Tag = "nappi";
98        Add(nappi);
99    }
100
101    void LisaaOvi(Vector paikka, double leveys, double korkeus, char omaMerkki)
102    {
103        PhysicsObject ovi = PhysicsObject.CreateStaticObject(leveys, korkeus);
104        ovi.IgnoresCollisionResponse = false;
105        ovi.Position = paikka;
106        ovi.Image = oviKuva;
107        ovi.Tag = omaMerkki.ToString();
108        Add(ovi);
109    }
110
111    void LisaaPiikit(Vector paikka, double leveys, double korkeus)
112    {
113        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
114        tahti.IgnoresCollisionResponse = true;
115        tahti.Position = paikka;
116        tahti.Image = piikitKuva;
117        tahti.Tag = "piikit";
118        Add(tahti);
119    }
120
121    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
122    {
123        pelaaja1 = new PlatformCharacter(leveys, korkeus*1.8);
124        pelaaja1.Position = paikka;
125        pelaaja1.Mass = 4.0;
126        pelaaja1.Image = pelaajanKuva[0];
127        pelaaja1.AnimIdle = new Animation(pelaajanKuva);
128        pelaaja1.AnimWalk = new Animation(kavelykuvat);
129        pelaaja1.AnimWalk.FPS = 5;
130        AddCollisionHandler(pelaaja1, "piikit", TormaaPiikkeihin);
131        AddCollisionHandler(pelaaja1, "maali", PaaseeMaaliin);
132        AddCollisionHandler<PhysicsObject, Nappi>(pelaaja1, PainaaNappia);
133        Add(pelaaja1);
134    }
135
136    void PaaseeMaaliin(PhysicsObject obj, PhysicsObject toinen)
137    {
138        kenttaNro++;
139        SeuraavaKentta();
140    }
141
142    void LisaaMaali(Vector paikka, double leveys, double korkeus)
143    {
144        PhysicsObject maali = new PhysicsObject(leveys, korkeus);
145        maali.Position = paikka;
146        maali.Image = maaliKuva;
147        maali.Tag = "maali";
148        Add(maali);
149    }
150
151
152    void LisaaNappaimet()
153    {
154        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
155        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
156
157        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
158        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
159        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
160        Keyboard.Listen(Key.R, ButtonState.Pressed, AloitaPeli, "Aloittaa pelin uudestaan");
161
162
163        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
164
165        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
166        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
167        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
168
169        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
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        hahmo.Jump(nopeus);
180    }
181
182    void TormaaPiikkeihin(PhysicsObject hahmo, PhysicsObject piikit)
183    {
184        maaliAani.Play();
185        MessageDisplay.Add("Törmäsit piikkiin!");
186        pelaaja1.Destroy();
187    }
188    void PainaaNappia(PhysicsObject Hahmo, Nappi nappi)
189    {
190        GetObjectsWithTag(nappi.MitkaTuhoaa.ToString()).ForEach(n => n.Destroy());
191    }
192}
Note: See TracBrowser for help on using the repository browser.