source: 2015/23/KaapoP/MlgMan/Tasohyppelypeli2/Tasohyppelypeli2/Tasohyppelypeli2.cs @ 5898

Revision 5898, 5.8 KB checked in by sieerinn, 5 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Tasohyppelypeli2 : PhysicsGame
10{
11   
12    const double nopeus = 200;
13    const double hyppyNopeus = 750;
14    const int RUUDUN_KOKO = 40;
15
16    IntMeter pisteLaskuri;
17    EasyHighScore topLista = new EasyHighScore(30);
18
19    int kokonaismaara = 110;
20
21    void LuoPistelaskuri()
22    {
23        pisteLaskuri = new IntMeter(0);
24
25        Label pisteNaytto = new Label();
26        pisteNaytto.Y = Screen.Top - 100;
27        pisteNaytto.TextColor = Color.Black;
28        pisteNaytto.Color = Color.White;
29
30        pisteNaytto.BindTo(pisteLaskuri);
31        Add(pisteNaytto);
32    }
33
34    private double liikkumisnopeus = 300;
35
36    PlatformCharacter pelaaja1;
37
38    Image pelaajanKuva = LoadImage("mlg");
39    Image tahtiKuva = LoadImage("doritos");
40    Image mountainkuva = LoadImage("Mountain");
41    Image alkukuva = LoadImage("mlgman");
42   
43   
44
45    public override void Begin()
46    {
47        Alkuvalikko(new Window());
48       
49
50
51    }
52
53    void ParhaatPisteet()
54    {
55        topLista.Show();
56        topLista.HighScoreWindow.Closed += delegate { Alkuvalikko(new Window()); };
57    }
58
59    void AloitaPeli()
60    {
61        IsPaused = false;
62        pelaaja1 = new PlatformCharacter(5, 5);
63        Gravity = new Vector(0, -0);
64
65        LuoKentta();
66        LisaaNappaimet();
67
68        LuoPistelaskuri();
69
70
71        Camera.Follow(pelaaja1);
72        Camera.ZoomFactor = 1.2;
73        Camera.StayInLevel = true;
74
75    }
76    void Alkuvalikko(Window sender)
77    {
78        ClearAll();
79        Level.Background.Image = alkukuva;
80        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
81        "Aloita peli", "Parhaat pisteet", "Lopeta");
82        Add(alkuValikko);
83
84        alkuValikko.AddItemHandler(0, AloitaPeli);
85        alkuValikko.AddItemHandler(1, ParhaatPisteet);
86        alkuValikko.AddItemHandler(2, Exit);
87    }
88
89    void LuoKentta()
90    {
91        TileMap kentta = TileMap.FromLevelAsset("kentta1");
92        kentta.SetTileMethod('#', LisaaTaso);
93        kentta.SetTileMethod('*', LisaaTahti);
94        kentta.SetTileMethod('N', LisaaPelaaja);
95        kentta.SetTileMethod('M', LisaaMountain);
96        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
97        Level.CreateBorders();
98        Level.Background.CreateGradient(Color.Black, Color.Black);
99    }
100    void LisaaMountain(Vector paikka, double leveys, double korkeus)
101    {
102        PhysicsObject Mountain = new PhysicsObject(60, 60);
103    Mountain.Shape = Shape.Rectangle;
104    Add(Mountain);
105    Mountain.Image = mountainkuva;
106    Mountain.Mass = 4.0;
107    Mountain.Position = paikka;
108    FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja1);
109    seuraajanAivot.Active = true;
110    seuraajanAivot.Speed = 185;               
111    seuraajanAivot.DistanceFar = 600000;           
112    seuraajanAivot.DistanceClose = 200;
113    Mountain.Brain = seuraajanAivot;
114    Mountain.CollisionIgnoreGroup = 3;
115    Mountain.Tag = "Mountain";
116   
117   
118    }
119
120    void LisaaTaso(Vector paikka, double leveys, double korkeus)
121    {
122        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
123        taso.Position = paikka;
124        taso.Color = Color.Yellow;
125        Add(taso);
126        taso.CollisionIgnoreGroup = 3;
127    }
128
129    void LisaaTahti(Vector paikka, double leveys, double korkeus)
130    {
131        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
132        tahti.IgnoresCollisionResponse = true;
133        tahti.Position = paikka;
134        tahti.Image = tahtiKuva;
135        tahti.Tag = "tahti";
136        Add(tahti);
137
138    }
139    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
140    {
141        pelaaja1.Width = 60;
142        pelaaja1.Height = 60;
143        pelaaja1.Position = paikka;
144        pelaaja1.Mass = 4.0;
145        pelaaja1.Image = pelaajanKuva;
146        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
147        Add(pelaaja1);
148        AddCollisionHandler(pelaaja1, "Mountain", TormaaVihuun);
149    }
150
151    void LisaaNappaimet()
152    {
153        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, null, pelaaja1, new Vector(-liikkumisnopeus, 0));
154        Keyboard.Listen(Key.Left, ButtonState.Released, Liikuta, null, pelaaja1, Vector.Zero);
155        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, null, pelaaja1, new Vector(liikkumisnopeus, 0));
156        Keyboard.Listen(Key.Right, ButtonState.Released, Liikuta, null, pelaaja1, Vector.Zero);
157        Keyboard.Listen(Key.Down, ButtonState.Down, Liikuta, null, pelaaja1, new Vector(0, -liikkumisnopeus));
158        Keyboard.Listen(Key.Down, ButtonState.Released, Liikuta, null, pelaaja1, Vector.Zero);
159        Keyboard.Listen(Key.Up, ButtonState.Down, Liikuta, null, pelaaja1, new Vector(0, liikkumisnopeus));
160        Keyboard.Listen(Key.Up, ButtonState.Released, Liikuta, null, pelaaja1, Vector.Zero);
161        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit,"Lopeta peli");
162    }
163
164    void Liikuta(PhysicsObject pelaaja, Vector suunta)
165    {
166        pelaaja.Velocity = suunta;
167    }
168
169    void Hyppaa(PlatformCharacter hahmo, double nopeus)
170    {
171        hahmo.Jump(nopeus);
172
173    }
174
175    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
176    {
177       
178        kokonaismaara--;
179        MessageDisplay.Add(kokonaismaara + " jäljellä!");
180        tahti.Destroy();
181        pisteLaskuri.Value += 1;
182    }
183    void TormaaVihuun(PhysicsObject hahmo, PhysicsObject Vihu)
184    {
185        MessageDisplay.Add("Oh DAYYMMNN!!!11");
186        pelaaja1.Destroy();
187        kokonaismaara = 110;
188        Pause();
189        topLista.EnterAndShow(pisteLaskuri.Value);
190        topLista.HighScoreWindow.Closed += Alkuvalikko;
191
192       
193    }
194}
195
Note: See TracBrowser for help on using the repository browser.