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

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