source: 2010/23/hniemi/Matopeli/Peli.cs @ 1564

Revision 1564, 2.7 KB checked in by hniemi, 10 years ago (diff)

Matopelin prototyyppi lisätty

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Widgets;
5using Jypeli.Assets;
6
7public class Peli : Game
8{
9    //GameObject[] mato;
10    const double ruudunleveys = 20;
11    const int madonPituus = 6;
12
13    List<GameObject> mato = new List<GameObject>();
14    Direction liikkumissuunta;
15    Timer liikutusajastin;
16
17    protected override void Begin()
18    {
19       
20        LuoLiikutusAjastin();
21        LuoMato(madonPituus);
22        LisaaOhjaimet();
23        AloitaPeli();
24    }
25
26    void LuoMato(int pituus)
27    {
28        for (int i = 0; i < pituus-1; i++)
29        {
30            mato.Add(new GameObject(ruudunleveys - 1, ruudunleveys - 1));
31            Add(mato[i]);
32        }
33        //Luo madon pään viimeiseksi, jotta sen pään värin muuttaminen näkyy
34        //Aka. Too lazy for layers
35        mato.Insert(0, new GameObject(ruudunleveys - 1, ruudunleveys - 1));
36        Add(mato[0]); 
37    }
38
39    void LisaaOhjaimet()
40    {
41        Keyboard.Listen(Key.Up, ButtonState.Pressed, AsetaSuunta, "Kääntää ylös", Direction.Up);
42        Keyboard.Listen(Key.Down, ButtonState.Pressed, AsetaSuunta, "Kääntää alas", Direction.Down);
43        Keyboard.Listen(Key.Left, ButtonState.Pressed, AsetaSuunta, "Kääntää vasemmalle", Direction.Left);
44        Keyboard.Listen(Key.Right, ButtonState.Pressed, AsetaSuunta, "Kääntää oikealle", Direction.Right);
45        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistuu pelistä");
46    }
47
48    void AsetaSuunta(Direction suunta)
49    {
50        liikkumissuunta = suunta;
51    }
52
53    void LuoLiikutusAjastin()
54    {
55        liikutusajastin = new Timer();
56        liikutusajastin.Interval = 0.4;
57        liikutusajastin.Trigger += SiirraMatoa;
58    }
59
60    void SiirraMatoa(Timer ajastin)
61    {
62        Vector suunta = Vector.FromLengthAndAngle(ruudunleveys, Angle.FromDirection(liikkumissuunta));
63
64        for (int i = mato.Count-1; i > 0; i--)
65        {
66            mato[i].Position = mato[i - 1].Position;
67        }
68
69        bool tormasikoItseensa = TarkistaSeuraavaAskel(mato[0].Position + suunta);
70
71        mato[0].Position = mato[0].Position + suunta;
72
73        if (tormasikoItseensa)
74        {
75            liikutusajastin.Stop();
76            mato[0].Color = Color.Blue;
77        }
78    }
79
80    bool TarkistaSeuraavaAskel(Vector paikka)
81    {
82        foreach (GameObject matopala in mato)
83        {
84            if (Vector.Distance(paikka, matopala.Position) < 10)
85            {
86                return true;
87            }
88        }
89        return false;
90        }
91
92    void AloitaPeli()
93    {
94        liikkumissuunta = Direction.Right;
95        liikutusajastin.Start();
96    }
97}
Note: See TracBrowser for help on using the repository browser.