source: 2010/24/olpesasa/Linnapako/Peli.cs @ 905

Revision 905, 3.8 KB checked in by anlakane, 10 years ago (diff)

Tein ruutukentän, sain yhden piikkipallon toimimaan.

Line 
1using System;
2using Jypeli;
3using Jypeli.ScreenObjects;
4using Jypeli.Assets;
5
6public class Peli : PhysicsGame
7{
8    PhysicsObject seina;
9    PhysicsObject pelaaja;
10    PhysicsObject piikki;
11    PhysicsObject piikkipallo;
12    const int ruudunLeveys = 50;
13    const int ruudunKorkeus = 50;
14
15    protected override void Begin()
16    {
17        //TODO: Alusta peli tässä
18        Ohjaimet ();
19        LuoKentta();
20    }
21    void Ohjaimet()
22    {
23        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-10, 0));
24        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, new Vector(10, 0));
25        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 10));
26        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -10));
27        Keyboard.Listen(Key.Left, ButtonState.Released, PysaytaPelaaja, null, new Vector(0, 0));
28        Keyboard.Listen(Key.Right, ButtonState.Released, PysaytaPelaaja, null, new Vector(0, 0));
29        Keyboard.Listen(Key.Up, ButtonState.Released, PysaytaPelaaja, null, new Vector(0, 0));
30        Keyboard.Listen(Key.Down, ButtonState.Released, PysaytaPelaaja, null, new Vector(0, 0));
31        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
32        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
33    }
34
35    void LiikutaPelaajaa(Vector vektori)
36    {
37        pelaaja.Hit(vektori);
38    }
39    void PysaytaPelaaja(Vector vektori)
40    {
41        pelaaja.Stop(); 
42    }
43
44    PhysicsObject LuoPelaaja()
45    {
46        pelaaja = new PhysicsObject(40.0, 40.0);
47        pelaaja.Shape = Shapes.Circle;
48        pelaaja.Image = LoadImage("pelihahmo1");
49        AddCollisionHandler(pelaaja, PelaajanTormays);
50        return pelaaja;
51    }
52    PhysicsObject LuoPiikkipallo()
53    {
54        piikkipallo = new PhysicsObject(40.0, 40.0);
55        piikkipallo.Shape = Shapes.Circle;
56        piikkipallo.Image = LoadImage("piikkipallo");
57        Vector impulssi = new Vector(500.0, 0.0);
58        piikkipallo.Hit(impulssi);
59        piikkipallo.KineticFriction = 0;
60        piikkipallo.CanRotate = false;
61        piikkipallo.Restitution = 1;
62        piikkipallo.IgnoresCollisionResponse = true;
63        AddCollisionHandler(piikkipallo, PallonTormays);
64        return piikkipallo;
65    }
66    PhysicsObject LuoSeina()
67    {
68        seina = PhysicsObject.CreateStaticObject(50.0, 50.0);
69        seina.Shape = Shapes.Rectangle;
70        seina.Image = LoadImage("seina1");
71        seina.Tag = "seina";
72        return seina;
73    }
74    void LuoPiikki(Double x, Double y)
75    {
76        piikki = PhysicsObject.CreateStaticObject(50.0, 50.0);
77        piikki.Shape = Shapes.Rectangle;
78        piikki.Image = LoadImage("piikkiseina1");
79        piikki.X = x;
80        piikki.Y = y;
81        Add(piikki);
82    }
83
84    void LuoKentta()
85    {
86        TileMap ruudut = TileMap.FromFile("kentta1.txt");
87        LuoPiikki(100.0, -150.0);
88        ruudut['v'] = LuoPiikkipallo;
89        ruudut['x'] = LuoSeina;
90        ruudut['1'] = LuoPelaaja;
91        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
92        Camera.ZoomToLevel();
93    }
94    void PelaajanTormays(PhysicsObject pelaaja, PhysicsObject kohde)
95    {
96        if (kohde == piikki)
97        {
98            AloitaAlusta();
99        }
100        else if (kohde == piikkipallo)
101        {
102            AloitaAlusta();
103        }
104    }
105    void PallonTormays(PhysicsObject piikkipallo, PhysicsObject kohde)
106    {
107        if (kohde.Tag.ToString() == "seina")
108        {
109            piikkipallo.Velocity = new Vector(-piikkipallo.Velocity.X, piikkipallo.Velocity.Y);
110        }
111    }
112    void AloitaAlusta()
113    {
114        ClearAll();
115        Ohjaimet();
116        LuoKentta();
117    }
118
119
120}
Note: See TracBrowser for help on using the repository browser.