source: 2010/24/timisahe/Makkarajahti/Peli.cs @ 898

Revision 898, 5.2 KB checked in by timisahe, 10 years ago (diff)
Line 
1using System;
2using Jypeli;
3using Jypeli.ScreenObjects;
4using Jypeli.Assets;
5
6
7class Tasohyppely : PhysicsGame
8{
9    const double nopeus =200;
10    const double hyppyVoima = 4000;
11
12    IntMeter pisteLaskuri;
13    ValueDisplay pisteNaytto;
14
15    PlatformCharacter pelaaja1;
16
17    int kenttaNro; // monesko kenttä on menossa
18
19
20    protected override void Begin()
21    {
22
23       
24
25
26       
27
28        kenttaNro = 0;
29
30        // Luodaan pistelaskuri
31        pisteLaskuri = new IntMeter(0);
32
33        // luodaan pistelaskunäyttö
34        pisteNaytto = new ValueDisplay();
35        pisteNaytto.Text = "Makkaroita: ";
36        pisteNaytto.X = Screen.RightSafe - 250;
37        pisteNaytto.Y = Screen.TopSafe - 50;
38        pisteNaytto.BindTo(pisteLaskuri);
39        Add(pisteNaytto);   // lisätään peliin
40
41        // Zoomataan lähemmäksi
42        Camera.ZoomFactor = 2.0;
43
44        Camera.StayInLevel = true;
45
46        seuraavaKentta();
47        MessageDisplay.Add("Etsi kaikka Makkarat!");
48
49
50
51       
52
53       
54
55
56    }
57
58    void seuraavaKentta()
59    {
60        ClearAll();
61        pisteLaskuri.Reset();
62
63        kenttaNro += 1; // lisätään kenttänumeroa yhdellä
64        MessageDisplay.Add("Kenttä " + kenttaNro);
65
66        // Asetetaan painovoima
67        Gravity = new Vector(0, -1000);
68
69        luoKentta();
70        lisaaNappaimet();
71        Camera.Follow(pelaaja1);
72    }
73
74    void luoKentta()
75    {
76       
77        Level.Background.CreateGradient(Color.SkyBlue, Color.SkyBlue);
78
79        TileMap ruudut = TileMap.FromFile("kentta1.txt");
80
81        ruudut['='] = lisaaTaso;
82        ruudut['*'] = lisaaPelaajat;
83        ruudut['o'] = lisaaPyoreataso;
84        ruudut['i'] = seina;
85
86        const int ruudunLeveys = 50;
87        const int ruudunKorkeus = 50;
88
89        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
90         Level.CreateBorders();
91    }
92
93
94    PhysicsObject lisaaTaso()
95    {
96        PhysicsObject taso = PhysicsObject.CreateStaticObject(50.0, 50.0);
97        taso.Color = Color.Orange;
98        taso.Image = LoadImage("lattia");
99        Add(taso);
100
101        return taso;
102    }
103    PhysicsObject lisaaPyoreataso()
104    {
105        PhysicsObject pyoreataso = PhysicsObject.CreateStaticObject(50.0, 50.0,Shapes.Circle);
106        pyoreataso.Color = Color.Black;
107        pyoreataso.Image = LoadImage("kivi");
108        Add(pyoreataso);
109
110        return pyoreataso;
111       
112    }
113        PlatformCharacter lisaaPelaajat()
114    {
115        pelaaja1 = new PlatformCharacter(40, 60);
116        pelaaja1.Mass = 8.0;
117        pelaaja1.Image = LoadImage("Bulla");
118
119        AddCollisionHandler(pelaaja1, osuiMaaliin);
120
121        Add(pelaaja1);
122
123        return pelaaja1;
124
125
126    }
127
128        PhysicsObject seina()
129        {
130            PhysicsObject seina = PhysicsObject.CreateStaticObject(50.0, 50.0);
131            seina.Color = Color.Orange;
132            Add(seina);
133
134            return seina;
135        }
136
137    void lisaaMaali()
138    {
139        PhysicsObject maali = PhysicsObject.CreateStaticObject(50, 50, Shapes.Circle);
140        maali.Tag = "maali";
141        maali.IgnoresCollisionResponse = true;
142        maali.X = 30;
143        maali.Y = 500;
144        maali.Image = LoadImage("Makkara");
145        Add(maali);
146    }
147
148    void lisaaNappaimet()
149    {
150        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
151        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
152
153        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
154        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
155        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
156       
157
158       
159        lisaaGamePadNappaimet(ControllerOne);
160    }
161
162    void lisaaGamePadNappaimet(GamePad controller)
163    {
164        controller.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
165
166        controller.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
167        controller.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
168        controller.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
169    }
170
171    void liikuta(PlatformCharacter hahmo, double nopeus)
172    {
173        hahmo.Walk(nopeus);
174    }
175
176    void hyppaa(PlatformCharacter hahmo, double voima)
177    {
178        hahmo.Jump(voima);
179    }
180
181    void osuiMaaliin(PhysicsObject collidingObject, PhysicsObject otherObject)
182    {
183        if (otherObject.Tag.ToString() == "maali")
184        {
185            this.PlaySound("maali");
186            int edellisenKentanPisteet = pisteLaskuri.Value;
187            seuraavaKentta();
188            MessageDisplay.Add("Pääsit läpi kentän " + kenttaNro + ". Makkaroita: " + edellisenKentanPisteet);
189        }
190    }
191
192
193    void KuulaOsuu(PhysicsObject kuula, PhysicsObject toinen)
194    {
195        kuula.Destroy();
196        Explosion rajahdys = new Explosion(40);
197        rajahdys.Position = kuula.Position;
198        Add(rajahdys);
199    }
200
201
202
203
204
205
206
207
208}
Note: See TracBrowser for help on using the repository browser.