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

Revision 9151, 5.9 KB checked in by npo17_61, 2 years ago (diff)

alkuvalikko valmis, fonttia muutettu

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