source: 2010/30/mikmatla/NinjaPeli/Peli.cs @ 1410

Revision 1410, 5.4 KB checked in by mikmatla, 11 years ago (diff)
Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5
6
7class Tasohyppely : PhysicsGame
8{
9    const double nopeus = 200;
10    const double hyppyVoima = 4000;
11
12    const int ruudunLeveys = 30;
13    const int ruudunKorkeus = 40;
14
15    PlatformCharacter pelaaja1;
16    PlatformCharacter pelaaja2;
17
18    Image paikallaanVasemmalle;
19    Image paikallaanOikealle = LoadImage("Pelaaja");
20
21    Image[] kavelyVasemmalle;
22    Image[] kavelyOikealle = LoadImages("Pelaaja Juoksu1", "Pelaaja Juoksu2", "Pelaaja Juoksu3", "Pelaaja Juoksu4");
23
24    protected override void Begin()
25    {
26        Gravity = new Vector(0, -1200);
27
28        paikallaanVasemmalle = Image.Mirror(paikallaanOikealle);
29        kavelyVasemmalle = Image.Mirror(kavelyOikealle);
30
31        luoKentta();
32        lisaaNappaimet();
33
34        Camera.ZoomFactor = 0.0;
35        Camera.StayInLevel = true;
36
37    }
38
39    void luoKentta()
40    {
41        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
42
43        lisaaPelaaja1();
44        lisaaPelaaja2();
45
46        TileMap ruudut = TileMap.FromFile("kentta1.txt");
47        ruudut['='] = LuoPalikka;
48        ruudut['1'] = LuoPelaaja1;
49        ruudut['E'] = LuoExit;
50        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
51
52    }
53
54    PhysicsObject LuoExit()
55    {
56        PhysicsObject exit = PhysicsObject.CreateStaticObject(20.0, 100.0);
57        exit.Shape = Shapes.Rectangle;
58        exit.Restitution = 1.0;
59       
60        Add(exit);
61
62        return exit;
63    }
64   
65    PhysicsObject LuoPelaaja1()
66    {
67        PhysicsObject palikka = pelaaja1;
68        return palikka;
69    }
70
71    PhysicsObject LuoPelaaja2()
72    {
73        PhysicsObject palikka = pelaaja2;
74        return palikka;
75    }
76
77    PhysicsObject LuoPalikka()
78    {
79        PhysicsObject palikka = PhysicsObject.CreateStaticObject(50.0, 50.0);
80        return palikka;
81    }
82
83    void lisaaTaso(double x, double y)
84    {
85        PhysicsObject taso = PhysicsObject.CreateStaticObject(100, 30);
86        taso.Color = Color.Green;
87        taso.X = x;
88        taso.Y = y;
89        taso.Tag = "taso";
90        Add(taso);
91    }
92
93    void lisaaPelaaja1()
94    {
95        pelaaja1 = new PlatformCharacter(30, 50);
96        pelaaja1.Mass = 4.0;
97        pelaaja1.Image = LoadImage("Pelaaja");
98        pelaaja1.X = 0;
99        pelaaja1.Y = Level.Bottom + 120;
100
101        Add(pelaaja1);
102
103        AssaultRifle pyssy = new AssaultRifle(0, 0);
104        pelaaja1.Weapon = pyssy;
105        pyssy.BulletCollision = Luoti1Osuu;
106       
107        pyssy.Angle += Angle.Degrees(7);
108
109        pelaaja1.LeftIdleAnimation = new Animation(paikallaanVasemmalle );
110        pelaaja1.RightIdleAnimation = new Animation(paikallaanOikealle);
111
112        pelaaja1.LeftWalkingAnimation = new Animation(kavelyVasemmalle);
113        pelaaja1.RightWalkingAnimation = new Animation(kavelyOikealle);
114
115    }
116
117    void lisaaPelaaja2()
118    {
119        pelaaja2 = new PlatformCharacter(30, 50);
120        pelaaja2.Mass = 4.0;
121        pelaaja2.Image = LoadImage("Pelaaja2");
122        pelaaja2.X = 0;
123        pelaaja2.Y = Level.Bottom + 120;
124
125        Add(pelaaja2);
126
127        AssaultRifle pyssy = new AssaultRifle(0, 0);
128        pelaaja2.Weapon = pyssy;
129        pyssy.BulletCollision = Luoti2Osuu;
130        pyssy.Angle += Angle.Degrees(7);
131
132        pelaaja2.LeftIdleAnimation = new Animation(paikallaanVasemmalle);
133        pelaaja2.RightIdleAnimation = new Animation(paikallaanOikealle);
134
135        pelaaja2.LeftWalkingAnimation = new Animation(kavelyVasemmalle);
136        pelaaja2.RightWalkingAnimation = new Animation(kavelyOikealle);
137
138    }
139
140
141    void lisaaNappaimet()
142    {
143        Keyboard.Listen(Key.Q, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
144        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
145
146        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
147        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
148        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
149        Keyboard.Listen(Key.RightControl, ButtonState.Down, pelaaja1.Weapon.Use, "Ammu");
150
151        Keyboard.Listen(Key.A, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus);
152        Keyboard.Listen(Key.D, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja2, nopeus);
153        Keyboard.Listen(Key.W, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja2, hyppyVoima);
154        Keyboard.Listen(Key.LeftControl, ButtonState.Down, pelaaja2.Weapon.Use, "Ammu");
155    }
156
157    void liikuta(PlatformCharacter hahmo, double nopeus)
158    {
159        hahmo.Walk(nopeus);
160    }
161
162    void hyppaa(PlatformCharacter hahmo, double voima)
163    {
164        hahmo.Jump(voima);
165    }
166
167    void Luoti1Osuu(PhysicsObject luoti, PhysicsObject toinen)
168    {
169        if (toinen != pelaaja1)
170        {
171            luoti.Destroy();
172            Explosion rajahdys = new Explosion(40);
173            rajahdys.Position = luoti.Position;
174            Add(rajahdys);
175        }
176
177    }
178    void Luoti2Osuu(PhysicsObject luoti, PhysicsObject toinen)
179    {
180        if (toinen != pelaaja2)
181        {
182            luoti.Destroy();
183            Explosion rajahdys = new Explosion(40);
184            rajahdys.Position = luoti.Position;
185            Add(rajahdys);
186        }
187
188    }
189}
Note: See TracBrowser for help on using the repository browser.