source: 2016/30/RoniM/shipwreck_its_just_the_beginning/shipwreck_1_itsjustbegun/shipwreck_1_itsjustbegun/shipwreck_1_itsjustbegun.cs @ 8305

Revision 8305, 10.8 KB checked in by tesatapa, 3 years ago (diff)

uusi peli

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9class Pelaaja : PhysicsObject
10{
11    private IntMeter pisteLaskuri = new IntMeter(0);
12    public IntMeter PisteLaskuri { get { return pisteLaskuri; } }
13
14    public AssaultRifle Ase;
15
16    public Pelaaja(double leveys, double korkeus)
17        : base(leveys, korkeus)
18    {
19    }
20}
21
22public class shipwreck_1_itsjustbegun: PhysicsGame
23{
24
25    Image kpelaaja1 = LoadImage("kpelaaja1");
26    Image Points = LoadImage("Points");
27    Image vihu5 = LoadImage("vihu");
28    Image zzombi = LoadImage("zzombi");
29
30    Pelaaja pelaaja1;
31 
32    //IntMeter pisteLaskuri;
33    const int RUUDUN_KOKO = 30;
34    public int Elamat { get; set; }
35    public bool OnHidas { get; set; }
36    public int KenganNumero { get; set; }
37    public int Rahat { get; set; }
38    public Vector RespausKoordinaatit { get; set; }
39    const double NOPEUS = 800;
40    const double pyoriminenNopeus = 4.0;
41
42
43
44    public override void Begin()
45    {
46        LuoKentta();
47        Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, null, pelaaja1, new Vector(-10, 0));
48        Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, null, pelaaja1, new Vector(10, 0));
49        Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, null, pelaaja1, new Vector(0, 10));
50        Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, null, pelaaja1, new Vector(0, -10));
51        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, null, pelaaja1);
52
53        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, pelaaja1, new Vector(-10, 0));
54        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, pelaaja1, new Vector(10, 0));
55        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, pelaaja1, new Vector(0, 10));
56        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, null, pelaaja1, new Vector(0, -10));
57        Keyboard.Listen(Key.RightControl, ButtonState.Down, AmmuAseella, null, pelaaja1);
58
59
60        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, LiikutaPelaajaa, null, pelaaja1, new Vector(-10, 0));
61        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, LiikutaPelaajaa, null, pelaaja1, new Vector(10, 0));
62        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, LiikutaPelaajaa, null, pelaaja1, new Vector(0, 10));
63        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, LiikutaPelaajaa, null, pelaaja1, new Vector(0, -10));
64        ControllerOne.Listen(Button.A, ButtonState.Down, AmmuAseella, null, pelaaja1);
65
66        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
67        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
68
69
70
71    }
72    class Rakennus : PhysicsObject
73    {
74        private IntMeter elamaLaskuri = new IntMeter(50, 0, 50);
75        public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
76
77        public Rakennus(double leveys, double korkeus)
78            : base(leveys, korkeus)
79        {
80            elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
81        }
82
83    }
84    Pelaaja Luopelaaja(Vector paikka, double leveys, double korkeus, Vector paikka2)
85    {
86        Pelaaja pelaaja = new Pelaaja(0.1, 0.3);
87        pelaaja.Position = paikka;
88        pelaaja.LinearDamping = 0.9;
89        Elamat = 3;
90        OnHidas = false;
91        KenganNumero = 42;
92        Rahat = 1000;
93        RespausKoordinaatit = Vector.Zero;
94        Vector pelaajanSuunta = Vector.FromLengthAndAngle(pyoriminenNopeus, pelaaja.Angle);
95        pelaaja.Push(pelaajanSuunta);
96        pelaaja.CanRotate = false;
97        pelaaja.Tag = "pelaaja";
98        AddCollisionHandler(pelaaja, "vihollinen", pelaajaosui);
99     
100
101        LuoPistelaskuri(pelaaja, paikka2);
102
103        pelaaja.Ase = new AssaultRifle(0, 0);
104        pelaaja.Ase.ProjectileCollision = AmmusOsui;
105        pelaaja.Ase.Power.DefaultValue = 3;
106        pelaaja.Ase.Ammo.Value = 20;
107        pelaaja.Ase.FireRate = 3;
108        pelaaja.Add(pelaaja.Ase);
109
110        Add(pelaaja);
111        return pelaaja;
112
113
114    }
115
116    void AmmuAseella(Pelaaja pelaaja)
117    {
118        if (pelaaja.IsDestroyed) return;
119
120        pelaaja.Ase.AbsoluteAngle = pelaaja.Velocity.Angle;
121        PhysicsObject ammus = pelaaja.Ase.Shoot();
122
123        if (ammus != null)
124        {
125            ammus.Size *= 0.009;
126            //ammus.Image = ...
127            ammus.MaximumLifetime = TimeSpan.FromSeconds(5.0);
128        }
129    }
130
131    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
132    {
133        ammus.Destroy();
134
135        if (kohde.Tag.Equals("zombi") || kohde.Tag.Equals("monster"))
136        {
137            kohde.Destroy();
138            ((Pelaaja)pelaaja1).PisteLaskuri.Value += 5;
139
140        }
141    }
142
143    void LiikutaPelaajaa(PhysicsObject pelaaja, Vector vektori)
144    {
145        pelaaja.Push(vektori);
146    }
147
148
149    void LuoKentta()
150    {
151        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("Untitled");
152        ruudut.SetTileMethod(Color.FromHexCode("7800DB"), LuoPelaaja1);
153
154        // ruudut.SetTileMethod(Color.Yellow, LuoTahti);
155        //ruudut.SetTileMethod(Color.FromHexCode("4CFF00"), LuoSeina);
156
157        //ruudut.SetTileMethod(Color.FromHexCode("4CFF00"), LuoSeina);
158      //  ruudut.SetTileMethod(Color.FromHexCode("4CFF00"), LuoSeina);
159
160        ruudut.SetTileMethod(Color.FromHexCode("4CFF00"), LuoSeina);
161        ruudut.SetTileMethod(Color.FromHexCode("FA00FF"), LuoSyotava);
162        ruudut.SetTileMethod(Color.FromHexCode("AD77FF"), luomonster);
163        ruudut.SetTileMethod(Color.FromHexCode("3AFFC0"), luozombi);
164        ruudut.SetTileMethod(Color.FromHexCode("FFA191"), alempirakennus);
165        ruudut.SetTileMethod(Color.FromHexCode("FFF60C"), Paarakennus);
166        ruudut.Execute(30, 30);
167     
168    }
169    void LuoPelaaja1(Vector paikka, double leveys, double korkeus)
170    {
171        pelaaja1 = Luopelaaja(paikka, leveys, korkeus, new Vector(Screen.Left + 400, Screen.Top - 500));
172        pelaaja1.Image = kpelaaja1;
173        Camera.Follow(pelaaja1);
174        Camera.ZoomFactor = 100.2;
175        Camera.StayInLevel = true;
176    }
177
178 
179    void LuoSeina(Vector paikka, double leveys, double korkeus)
180    {
181        GameObject seina = new GameObject(30, 30);
182
183        seina.Position = paikka;
184       
185        seina.Color = Color.Black;
186        seina.Tag = "seina";
187
188
189        Add(seina,-1);
190    }
191    void LuoSyotava(Vector paikka, double leveys, double korkeus)
192    {
193        Timer aikaLaskuri = new Timer();
194        aikaLaskuri.Interval = 10;
195        aikaLaskuri.Timeout += delegate
196        {
197            const int RUUDUN_KOKO = 40;
198
199            PhysicsObject syotava = new PhysicsObject(RUUDUN_KOKO / 3, RUUDUN_KOKO / 3);
200
201            syotava.Position = paikka;
202            syotava.Tag = "vihollinen";
203            syotava.Image = Points;
204
205
206            syotava.Color = Color.Blue;
207            LabyrinthWandererBrain labyrinttiAivot = new LabyrinthWandererBrain(RUUDUN_KOKO);
208            labyrinttiAivot.Speed = 200.0;
209            labyrinttiAivot.LabyrinthWallTag = "seina";
210            syotava.LifetimeLeft = TimeSpan.FromSeconds(100.0);
211
212            syotava.Brain = labyrinttiAivot;
213            Add(syotava);
214        };
215        aikaLaskuri.Start();
216    }
217
218
219    void pelaajaosui(PhysicsObject pelaaja1, PhysicsObject kohde)
220    {
221        if (kohde.Tag.Equals("vihollinen"))
222        {
223            kohde.Destroy();
224
225            ((Pelaaja)pelaaja1).PisteLaskuri.Value += 10;
226
227        }
228    }
229    Label LuoPistelaskuri(Pelaaja pelaaja, Vector paikka)
230    {
231        Label pisteNaytto = new Label(pelaaja.PisteLaskuri);
232        pisteNaytto.TextColor = Color.Yellow;
233        pisteNaytto.Color = Color.Black;
234        pisteNaytto.Title = "Pisteet";
235        pisteNaytto.Position = paikka;
236        Add(pisteNaytto);
237        return pisteNaytto;
238    }
239
240
241    //MessageDisplay.Add("Pelaaja 1 hävisi pelin.");
242
243    void luomonster(Vector paikka, double leveys, double korkeus)
244    {
245        Timer aikaLaskuri = new Timer();
246        aikaLaskuri.Interval = 7;
247        aikaLaskuri.Timeout += delegate
248        {
249            PhysicsObject monster = new PhysicsObject(RUUDUN_KOKO / 3, RUUDUN_KOKO / 3);
250
251            monster.Position = paikka;
252            monster.Tag = "monster";
253            monster.Image = vihu5;
254            monster.Color = Color.Red;
255            LabyrinthWandererBrain labyrinttiAivot = new LabyrinthWandererBrain(RUUDUN_KOKO);
256            labyrinttiAivot.Speed = 150.0;
257            monster.LifetimeLeft = TimeSpan.FromSeconds(20.0);
258            AddCollisionHandler(monster, "pelaaja", pelaajaosui2);
259            labyrinttiAivot.LabyrinthWallTag = "seina";
260            monster.Brain = labyrinttiAivot;
261            Add(monster);
262        };
263        aikaLaskuri.Start();
264        //const int RUUDUN_KOKO = 40;
265    }
266    void pelaajaosui2(PhysicsObject monster, PhysicsObject kohde)
267    {
268        if (kohde.Tag.Equals("pelaaja"))
269        {
270            kohde.Destroy();
271
272
273            ((Pelaaja)kohde).PisteLaskuri.Value -= 1 / 100;
274
275        }
276    }
277    void luozombi(Vector paikka, double leveys, double korkeus)
278    {
279        Timer aikaLaskuri = new Timer();
280        aikaLaskuri.Interval = 40;
281        aikaLaskuri.Timeout += delegate
282        {
283            PhysicsObject zombi = new PhysicsObject(17, 17);
284
285            zombi.Position = paikka;
286            zombi.Tag = "zombi";
287
288
289
290            LabyrinthWandererBrain labyrinttiAivot = new LabyrinthWandererBrain(RUUDUN_KOKO);
291            labyrinttiAivot.Speed = 70.0;
292            zombi.Image = zzombi;
293            zombi.LifetimeLeft = TimeSpan.FromSeconds(80.0);
294            AddCollisionHandler(zombi, "pelaaja", pelaajaosui2);
295            labyrinttiAivot.LabyrinthWallTag = "seina";
296            zombi.Brain = labyrinttiAivot;
297            Add(zombi);
298        };
299        aikaLaskuri.Start();
300
301
302    }
303
304
305    void alempirakennus(Vector paikka, double leveys, double korkeus)
306    {
307        Rakennus rakennus = new Rakennus(leveys, korkeus);
308        rakennus.Position = paikka;
309        rakennus.MakeStatic();
310        rakennus.Color = Color.Brown;
311        rakennus.Tag = "rakennus";
312        Add(rakennus);
313
314
315
316    }
317
318    void luovihu(Vector paikka, double leveys, double korkeus)
319    {
320        PhysicsObject vihu = new PhysicsObject(RUUDUN_KOKO / 3, RUUDUN_KOKO / 3);
321
322        vihu.Position = paikka;
323        vihu.Tag = "vihu";
324    }
325
326    void Paarakennus(Vector paikka, double leveys, double korkeus)
327    {
328        PhysicsObject rakennus1 = new PhysicsObject(leveys, korkeus);
329        rakennus1.Position = paikka;
330        rakennus1.MakeStatic();
331        rakennus1.Color = Color.Yellow;
332        rakennus1.Tag = "rakennus1";
333        Add(rakennus1);
334
335    }
336}
Note: See TracBrowser for help on using the repository browser.