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

Revision 9158, 6.3 KB checked in by npo17_61, 23 months ago (diff)

äänitehosteet lisätty

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