source: 2012/JAO/jouni/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1.cs @ 2728

Revision 2728, 5.3 KB checked in by anonymous, 8 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 Tasohyppelypeli1 : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 1000;
13    const int RUUDUN_KOKO = 40;
14    ScoreList topLista = new ScoreList(10, false, 0);
15    IntMeter pisteLaskuri;
16    PlatformCharacter pelaaja1;
17    Timer aikaLaskuri;
18    Image pelaajanKuva = LoadImage("BadHelloKitty");
19    Image tahtiKuva = LoadImage("heart");
20
21    SoundEffect maaliAani = LoadSoundEffect("maali");
22
23    public override void Begin()
24    {
25        Gravity = new Vector(0, -1000);
26        if (DataStorage.Exists("pisteet.xml"))
27            topLista = DataStorage.Load<ScoreList>(topLista, "pisteet.xml");
28        luoKentta();
29
30        LuoLaskuri();
31        lisaaNappaimet();
32        LuoAikaLaskuri();
33        Camera.Follow(pelaaja1);
34        Camera.ZoomFactor = 1.2;
35        Camera.StayInLevel = true;
36    }
37    void Valikko() 
38    {
39 
40    }
41    void LuoAikaLaskuri()
42    {
43        aikaLaskuri = new Timer();
44        aikaLaskuri.Start();
45
46        Label aikaNaytto = new Label();
47        aikaNaytto.TextColor = Color.White;
48        aikaNaytto.DecimalPlaces = 1;
49        aikaNaytto.X = Screen.Left + 100;
50        aikaNaytto.Y = Screen.Top - 140;
51        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
52        Add(aikaNaytto);
53    }
54    void LuoLaskuri()
55    {
56        pisteLaskuri = new IntMeter(0);
57
58        Label pisteNaytto = new Label();
59        pisteNaytto.X = Screen.Left + 100;
60        pisteNaytto.Y = Screen.Top - 100;
61        pisteNaytto.TextColor = Color.Red;
62        pisteLaskuri.MaxValue = 1;
63        pisteLaskuri.UpperLimit += laskuriYlarajassa;
64        pisteNaytto.BindTo(pisteLaskuri);
65        Add(pisteNaytto);
66    }
67    void laskuriYlarajassa(int arvo)
68    {
69        aikaLaskuri.Pause();
70        HighScoreWindow topIkkuna = new HighScoreWindow(
71                             "Parhaat pisteet",
72                             "Onneksi olkoon, pääsit listalle pisteillä %p! Syötä nimesi:",
73                             topLista, aikaLaskuri.CurrentTime);
74        topIkkuna.Closed += TallennaPisteet;
75        Add(topIkkuna);
76    }
77    void TallennaPisteet(Window sender)
78    {
79        DataStorage.Save<ScoreList>(topLista, "pisteet.xml");
80    }
81    void luoKentta()
82    {
83        TileMap kentta = TileMap.FromFile("kentta1.txt");
84        kentta.SetTileMethod('#', lisaaTaso);
85        kentta.SetTileMethod('*', lisaaTahti);
86        kentta.SetTileMethod('N', lisaaPelaaja);
87        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
88        Level.CreateBorders();
89        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
90    }
91
92    void lisaaTaso(Vector paikka, double leveys, double korkeus)
93    {
94        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
95        taso.Position = paikka;
96        taso.Color = Color.LightPink;
97        Add(taso);
98    }
99
100    void lisaaTahti(Vector paikka, double leveys, double korkeus)
101    {
102        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
103        tahti.IgnoresCollisionResponse = true;
104        tahti.Position = paikka;
105        tahti.Image = tahtiKuva;
106        tahti.Tag = "tahti";
107        Add(tahti);
108    }
109
110    void lisaaPelaaja(Vector paikka, double leveys, double korkeus)
111    {
112        pelaaja1 = new PlatformCharacter(leveys, korkeus);
113        pelaaja1.Position = paikka;
114        pelaaja1.Mass = 4.0;
115        pelaaja1.Image = pelaajanKuva;
116        AddCollisionHandler(pelaaja1, kasittelePelaajanTormays);
117        Add(pelaaja1);
118    }
119
120    void lisaaNappaimet()
121    {
122        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
123        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
124        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
125
126        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
127        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
128        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
129
130        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
131
132        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
133        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
134        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
135
136        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
137    }
138
139    void liikuta(PlatformCharacter hahmo, double nopeus)
140    {
141        hahmo.Walk(nopeus);
142    }
143
144    void hyppaa(PlatformCharacter hahmo, double nopeus)
145    {
146        hahmo.Jump(nopeus);
147    }
148
149    void kasittelePelaajanTormays(PhysicsObject hahmo, PhysicsObject kohde)
150    {
151        if (kohde.Tag.ToString() == "tahti")
152        {
153            maaliAani.Play();
154            MessageDisplay.Add("Keräsit sydämmen!");
155            kohde.Destroy();
156            pisteLaskuri.Value++;
157        }
158    }
159}
Note: See TracBrowser for help on using the repository browser.