source: 2017/31/SietseH/peli2017/peli2017/peli2017/peli2017.cs @ 9265

Revision 9265, 6.1 KB checked in by npo17_72, 4 years ago (diff)
Line 
1using System;
2
3
4using System.Collections.Generic;
5using Jypeli;
6using Jypeli.Assets;
7using Jypeli.Controls;
8using Jypeli.Effects;
9using Jypeli.Widgets;
10class Vihu : PhysicsObject
11{
12    private IntMeter elamaLaskuri = new IntMeter(2, 0, 2);
13    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
14
15    public Vihu(double leveys, double korkeus)
16        : base(leveys, korkeus)
17    {
18        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
19    }
20}
21public class peli2017 : PhysicsGame
22{
23    Vector ylös = new Vector(0, 4000);
24    Vector alas = new Vector(0, -4000);
25    Vector vasen = new Vector(4000, 0);
26    Vector oikea = new Vector(-4000, 0);
27
28    IntMeter ElamaLaskuri = new IntMeter(0);
29
30   
31    PhysicsObject pelaaja;
32    AssaultRifle laserAse;
33
34    public override void Begin()
35    {
36        ElämäLaskuri();
37        Kentta();
38
39        Vihollinen();
40        //liikuta();
41        Vihollinen();
42        Vihollinen();
43        Vihollinen();
44        Vihollinen();
45
46
47        // TODO: Kirjoita ohjelmakoodisi tähän
48        pelaaja = new PhysicsObject(40.0, 40.0);
49        pelaaja.LinearDamping = 0.7;
50        pelaaja.CanRotate = false;
51        pelaaja.Color = Color.Blue;
52        pelaaja.Tag = "pelaaja";
53        Add(pelaaja);
54       
55
56        Laserase();
57        Ohjaus();
58
59 
60       
61        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
62
63
64    }
65    void Ohjaus()
66    {
67        Keyboard.Listen(Key.W, ButtonState.Down, Liikuta, "", ylös);
68        Keyboard.Listen(Key.S, ButtonState.Down, Liikuta, "", alas);
69        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "", oikea);
70        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "", vasen);
71        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, "Ammu", laserAse);
72        Mouse.ListenMovement(0.1, Tahtaa, "Tähtää aseella");
73
74
75
76    }
77    void Liikuta(Vector nopeus)
78    {
79        pelaaja.Push(nopeus);
80    }
81    void Kentta()
82    {
83        PhysicsObject vasenReuna = Level.CreateLeftBorder();
84        vasenReuna.Restitution = 1.0;
85        vasenReuna.KineticFriction = 0.0;
86        vasenReuna.IsVisible = false;
87
88        PhysicsObject oikeaReuna = Level.CreateRightBorder();
89        oikeaReuna.Restitution = 1.0;
90        oikeaReuna.KineticFriction = 0.0;
91        oikeaReuna.IsVisible = false;
92
93        PhysicsObject ylaReuna = Level.CreateTopBorder();
94        ylaReuna.Restitution = 1.0;
95        ylaReuna.KineticFriction = 0.0;
96        ylaReuna.IsVisible = false;
97
98        PhysicsObject alaReuna = Level.CreateBottomBorder();
99        alaReuna.Restitution = 1.0;
100        alaReuna.IsVisible = false;
101        alaReuna.KineticFriction = 0.0;
102
103        Level.Background.Color = Color.Black;
104
105        Camera.ZoomToLevel();
106
107
108    }
109    void Laserase()
110    {
111
112        laserAse = new AssaultRifle(20, 5);
113        laserAse.InfiniteAmmo = true;
114        laserAse.Power.Value = 200;
115        laserAse.Power.DefaultValue = laserAse.Power.Value;
116        laserAse.FireRate = 0.5;
117        laserAse.AmmoIgnoresGravity = false;
118        laserAse.AmmoIgnoresExplosions = true;
119        //laserAse.X = 10.0;
120        //laserAse.Y = -5.0;
121        laserAse.Image = null;
122        laserAse.Color = Color.Transparent;
123        laserAse.CanHitOwner = true;
124        laserAse.ProjectileCollision = Ammusosui;
125
126        pelaaja.Add(laserAse);
127       
128    }
129    void AmmuAseella(Weapon laserAse)
130    {
131        PhysicsObject ammus = laserAse.Shoot();
132
133        if (ammus != null)
134        {
135            ammus.MaximumLifetime = TimeSpan.FromSeconds(7.00);
136           
137        }
138    }
139    void Tahtaa(AnalogState hiirenLiike)
140    {
141        Vector suunta = (Mouse.PositionOnWorld - laserAse.AbsolutePosition).Normalize();
142        laserAse.Angle = suunta.Angle;
143    }
144    void Vihollinen()
145    {
146        Vihu vihollinen = new Vihu(40.0, 40.0);
147        vihollinen.LinearDamping = 0.9;
148        vihollinen.CanRotate = false;
149        vihollinen.Color = Color.Red;
150        vihollinen.Tag = "vihollinen";
151
152        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(200);
153
154
155        satunnaisAivot.ChangeMovementSeconds = 3.00;
156        satunnaisAivot.WanderRadius = 1000;
157        satunnaisAivot.WanderPosition = new Vector(2000, 3000);
158        vihollinen.Brain = satunnaisAivot;
159
160
161        Add(vihollinen);
162        AssaultRifle Ase = new AssaultRifle(30, 10);
163
164        // Jos et halua ammusten määrän rajoitusta, vaan loputtomat panokset,
165        // niin älä lisää seuraavaa riviä ollenkaan:
166        //Ase.Ammo.Value = 1000; // Ammusten määrä aluksi
167
168        // Mitä tapahtuu kun ammus osuu johonkin?
169        Ase.ProjectileCollision = VihollisenAmmusOsui;
170
171        vihollinen.Add(Ase);
172        Timer ajastin = new Timer();
173        ajastin.Interval = 3.00;
174        ajastin.Timeout += delegate
175        {
176            VihollinenAmmuAseella(Ase);
177
178        };
179        ajastin.Start();
180       
181
182    }
183    void ElämäLaskuri()
184    {
185        ElamaLaskuri = new IntMeter(0);
186
187        Label pisteNaytto = new Label();
188        pisteNaytto.X = Screen.Left + 100;
189        pisteNaytto.Y = Screen.Top - 100;
190        pisteNaytto.TextColor = Color.Black;
191        pisteNaytto.Color = Color.White;
192
193        IntMeter laskuri = new IntMeter(1);
194
195        pisteNaytto.Title = "elämät";
196
197        pisteNaytto.BindTo(ElamaLaskuri);
198        Add(pisteNaytto);
199
200
201
202    }
203    void Ammusosui(PhysicsObject ammus, PhysicsObject kohde)
204    {
205        if (kohde.Tag.ToString() == "vihollinen")
206        {
207            (kohde as Vihu).ElamaLaskuri.Value -= 1;
208
209        }
210
211    }
212    void VihollisenAmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
213    {
214        if (kohde.Tag.ToString() == "pelaaja")
215        {
216            //(kohde as Vihu).ElamaLaskuri.Value -= 1;
217            kohde.Destroy();
218        }
219    }
220    void VihollinenAmmuAseella(Weapon Ase)
221    {
222        PhysicsObject ammus1 = Ase.Shoot();
223
224        if (ammus1 != null)
225        {
226            ammus1.MaximumLifetime = TimeSpan.FromSeconds(7.00);
227
228        }
229    }
230
231
232
233
234
235
236}
Note: See TracBrowser for help on using the repository browser.