source: 2016/koodauskerho/SamuelN/Sn4k3/Sn4k3/Sn4k3/Sn4k3.cs @ 8372

Revision 8372, 5.7 KB checked in by koannak, 3 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 Sn4k3 : Game
10{
11   
12    const int RuudunKoko = 30;
13    const int KentanLeveys = 74;
14    const int KentanKorkeus = 40;
15
16    Direction suunta;
17
18    GameObject omena;
19    GameObject omena1;
20    GameObject omena2;
21    GameObject omena3;
22    GameObject omena4;
23
24    List<GameObject> matopalat = new List<GameObject>();
25
26    DoubleMeter voimaMittari;
27    public override void Begin()
28    {
29        AloitaPeli();
30    }
31
32    void AloitaPeli()
33    {
34        matopalat.Clear();
35        ClearAll();
36
37        MediaPlayer.Play("snake");
38        MediaPlayer.IsRepeating = true;
39        LuoPistelaskuri();
40
41       
42        suunta = Direction.Right; 
43
44        Level.Width = RuudunKoko * KentanLeveys;
45        Level.Height = RuudunKoko * KentanKorkeus;
46        Level.CreateBorders();
47
48        LuoMatopala(10 * RuudunKoko, 3 * RuudunKoko);
49        LuoMatopala(9 * RuudunKoko, 3 * RuudunKoko);
50        LuoMatopala(8 * RuudunKoko, 3 * RuudunKoko);
51        LuoMatopala(7 * RuudunKoko, 3 * RuudunKoko);
52        LuoMatopala(6 * RuudunKoko, 3 * RuudunKoko);
53        LuoMatopala(5 * RuudunKoko, 3 * RuudunKoko);
54        LuoMatopala(4 * RuudunKoko, 3 * RuudunKoko);
55        LuoMatopala(3 * RuudunKoko, 3 * RuudunKoko);
56        LuoMatopala(2 * RuudunKoko, 3 * RuudunKoko);
57        LuoMatopala(1 * RuudunKoko, 3 * RuudunKoko);
58       
59
60        Camera.ZoomToLevel();
61        Level.Background.CreateStars(10000);
62        IsFullScreen = true;
63
64        omena = new GameObject(RuudunKoko, RuudunKoko);
65        omena.Color = Color.Red;
66        Add(omena);
67
68        omena1 = new GameObject(RuudunKoko, RuudunKoko);
69        omena1.Color = Color.Green;
70        omena1.X = 200;
71        Add(omena1);
72
73        omena2 = new GameObject(RuudunKoko, RuudunKoko);
74        omena2.Color = Color.Blue;
75        omena2.X = 400;
76        Add(omena2);
77
78        omena3 = new GameObject(RuudunKoko, RuudunKoko);
79        omena3.Color = Color.LightBlue;
80        omena3.X = -200;
81        Add(omena3);
82
83        omena4 = new GameObject(RuudunKoko, RuudunKoko);
84        omena4.Color = Color.Pink;
85        omena4.X = -400;
86        Add(omena4);
87
88        Timer paivitysAjastin = new Timer();
89        paivitysAjastin.Interval = 0.05;
90        paivitysAjastin.Timeout += PaivitaMatoa;
91        paivitysAjastin.Start();
92
93        AsetaOhjaimet();
94    }
95    IntMeter pisteLaskuri;
96
97    void LuoPistelaskuri()
98    {
99        pisteLaskuri = new IntMeter(0);
100
101        Label pisteNaytto = new Label();
102        pisteNaytto.X = Screen.Left + 150;
103        pisteNaytto.Y = Screen.Top - 100;
104        pisteNaytto.TextColor = Color.White;
105       
106
107        pisteNaytto.BindTo(pisteLaskuri);
108        Add(pisteNaytto);
109
110        voimaMittari = new DoubleMeter(0);
111        voimaMittari.MaxValue = 50;
112
113
114        ProgressBar voimaPalkki = new ProgressBar(150, 10);
115        voimaPalkki.BindTo(voimaMittari);
116        voimaPalkki.X = Screen.Left + 150;
117        voimaPalkki.Y = Screen.Top - 80;
118        voimaPalkki.BarColor = Color.Red;
119        voimaPalkki.BorderColor = Color.Aqua;
120        voimaMittari.UpperLimit += VoimaMittariTaynna;
121        Add(voimaPalkki);
122    }
123    void VoimaMittariTaynna()
124    {
125        MessageDisplay.Add("Wow u win!");
126    }
127    void PaivitaMatoa()
128    {
129        GameObject paa = matopalat[0];
130        GameObject vanhaPaa = matopalat[matopalat.Count - 1];
131
132        paa.Position = vanhaPaa.Position + suunta.GetVector() * RuudunKoko;
133
134        paa.Color = Color.Red;
135        vanhaPaa.Color = Color.LimeGreen;
136
137        matopalat.RemoveAt(0); 
138        matopalat.Add(paa);
139
140        if (!Level.BoundingRect.IsInside(paa.Position))
141        {
142            AloitaPeli();
143            return;
144        }
145
146        if (omena.IsInside(paa.Position))
147        {
148            OmenaSyoty(omena);
149        }
150
151        else if (omena1.IsInside(paa.Position))
152        {
153            OmenaSyoty(omena1);
154        }
155        else if (omena2.IsInside(paa.Position))
156        {
157            OmenaSyoty(omena2);
158        }
159        else if (omena3.IsInside(paa.Position))
160        {
161            OmenaSyoty(omena3);
162        }
163        else if (omena4.IsInside(paa.Position))
164        {
165            OmenaSyoty(omena4);
166        }
167    }
168
169    void OmenaSyoty(GameObject syoty)
170    {
171        double satunnainenX = RandomGen.NextInt(-KentanLeveys / 2, KentanLeveys / 2);
172        double satunnainenY = RandomGen.NextInt(-KentanKorkeus / 2, KentanKorkeus / 2);
173        syoty.Position = new Vector(satunnainenX, satunnainenY) * RuudunKoko;
174
175            LuoMatopala(matopalat[0].Position.X, matopalat[1].Position.Y);
176        pisteLaskuri.Value += 1;
177        voimaMittari.Value += 1;
178    }
179
180    void AsetaOhjaimet()
181    {
182        Keyboard.Listen(Key.Right, ButtonState.Pressed, MuutaSuunta, null, Direction.Right);
183        Keyboard.Listen(Key.Left, ButtonState.Pressed, MuutaSuunta, null, Direction.Left);
184        Keyboard.Listen(Key.Up, ButtonState.Pressed, MuutaSuunta, null, Direction.Up);
185        Keyboard.Listen(Key.Down, ButtonState.Pressed, MuutaSuunta, null, Direction.Down);
186        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
187    }
188
189    void MuutaSuunta(Direction uusiSuunta)
190    {
191        suunta = uusiSuunta;
192    }
193
194    public GameObject LuoMatopala(double x, double y)
195    {
196        GameObject pala = new GameObject(RuudunKoko, RuudunKoko);
197        pala.X = x;
198        pala.Y = y;
199        pala.Color = Color.LimeGreen;
200        matopalat.Insert(0, pala);
201        Add(pala);
202        return pala;
203    }
204}
Note: See TracBrowser for help on using the repository browser.