source: 2016/26/HennaS/Hyppelypeli/Hyppelypeli/Hyppelypeli/Hyppelypeli.cs @ 7621

Revision 7598, 6.0 KB checked in by hesipone, 3 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 Hyppelypeli : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    Image pelaajanKuva = LoadImage("norsu");
18    Image[] pelaajanKuvat = LoadImages("kuva1","kuva2","kuva3","kuva4","kuva5","kuva6","kuva7","kuva8","kuva9");
19    Image tahtiKuva = LoadImage("tahti");
20    Image timanttiKuva = LoadImage("animatedDogbone");
21
22    EasyHighScore topLista = new EasyHighScore();
23
24    SoundEffect maaliAani = LoadSoundEffect("maali");
25    IntMeter pisteLaskuri;
26
27    public override void Begin()
28    {
29        MediaPlayer.Play("musa");
30
31        topLista.HighScoreWindow.Closed += LoppuValikko;
32        AloitaPeli();
33    }
34
35    void AloitaPeli()
36    {
37        ClearAll();
38        Gravity = new Vector(0, -1000);
39
40        LuoKentta();
41        LisaaNappaimet();
42        LuoPistelaskuri();
43
44        Camera.Follow(pelaaja1);
45        Camera.ZoomFactor = 1.2;
46        Camera.StayInLevel = true;
47    }
48
49    void LuoPistelaskuri()
50    {
51        pisteLaskuri = new IntMeter(0);
52
53        Label pisteNaytto = new Label();
54        pisteNaytto.X = Screen.Left + 100;
55        pisteNaytto.Y = Screen.Top - 100;
56        pisteNaytto.TextColor = Color.Black;
57        pisteNaytto.Color = Color.White;
58        pisteNaytto.Title = "Points";
59
60        pisteNaytto.BindTo(pisteLaskuri);
61        Add(pisteNaytto);
62    }
63
64   
65
66    void LuoKentta()
67    {
68        TileMap kentta = TileMap.FromLevelAsset("kentta1");
69        kentta.SetTileMethod('#', LisaaTaso);
70        kentta.SetTileMethod('*', LisaaTahti);
71        kentta.SetTileMethod('@', LisaaTimantti);
72        kentta.SetTileMethod('N', LisaaPelaaja);
73        kentta.SetTileMethod('V', LisaaVaarallinenPalikka);
74        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
75        Level.CreateBorders();
76        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
77    }
78
79    void LisaaTaso(Vector paikka, double leveys, double korkeus)
80    {
81        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
82        taso.Position = paikka;
83        taso.Color = Color.Green;
84        Add(taso);
85    }
86
87    void LisaaTahti(Vector paikka, double leveys, double korkeus)
88    {
89        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
90        tahti.IgnoresCollisionResponse = true;
91        tahti.Position = paikka;
92        tahti.Image = tahtiKuva;
93        tahti.Tag = "tahti";
94        Add(tahti);
95    }
96
97    void LisaaTimantti(Vector paikka, double leveys, double korkeus)
98    {
99        PhysicsObject timantti = PhysicsObject.CreateStaticObject(leveys, korkeus);
100        timantti.IgnoresCollisionResponse = true;
101        timantti.Position = paikka;
102        timantti.Image = timanttiKuva;
103        timantti.Tag = "timantti";
104        Add(timantti);
105   
106}
107
108    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
109    {
110        pelaaja1 = new PlatformCharacter(leveys * 2.5, korkeus);
111        pelaaja1.Position = paikka;
112        pelaaja1.Mass = 4.0;
113        pelaaja1.Image = pelaajanKuvat[0];
114        pelaaja1.AnimWalk = new Animation(pelaajanKuvat);
115        AddCollisionHandler(pelaaja1, "timantti", TormaaTimanttiin);
116        AddCollisionHandler(pelaaja1, "Vaarallinen", TormaaVaaralliseen);
117        Add(pelaaja1);
118    }
119    void LisaaVaarallinenPalikka(Vector paikka, double leveys, double korkeus)
120    {
121        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
122        taso.Position = paikka;
123        taso.Color = Color.Transparent;
124        taso.Tag = "Vaarallinen";
125        Add(taso);
126    }
127
128    void LisaaNappaimet()
129    {
130        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
131        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
132
133        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
134        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
135        Keyboard.Listen(Key.Up, ButtonState.Down, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
136        //Keyboard.Listen(Key.Down, ButtonState.Down, Hyppaa, "Pelaaja hyppää", pelaaja1, -hyppyNopeus);
137
138        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
139
140        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
141        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
142        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
143
144        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
145    }
146
147    void Liikuta(PlatformCharacter hahmo, double nopeus)
148    {
149        hahmo.Walk(nopeus);
150    }
151
152    void Hyppaa(PlatformCharacter hahmo, double nopeus)
153    {
154        hahmo.Jump(nopeus);
155    }
156
157    void TormaaTimanttiin(PhysicsObject hahmo, PhysicsObject tahti)
158    {
159        MessageDisplay.Add("You Collected A Bone!");
160        pisteLaskuri.Value += 1;
161        tahti.Destroy();
162    }
163    void TormaaVaaralliseen(PhysicsObject hahmo, PhysicsObject tahti)
164    {
165        pelaaja1.Destroy();
166
167        ClearAll();
168
169        topLista.EnterAndShow(pisteLaskuri.Value);
170    }
171
172    void LoppuValikko(Window sender)
173    { 
174        MultiSelectWindow alkuValikko = new MultiSelectWindow("Game Over", "Play Again", "High Score", "Quit");
175        Add(alkuValikko);
176        alkuValikko.AddItemHandler(0, AloitaPeli);
177        alkuValikko.AddItemHandler(1, ParhaatPisteet);
178        alkuValikko.AddItemHandler(2, Exit);
179    }
180
181    void ParhaatPisteet()
182    {
183        topLista.Show();
184    }
185
186    protected override void Update(Time time)
187    {
188        pelaaja1.Walk(nopeus);
189
190        base.Update(time);
191    }
192}
Note: See TracBrowser for help on using the repository browser.