source: 2017/23/MatiasH/DungeonGame/DungeonGame/DungeonGame/DungeonGame.cs @ 8448

Revision 8448, 6.0 KB checked in by nupeohje, 2 years ago (diff)

Nuolinäppäimistä liikutaan.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class DungeonGame : PhysicsGame
10{
11    AssaultRifle pelaajan1Ase;
12    Timer aikaLaskuri;
13    DoubleMeter alaspainLaskuri;
14    Image tyyppi = LoadImage("Tyyppi");
15    Image vihollinenkuva = LoadImage("Vihollinen");
16    PlatformCharacter jatka;
17
18    public override void Begin()
19    {
20        IsMouseVisible = true;
21        // TODO: Kirjoita ohjelmakoodisi tähän
22        Level.Background.Color = Color.LightBlue;
23        jatka = new PlatformCharacter(135.0, 135.0);
24        jatka.Image = tyyppi;
25        Add(jatka);
26        jatka.Tag = "jatka";
27        Vihollisajastin();
28        Gravity = new Vector(0.0, -800.0);
29
30        LuoAikaLaskuri();
31        Mouse.ListenMovement(0.0, Tahtaa, "Tähtää Aseella");
32        LuoNappaimet(jatka);
33        jatka.X = -300;
34        pelaajan1Ase = new AssaultRifle(30, 10);
35        pelaajan1Ase.Ammo.Value = 150;
36        pelaajan1Ase.MaxAmmoLifetime = TimeSpan.FromSeconds(3.0);
37        PhysicsObject lattia = new PhysicsObject(Level.Width, 50);
38        lattia.Y = -200.0;
39        Add(lattia);
40        lattia.MakeStatic();
41        pelaajan1Ase.ProjectileCollision = AmmusOsui;
42        jatka.Weapon = pelaajan1Ase;
43        jatka.Y = -200.0+ jatka.Height/2.0;
44        pelaajan1Ase.X = 0.0 + jatka.Width / 3.0;
45    }
46    void LuoNappaimet(PlatformCharacter jatka)
47    {
48        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
49        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, null, jatka);
50        Keyboard.Listen(Key.Left, ButtonState.Down, Kavele, "Menee Vasemmalle", -300.0);
51        Keyboard.Listen(Key.Right, ButtonState.Down, Kavele, "Menee Oikealle", +300.0);
52        Keyboard.Listen(Key.Up, ButtonState.Down,  Hyppaa, "Menee Ylos",+50.0 );
53    }
54    void LuoAikaLaskuri()
55    {
56        alaspainLaskuri = new DoubleMeter(100
57            );
58        aikaLaskuri = new Timer();
59
60        aikaLaskuri.Interval = 0.1;
61        aikaLaskuri.Timeout += LaskeAlaspain;
62
63        aikaLaskuri.Start();
64
65        Label aikaNaytto = new Label();
66        aikaNaytto.TextColor = Color.White;
67        aikaNaytto.DecimalPlaces = 1;
68        aikaNaytto.BindTo(alaspainLaskuri);
69        aikaNaytto.X = Screen.Right - 10.0;
70        aikaNaytto.Y = Screen.Top - 20.0;
71        Add(aikaNaytto);
72
73    }
74
75
76    void AikaLoppui()
77    {
78
79        MessageDisplay.Add("Voitit Pelin!");
80    }
81    void LaskeAlaspain()
82    {
83        alaspainLaskuri.Value -= 0.1;
84        if (alaspainLaskuri.Value <= 0)
85        {
86            MessageDisplay.Add("Voitit Pelin!");
87            aikaLaskuri.Stop();
88
89        }
90
91
92    }
93
94
95    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
96    {
97        //ammus destroy();
98        if (kohde.Tag.Equals("paahitbox"))
99        {
100            MessageDisplay.Add("Headshot");
101           ( ((kohde as Paa).isanta) as Vihu).Elamalaskuri.AddValue(-2);
102
103        }
104
105        if (kohde.Tag.Equals("Vihollinen"))
106        {
107            (kohde as Vihu).Elamalaskuri.AddValue(-1);
108
109        }
110       
111    }
112
113    void AmmuAseella(PlatformCharacter jatka)
114    {
115        PhysicsObject ammus = jatka.Weapon.Shoot();
116
117
118        if (ammus != null)
119        {
120
121            //ammus.Size *= 3;
122            //ammus.image = ...
123            //ammus.maximumlifetime = timespan.FromSeconds (2.0);
124
125        }
126   
127    }
128    void Hyppaa(double hyppy)
129    {
130        jatka.Jump(hyppy);
131
132
133    }
134
135
136
137
138
139
140
141    void Tahtaa(AnalogState hiirenLiike)
142    {
143        Vector suunta = (Mouse.PositionOnWorld - jatka.Weapon.AbsolutePosition).Normalize();
144        jatka.Weapon.Angle = suunta.Angle;
145
146
147    }
148    void Teevihollinen(Double x, Double y)
149    {
150
151        Vihu vihollinen = new Vihu(this,135.0, 135.0);
152        vihollinen.Image = vihollinenkuva;
153     
154       
155        Add(vihollinen);
156        vihollinen.Mass = 15.0;
157        vihollinen.X = x;
158        vihollinen.Y = y;
159        vihollinen.Tag = "Vihollinen";
160    }
161    void Vihollisajastin()
162    {
163        Timer ajastin = new Timer();
164        ajastin.Interval = 2.5;
165        ajastin.Timeout += delegate {
166            bool vapaaPaikkaLoytynyt = false;
167            while (vapaaPaikkaLoytynyt == false)
168            {
169                Vector arvottuSijainti = new Vector(RandomGen.NextDouble(-500.0, 500.0), -200.0 + 135.0 / 2.0 + 50.0/2.0);
170                if (GetObjectAt(arvottuSijainti, "vihollinen", 135.0 / 2.0) == null && GetObjectAt(arvottuSijainti, "jatka", jatka.Height/ 2.0) == null)
171                {
172
173                    Teevihollinen(arvottuSijainti.X, arvottuSijainti.Y);
174                    vapaaPaikkaLoytynyt = true;
175                }
176            }
177
178        };
179        ajastin.Start();
180
181    }
182   
183   
184
185
186   
187    void Kavele(double suunta)
188    {
189        jatka.Walk(suunta);
190
191
192    }
193}
194class Vihu : PlatformCharacter
195{
196    private IntMeter elamaLaskuri = new IntMeter(5, 0, 5);
197    public IntMeter Elamalaskuri { get { return elamaLaskuri; } }
198
199   Paa paahitbox;
200
201    public Vihu(PhysicsGame peli, double leveys, double korkeus)
202        : base(leveys, korkeus)
203    {
204        elamaLaskuri.LowerLimit += delegate { paahitbox.Destroy(); this.Destroy(); };
205        paahitbox = new Paa(this,leveys*0.6, korkeus * 0.30);
206        paahitbox.IgnoresCollisionResponse = true;
207        paahitbox.IgnoresGravity = true;
208        peli.Add(paahitbox);
209        paahitbox.MakeStatic();
210        paahitbox.Tag = "paahitbox";
211        paahitbox.Color = Color.Transparent;
212   
213   
214    }
215
216    public override void Update(Time time)
217    {
218        base.Update(time);
219
220        paahitbox.Y = this.Top-18;
221        paahitbox.X = this.X;
222    }
223
224
225}
226
227class Paa : PhysicsObject
228{
229    public Vihu isanta { get; set; }
230 public Paa(Vihu isantavihu, double leveys, double korkeus)
231        : base(leveys, korkeus){
232     isanta = isantavihu;
233
234
235 }
236
237}
238
239
240 
Note: See TracBrowser for help on using the repository browser.