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

Revision 9115, 4.3 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
9public class Snake : Game
10{
11    const int Ruudunkoko = 30;
12    const int Leveys = 30;
13    const int Korkeus = 30;
14    Direction suunta;
15    GameObject omena;
16    List<GameObject> matopalat = new List<GameObject>();
17    EasyHighScore toplista = new EasyHighScore();
18    Timer aikalaskuri = new Timer();
19   
20   
21    public override void Begin()
22    {
23       
24
25        Aloitus();
26
27       
28       
29     
30
31    }
32    void Aloitus()
33    {
34        matopalat.Clear();
35        ClearAll();
36        suunta = Direction.Up;
37        Level.CreateBorders(true);
38        Level.Width = Ruudunkoko * Leveys;
39        Level.Height = Ruudunkoko * Korkeus;
40
41        LuoMatopala(6 * Ruudunkoko, 3 * Ruudunkoko);
42        LuoMatopala(5 * Ruudunkoko, 3 * Ruudunkoko);
43        LuoMatopala(4 * Ruudunkoko, 3 * Ruudunkoko);
44        LuoMatopala(3 * Ruudunkoko, 3 * Ruudunkoko);
45        omena = new GameObject(Ruudunkoko, Ruudunkoko);
46        omena.Image = LoadImage("omena2");
47        Add(omena);
48       
49       
50
51
52        Timer paivitysAjastin = new Timer();
53        paivitysAjastin.Interval = 0.1;
54        paivitysAjastin.Timeout += Mato;
55        paivitysAjastin.Start();
56        Mouse.IsCursorVisible = true;
57
58        Ohjaimet();
59        LuoAikalaskuri();
60        LuoMaailma();
61        Mato();
62        Alkuvalikko();
63       
64    }
65
66
67    void LuoMaailma()
68    {
69        Level.Background.Color = Color.Black;
70       
71    }
72    void Mato()
73    {
74        GameObject paa = matopalat[0];
75        GameObject vanhaPaa = matopalat[matopalat.Count - 1];
76        paa.Position = vanhaPaa.Position + suunta.GetVector() * Ruudunkoko;
77        matopalat.RemoveAt(0);
78        matopalat.Add(paa);
79       
80
81        for (int i = 0; i < matopalat.Count - 1; i++) 
82        {
83            if (matopalat[i].IsInside(paa.Position))
84            {
85                Aloitus();
86                return;
87            }
88
89
90            if (!Level.BoundingRect.IsInside(paa.Position))
91            { Aloitus();
92                return;
93            }
94
95
96            if (omena.IsInside(paa.Position))
97            { double satunnainenX = RandomGen.NextInt(-Leveys / 2, Leveys / 2);
98                double satunnainenY = RandomGen.NextInt(-Korkeus / 2, Korkeus / 2);
99                omena.Position = new Vector(satunnainenX, satunnainenY) * Ruudunkoko;
100                LuoMatopala(matopalat[0].Position.X, matopalat[1].Position.Y);
101            }
102        }
103     
104    }
105   
106
107    void Ohjaimet()
108    {
109        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
110        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä kontrollit");
111        Keyboard.Listen(Key.Up, ButtonState.Down, MuutaSuunta, "Ylös", Direction.Up);
112        Keyboard.Listen(Key.Down, ButtonState.Down, MuutaSuunta, "Alas", Direction.Down);
113        Keyboard.Listen(Key.Left, ButtonState.Down, MuutaSuunta, "Vasemmalle", Direction.Left);
114        Keyboard.Listen(Key.Right, ButtonState.Down, MuutaSuunta, "Oikealle", Direction.Right);
115
116    }
117    void MuutaSuunta(Direction uusisuunta)
118    {
119        suunta = uusisuunta;
120    }
121    public void LuoMatopala(double x, double y)
122    {
123        GameObject pala = new GameObject(Ruudunkoko, Ruudunkoko);
124        pala.X = x;
125        pala.Y = y;
126        matopalat.Insert(0, pala);
127        Add(pala);
128    }
129   
130    void LuoAikalaskuri()
131    {
132       
133        aikalaskuri.Start();
134        Label aikanaytto = new Label();
135        aikanaytto.TextColor = Color.White;
136        aikanaytto.DecimalPlaces = 1;
137        aikanaytto.BindTo(aikalaskuri.SecondCounter);
138        Add(aikanaytto);
139        aikanaytto.X = Level.Right + 300;
140        aikanaytto.Y = Level.Top - 200;
141        aikanaytto.Title = "Aika";
142       
143       
144
145    }
146    void Alkuvalikko()
147    {
148        MultiSelectWindow alkuvalikko = new MultiSelectWindow("Alkuvalikko", "Aloita peli", null, "Lopeta");
149        Add(alkuvalikko);
150        alkuvalikko.AddItemHandler(0, Aloitus);
151        alkuvalikko.AddItemHandler(1, null);
152        alkuvalikko.AddItemHandler(2, Exit);
153        alkuvalikko.Color = Color.Green;
154
155    }
156   
157}
Note: See TracBrowser for help on using the repository browser.