source: 2017/30/HugoE/HanniAndHoo/HanniAndHoo/HanniAndHoo/HanniAndHoo.cs @ 9142

Revision 9142, 4.5 KB checked in by npo17_65, 2 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 HanniAndHoo : PhysicsGame
10{
11    Image HanninKuva = LoadImage("Hanni");
12    Image HoonKuva = LoadImage("Hoo");
13
14
15
16
17    PlasmaCannon HanninAse;
18    Cannon HoonAse;
19
20
21    PeliUkko Hanni;
22    PeliUkko Hoo;
23
24    public override void Begin()
25    {
26        LuoKentta();
27        LuoPelaajat();
28        LuoNappaimet();
29
30    }
31
32    void LuoPelaajat()
33    {
34        Hanni = new PeliUkko(80.0, 80.0);
35        Hanni.X = Level.Left + 100.0;
36        Hanni.Y = 0.0;
37        Hanni.Shape = Shape.Circle;
38        Hanni.Color = Color.Blue;
39        Hanni.Image = HanninKuva;
40        Hanni.CanRotate = false;
41        Hanni.Tag = "pelaaja";
42        Add(Hanni);       
43        HanninAse = new PlasmaCannon(60, 20);
44        HanninAse.ProjectileCollision = AmmusOsui;
45        HanninAse.X += 50;
46        Keyboard.Listen(Key.S, ButtonState.Pressed, AmmuAseella, "Ammu", HanninAse);
47        HanninAse.CanHitOwner = false;
48        Hanni.Weapon = HanninAse;
49        Hoo = new PeliUkko(100.0, 100.0);
50        Hoo.Tag = "pelaaja";
51        Hoo.X = Level.Right - 100.0;
52        Hoo.Y = 0.0;
53        Hoo.Shape = Shape.Circle;
54        Hoo.Color = Color.Red;
55        Hoo.Image = HoonKuva;
56        Hoo.CanRotate = false;
57        Add(Hoo);
58        HoonAse = new Cannon(90, 30);
59        HoonAse.ProjectileCollision = Ammus2Osui;
60        HoonAse.X += 80;
61        Hoo.Weapon = HoonAse;
62        Keyboard.Listen(Key.Down, ButtonState.Pressed, AmmuAseella2, "Ammu2", HoonAse);
63        HoonAse.CanHitOwner = false;
64        HoonAse.Power.DefaultValue = 20000;
65        AddCollisionHandler(Hoo, Hanni, Tormaa);
66    }
67    void Tormaa(PhysicsObject Tormaaja, PhysicsObject Kohde)
68    {               
69        if (Kohde.Tag != "pelaaja") return;
70        PeliUkko pu = (PeliUkko)Kohde;
71        pu.Elamalaskuri.AddValue(-1);
72
73
74    }
75
76    void AmmusOsui(PhysicsObject Ammus, PhysicsObject Kohde)
77    {
78        Ammus.Destroy();
79        if (Kohde.Tag != "pelaaja") return;
80        PeliUkko pu = (PeliUkko)Kohde;
81        pu.Elamalaskuri.AddValue(-2);
82       
83    }
84    void Ammus2Osui(PhysicsObject Ammus2, PhysicsObject Kohde)
85    {
86        Ammus2.Destroy();
87        if (Kohde.Tag != "pelaaja") return;
88        PeliUkko pu = (PeliUkko)Kohde;
89        pu.Elamalaskuri.AddValue(-4);
90    }
91
92    void LuoNappaimet()
93    {
94        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppy, null, Hanni, 1000.0);
95        Keyboard.Listen(Key.D, ButtonState.Down, Kavely, null, Hanni, 500.0);
96        Keyboard.Listen(Key.A, ButtonState.Down, Kavely, null, Hanni, -500.0);
97        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppy, null, Hoo, 1000.0);
98        Keyboard.Listen(Key.Right, ButtonState.Down, Kavely, null, Hoo, 500.0);
99        Keyboard.Listen(Key.Left, ButtonState.Down, Kavely, null, Hoo, -500.0);
100        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
101
102    }
103    void LuoKentta()
104    {
105        Gravity = new Vector(0.0, -800.0);
106        Camera.Zoom(1.2);
107        PhysicsObject AlaReuna = Level.CreateBottomBorder(0.0, false);
108        PhysicsObject OikeaReuna = Level.CreateRightBorder(0.0, false);
109        PhysicsObject VasenReuna = Level.CreateLeftBorder(0.0, false);
110        PhysicsObject YläReuna = Level.CreateTopBorder(0.0, false);
111    }
112
113
114
115    void Kavely(PeliUkko tyyppi, double liikkumisenMaara)
116    {
117
118        tyyppi.Walk(liikkumisenMaara);
119
120    }
121    void Hyppy(PeliUkko tyyppi, double hypynMaara)
122    {
123        tyyppi.Jump(hypynMaara);
124    }
125
126    void AmmuAseella(PlasmaCannon HanninAse)
127    {
128        PhysicsObject Ammus = HanninAse.Shoot();
129        HanninAse.FireRate = 2;
130        if (Ammus != null)
131        {
132            Ammus.Size *= 3;
133            Ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
134        }
135
136    }
137
138    void AmmuAseella2(Cannon HoonAse)
139    {
140        PhysicsObject Ammus = HoonAse.Shoot();
141        HoonAse.FireRate = 1;
142        if (Ammus != null)
143        {
144            Ammus.Size *= 4;
145            Ammus.MaximumLifetime = TimeSpan.FromSeconds(4.0);
146        }
147
148    }
149
150
151
152
153}
154
155
156class PeliUkko : PlatformCharacter
157{
158    public IntMeter Elamalaskuri = new IntMeter(20, 0, 20);
159
160        public PeliUkko(double leveys, double korkeus)
161        : base(leveys, korkeus)
162    {
163        Elamalaskuri.LowerLimit += delegate { this.Destroy(); };
164    }   
165}
166
167
Note: See TracBrowser for help on using the repository browser.