source: 2015/24/JustusL/1D peli/1D peli/_1D_peli.cs @ 6027

Revision 6027, 5.6 KB checked in by juleppaa, 4 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 _1D_peli : PhysicsGame
10{
11    EasyHighScore topLista = new EasyHighScore();
12    Timer ajastin;
13    IntMeter elamaLaskuri;
14    IntMeter pisteLaskuri;
15    Timer vaikeus; 
16    Color[] varit = new Color[] { Color.Yellow, Color.Black, Color.Red, Color.White };
17    const double ACTIVE_AREA_HEIGHT = 30.0;
18    const double KORKEUS = 350.0;
19    Vector nopeus = new Vector(0, 110);
20    double kerroin = 1.25;
21
22    public override void Begin()
23    {
24
25        SetWindowSize((int)Screen.Width, (int)Screen.Height);
26        Level.Width = (int)Screen.Width;
27        Level.Height = (int)Screen.Height;
28
29        PalkinAjastin();
30        LuoPalkki();
31        LuoMaali();
32        LuoPisteet();
33        Ohjaimet();
34        ElamaLaskuri();
35
36        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
37        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
38    }
39
40    void LuoPalkki()
41    {
42        //ajastin.Interval = ajastin.Interval * 0.99;
43
44        PhysicsObject palkki = PhysicsObject.CreateStaticObject(Level.Width, 100.0);
45        palkki.MaximumLifetime = TimeSpan.FromSeconds(8);
46        Add(palkki);
47        palkki.Position = new Vector(0, Level.Bottom);
48        palkki.Velocity = nopeus;
49        palkki.Color = varit[RandomGen.NextInt(varit.Length)];
50    }
51
52    void PalkinAjastin()
53    {
54        ajastin = new Timer();
55        ajastin.Interval = 1; // ajastimen aika sec.
56        ajastin.Timeout += LuoPalkki;
57        ajastin.Start();
58
59        vaikeus = new Timer();
60        vaikeus.Interval = 3;
61        vaikeus.Timeout += delegate
62        {
63            nopeus.Y = nopeus.Y * kerroin;
64            kerroin += 0.14;
65
66            List<GameObject> fysiikkaOliot = GetObjects(x => x is PhysicsObject);
67
68            foreach (PhysicsObject olio in fysiikkaOliot)
69            {
70                PhysicsObject olioFys = olio as PhysicsObject;
71                olio.Velocity = nopeus;
72            }
73
74            ajastin.Interval = ajastin.Interval - 0.2;
75
76        };
77        vaikeus.Start(3);
78
79    }
80
81    void LuoMaali()
82    {
83        Vector vasenYla = new Vector(Screen.Left, KORKEUS + ACTIVE_AREA_HEIGHT / 2);
84        Vector vasenAla = new Vector(Screen.Left, KORKEUS + -ACTIVE_AREA_HEIGHT / 2);
85        Vector oikeaYla = new Vector(Screen.Right, KORKEUS + ACTIVE_AREA_HEIGHT / 2);
86        Vector oikeaAla = new Vector(Screen.Right, KORKEUS + -ACTIVE_AREA_HEIGHT / 2);
87
88        LuoLinja(new Vector(0, KORKEUS + ACTIVE_AREA_HEIGHT / 2));
89        LuoLinja(new Vector(0, KORKEUS + -ACTIVE_AREA_HEIGHT / 2));
90    }
91    void Ohjaimet()
92    {
93        Keyboard.Listen(Key.Left, ButtonState.Pressed,
94        Tarkistin, "punainen", Color.Red);
95        Keyboard.Listen(Key.Right, ButtonState.Pressed,
96          Tarkistin, "keltainen", Color.Yellow);
97        Keyboard.Listen(Key.Up, ButtonState.Pressed,
98          Tarkistin, "musta", Color.Black);
99        Keyboard.Listen(Key.Down, ButtonState.Pressed,
100          Tarkistin, "valkoien", Color.White);
101        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, null);
102       
103
104    }
105    void Tarkistin(Color vari)
106    {
107        List<GameObject> fysiikkaOliot = GetObjects(x => x is PhysicsObject);
108
109        for (int i = 0; i < fysiikkaOliot.Count; i++)
110        {
111            double upperLineY = KORKEUS + ACTIVE_AREA_HEIGHT / 2;
112            double lowerLineY = KORKEUS - ACTIVE_AREA_HEIGHT / 2;
113
114            if (fysiikkaOliot[i].Top < lowerLineY || fysiikkaOliot[i].Bottom > upperLineY)
115            {
116                // ei alueella
117            }
118            else
119            {
120                if (fysiikkaOliot[i].Color == vari)
121                {
122                    // alueella, väri oikein
123                    // LisaaPisteita()
124                    // elamat++
125                    pisteLaskuri.Value++;
126                    fysiikkaOliot[i].Destroy();
127                }
128                else
129                {
130                    pisteLaskuri.Value--;
131                    elamaLaskuri.Value--;
132                    // alueella, väri väärin
133                }
134            }
135        }
136    }
137
138    void LuoLinja(Vector vector)
139    {
140        GameObject maali = new GameObject(Level.Width, 10);
141        maali.Position = vector;
142        maali.Color = Color.Blue;
143        Add(maali, 3);
144    }
145
146    void LuoPisteet()
147    {
148        pisteLaskuri = new IntMeter(0);
149
150        Label pisteNaytto = new Label();
151        pisteNaytto.X = Screen.Left + 100;
152        pisteNaytto.Y = Screen.Top - 100;
153        pisteNaytto.TextColor = Color.Blue;
154        pisteNaytto.Color = Color.White;
155        pisteNaytto.IntFormatString = "Pisteitä: {0:D3}";
156
157        pisteNaytto.BindTo(pisteLaskuri);
158        Add(pisteNaytto);
159    }
160
161    void Havio() 
162    {
163        topLista.EnterAndShow(pisteLaskuri.Value);
164        topLista.HighScoreWindow.Closed += AloitaPeli;
165    }
166    public void AloitaPeli(Window sender)
167    {
168        ClearAll();
169        Begin();
170    }
171    void ElamaLaskuri()
172    {
173        elamaLaskuri = new IntMeter(25);
174        elamaLaskuri.LowerLimit += Havio;
175
176        Label elamaNaytto = new Label();
177        elamaNaytto.X = Screen.Left + 250;
178        elamaNaytto.Y = Screen.Top - 100;
179        elamaNaytto.TextColor = Color.Blue;
180        elamaNaytto.Color = Color.White;
181        elamaNaytto.IntFormatString = "elamia: {0:D2}";
182
183        elamaNaytto.BindTo(elamaLaskuri);
184        Add(elamaNaytto);
185    }
186
187
188}
Note: See TracBrowser for help on using the repository browser.