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

Revision 8465, 6.7 KB checked in by nupeohje, 2 years ago (diff)

Moi

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.Aquamarine;
23        jatka = new PlatformCharacter(135.0, 160.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 = 500;
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        pelaajan1Ase.Y = 0.0 - 28.0;
46    }
47    void LuoNappaimet(PlatformCharacter jatka)
48    {
49        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
50        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, null, jatka);
51        Keyboard.Listen(Key.Left, ButtonState.Down, Kavele, "Menee Vasemmalle", -300.0);
52        Keyboard.Listen(Key.Right, ButtonState.Down, Kavele, "Menee Oikealle", +300.0);
53        Keyboard.Listen(Key.Up, ButtonState.Down, Hyppaa, "Menee Ylos", +100);
54           
55    }
56    void LuoAikaLaskuri()
57    {
58        alaspainLaskuri = new DoubleMeter(100
59            );
60        aikaLaskuri = new Timer();
61
62        aikaLaskuri.Interval = 0.1;
63        aikaLaskuri.Timeout += LaskeAlaspain;
64
65        aikaLaskuri.Start();
66
67        Label aikaNaytto = new Label();
68        aikaNaytto.TextColor = Color.White;
69        aikaNaytto.DecimalPlaces = 1;
70        aikaNaytto.BindTo(alaspainLaskuri);
71        aikaNaytto.X = Screen.Right - 10.0;
72        aikaNaytto.Y = Screen.Top - 20.0;
73        Add(aikaNaytto);
74
75    }
76
77
78    void AikaLoppui()
79    {
80
81        MessageDisplay.Add("Voitit Pelin!");
82    }
83    void LaskeAlaspain()
84    {
85        alaspainLaskuri.Value -= 0.1;
86        if (alaspainLaskuri.Value <= 0)
87        {
88            MessageDisplay.Add("Voitit Pelin!");
89            aikaLaskuri.Stop();
90
91        }
92
93
94    }
95    void PelaajaanOsuu(PhysicsObject ammus, PhysicsObject kohde)
96    {
97
98
99    //Pelaajalta menee energiaa.
100    }
101
102    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
103    {
104        //ammus destroy();
105        if (kohde.Tag.Equals("paahitbox"))
106        {
107            MessageDisplay.Add("Headshot");
108           ( ((kohde as Paa).isanta) as Vihu).Elamalaskuri.AddValue(-2);
109
110        }
111
112        if (kohde.Tag.Equals("Vihollinen"))
113        {
114            (kohde as Vihu).Elamalaskuri.AddValue(-1);
115
116        }
117       
118    }
119
120    void AmmuAseella(PlatformCharacter jatka)
121    {
122        PhysicsObject ammus = jatka.Weapon.Shoot();
123
124
125        if (ammus != null)
126        {
127
128            //ammus.Size *= 3;
129            //ammus.image = ...
130            //ammus.maximumlifetime = timespan.FromSeconds (2.0);
131
132        }
133   
134    }
135    void Hyppaa(double hyppy)
136    {
137        jatka.Jump(hyppy);
138
139
140    }
141
142
143
144
145
146
147
148    void Tahtaa(AnalogState hiirenLiike)
149    {
150        Vector suunta = (Mouse.PositionOnWorld - jatka.Weapon.AbsolutePosition).Normalize();
151        jatka.Weapon.Angle = suunta.Angle;
152
153
154    }
155    void Teevihollinen(Double x, Double y)
156    {
157
158        Vihu vihollinen = new Vihu(this,135.0, 135.0);
159        vihollinen.Image = vihollinenkuva;
160     
161       
162        Add(vihollinen);
163        vihollinen.Mass = 15.0;
164        vihollinen.X = x;
165        vihollinen.Y = y;
166      vihollinen.Tag = "Vihollinen";
167     vihollinen.Weapon =  new AssaultRifle(30, 10);
168     vihollinen.Weapon.X = vihollinen.Width / 2.0;
169        vihollinen.Weapon.Ammo.Value = 1000;
170        Vihollinenampuu(vihollinen);
171        vihollinen.Weapon.ProjectileCollision = PelaajaanOsuu;
172   
173    }
174
175    void Vihollisajastin()
176    {
177        Timer ajastin = new Timer();
178        ajastin.Interval = 2.5;
179        ajastin.Timeout += delegate {
180            bool vapaaPaikkaLoytynyt = false;
181            while (vapaaPaikkaLoytynyt == false)
182            {
183                Vector arvottuSijainti = new Vector(RandomGen.NextDouble(-500.0, 500.0), -200.0 + 135.0 / 2.0 + 50.0/2.0);
184                if (GetObjectAt(arvottuSijainti, "vihollinen", 135.0 / 2.0) == null && GetObjectAt(arvottuSijainti, "jatka", jatka.Height/ 2.0) == null)
185                {
186
187                    Teevihollinen(arvottuSijainti.X, arvottuSijainti.Y);
188                    vapaaPaikkaLoytynyt = true;
189                }
190            }
191
192        };
193        ajastin.Start();
194
195    }
196   
197   
198
199
200   
201    void Kavele(double suunta)
202    {
203        jatka.Walk(suunta);
204
205
206    }
207    void Vihollinenampuu(Vihu vihollinen)
208    {
209        Timer ampumisajastin = new Timer();
210        ampumisajastin.Interval = 2.5;
211        ampumisajastin.Timeout += delegate { vihollinen.Weapon.Angle = (jatka.Position - vihollinen.Weapon.AbsolutePosition).Normalize().Angle; vihollinen.Weapon.Shoot(); };
212        ampumisajastin.Start();
213
214
215    }
216}
217class Vihu : PlatformCharacter
218{
219    private IntMeter elamaLaskuri = new IntMeter(5, 0, 5);
220    public IntMeter Elamalaskuri { get { return elamaLaskuri; } }
221
222   Paa paahitbox;
223
224    public Vihu(PhysicsGame peli, double leveys, double korkeus)
225        : base(leveys, korkeus)
226    {
227        elamaLaskuri.LowerLimit += delegate { paahitbox.Destroy(); this.Destroy(); };
228        paahitbox = new Paa(this,leveys*0.6, korkeus * 0.30);
229        paahitbox.IgnoresCollisionResponse = true;
230        paahitbox.IgnoresGravity = true;
231        peli.Add(paahitbox);
232        paahitbox.MakeStatic();
233        paahitbox.Tag = "paahitbox";
234        paahitbox.Color = Color.Transparent;
235   
236   
237    }
238
239    public override void Update(Time time)
240    {
241        base.Update(time);
242
243        paahitbox.Y = this.Top-18;
244        paahitbox.X = this.X;
245    }
246
247
248}
249
250class Paa : PhysicsObject
251{
252    public Vihu isanta { get; set; }
253 public Paa(Vihu isantavihu, double leveys, double korkeus)
254        : base(leveys, korkeus){
255     isanta = isantavihu;
256
257
258 }
259
260}
261
262
263 
Note: See TracBrowser for help on using the repository browser.