source: 2014/24/IlmariP/Peli/Peli/Peli/Peli.cs @ 5010

Revision 5010, 6.6 KB checked in by anlakane, 5 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 Peli : PhysicsGame
10{
11    Vector nopeusOikealle;
12    Vector nopeusVasemmalle;
13    // Vector nopeusAlas;
14    PhysicsObject pallo;
15
16    DoubleMeter aikaLaskuri;
17
18    double CAMERAN_MIN_NOPEUS;
19
20    bool onkopelikaynnissa = false;
21
22
23    public override void Begin()
24    {
25        SetWindowSize(1024, 768);
26
27        LuoValikko();
28
29    }
30
31    void LuoKentta()
32    {
33        TileMap kentta = TileMap.FromLevelAsset("kentta");
34        kentta.SetTileMethod('p', LisääPelaaja);
35        kentta.SetTileMethod('x', LisaaTaso, Color.HotPink);
36        kentta.SetTileMethod('c', Lisaacameraolio);
37        // kentta.SetTileMethod('P', LisääPelaaja2);
38        kentta.Execute(25, 25);
39        // Camera.StayInLevel = true;
40
41        Camera.ZoomFactor = Screen.Width / Level.Width;
42        Camera.Y = Level.Top - Screen.Height / 4;
43        Camera.Velocity = new Vector(0, -CAMERAN_MIN_NOPEUS);
44    }
45
46    void LisaaTaso(Vector paikka, double leveys, double korkeus, Color vari)
47    {
48        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
49        taso.Position = paikka;
50        taso.Color = vari;
51        taso.Color = Color.Brown;
52        Add(taso);
53    }
54    void LisääPelaaja(Vector paikka, double leveys, double korkeus)
55    {
56        this.pallo = new PhysicsObject(leveys, korkeus);
57
58        pallo.Shape = Shape.Circle;
59        pallo.Image = LoadImage("pallo");
60        Add(pallo);
61        pallo.Position = paikka;
62        //Camera.Position = pallo.Position;
63
64    }
65    //void LisääPelaaja2(Vector paikka, double leveys, double korkeus)
66    //{
67    // this.pallo2 = new PhysicsObject(leveys, korkeus);
68
69    // pallo2.Shape = Shape.Circle;
70    //pallo2.Image = LoadImage("sauli");
71    //Add(pallo2);
72    //pallo2.Position = paikka;
73    //}
74    void AsetaNopeus(PhysicsObject pallo, Vector nopeus)
75    {
76        if (pallo != null)
77        {
78            pallo.Velocity = nopeus;
79        }
80    }
81    void AsetaOhjaimet()
82    {
83        Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus, "liikuta oikealle", pallo, nopeusOikealle);
84        Keyboard.Listen(Key.Right, ButtonState.Released, AsetaNopeus, null, pallo, Vector.Zero);
85
86        Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, "liikuta vasemmalle", pallo, nopeusVasemmalle);
87        Keyboard.Listen(Key.Left, ButtonState.Released, AsetaNopeus, null, pallo, Vector.Zero);
88
89        // Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "liikuta alas", pallo, nopeusAlas);
90        //     Keyboard.Listen(Key.D, ButtonState.Down, AsetaNopeus, "liikuta oikealle", pallo2, nopeusOikealle);
91        //   Keyboard.Listen(Key.D, ButtonState.Released, AsetaNopeus, null, pallo2, Vector.Zero);
92
93        // Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "liikuta vasemmalle", pallo2, nopeusVasemmalle);
94        // Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, pallo2, Vector.Zero);
95    }
96    void Lisaacameraolio(Vector paikka, double leveys, double korkeus)
97    {
98        Camera.Position = paikka;
99        // GameObject cameraolio = new GameObject(leveys, korkeus);
100        // cameraolio.Position = paikka;
101        // cameraolio.Color = Color.Black;
102        // Add(cameraolio);
103        // Camera.Follow(cameraolio);
104        // Camera.Zoom(1.5);
105        // cameraolio.IgnoresPhysicsLogics = true;
106    }
107
108    void LuoValikko()
109    {
110        MultiSelectWindow valikko = new MultiSelectWindow("Tervetuloa peliin",
111    "Aloita peli", "Ohjeet", "Parhaat pisteet", "Lopeta");
112        valikko.ItemSelected += PainettiinValikonNappia;
113        Add(valikko);
114    }
115    void PainettiinValikonNappia(int valinta)
116    {
117        switch (valinta)
118        {
119            case 0:
120                AloitaPeli();
121                break;
122            case 1:
123                Ohjeet();
124                break;
125            case 2:
126                Exit();
127                break;
128            case 3:
129                Exit();
130                break;
131
132
133        }
134    }
135    protected override void Update(Time time)
136    {
137        if (onkopelikaynnissa)
138        {
139            //if (Math.Abs(Camera.Velocity.Y) < CAMERAN_MIN_NOPEUS)
140            //{
141            //    Camera.Velocity = new Vector(pallo.Velocity.X, pallo.Velocity.Y * 1.1);
142            //}
143
144            if (pallo != null && pallo.Bottom > Camera.ScreenToWorld(new Vector(0, Screen.Top)).Y)
145            {
146                //ShowMessageWindow("pallo.Bottom: " + pallo.Bottom + "\n Screen.Top: " + Screen.Top);
147                pallo.Destroy();
148                Camera.Velocity = Vector.Zero;
149                onkopelikaynnissa = false;
150                Loppuvalikko();
151            }
152        }
153        base.Update(time);
154    }
155
156    private void Loppuvalikko()
157    {
158        Label l = new Label("Selvisit " + String.Format("{0:0.00}", aikaLaskuri.Value) + " sekuntia.");
159        l.Position = new Vector(0, Screen.Top - 50);
160        Add(l);
161
162        MultiSelectWindow loppuvalikko = new MultiSelectWindow(" Sinä kuolit", "Aloita alusta", " Poistu alkuvalikkoon");
163        Add(loppuvalikko);
164        loppuvalikko.AddItemHandler(0, AloitaPeli);
165        loppuvalikko.AddItemHandler(1, LuoValikko);
166    }
167
168    void AloitaPeli()
169    {
170        ClearAll();
171        CAMERAN_MIN_NOPEUS = 25;
172        aikaLaskuri = new DoubleMeter(0, 0, double.MaxValue);
173
174        Gravity = new Vector(0.0, -800.0);
175        nopeusOikealle = new Vector(400, 0);
176        nopeusVasemmalle = new Vector(-400, 0);
177        // nopeusAlas = new Vector(0, -100);
178
179        LuoKentta();
180
181        Timer ajastin = new Timer();
182        ajastin.Interval = 7.0;
183        ajastin.Timeout += LisaaCameraNopeus;
184        ajastin.Start();
185
186        Timer aikaLaskuriAjastin = new Timer();
187        aikaLaskuriAjastin.Interval = 0.1;
188        aikaLaskuriAjastin.Timeout += delegate { aikaLaskuri.Value += 0.1; };
189        aikaLaskuriAjastin.Start();
190
191        AsetaOhjaimet();
192
193        onkopelikaynnissa = true;
194        //pallo = LisääPelaaja(new Vector (Level.Left,Level.Top), 50, 50);
195        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
196        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
197    }
198
199    void Ohjeet()
200    {
201        MessageWindow ikkuna = new MessageWindow("Pelin idea on päästä mahdollisimman pitkälle, Liikuta palloa nuolinäppäimistä");
202        Add(ikkuna);
203        // ikkuna.
204    }
205
206    void LisaaCameraNopeus()
207    {
208        Camera.Velocity = new Vector(0, Camera.Velocity.Y - 5);
209    }
210}
Note: See TracBrowser for help on using the repository browser.