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

Revision 9200, 7.0 KB checked in by npo17_61, 4 years ago (diff)

grafiikkaa paranneltu

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