source: 2015/24/TuroR/Omapeli/Omapeli/Omapeli/Omapeli.cs @ 10337

Revision 6072, 6.0 KB checked in by empaheik, 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 Omapeli : PhysicsGame
10{
11    Image taustaKuva = LoadImage("kokki");
12
13    Image ukkoAmpuu = LoadImage("ukko ampuu2");
14
15    IntMeter pisteLaskuri;
16    IntMeter ammusLaskuri;
17
18    Image panoksenKuva = LoadImage("panos");
19
20    Image[] pallonKuvat = LoadImages("apina", "UUS APINA", "sukkamato", "silma", "kännykkä", "Cannon", "possu", "tamm", "putin", "pall o o", "kiekko");
21
22    AssaultRifle pelaajan1Ase;
23
24    Image ukonKuva = LoadImage("ukko");
25   
26    EasyHighScore topLista = new EasyHighScore();
27
28
29    public override void Begin()
30    {
31        topLista.HighScoreWindow.Closed += _ => LuoAlkuvalikko();
32        LuoAlkuvalikko();
33    }
34
35    void AloitaPeli()
36    {
37        ClearAll();
38        LuoUusiApina();
39
40        Gravity = new Vector(0, -1000);
41
42        //tykki.ProjectileCollision = AmmusOsui;
43
44        IsFullScreen = false;
45        IsMouseVisible = true;
46        Level.Width = Screen.Width;
47        Level.Height = Screen.Height;
48
49        Level.CreateRightBorder(1.0, false);
50        Level.CreateLeftBorder(1.0, false);
51        PhysicsObject ylaReuna = Level.CreateTopBorder(1.0, false);
52
53        Level.Background.Image = taustaKuva;
54        Level.Background.FitToLevel();
55        Surface alaReuna = Surface.CreateBottom(Level, 30, 100, 40, 10);
56        // vaiha tota jos eri näyttö !!\/
57        alaReuna.Y = Screen.Bottom + 50;
58        Add(alaReuna);
59
60       
61
62        PlatformCharacter2 ukko = new PlatformCharacter2(50, 50);
63        ukko.Shape = Shape.Circle;
64        ukko.Mass = 20.0;
65        ukko.Color = Color.LimeGreen;
66        Add(ukko);
67        ukko.Image = ukonKuva;
68
69        pelaajan1Ase = new AssaultRifle(30, 10);
70        pelaajan1Ase.X = 21.0;
71        pelaajan1Ase.Y = -12;
72
73        pelaajan1Ase.Ammo.Value = 50;
74        pelaajan1Ase.ProjectileCollision = AmmusOsui;
75        ukko.Add(pelaajan1Ase);
76
77        LuoPistelaskuri();
78        LuoAmmusLaskuri();
79
80        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
81        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, "Ammu",ukko, pelaajan1Ase);
82        Mouse.Listen(MouseButton.Left, ButtonState.Released, AmpumisenLopetus, null, ukko);
83        Keyboard.Listen(Key.W, ButtonState.Down, Hyppääukolla, "Hyppää", ukko);
84        Keyboard.Listen(Key.A, ButtonState.Down, Liiku, "Liiku Vasemmalle", ukko, Direction.Left);
85        Keyboard.Listen(Key.D, ButtonState.Down, Liiku, "Liiku Oikealle", ukko, Direction.Right);
86        Mouse.ListenMovement(0.0, HiirenLiikutus, "Tahtaa", ukko);
87        Keyboard.Listen(Key.R, ButtonState.Pressed, AloitaAlusta, "Aloita alusta");
88    }
89
90    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
91    {
92        ammus.Destroy();
93
94       
95
96        if (kohde.Tag.Equals("apina"))
97        {
98            Timer.SingleShot(2.0, delegate { LuoUusiApina(); });
99            kohde.Destroy();
100            Explosion rajahdys = new Explosion(100);
101            rajahdys.Position = ammus.Position;
102
103            Add(rajahdys);
104
105            pisteLaskuri.Value += 1;
106
107        }
108    }
109
110    void AmmuAseella(PlatformCharacter2 ukko, AssaultRifle ase)
111    {
112        PhysicsObject ammus = ase.Shoot();
113       
114
115        if (ammus != null)
116        {
117            ammusLaskuri.Value += 1; 
118            ammus.Image = panoksenKuva;
119            ammus.Velocity = ammus.AbsoluteAngle.GetVector()*3000;
120            ukko.Image = ukkoAmpuu;
121        }
122    }
123
124    void AmpumisenLopetus(PlatformCharacter2 ukko)
125    {
126        ukko.Image = ukonKuva;   
127    }
128
129
130    void Hyppääukolla(PlatformCharacter2 ukko)
131    {
132        ukko.Jump(500.0);
133    }
134
135    void Liiku(PlatformCharacter2 ukko, Direction suunta)
136    {
137        ukko.Walk(suunta);
138        pelaajan1Ase.X = 21.0*suunta.GetVector().X;
139    }
140
141    void HiirenLiikutus(AnalogState Hiiri, PlatformCharacter2 ukko)
142    {
143        pelaajan1Ase.AbsoluteAngle = (Mouse.PositionOnWorld - ukko.Position).Angle;
144
145    }
146
147    void LuoUusiApina()
148    {
149        PhysicsObject apina = new PhysicsObject(60, 60);
150        apina.Shape = Shape.Circle;
151        apina.IgnoresGravity = true;
152        apina.Hit(new Vector(-500, 200));
153
154        Double Xkoordinaatti = RandomGen.NextDouble(Level.Left, Level.Right);
155        apina.Position = new Vector(Xkoordinaatti,0);
156        apina.Restitution = 1.0;
157        apina.Tag = "apina";
158        apina.Image = pallonKuvat[RandomGen.NextInt(pallonKuvat.Length)];
159        Add(apina);
160    }
161
162    void LuoPistelaskuri()
163    {
164        pisteLaskuri = new IntMeter(0);
165
166        Label pisteNaytto = new Label();
167        pisteNaytto.X = Screen.Left + 100;
168        pisteNaytto.Y = Screen.Top - 100;
169        pisteNaytto.TextColor = Color.Black;
170        pisteNaytto.Color = Color.White;
171
172        pisteNaytto.BindTo(pisteLaskuri);
173        Add(pisteNaytto);
174    }
175
176    void LuoAmmusLaskuri()
177    {
178        ammusLaskuri = new IntMeter(0, 0, 50);
179        ammusLaskuri.UpperLimit += PeliOhi;
180
181        Label ammusNaytto = new Label();
182        ammusNaytto.X = Screen.Right - 100;
183        ammusNaytto.Y = Screen.Top - 100;
184        ammusNaytto.TextColor = Color.Black;
185        ammusNaytto.Color = Color.White;
186
187        ammusNaytto.BindTo(ammusLaskuri);
188        Add(ammusNaytto); 
189    }
190
191    void PeliOhi()
192    {
193        Timer.SingleShot(2.0, delegate
194        {
195            ClearAll();
196            topLista.EnterAndShow(pisteLaskuri.Value);
197        });
198   }
199
200    void ParhaatPisteet()
201    {
202        topLista.Show();
203    }
204   
205
206    void LuoAlkuvalikko()
207    {
208        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko", "Aloita peli", "Parhaat pisteet", "Lopeta");
209       Add(alkuValikko);
210       alkuValikko.AddItemHandler(0, AloitaPeli);
211       alkuValikko.AddItemHandler(1, ParhaatPisteet);
212       alkuValikko.AddItemHandler(2, Exit);
213    }
214
215    void AloitaAlusta()
216    {
217        AloitaPeli();
218    }
219}
Note: See TracBrowser for help on using the repository browser.