source: 2013/27/IlmariT/bob/bob/bob.cs @ 4364

Revision 4364, 6.4 KB checked in by imtverin, 10 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 bob : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    int kenttaNro = 2;
16
17    PhysicsObject pelaaja1;
18    PhysicsObject vihollinen1;
19    PhysicsObject vihollinen2;
20
21    Image pelaajanKuva = LoadImage("bob");
22    Image vihollisenKuva1 = LoadImage("kummitus");
23    Image vihollisenKuva2 = LoadImage("zombi");
24    Image tahtiKuva = LoadImage("rahaa");
25
26    SoundEffect maaliAani = LoadSoundEffect("maali");
27    IntMeter pisteLaskuri = new IntMeter(0, 0, 0);
28
29
30    public override void Begin()
31    {
32        Gravity = new Vector(0, 0);
33
34        SeuraavaKentta();
35        AloitaPeli();
36    }
37
38    private void AloitaPeli()
39    {
40        LisaaNappaimet();
41        LuoPistelaskuri();
42
43        Camera.Follow(pelaaja1);
44        Camera.ZoomFactor = 1.2;
45        Camera.StayInLevel = true;
46    }
47
48    void LuoPistelaskuri()
49    {
50
51        Label pisteNaytto = new Label();
52        pisteNaytto.X = Screen.Left + 100;
53        pisteNaytto.Y = Screen.Top - 100;
54        pisteNaytto.TextColor = Color.Black;
55        pisteNaytto.Color = Color.White;
56        pisteNaytto.Title = "Pisteet";
57
58        pisteLaskuri.UpperLimit += KaikkiKeratty;
59
60        pisteNaytto.BindTo(pisteLaskuri);
61        Add(pisteNaytto);
62    }
63
64    void SeuraavaKentta()
65    {
66        ClearAll();
67        pisteLaskuri.MaxValue = 0;
68        pisteLaskuri.Value = 0;
69        pisteLaskuri.DefaultValue = 0;
70        if (kenttaNro == 1) LuoKentta("kentta1");
71        else if (kenttaNro == 2) LuoKentta("kentta2");
72        else if (kenttaNro > 2) Exit();
73
74    }
75
76    void LuoKentta(string kenttaTiedostonNimi)
77    {
78        TileMap kentta = TileMap.FromLevelAsset(kenttaTiedostonNimi);
79        kentta.SetTileMethod('#', LisaaTaso);
80        kentta.SetTileMethod('*', LisaaTahti);
81        kentta.SetTileMethod('N', LisaaPelaaja);
82        kentta.SetTileMethod('1', LisaaVihollinen1);
83        kentta.SetTileMethod('2', LisaaVihollinen2);
84        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
85        Level.CreateBorders();
86        Level.Background.CreateGradient(Color.DarkRed, Color.DarkRed);
87    }
88
89    void LisaaTaso(Vector paikka, double leveys, double korkeus)
90    {
91        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
92        taso.Position = paikka;
93        taso.Color = Color.Black;
94        Add(taso);
95    }
96
97    void LisaaTahti(Vector paikka, double leveys, double korkeus)
98    {
99        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
100        tahti.IgnoresCollisionResponse = true;
101        tahti.Position = paikka;
102        tahti.Image = tahtiKuva;
103        tahti.Tag = "tahti";
104        pisteLaskuri.MaxValue += 1;
105        Add(tahti);
106    }
107
108    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
109    {
110        pelaaja1 = new PhysicsObject(leveys-5, korkeus-5);
111        pelaaja1.Position = paikka;
112        pelaaja1.Mass = 4.0;
113        pelaaja1.Image = pelaajanKuva;
114        pelaaja1.Restitution = 0.0;
115        pelaaja1.CanRotate = false;
116        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
117        Add(pelaaja1);
118    }
119
120    void LisaaVihollinen1(Vector paikka, double leveys, double korkeus)
121    {
122        vihollinen1 = new PhysicsObject(leveys - 5, korkeus - 5);
123        vihollinen1.Position = paikka;
124        vihollinen1.Mass = 4.0;
125        vihollinen1.Image = vihollisenKuva1;
126        vihollinen1.Restitution = 0.0;
127        vihollinen1.CanRotate = false;
128        Add(vihollinen1);
129    }
130
131    void LisaaVihollinen2(Vector paikka, double leveys, double korkeus)
132    {
133        vihollinen2 = new PhysicsObject(leveys - 5, korkeus - 5);
134        vihollinen2.Position = paikka;
135        vihollinen2.Mass = 4.0;
136        vihollinen2.Image = vihollisenKuva2;
137        vihollinen2.Restitution = 0.0;
138        vihollinen2.CanRotate = false;
139        Add(vihollinen2);
140    }
141
142    void LisaaNappaimet()
143    {
144        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
145        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
146
147        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaVasemmalle, "Liikkuu vasemmalle", pelaaja1, nopeus);
148        Keyboard.Listen(Key.Left, ButtonState.Released, LiikutaVasemmalle, "Pysähtyy", pelaaja1, 0.0);
149        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaOikealle, "Liikkuu vasemmalle", pelaaja1, nopeus);
150        Keyboard.Listen(Key.Right, ButtonState.Released, LiikutaOikealle, "Pysähtyy", pelaaja1, 0.0);
151        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaYlos, "Liikkuu ylös", pelaaja1, nopeus);
152        Keyboard.Listen(Key.Up, ButtonState.Released, LiikutaYlos, "Pysähtyy", pelaaja1, 0.0);
153        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaAlas, "Liikkuu alas", pelaaja1, nopeus);
154        Keyboard.Listen(Key.Down, ButtonState.Released, LiikutaAlas, "Pysähtyy", pelaaja1, 0.0);
155       
156        //ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
157
158        //ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
159        //ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
160        //ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
161
162        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
163    }
164
165    void LiikutaVasemmalle(PhysicsObject hahmo, double nopeus)
166    {
167        hahmo.Move(new Vector(-nopeus, 0));
168    }
169
170    void LiikutaOikealle(PhysicsObject hahmo, double nopeus)
171    {
172        hahmo.Move(new Vector(nopeus, 0));
173    }
174
175    void LiikutaYlos(PhysicsObject hahmo, double nopeus)
176    {
177        hahmo.Move(new Vector(0, nopeus));
178    }
179
180    void LiikutaAlas(PhysicsObject hahmo, double nopeus)
181    {
182        hahmo.Move(new Vector(0, -nopeus));
183    }
184
185    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
186    {
187        maaliAani.Play();
188        MessageDisplay.Add("Keräsit rahaa!!");
189        tahti.Destroy(); 
190        pisteLaskuri.Value += 1;
191
192    }
193
194    void KaikkiKeratty()
195    {
196        kenttaNro++;
197        SeuraavaKentta();
198        AloitaPeli();
199    }
200}
Note: See TracBrowser for help on using the repository browser.