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

Revision 7598, 6.0 KB checked in by hesipone, 3 years ago (diff)
RevLine 
[7556]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");
[7586]18    Image[] pelaajanKuvat = LoadImages("kuva1","kuva2","kuva3","kuva4","kuva5","kuva6","kuva7","kuva8","kuva9");
[7556]19    Image tahtiKuva = LoadImage("tahti");
[7595]20    Image timanttiKuva = LoadImage("animatedDogbone");
[7556]21
[7598]22    EasyHighScore topLista = new EasyHighScore();
23
[7556]24    SoundEffect maaliAani = LoadSoundEffect("maali");
[7598]25    IntMeter pisteLaskuri;
[7556]26
27    public override void Begin()
28    {
[7598]29        MediaPlayer.Play("musa");
30
31        topLista.HighScoreWindow.Closed += LoppuValikko;
32        AloitaPeli();
33    }
34
35    void AloitaPeli()
36    {
37        ClearAll();
[7556]38        Gravity = new Vector(0, -1000);
39
40        LuoKentta();
41        LisaaNappaimet();
[7598]42        LuoPistelaskuri();
[7556]43
44        Camera.Follow(pelaaja1);
45        Camera.ZoomFactor = 1.2;
46        Camera.StayInLevel = true;
47    }
48
[7598]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
[7556]66    void LuoKentta()
67    {
68        TileMap kentta = TileMap.FromLevelAsset("kentta1");
69        kentta.SetTileMethod('#', LisaaTaso);
70        kentta.SetTileMethod('*', LisaaTahti);
[7574]71        kentta.SetTileMethod('@', LisaaTimantti);
[7556]72        kentta.SetTileMethod('N', LisaaPelaaja);
[7574]73        kentta.SetTileMethod('V', LisaaVaarallinenPalikka);
[7556]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
[7574]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
[7556]108    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
109    {
[7586]110        pelaaja1 = new PlatformCharacter(leveys * 2.5, korkeus);
[7556]111        pelaaja1.Position = paikka;
112        pelaaja1.Mass = 4.0;
[7586]113        pelaaja1.Image = pelaajanKuvat[0];
114        pelaaja1.AnimWalk = new Animation(pelaajanKuvat);
[7574]115        AddCollisionHandler(pelaaja1, "timantti", TormaaTimanttiin);
116        AddCollisionHandler(pelaaja1, "Vaarallinen", TormaaVaaralliseen);
[7556]117        Add(pelaaja1);
118    }
[7574]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    }
[7556]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);
[7564]135        Keyboard.Listen(Key.Up, ButtonState.Down, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
136        //Keyboard.Listen(Key.Down, ButtonState.Down, Hyppaa, "Pelaaja hyppää", pelaaja1, -hyppyNopeus);
[7556]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
[7574]157    void TormaaTimanttiin(PhysicsObject hahmo, PhysicsObject tahti)
[7556]158    {
[7598]159        MessageDisplay.Add("You Collected A Bone!");
160        pisteLaskuri.Value += 1;
[7556]161        tahti.Destroy();
162    }
[7574]163    void TormaaVaaralliseen(PhysicsObject hahmo, PhysicsObject tahti)
164    {
[7598]165        pelaaja1.Destroy();
166
[7574]167        ClearAll();
[7598]168
169        topLista.EnterAndShow(pisteLaskuri.Value);
[7574]170    }
[7586]171
[7598]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
[7586]186    protected override void Update(Time time)
187    {
188        pelaaja1.Walk(nopeus);
189
190        base.Update(time);
191    }
[7556]192}
Note: See TracBrowser for help on using the repository browser.