source: 2014/30/RoosaH/Roskapeli/Roskapeli/Roskapeli/Roskapeli.cs @ 5630

Revision 5630, 5.3 KB checked in by rohehank, 6 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 Roskapeli : PhysicsGame
10{
11    PhysicsObject vasenReuna;
12    PhysicsObject oikeaReuna;
13    PhysicsObject ylaReuna;
14    PhysicsObject alaReuna;
15    PhysicsObject pelaaja;
16
17    List<PhysicsObject> roskat = new List<PhysicsObject>();
18   
19
20    IntMeter keratytEsineet;
21
22    Timer ajastin;
23
24    Image hahmonkuva = LoadImage("hahmo");   
25    Image roskankuva = LoadImage("roska");
26    Image tausta = LoadImage("Tausta");
27   
28
29    public override void Begin()
30    {
31        SetWindowSize(800, 600);
32        Level.Size = new Vector(800, 600);
33        IsMouseVisible = true;
34
35        valikko();
36       
37    }
38    void AloitaPeli()
39    {
40        ajastin = new Timer();
41        ajastin.Interval = 0.5;
42        ajastin.Timeout += Lisaaroskia;
43        ajastin.Start();
44
45        Gravity = new Vector(0.0, -200.0);
46
47        pelaaja = LuoPelaaja(0.0, -175.0);
48
49        roskat.Add(Luoroska(0.0, -250.0));
50        roskat.Add(Luoroska(50.0, -250.0));
51
52        foreach (PhysicsObject roska in roskat)
53        {
54            Add(roska);
55        }
56
57        LuoPisteLaskuri();
58        LuoKentta();
59        AsetaOhjaimet();
60       
61    }
62    void LuoKentta()
63    {
64        vasenReuna = Level.CreateLeftBorder();
65        vasenReuna.Restitution = 0.0;
66        vasenReuna.IsVisible = false;
67        Add(vasenReuna);
68
69        oikeaReuna = Level.CreateRightBorder();
70        oikeaReuna.Restitution = 0.0;
71        oikeaReuna.IsVisible = false;
72        Add(oikeaReuna);
73
74        ylaReuna = Level.CreateTopBorder();
75        ylaReuna.Restitution = 0.0;
76        ylaReuna.IsVisible = false;
77        Add(ylaReuna);
78
79        alaReuna = PhysicsObject.CreateStaticObject(Level.Width, Level.Height/16);
80        alaReuna.Restitution = 0.0;
81        alaReuna.IsVisible = false;
82        alaReuna.Y = Level.Bottom + 20.0;
83        Add(alaReuna);
84
85       
86
87        Level.Background.Color = Color.White;
88        Level.Background.Image = tausta;
89        Camera.ZoomToLevel();
90    }
91    void AsetaOhjaimet()
92    {
93        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, "Pelaaja liikkuu vasemmalle", new Vector(-200.0, 0.0));
94        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, "Pelaaja liikkuu oikealle", new Vector(200.0, 0.0));
95        Keyboard.Listen(Key.Left, ButtonState.Released, LiikutaPelaajaa, null, Vector.Zero);
96        Keyboard.Listen(Key.Right, ButtonState.Released, LiikutaPelaajaa, null, Vector.Zero);
97        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, keraa, "Keraa roskan");
98        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
99        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
100
101    }
102    void LiikutaPelaajaa(Vector suunta)
103    {
104        pelaaja.Velocity = suunta;
105    }
106    PhysicsObject LuoPelaaja(double x, double y)
107    {
108        PhysicsObject pelaaja = new PhysicsObject(100.0, 150.0);
109        Add(pelaaja);
110        pelaaja.Image = hahmonkuva;
111        pelaaja.Mass = 90000;
112        pelaaja.Restitution = 0.0;
113        pelaaja.X = x;
114        pelaaja.Y = y;
115        pelaaja.CanRotate = false;
116        return pelaaja;
117    }
118    PhysicsObject Luoroska(double x, double y)
119    {
120        PhysicsObject roska = new PhysicsObject(20.0, 20.0);
121        roska.Image = roskankuva;
122        Add(roska);
123
124        roska.Restitution = 0.0;
125        roska.Mass = 90000;
126        roska.X = x;
127        roska.Y = y;
128        return roska;
129
130    }
131    void keraa()
132    {
133        foreach (PhysicsObject roska in roskat)
134        {
135            if (Vector.Distance(roska.Position, pelaaja.Position) < 100.0)
136            {
137               
138               roska.Destroy();
139               roskat.Remove(roska);
140               keratytEsineet.Value += 1;   
141               return; 
142            }
143        }
144       
145    }
146    void Lisaaroskia()
147    {
148        double satunnainenX = RandomGen.NextDouble(Level.Left, Level.Right);
149        double satunnainenY = RandomGen.NextDouble(Level.Bottom + Level.Height / 16, (Level.Bottom + Level.Height / 8));
150
151        PhysicsObject uusiroska = Luoroska(satunnainenX, satunnainenY);
152        roskat.Add(uusiroska);
153        if (roskat.Count >= 8)
154        {
155            Label gameover = new Label("Game Over");
156            gameover.Color = Color.White;
157            Add(gameover);
158            ClearControls();                 
159            ajastin.Stop();
160            Timer.SingleShot(4.0, valikko);
161        }
162    }
163    void LuoPisteLaskuri()
164    {
165
166        keratytEsineet = new IntMeter(0);
167        Label pisteNaytto = new Label();
168        pisteNaytto.X = 0.0 ;
169        pisteNaytto.Y = Screen.Top - 100;
170        pisteNaytto.TextColor = Color.Black;
171        pisteNaytto.Color = Color.White;
172        pisteNaytto.BindTo(keratytEsineet);
173        pisteNaytto.Title = "Points";
174        Add(pisteNaytto);
175    }
176    void valikko()
177    {
178        ClearAll();
179        roskat.Clear();
180        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko", "Aloita peli", "Lopeta");
181        alkuValikko.AddItemHandler(0, AloitaPeli);
182        alkuValikko.AddItemHandler(1, Exit);
183        Add(alkuValikko);
184
185    }
186
187    }
188   
189   
190   
Note: See TracBrowser for help on using the repository browser.