source: 2012/JAO/Miiro/Tykkipeli/Tykkipeli/Tykkipeli/Tykkipeli.cs @ 2721

Revision 2721, 5.1 KB checked in by anonymous, 10 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 Tykkipeli : PhysicsGame
10{
11    ScoreList topLista = new ScoreList(10, false, 0);
12   
13    Timer aikaLaskuri;
14
15    Image pelaajakuva = LoadImage("cartman");
16    List<Label> valikonKohdat;
17    int rajahdykset = 0;
18    PhysicsObject pallo;
19    PhysicsObject tukki;
20    public override void Begin()
21    {
22        if (DataStorage.Exists("pisteet.xml"))
23            topLista = DataStorage.Load<ScoreList>(topLista, "pisteet.xml");
24
25        Valikko();
26
27
28        Camera.Zoom(2.0);
29
30       
31
32
33
34  }
35   
36    void  LuoKentta()
37    {       
38            pallo = new PhysicsObject(10.0, 10.0);       
39            pallo.Shape = Shape.Star;       
40            pallo.X = -450.0;       
41            pallo.Y = 100.0;       
42            pallo.Restitution = 1.0;       
43            pallo.KineticFriction = 0.0;       
44            //pallo.MomentOfInertia = Double.PositiveInfinity;
45            pallo.Image = pelaajakuva; 
46            pallo.Collided += JokuTormasi;
47
48            Add(pallo);
49    }
50
51    void Ammu()
52    {
53        //pallo.Color = Color.Red;
54        tukki.Move(new Vector(400,600));
55        //tukki.Hit(new Vector(1000, 200));
56        //Vector paikkaKentalla = Mouse.PositionOnWorld;
57        //Vector pallonsijainti = pallo.Position;
58        //pallo.Hit(new Vector(paikkaKentalla.X - pallonsijainti.X, paikkaKentalla.Y - pallonsijainti.Y));
59    }
60    void JokuTormasi(IPhysicsObject tormaaja, IPhysicsObject kohde)
61    {
62        if (kohde.Tag == "maa")
63        {
64            Explosion rajahdys = new Explosion(10);
65            rajahdys.Position = pallo.Position;
66            rajahdys.Force = 1000;
67            rajahdykset++;
68            if (7 <= rajahdykset)
69            {
70                double aikaaKulunut = aikaLaskuri.SecondCounter.Value;
71                ClearAll();
72                HighScoreWindow topIkkuna = new HighScoreWindow(
73                             "Parhaat pisteet",
74                             "Onneksi olkoon, pääsit listalle pisteillä %p! Syötä nimesi:",
75                             topLista, aikaaKulunut);
76                topIkkuna.Closed += TallennaPisteet;
77                Add(topIkkuna);
78                aikaLaskuri.Stop();
79
80            }
81
82            Add(rajahdys);
83        }
84    }
85
86
87    void AloitaPeli()
88    {
89
90        ClearAll();
91        rajahdykset = 0;
92        double[] korkeudet = new double[] { 10, 59, 26, 78, 80, 17, 69, 20, 250, 40, 90, 80, 65, 42, 56, 85, 25, 79, 79, 78, 57, 20, 45, 25, 76, 85, 69, 69, 76, 58 };
93
94        Surface maasto2 = new Surface(Level.Width, korkeudet, 1.0);
95        maasto2.Y = +25;
96        maasto2.Color = Color.White;
97        maasto2.Tag = "maa";
98        Add(maasto2);
99
100        Level.CreateBorders(false);
101
102        LuoAikaLaskuri();
103       
104
105        Surface maasto = new Surface(Level.Width, korkeudet, 1.0);
106        Add(maasto);
107
108       
109
110        Gravity = new Vector(0.0, -100.0);
111
112        tukki = new PhysicsObject(100,10);
113        tukki.X = -400;
114        tukki.IgnoresGravity = true;
115        tukki.Mass = 1000;
116        tukki.CanRotate = false;
117        Add(tukki);
118        LuoKentta();
119        Camera.Follow(pallo);
120
121        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, Ammu, "Ammu aseella.");
122        Mouse.IsCursorVisible = true;
123    }
124
125    void Valikko()
126    {
127        ClearAll();
128        valikonKohdat = new List<Label>();
129
130        Label kohta1 = new Label("Aloita uusi peli");
131        kohta1.Position = new Vector(0, 40);
132        valikonKohdat.Add(kohta1);
133
134        Label kohta2 = new Label("Lopeta");
135        kohta2.Position = new Vector(0, -40);
136        valikonKohdat.Add(kohta2);
137
138        foreach (Label valikonKohta in valikonKohdat)
139        {
140            Add(valikonKohta);
141        }
142
143        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
144        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Exit, null);
145
146        Mouse.IsCursorVisible = true;
147        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
148        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "");
149    }
150
151    void ValikossaLiikkuminen(AnalogState hiirenTila)
152    {
153        foreach (Label kohta in valikonKohdat)
154        {
155            if (Mouse.IsCursorOn(kohta))
156            {
157                kohta.TextColor = Color.Red;
158            }
159            else
160            {
161                kohta.TextColor = Color.Black;
162            }
163
164        }
165    }
166
167
168    void LuoAikaLaskuri()
169    {
170        aikaLaskuri = new Timer();
171        aikaLaskuri.Start();
172
173        Label aikaNaytto = new Label();
174        aikaNaytto.TextColor = Color.White;
175        aikaNaytto.DecimalPlaces = 1;
176        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
177        aikaNaytto.X = 500;
178        aikaNaytto.Y = 500;
179        Add(aikaNaytto);
180    }
181
182
183    void TallennaPisteet(Window sender)
184    {
185        DataStorage.Save<ScoreList>(topLista, "pisteet.xml");
186        Valikko();
187    }
188
189
190}
191
Note: See TracBrowser for help on using the repository browser.