source: 2012/27/MikaelK/hailstorm/hailstorm/raekuuro.cs @ 3674

Revision 3674, 6.7 KB checked in by mikrats, 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 hailstorm : PhysicsGame
10{
11    const double nopeus = 300;
12    const double hyppyNopeus = 1100;
13    const int RUUDUN_KOKO = 40;
14
15    Image Talvi = LoadImage ("Talvi");
16    PlatformCharacter pelaaja1;
17
18    Image pelaajanKuva = LoadImage("Eskimo");
19    Image tahtiKuva = LoadImage("tahti");
20
21    SoundEffect maaliAani = LoadSoundEffect("maali");
22    ScoreList topLista = new ScoreList(10, false, 0);
23   
24    public override void Begin()
25    {
26     
27        if (DataStorage.Exists("pisteet.xml"))
28      topLista = DataStorage.Load<ScoreList>(topLista, "pisteet.xml");
29      AlkuValikko();
30     
31 
32    }
33
34    void LuoKentta()
35    {
36        TileMap kentta = TileMap.FromLevelAsset("kentta1");
37        kentta.SetTileMethod('#', LisaaTaso);
38        kentta.SetTileMethod('*', LuoTahti);
39        kentta.SetTileMethod('N', LisaaPelaaja);
40        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
41        Level.CreateBorders();
42        Level.Background.Image = Talvi;
43        Level.Background.FitToLevel();
44    }
45
46    void LisaaTaso(Vector paikka, double leveys, double korkeus)
47    {
48        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
49        taso.Position = paikka;
50        taso.Color = Color.Blue;
51        Add(taso);
52    }
53
54    void LuoTahti(Vector paikka, double leveys, double korkeus)
55    {
56        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
57        tahti.IgnoresCollisionResponse = true;
58        tahti.Position = paikka;
59        tahti.Image = tahtiKuva;
60        tahti.Tag = "tahti";
61        Add(tahti);
62    }
63
64    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
65    {
66        pelaaja1 = new PlatformCharacter(leveys, korkeus);
67        pelaaja1.Position = paikka;
68        pelaaja1.Mass = 4.0;
69        pelaaja1.Image = pelaajanKuva;
70        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
71        Add(pelaaja1);
72    }
73
74    void LisaaNappaimet()
75    {
76        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
77        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
78        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
79
80        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
81        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
82        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
83
84        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
85
86        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
87        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
88        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
89        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
90    }
91    void Liikuta(PlatformCharacter hahmo, double nopeus)
92    {
93        hahmo.Walk(nopeus);
94    }
95
96    void Hyppaa(PlatformCharacter hahmo, double nopeus)
97    {
98        hahmo.Jump(nopeus);
99    }
100
101    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
102    {
103        maaliAani.Play();
104        MessageDisplay.Add("Keräsit tähden!");
105        tahti.Destroy();
106        pisteLaskuri.Value += 1;
107    }
108
109    IntMeter pisteLaskuri;
110
111       void LuoPistelaskuri()
112    {
113        pisteLaskuri = new IntMeter(0);
114
115        Label pisteNaytto = new Label();
116        pisteNaytto.X = Screen.Left + 100;
117        pisteNaytto.Y = Screen.Top - 100;
118        pisteNaytto.TextColor = Color.Black;
119        pisteNaytto.Color = Color.White;
120        pisteNaytto.Title = "Pisteet";
121        pisteNaytto.BindTo(pisteLaskuri);
122        Add(pisteNaytto);
123
124    }
125
126    void Luorae()
127    {
128        PhysicsObject Rae = new PhysicsObject(30, 30);
129        Rae.Shape = Shape.Circle;
130        Rae.Color = Color.Snow;
131        Rae.X = RandomGen.NextDouble(Level.Left, Level.Right );
132        Rae.Y = Level.Top - 20;
133        Add(Rae);
134        AddCollisionHandler(pelaaja1, Rae, TormaaRakeeseen);
135        AddCollisionHandler(Rae, CollisionHandler.DestroyObject);
136    }
137
138    void TormaaRakeeseen(PhysicsObject pelaaja1, PhysicsObject Rae)
139    {
140        pelaaja1.Destroy();
141        HighScoreWindow topIkkuna = new HighScoreWindow(
142        "Parhaat pisteet",
143        "pääsit top 10 listalle",
144        topLista,pisteLaskuri.Value);
145        topIkkuna.Closed += TallennaPisteet;
146        Add(topIkkuna);
147
148        //MessageDisplay.Add("hävisit pelin")
149       
150    }
151
152    void ajastin()
153    {
154        Timer ajastin = new Timer();
155        ajastin.Interval = 0.4;
156        ajastin.Timeout += Luorae;
157        ajastin.Start();
158
159    }
160   void ajastin2()
161
162   {
163       Timer ajastin2 = new Timer();
164       ajastin2.Interval = 2.0;
165       ajastin2.Timeout += delegate{ 
166       LuoTahti(RandomGen.NextVector(Level.Left,0,Level.Right,100),RUUDUN_KOKO,RUUDUN_KOKO ); 
167       };
168       ajastin2.Start();
169    }
170
171    void AlkuValikko()
172   {
173       ClearAll();
174       MultiSelectWindow AlkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
175      "Aloita peli", "Parhaat pisteet", "Lopeta");
176       AlkuValikko.ItemSelected += PainettiinValikonNappia;
177       AlkuValikko.Color = Color.Snow;
178       Add(AlkuValikko);
179   }
180
181    void PainettiinValikonNappia(int valinta)
182    {
183      switch (valinta)
184        {
185      case 0:
186     
187      Gravity = new Vector(0, -1000);
188      LuoKentta();
189      LisaaNappaimet();
190      Luorae();
191      LuoPistelaskuri();
192      LuoTahti(RandomGen.NextVector(Level.Left,0,Level.Right,100),RUUDUN_KOKO,RUUDUN_KOKO );
193      Camera.Follow(pelaaja1);
194      Camera.ZoomFactor = 1.2;
195      Camera.StayInLevel = true;
196      ajastin();
197      ajastin2();
198
199      break;
200      case 1:
201      HighScoreWindow topIkkuna = new HighScoreWindow(
202     "Parhaat pisteet",
203     topLista );
204     topIkkuna.Closed += TallennaPisteet;
205     Add( topIkkuna );
206
207      break;
208      case 2:
209      Exit();
210      break;
211        }
212    }
213
214    void tausta()
215    {
216        GameObject talvi = new GameObject(Screen.Width, Screen.Height);
217        talvi.Image = Talvi;
218        Add(talvi, -3);
219        Layers[-3].RelativeTransition = new Vector(0.5, 0.5);   
220    }
221
222    void TallennaPisteet(Window sender)
223    {
224        DataStorage.Save<ScoreList>(topLista, "pisteet.xml");
225        AlkuValikko();
226    }
227
228 }
229
Note: See TracBrowser for help on using the repository browser.