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

Revision 5962, 4.1 KB checked in by iisaaira, 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 Omapeli : PhysicsGame
10{
11    IntMeter pisteLaskuri;
12
13    Image panoksenKuva = LoadImage("panos");
14
15    Image[] pallonKuvat = LoadImages("apina", "UUS APINA", "sukkamato", "silma", "kännykkä", "Cannon");
16
17    AssaultRifle pelaajan1Ase;
18
19    Image ukonKuva = LoadImage("ukko");
20
21    public override void Begin()
22    {
23        LuoUusiApina();
24
25        Gravity = new Vector(0, -1000);
26
27        //tykki.ProjectileCollision = AmmusOsui;
28
29        IsFullScreen = false;
30        IsMouseVisible = true;
31        Level.Width = Screen.Width;
32        Level.Height = Screen.Height;
33
34        Level.CreateRightBorder(1.0, false);
35        Level.CreateLeftBorder(1.0, false);
36        PhysicsObject ylaReuna = Level.CreateTopBorder(1.0, false);
37       
38
39        Surface alaReuna = Surface.CreateBottom(Level, 30, 100, 40, 10);
40        alaReuna.Y = Screen.Bottom + 100;
41        Add(alaReuna);
42
43        PlatformCharacter2 ukko = new PlatformCharacter2(50, 50);
44        ukko.Shape = Shape.Circle;
45        ukko.Mass = 20.0;
46        ukko.Color = Color.LimeGreen;
47        Add(ukko);
48        ukko.Image = ukonKuva;
49
50        pelaajan1Ase = new AssaultRifle(30, 10);
51        pelaajan1Ase.X = 21.0;
52        pelaajan1Ase.Y = -12;
53
54        pelaajan1Ase.Ammo.Value = 1000;
55        pelaajan1Ase.ProjectileCollision = AmmusOsui;
56        ukko.Add(pelaajan1Ase);
57
58        LuoPistelaskuri();
59
60        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
61        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
62        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, "Ammu", pelaajan1Ase);
63        Keyboard.Listen(Key.W, ButtonState.Down, Hyppääukolla, "Hyppää", ukko);
64        Keyboard.Listen(Key.A, ButtonState.Down, Liiku, "Liiku", ukko, Direction.Left);
65        Keyboard.Listen(Key.D, ButtonState.Down, Liiku, "Liiku", ukko, Direction.Right);
66        Mouse.ListenMovement(0.0, HiirenLiikutus, "Tahtaa", ukko);
67    }
68
69    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
70    {
71        ammus.Destroy();
72
73       
74
75        if (kohde.Tag.Equals("apina"))
76        {
77            Timer.SingleShot(2.0, delegate { LuoUusiApina(); });
78            kohde.Destroy();
79            Explosion rajahdys = new Explosion(100);
80            rajahdys.Position = ammus.Position;
81            Add(rajahdys);
82
83            pisteLaskuri.Value += 1;
84
85        }
86    }
87
88    void AmmuAseella(AssaultRifle ase)
89    {
90        PhysicsObject ammus = ase.Shoot();
91
92        if (ammus != null)
93        {
94            ammus.Image = panoksenKuva;
95            ammus.Velocity = ammus.AbsoluteAngle.GetVector()*3000;
96        }
97    }
98
99    void Hyppääukolla(PlatformCharacter2 ukko)
100    {
101        ukko.Jump(500.0);
102    }
103
104    void Liiku(PlatformCharacter2 ukko, Direction suunta)
105    {
106        ukko.Walk(suunta);
107        pelaajan1Ase.X = 21.0*suunta.GetVector().X;
108    }
109
110    void HiirenLiikutus(AnalogState Hiiri, PlatformCharacter2 ukko)
111    {
112        pelaajan1Ase.AbsoluteAngle = (Mouse.PositionOnWorld - ukko.Position).Angle;
113
114    }
115
116    void LuoUusiApina()
117    {
118        PhysicsObject apina = new PhysicsObject(50, 50);
119        apina.Shape = Shape.Circle;
120        apina.IgnoresGravity = true;
121        apina.Hit(new Vector(-500, 200));
122
123        Double Xkoordinaatti = RandomGen.NextDouble(Level.Left, Level.Right);
124        apina.Position = new Vector(Xkoordinaatti,0);
125        apina.Restitution = 1.0;
126        apina.Tag = "apina";
127        apina.Image = pallonKuvat[RandomGen.NextInt(pallonKuvat.Length)];
128        Add(apina);
129    }
130
131    void LuoPistelaskuri()
132    {
133        pisteLaskuri = new IntMeter(0);
134
135        Label pisteNaytto = new Label();
136        pisteNaytto.X = Screen.Left + 100;
137        pisteNaytto.Y = Screen.Top - 100;
138        pisteNaytto.TextColor = Color.Black;
139        pisteNaytto.Color = Color.White;
140
141        pisteNaytto.BindTo(pisteLaskuri);
142        Add(pisteNaytto);
143    }
144}
Note: See TracBrowser for help on using the repository browser.