source: 2014/30/JouniP/Syonti/Syonti/Syonti/Syonti.cs @ 5563

Revision 5563, 4.3 KB checked in by jotapoti, 7 years ago (diff)

Pelaajahahmolla on kuva

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Syonti : PhysicsGame
10{
11    PhysicsObject pelaaja;
12
13    Vector nopeusOikealle   = new Vector( 200,    0);
14    Vector nopeusVasemmalle = new Vector(-200,    0);
15    Vector nopeusYlos       = new Vector(   0,  200);
16    Vector nopeusAlas       = new Vector(   0, -200);
17
18    //                                oletus, min, max
19    IntMeter pelaajanHealth = new IntMeter(10, 0, 10);
20
21    Image pelaajanKuva = LoadImage("pelaaja");
22
23    public override void Begin()
24    {
25        SetWindowSize(800, 600);
26        Level.Size = new Vector(800, 600);
27
28        LuoPelaaja();
29
30        // Tehdään muut pallot kenttään:
31        LuoUseitaPalloja(50, Color.Beige, "kerattava");
32
33        LuoUseitaPalloja(10, Color.Black, "pahis");
34
35
36        Label pisteNaytto = new Label();
37        pisteNaytto.X = Screen.Left + 100;
38        pisteNaytto.Y = Screen.Top - 100;
39        pisteNaytto.TextColor = Color.Black;
40        pisteNaytto.Color = Color.White;
41
42        pisteNaytto.BindTo(pelaajanHealth);
43        pisteNaytto.IntFormatString = "Elämää: {0:D1}";
44        Add(pisteNaytto);
45
46
47        Level.CreateBorders();
48        LisaaNappaimet();
49    }
50
51    void LisaaNappaimet()
52    {
53        // Poistumisnäppäin
54        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
55        // Helppinäppäin:
56        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
57
58        // Pelaajan nuolinäppäimet:
59        Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus, "Liiku oikealle", pelaaja, nopeusOikealle);
60        Keyboard.Listen(Key.Right, ButtonState.Released, AsetaNopeus, "Liiku oikealle", pelaaja, Vector.Zero);
61        Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, "Liiku vasemmalle", pelaaja, nopeusVasemmalle);
62        Keyboard.Listen(Key.Left, ButtonState.Released, AsetaNopeus, "Liiku vasemmalle", pelaaja, Vector.Zero);
63        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Liiku ylös", pelaaja, nopeusYlos);
64        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, "Liiku ylös", pelaaja, Vector.Zero);
65        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Liiku alas", pelaaja, nopeusAlas);
66        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, "Liiku alas", pelaaja, Vector.Zero);
67    }
68   
69    void AsetaNopeus(PhysicsObject hahmo, Vector nopeus)
70    {
71        hahmo.Velocity = nopeus;
72    }
73
74    void LuoPelaaja()
75    {
76        pelaaja = LuoPallo(0.0, 0.0, 30.0, Color.Red);
77        Add(pelaaja, 1);
78        pelaajanHealth.LowerLimit += PelaajaHaviaa;
79        pelaaja.Image = pelaajanKuva;
80
81        AddCollisionHandler(pelaaja, "kerattava", PelaajaOsuuKerattavaan);
82        AddCollisionHandler(pelaaja, "pahis", PelaajaOsuuPahikseen);
83    }
84
85    void PelaajaHaviaa()
86    {
87        Explosion rajahdys = new Explosion(200);
88        rajahdys.Position = pelaaja.Position;
89        Add(rajahdys);
90
91        pelaaja.Destroy();
92        MessageDisplay.Add("Hävisit!");
93    }
94
95    void PelaajaOsuuKerattavaan(PhysicsObject tormaaja, PhysicsObject kohde)
96    {
97        kohde.Destroy();
98        tormaaja.Size = tormaaja.Size + new Vector(10, 10);
99    }
100
101    void PelaajaOsuuPahikseen(PhysicsObject tormaaja, PhysicsObject kohde)
102    {
103        if (tormaaja.Width > 35)
104        {
105            tormaaja.Size = tormaaja.Size - new Vector(30, 30);
106        }
107        pelaajanHealth.Value -= 1;
108
109    }
110
111    void LuoUseitaPalloja(int maara, Color vari, string tagiteksti)
112    {
113        int i = 0;
114        while (i < maara)
115        {
116            double x = RandomGen.NextDouble(Level.Left, Level.Right);
117            double y = RandomGen.NextDouble(Level.Bottom, Level.Top);
118            PhysicsObject p = LuoPallo(x, y, 20.0, vari);
119            p.Tag = tagiteksti;
120            Add(p);
121            i++;
122        }
123    }
124
125    PhysicsObject LuoPallo(double x, double y, double sade, Color vari)
126    {
127        PhysicsObject pallura = new PhysicsObject(sade * 2.0, sade * 2.0, Shape.Circle);
128        pallura.Position = new Vector(x, y);
129        pallura.Color = vari;
130        pallura.Tag = "pelaaja";
131        return pallura;
132    }
133}
Note: See TracBrowser for help on using the repository browser.