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

Revision 1195, 5.7 KB checked in by paaaanro, 11 years ago (diff)

peli on ääniä ja hiano säätoä vaille valmis

Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5using Jypeli.Effects;
6
7
8class Tasohyppely : PhysicsGame
9{
10    const int rulev = 50;
11    const int rukor = 50;
12    const double nopeus = 200;
13    const double hyppyVoima = 3000;
14
15    IntMeter isku1;
16    IntMeter isku2;
17
18    PlatformCharacter pelaaja1;
19    PlatformCharacter pelaaja2;
20
21    PhysicsObject reuna1;
22    PhysicsObject reuna2;
23    PhysicsObject reuna3;
24    PhysicsObject reuna4;
25
26
27    protected override void Begin()
28    {
29        isku1 = new IntMeter(0);
30        isku2 = new IntMeter(0);
31
32        // Zoomataan lähemmäksi
33
34        seuraavaKentta();
35        Camera.StayInLevel = true;
36        Camera.ZoomToLevel();
37    }
38
39    void seuraavaKentta()
40    {
41        ClearAll();
42
43        isku1 = new IntMeter(20);
44        isku2 = new IntMeter(20);
45
46
47
48        // Asetetaan painovoima
49        Gravity = new Vector(0, -1000);
50
51        luoKentta();
52        lisaaNappaimet();
53    }
54
55    void luoKentta()
56    {
57        TileMap ruudut = TileMap.FromFile("kennta.txt");
58        ruudut['#'] = Luotaso;
59        ruudut.Insert(rulev, rukor);
60
61        reuna1 = Level.CreateLeftBorder();
62        reuna2 = Level.CreateRightBorder();
63        reuna3 = Level.CreateTopBorder();
64        reuna4 = Level.CreateBottomBorder();
65
66        reuna1.Tag = "reuna";
67        reuna2.Tag = "reuna";
68        reuna3.Tag = "reuna";
69        reuna4.Tag = "reuna";
70
71
72        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
73        Level.Background.Image = LoadImage("aa");
74
75
76        lisaaPelaajat();
77       
78        Timer ajastin = new Timer();
79        ajastin.Interval = 1;
80        ajastin.Trigger += HeitaKranaatti;
81        Add(ajastin);
82        ajastin.Start();
83
84    }
85
86    PhysicsObject Luotaso()
87    {
88        PhysicsObject taso = PhysicsObject.CreateStaticObject(50.0, 50.0);
89        taso.Image = LoadImage("seina");
90        return taso;
91    }
92
93    void lisaaPelaajat()
94    {
95        pelaaja1 = new PlatformCharacter(40, 40);
96        pelaaja1.Mass = 4.0;
97        pelaaja1.Image = LoadImage("aa");
98        pelaaja1.X = 100;
99        pelaaja1.Y = 120;
100
101        pelaaja2 = new PlatformCharacter(40, 40);
102        pelaaja2.Mass = 4.0;
103        pelaaja2.Image = LoadImage("ss");
104        pelaaja2.X = -100;
105        pelaaja2.Y = 120;
106
107        AddCollisionHandler(pelaaja1, kasitteletormays);
108        AddCollisionHandler(pelaaja2, kasitteletormays);
109
110
111        Add(pelaaja1);
112        Add(pelaaja2);
113    }
114
115    void lisaaNappaimet()
116    {
117        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
118        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
119
120        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
121        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
122        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
123        Keyboard.Listen(Key.Down, ButtonState.Pressed, iske1, "tiputa");
124
125
126
127
128        Keyboard.Listen(Key.A, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus);
129        Keyboard.Listen(Key.D, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja2, nopeus);
130        Keyboard.Listen(Key.W, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja2, hyppyVoima);
131        Keyboard.Listen(Key.S, ButtonState.Pressed, iske2, "tiputa");
132       
133        Keyboard.Listen(Key.Enter, ButtonState.Pressed, seuraavaKentta , "Hyppää");
134
135
136        lisaaGamePadNappaimet(ControllerOne);
137    }
138
139    void lisaaGamePadNappaimet(GamePad controller)
140    {
141        controller.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
142
143        controller.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
144        controller.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
145        controller.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
146    }
147
148    void liikuta(PlatformCharacter hahmo, double nopeus)
149    {
150        hahmo.Walk(nopeus);
151    }
152
153    void hyppaa(PlatformCharacter hahmo, double voima)
154    {
155        hahmo.Jump(voima);
156    }
157
158    void kasitteletormays(PhysicsObject pelaaja, PhysicsObject kohde)
159    {
160        if (kohde.Tag.ToString() == "reuna")
161        {
162            pelaaja.Destroy();
163            if (pelaaja.Equals(pelaaja1))
164            {
165                MessageDisplay.Add("turkoosi voitti"); 
166                MessageDisplay.Add("enter = uusi peli");
167                return;
168            }
169            MessageDisplay.Add("punainen voitti"); 
170            MessageDisplay.Add("enter = uusi peli");
171        }
172    }
173
174    void iske1()
175    {
176        Vector aba = new Vector(pelaaja2.X - pelaaja1.X, pelaaja2.Y - pelaaja1.Y);
177        if (aba.Magnitude<75)
178        {
179            isku1.Value +=RandomGen.NextInt(1,10);
180            pelaaja2.Hit(new Vector(aba.X * isku1, aba.Y * isku1));
181        }
182
183    }
184    void iske2()
185    {
186
187        Vector aba = new Vector(pelaaja1.X - pelaaja2.X, pelaaja1.Y - pelaaja2.Y);
188        if (aba.Magnitude < 75)
189        {
190            isku2.Value += RandomGen.NextInt(1, 10);
191            pelaaja1.Hit(new Vector(aba.X * isku2, aba.Y * isku2));
192        }
193
194    }
195    void HeitaKranaatti(Timer sender)
196    {
197     
198        Explosion rajahdys = new Explosion(RandomGen.NextDouble(10,50));
199        rajahdys.X = RandomGen.NextDouble(Level.Left, Level.Right);
200        rajahdys.Force = 500;
201        rajahdys.Y = RandomGen.NextDouble(Level.Left, Level.Right);
202        Add(rajahdys);
203
204    }
205
206   
207
208}
Note: See TracBrowser for help on using the repository browser.