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

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