source: 2017/30/TuomasH/Snake/Snake/Snake/Snake.cs @ 9162

Revision 9162, 6.6 KB checked in by npo17_61, 23 months ago (diff)

aikalaskuri muutettu pistelaskuriksi

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9
10public class Snake : Game
11{
12    const int Ruudunkoko = 30;
13    const int Leveys = 30;
14    const int Korkeus = 30;
15    Direction suunta;
16    GameObject omena;
17   
18    List<GameObject> matopalat = new List<GameObject>();
19
20   
21    IntMeter pisteLaskuri;
22
23
24
25    ScoreList topLista = new ScoreList(10, false, 0);
26    GameObject paa = new GameObject(40, 40);
27   
28
29
30
31
32
33
34
35
36
37    public override void Begin()
38    {
39        IsFullScreen = true;
40       
41
42        Valikko();
43       
44
45       
46       
47     
48
49    }
50    void LuoPistelaskuri()
51    {
52        pisteLaskuri = new IntMeter(0);
53
54        Label pisteNaytto = new Label();
55        pisteNaytto.X = Screen.Right - 200;
56        pisteNaytto.Y = Screen.Top - 100;
57        pisteNaytto.TextColor = Color.White;
58        pisteNaytto.Color = Color.Green;
59
60        pisteNaytto.BindTo(pisteLaskuri);
61        Add(pisteNaytto);
62    }
63        //Top10()
64        //{
65        //topLista = DataStorage.TryLoad<ScoreList>(topLista, "pisteet.xml");
66        //HighScoreWindow topIkkuna = new HighScoreWindow(
67        //"Parhaat pisteet", topLista);
68        //topIkkuna.Closed += TallennaPisteet;
69        //Add(topIkkuna);
70        //}
71
72        void AloitaPeli()
73    {
74
75        Aloitus();
76    }
77    void ÄäniTehoste()
78    {
79        SoundEffect omenanaani = LoadSoundEffect("omenanääni");
80        omenanaani.Play();
81
82     
83    }
84    void Seinaantormays()
85    {
86        SoundEffect seinaantormays = LoadSoundEffect("seinääntörmäys");
87        seinaantormays.Play();
88    }
89   
90   public void Aloitus()
91    {
92       
93        matopalat.Clear();
94        ClearAll();
95        suunta = Direction.Up;
96        Level.CreateBorders(true);
97        Level.Width = Ruudunkoko * Leveys;
98        Level.Height = Ruudunkoko * Korkeus;
99
100        LuoMatopala(6 * Ruudunkoko, 3 * Ruudunkoko);
101        LuoMatopala(5 * Ruudunkoko, 3 * Ruudunkoko);
102        LuoMatopala(4 * Ruudunkoko, 3 * Ruudunkoko);
103        LuoMatopala(3 * Ruudunkoko, 3 * Ruudunkoko);
104        omena = new GameObject(Ruudunkoko, Ruudunkoko);
105        omena.Shape = Shape.Circle;
106        omena.Image = LoadImage("omena2");
107        Add(omena);
108       
109       
110
111
112        Timer paivitysAjastin = new Timer();
113        paivitysAjastin.Interval = 0.1;
114        paivitysAjastin.Timeout += Mato;
115        paivitysAjastin.Start();
116        Mouse.IsCursorVisible = true;
117       
118       
119
120
121        Ohjaimet();
122       
123        LuoMaailma();
124        Mato();
125        Ohje();
126        LuoPistelaskuri();
127        //Top10();
128       
129       
130       
131
132
133    }
134 
135   
136   
137   
138    void Ohje()
139    {
140        MessageDisplay.Add("Ohjeet:F1");
141        MessageDisplay.TextColor = Color.White;
142        MessageDisplay.MessageTime = new TimeSpan(0, 0, 3);
143        MessageDisplay.Font = Font.DefaultLarge;
144       
145    }
146
147
148    void LuoMaailma()
149    {
150        Level.Background.Color = Color.Green;
151       
152
153
154    }
155    void Mato()
156    {
157        GameObject paa = matopalat[0];
158        GameObject vanhaPaa = matopalat[matopalat.Count - 1];
159        paa.Position = vanhaPaa.Position + suunta.GetVector() * Ruudunkoko;
160        matopalat.RemoveAt(0);
161        matopalat.Add(paa);
162        paa.Color = Color.Aquamarine;
163       
164
165        for (int i = 0; i < matopalat.Count - 1; i++) 
166        {
167            if (matopalat[i].IsInside(paa.Position))
168            {
169                Aloitus();
170               
171                return;
172            }
173
174
175            if (!Level.BoundingRect.IsInside(paa.Position))
176            {
177                Seinaantormays();
178                Aloitus();
179                return;
180               
181            }
182
183
184            if (omena.IsInside(paa.Position))
185            { double satunnainenX = RandomGen.NextInt(-Leveys / 2, Leveys / 2);
186                double satunnainenY = RandomGen.NextInt(-Korkeus / 2, Korkeus / 2);
187                omena.Position = new Vector(satunnainenX, satunnainenY) * Ruudunkoko;
188                LuoMatopala(matopalat[0].Position.X, matopalat[1].Position.Y);
189                ÄäniTehoste();
190                pisteLaskuri.Value += 1;
191            }
192        }
193       
194
195       
196    } 
197   
198
199    void Ohjaimet()
200    {
201        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
202        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
203        Keyboard.Listen(Key.Up, ButtonState.Down, MuutaSuunta, "Ylös", Direction.Up);
204        Keyboard.Listen(Key.Down, ButtonState.Down, MuutaSuunta, "Alas", Direction.Down);
205        Keyboard.Listen(Key.Left, ButtonState.Down, MuutaSuunta, "Vasemmalle", Direction.Left);
206        Keyboard.Listen(Key.Right, ButtonState.Down, MuutaSuunta, "Oikealle", Direction.Right);
207        Keyboard.Listen(Key.P, ButtonState.Pressed, Pysäytys, "Pysäytä peli");
208        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, MuutaSuunta, "Ylös", Direction.Up);
209        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, MuutaSuunta, "Alas", Direction.Down);
210        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, MuutaSuunta, "Vasemmalle", Direction.Left);
211        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, MuutaSuunta, "Oikealle", Direction.Right);
212        ControllerOne.Listen(Button.Back, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
213        ControllerOne.Listen(Button.BigButton, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
214        ControllerOne.Listen(Button.Start, ButtonState.Pressed, Pysäytys, "Pysäytä peli");
215
216    }
217    void MuutaSuunta(Direction uusisuunta)
218    {
219        suunta = uusisuunta;
220    }
221    public void LuoMatopala(double x, double y)
222    {
223        GameObject pala = new GameObject(Ruudunkoko, Ruudunkoko);
224        pala.X = x;
225        pala.Y = y;
226        matopalat.Insert(0, pala);
227        Add(pala);
228    }
229   
230   
231   
232     
233
234    void Valikko()
235    {
236        ClearAll();
237
238        MultiSelectWindow alkuValikko = new MultiSelectWindow("Snake",
239        "Aloita peli", "Lopeta");
240        Add(alkuValikko);
241        alkuValikko.AddItemHandler(0, AloitaPeli);
242        alkuValikko.AddItemHandler(1, Exit);
243        alkuValikko.DefaultCancel = 1;
244        alkuValikko.Color = Color.Blue;
245        alkuValikko.BorderColor = Color.Blue;
246        alkuValikko.Font = Font.DefaultLarge;
247       
248    }
249    void Pysäytys()
250    {
251        Pause();
252    }
253   
254   
255
256   
257
258
259
260
261
262
263
264
265
266}
Note: See TracBrowser for help on using the repository browser.