source: 2010/27/viaawipi/samsh cubes/Peli.cs @ 1224

Revision 1224, 6.6 KB checked in by paaaanro, 11 years ago (diff)

valmiimpi

Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5using Jypeli.Effects;
6
7
8/// <summary>
9/// tehnyt ville piesala
10/// </summary>
11class Tasohyppely : PhysicsGame
12{   //
13    const int rulev = 50;
14    const int rukor = 50;
15    const double nopeus = 200;
16    const double hyppyVoima = 3000;
17
18    IntMeter isku1;
19    IntMeter isku2;
20
21    PlatformCharacter pelaaja1;
22    PlatformCharacter pelaaja2;
23
24    PhysicsObject reuna1;
25    PhysicsObject reuna2;
26    PhysicsObject reuna3;
27    PhysicsObject reuna4;
28
29
30    protected override void Begin()
31    {
32
33        // Zoomataan lähemmäksi
34
35        seuraavaKentta();
36        Camera.StayInLevel = true;
37        Camera.ZoomToLevel();
38    }
39
40    void seuraavaKentta()
41    {
42
43        ClearAll();
44        MediaPlayer.Play("sm26");
45
46        isku1 = new IntMeter(20);
47        isku2 = new IntMeter(20);
48
49
50
51        // Asetetaan painovoima
52        Gravity = new Vector(0, -1000);
53
54        LuoLas1();
55        LuoLas2();
56
57        luoKentta();
58        lisaaNappaimet();
59    }
60
61    void luoKentta()
62    {
63        TileMap ruudut = TileMap.FromFile("kennta.txt");
64        ruudut['#'] = Luotaso;
65        ruudut.Insert(rulev, rukor);
66
67        reuna1 = Level.CreateLeftBorder();
68        reuna2 = Level.CreateRightBorder();
69        reuna3 = Level.CreateTopBorder();
70        reuna4 = Level.CreateBottomBorder();
71
72        reuna1.Tag = "reuna";
73        reuna2.Tag = "reuna";
74        reuna3.Tag = "reuna";
75        reuna4.Tag = "reuna";
76
77
78        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
79        Level.Background.Image = LoadImage("aa");
80       
81
82
83        lisaaPelaajat();
84       
85        Timer ajastin = new Timer();
86        ajastin.Interval = 10;
87        ajastin.Trigger += HeitaKranaatti;
88        Add(ajastin);
89        ajastin.Start();
90
91    }
92
93    PhysicsObject Luotaso()
94    {
95        PhysicsObject taso = PhysicsObject.CreateStaticObject(50.0, 50.0,Shapes.Rectangle,CollisionShapeQuality.Best);
96        taso.Image = LoadImage("seina");
97        return taso;
98    }
99
100    void lisaaPelaajat()
101    {
102        pelaaja1 = new PlatformCharacter(40, 40);
103        pelaaja1.Mass = 4.0;
104        pelaaja1.Image = LoadImage("aa");
105        pelaaja1.X = 100;
106        pelaaja1.Y = 120;
107        pelaaja1.CanRotate = true;
108
109        pelaaja2 = new PlatformCharacter(40, 40);
110        pelaaja2.Mass = 4.0;
111        pelaaja2.Image = LoadImage("ss");
112        pelaaja2.X = -100;
113        pelaaja2.Y = 120;
114        pelaaja2.CanRotate = true;
115       
116
117        AddCollisionHandler(pelaaja1, kasitteletormays);
118        AddCollisionHandler(pelaaja2, kasitteletormays);
119
120
121        Add(pelaaja1);
122        Add(pelaaja2);
123    }
124
125    void lisaaNappaimet()
126    {
127        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
128        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
129
130        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
131        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
132        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
133        Keyboard.Listen(Key.Down, ButtonState.Pressed, iske1, "hit");
134
135
136
137
138        Keyboard.Listen(Key.A, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus);
139        Keyboard.Listen(Key.D, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja2, nopeus);
140        Keyboard.Listen(Key.W, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja2, hyppyVoima);
141        Keyboard.Listen(Key.S, ButtonState.Pressed, iske2, "hit");
142       
143        Keyboard.Listen(Key.Enter, ButtonState.Pressed, seuraavaKentta , "restart");
144    }
145
146    void liikuta(PlatformCharacter hahmo, double nopeus)
147    {
148        hahmo.Walk(nopeus);
149    }
150
151    void hyppaa(PlatformCharacter hahmo, double voima)
152    {
153        hahmo.Jump(voima);
154        PlaySound("power beam");
155       
156
157    }
158
159    void kasitteletormays(PhysicsObject pelaaja, PhysicsObject kohde)
160    {
161        if (kohde.Tag.ToString() == "reuna")
162        {
163            pelaaja.Destroy();
164            if (pelaaja.Equals(pelaaja1))
165            {
166                MessageDisplay.Add("turkoosi voitti"); 
167                MessageDisplay.Add("enter = uusi peli");
168                return;
169            }
170            MessageDisplay.Add("punainen voitti"); 
171            MessageDisplay.Add("enter = uusi peli");
172        }
173    }
174
175    void iske1()
176    {
177        Vector aba = new Vector(pelaaja2.X - pelaaja1.X, pelaaja2.Y - pelaaja1.Y);
178        if (aba.Magnitude<75)
179        {
180            isku1.Value +=RandomGen.NextInt(5,10);
181            pelaaja2.Hit(new Vector(aba.X * isku1, aba.Y * isku1));
182            PlaySound("plzbmfire");
183        }
184
185    }
186    void iske2()
187    {
188
189        Vector aba = new Vector(pelaaja1.X - pelaaja2.X, pelaaja1.Y - pelaaja2.Y);
190        if (aba.Magnitude < 75)
191        {
192            isku2.Value += RandomGen.NextInt(5, 10);
193            pelaaja1.Hit(new Vector(aba.X * isku2, aba.Y * isku2));
194            PlaySound("icebfire");
195        }
196
197    }
198    void HeitaKranaatti(Timer sender)
199    {
200        for (int i = 0; i < RandomGen.NextInt(1, 100); i++)
201        {
202
203
204            Grenade kranaatti = new Grenade(RandomGen.NextDouble(0.5,10));
205            kranaatti.X = RandomGen.NextDouble(Level.Left, Level.Right);
206            kranaatti.Y = Level.Top - 10;
207            kranaatti.FuseTime = TimeSpan.FromSeconds(RandomGen.NextDouble(0,3.0));
208            kranaatti.ExplosionForce = 2500;
209            kranaatti.ExplosionRadius = 50;
210            kranaatti.ExplosionSpeed = 100;
211            kranaatti.Image = LoadImage("norsu");
212
213            Add(kranaatti);
214            Vector heittoVoima = Vector.FromLengthAndAngle(RandomGen.NextDouble(5000, 10000), Angle.Degrees(RandomGen.NextDouble(180, 360)));
215            kranaatti.Hit(heittoVoima);
216        }
217
218
219    }
220
221    void LuoLas2()
222    {
223        isku1 = new IntMeter(0);
224
225        Label pisteNaytto = new Label();
226        pisteNaytto.X = Screen.Left + 100;
227        pisteNaytto.Y = Screen.Top - 100;
228        pisteNaytto.TextColor = Color.Cyan;
229
230        pisteNaytto .BindTo(isku1);
231        Add(pisteNaytto);
232    }
233    void LuoLas1()
234    {
235        isku2 = new IntMeter(0);
236
237        Label pisteNaytto = new Label();
238        pisteNaytto.X = Screen.Right - 100;
239        pisteNaytto.Y = Screen.Top - 100;
240        pisteNaytto.TextColor = Color.Red;
241
242        pisteNaytto.BindTo(isku2);
243        Add(pisteNaytto);
244    }
245
246   
247
248}
Note: See TracBrowser for help on using the repository browser.