source: 2017/23/KaapoP/Spartalainentetris/Spartalainentetris/Spartalainentetris/Spartalainentetris.cs @ 8449

Revision 8449, 5.9 KB checked in by nupeohje, 2 years ago (diff)

*dab* xd

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Spartalainentetris : PhysicsGame {
10
11    PlatformCharacter Pelaaja;
12    Double liikkumismaara = 400;
13    Image Kuva = LoadImage("Anim01");
14    IntMeter pisteLaskuri;
15    EasyHighScore topLista = new EasyHighScore();
16    MultiSelectWindow valikko;
17    Image taustaKuva = LoadImage("Neon");
18    Image Palikkakuva = LoadImage("Palikkakuva");
19    Image Oikeareuna = LoadImage("Oikeareuna");
20    Image Vasenreuna = LoadImage("Vasenreuna");
21    Image Alareunan = LoadImage("Alareunan");
22
23    public override void Begin()
24    {
25        ClearAll();
26        luopelaaja();
27        LuoPistelaskuri();
28        surface();
29        Maa();
30        MaaVasen();
31        MaaOikea();
32        camerazoom();
33
34        Timer ajastin = new Timer();
35        ajastin.Interval = 0.2;
36        ajastin.Timeout += luopalikka;
37        ajastin.Start();
38        Gravity = new Vector(0.0, -1000.0);
39
40        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
41
42        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, -liikkumismaara);
43        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, liikkumismaara);
44        Keyboard.Listen(Key.Up, ButtonState.Down, hyppaa, null);
45    }
46    void camerazoom()
47    {
48        Camera.Zoom(0.9);
49        Camera.Follow(Pelaaja);
50    }
51    void LiikutaPelaajaa(double nopeus)
52    {
53        Pelaaja.Walk(nopeus);
54    }
55    void hyppaa()
56
57    {
58        Pelaaja.Jump(500);
59
60    }
61    void luopelaaja()
62    {
63        Pelaaja = new PlatformCharacter(38, 80);
64        Pelaaja.Mass = 10.0;
65        Pelaaja.X = 0;
66        Pelaaja.Y = -350;
67        Pelaaja.Image = Kuva;
68        Pelaaja.Tag = "Pelaaja";
69        Add(Pelaaja);
70
71        Pelaaja.Collided += (IPhysicsObject a, IPhysicsObject b) =>
72        {
73            if (b.Position.Y > a.Position.Y && b.Velocity.Magnitude > 0 && b.Tag.Equals("Palikka"))
74            {
75                Pelaaja.Destroy();
76                Pause();
77                AvaaValikko();
78
79                topLista.EnterText = "Onnea! Kirjoita nimesi. Sait {0} pistettä";
80                topLista.EnterAndShow(pisteLaskuri.Value);
81            }
82        };
83    }
84    void AvaaValikko()
85    {
86        valikko = new MultiSelectWindow("Kuolit",
87            "Uudestaan", "Parhaat pisteet", "Lopeta");
88        valikko.ItemSelected += PainettiinValikonNappia;
89        Add(valikko);
90
91    }
92    void PainettiinValikonNappia(int valinta)
93    {
94        switch (valinta)
95        {
96            case 0:
97                Uudestaaan();
98                break;
99            case 1:
100                topLista.Show();
101                topLista.HighScoreWindow.Closed += delegate { AvaaValikko(); };
102                break;
103            case 2:
104                Exit();
105                break;
106        }
107    }
108    void Uudestaaan()
109    {
110        Pause();
111        Begin();
112    }
113    void LuoPistelaskuri()
114    {
115        pisteLaskuri = new IntMeter(0);
116
117        Label pisteNaytto = new Label();
118        pisteNaytto.X = Screen.Left + 100;
119        pisteNaytto.Y = Screen.Top - 100;
120        pisteNaytto.TextColor = Color.Aqua;
121        pisteNaytto.Color = Color.Black;
122
123        pisteNaytto.BindTo(pisteLaskuri);
124        Add(pisteNaytto);
125        Timer pisteAjastin = new Timer();
126        pisteAjastin.Interval = 1;
127        pisteAjastin.Timeout += delegate { pisteLaskuri.Value += 1; };
128        pisteAjastin.Start();
129
130    }
131    void surface()
132    {
133        Surface alaReuna = Surface.CreateBottom(Level);
134        Add(alaReuna, 0);
135        Surface oikea = Surface.CreateRight(Level);
136        Add(oikea);
137        Surface vasen = Surface.CreateLeft(Level);
138        Add(vasen);
139        alaReuna.Restitution = 0;
140        Level.Background.Image = taustaKuva;
141        Level.Background.FitToLevel();
142        Level.Background.Color = Color.Black;
143    }
144    void Maa()
145    {
146        GameObject Maa = new GameObject(1000, 100.0);
147
148        Add(Maa, 1);
149        Maa.X = 0;
150        Maa.Y = Level.Bottom - 50;
151        Maa.Image = Alareunan;
152
153    }
154    void MaaVasen()
155    {
156        GameObject MaaVasen = new GameObject(100, 1000);
157        Add(MaaVasen, 1);
158        MaaVasen.X = Level.Left - 50;
159        MaaVasen.Y = 0;
160        MaaVasen.Image = Vasenreuna;
161
162    }
163    void MaaOikea()
164    {
165        GameObject MaaOikea = new GameObject(100, 1000);
166        Add(MaaOikea, 1);
167        MaaOikea.X = Level.Right + 50;
168        MaaOikea.Y = 0;
169        MaaOikea.Image = Oikeareuna;
170    }
171    void luopalikka()
172    {
173        PhysicsObject Palikka = PhysicsObject.CreateStaticObject(40.0, 40.0);
174       
175        Color vari = RandomGen.NextColor(Color.Mint, Color.HotPink);
176        Palikka.Color = vari;
177        Add(Palikka);
178        //Palikka.X = RandomGen.NextDouble(Level.Left + 20, Level.Right - 20);
179        int lohkoja = (int)(Level.Width / 40.0);
180        Palikka.X = RandomGen.NextInt(0, lohkoja) * 40.0 - Level.Width/2.0 + 40/2;
181        Palikka.Y = 700.0;
182        Palikka.Velocity = new Vector(0, -300);
183        Palikka.Tag = "Palikka";
184        Palikka.Image = Palikkakuva;
185
186        Timer ajastin = new Timer();
187        ajastin.Interval = 0.01;
188        ajastin.Timeout += delegate
189        {
190            List<GameObject> palikat = GetObjectsAt(Palikka.Position + new Vector(0, -22));
191            //List<GameObject> palikatVasen = GetObjectsAt(Palikka.Position + new Vector(-19, -22));
192            //List<GameObject> palikatOikea = GetObjectsAt(Palikka.Position + new Vector(19, -22));
193
194            if (palikat.Count > 1 && !palikat[1].Tag.Equals("Pelaaja")) //|| palikat.Count > 1)
195            {
196                Palikka.Velocity = new Vector(0, 0);
197                ajastin.Stop();
198            }
199        };
200
201        ajastin.Start();
202    }
203}
Note: See TracBrowser for help on using the repository browser.