source: 2012/23/AtteH/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1.cs @ 2887

Revision 2887, 7.9 KB checked in by anlakane, 11 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Tasohyppelypeli1 : PhysicsGame
10{
11    const double nopeus = 220;
12    const double hyppyNopeus = 1000;
13    const int RUUDUN_KOKO = 50;
14
15    PlatformCharacter pelaaja1;
16    Vector pelaaja1paikka;
17    bool onkoPeliFullS = false;
18    string mikaTaso = "Kenttä 1";
19
20    Image pelaajanKuva = LoadImage("Hahmo");
21    Image tykkiKuva = LoadImage("Tukki");
22    Image esteKuva = LoadImage("Este");
23    Image textuuriKuva = LoadImage("Textuuri");
24    Image mamaKuva = LoadImage("Mama");
25    SoundEffect arghAani = LoadSoundEffect("argh");
26    Image paikallaanVasemmalle = LoadImage("HahmoReverse");
27    Image paikalleOikealle = LoadImage("Hahmo");
28    Image kavelyVasemmalle = LoadImage("HahmoReverse");
29    Image kavelyOikealle = LoadImage("Hahmo");
30
31    public override void Begin()
32    {
33        Gravity = new Vector(0, -1850);
34        SetWindowSize(1024, 768, false);
35       
36
37
38        MultiSelectWindow valikko = new MultiSelectWindow("Tervetuloa peliin",
39        "Kenttä 1","Kenttä 2", "Lopeta");
40        valikko.ItemSelected += PainettiinValikonNappia;
41        Add(valikko);
42        valikko.DefaultCancel = 3;
43        valikko.Color = Color.DarkRed;
44
45        MediaPlayer.Play("8bit Dungeon Level");
46
47        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
48        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
49
50
51    }
52
53    void Fullscreen()
54    {
55        if (onkoPeliFullS) // jos on koko ruutu
56        {
57            SetWindowSize(1024, 768, false); onkoPeliFullS = false;
58            return;
59        }
60       
61       
62        //SetWindowSize((int)Screen.Width, (int)Screen.Height, true); onkoPeliFullS = true;
63        int w = Microsoft.Xna.Framework.Graphics.GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width;
64        int h = Microsoft.Xna.Framework.Graphics.GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Height;
65        SetWindowSize(w, h, true); onkoPeliFullS = true;
66        MessageDisplay.Add(Screen.Width + ", " + Screen.Height);
67    }
68
69    void luoKentta()
70    {
71        TileMap kentta = TileMap.FromLevelAsset(mikaTaso);
72        kentta.SetTileMethod('#', lisaaTaso);
73        kentta.SetTileMethod('N', lisaaPelaaja);
74        kentta.SetTileMethod('E', lisaaPiikki);
75        kentta.SetTileMethod('R', lisaaEste);
76        kentta.SetTileMethod('D', lisaaApu);
77        kentta.SetTileMethod('S', lisaaMama);
78        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
79        Level.CreateBorders();
80        Level.Background.CreateGradient(Color.White, Color.Green);
81    }
82
83    void lisaaTaso(Vector paikka, double leveys, double korkeus)
84    {
85        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
86        taso.Position = paikka;
87        taso.Image = textuuriKuva;
88        Add(taso);
89    }
90
91    void lisaaEste(Vector paikka, double leveys, double korkeus)
92    {
93        PhysicsObject este = PhysicsObject.CreateStaticObject(korkeus, leveys);
94        este.Position = paikka;
95        este.Tag = "Vaara";
96        este.Image = esteKuva;
97        este.Shape = Shape.Triangle;
98        Add(este);
99    }
100    void PainettiinValikonNappia(int valinta)
101    {
102        switch (valinta)
103        {
104            case 0:
105                mikaTaso = "Kenttä 1";
106                luoKentta();
107                lisaaNappaimet();
108                Camera.Follow(pelaaja1);
109                Camera.ZoomFactor = 1.5;
110                Camera.StayInLevel = true;
111                break;
112            case 1:
113                mikaTaso = "Kenttä 2";
114                luoKentta();
115                lisaaNappaimet();
116                Camera.Follow(pelaaja1);
117                Camera.ZoomFactor = 1.5;
118                Camera.StayInLevel = true;
119                break;
120            case 2:
121                Exit();
122                break;
123        }
124    }
125
126    void lisaaPelaaja(Vector paikka, double leveys, double korkeus)
127    {
128        pelaaja1 = new PlatformCharacter(leveys, korkeus);
129        pelaaja1.Position = paikka;
130        pelaaja1paikka = paikka;
131        pelaaja1.Mass = 4.0;
132        pelaaja1.Image = pelaajanKuva;
133        AddCollisionHandler(pelaaja1, kasittelePelaajanTormays);
134        Add(pelaaja1);
135        pelaaja1.Tag = "Tyyppi";
136
137
138    }
139    void lisaaPiikki(Vector paikka, double leveys, double korkeus)
140    {
141        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
142        piikki.Position = paikka;
143        piikki.Shape = Shape.Triangle;
144        piikki.Color = Color.LightGray;
145        piikki.Tag = "Vaara";
146        Add(piikki);
147    }
148    void lisaaMama(Vector paikka, double leveys, double korkeus)
149    {
150        PhysicsObject mama = PhysicsObject.CreateStaticObject(leveys, korkeus);
151        mama.Image = mamaKuva;
152        mama.Position = paikka;
153        Add(mama);
154        mama.Tag = "Voitto";
155    }
156    void lisaaApu(Vector paikka, double leveys, double korkeus)
157    {
158        PhysicsObject apu = new PhysicsObject(50, 50);
159        apu.Shape = Shape.Pentagon;
160        apu.Color = Color.DarkBrown;
161        Add(apu);
162        apu.Position = paikka;
163
164    }
165
166
167
168    void lisaaNappaimet()
169    {
170        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
171        Keyboard.Listen(Key.F11, ButtonState.Pressed, Fullscreen, null);//Säätää fullscreeniin
172
173        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
174        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
175        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
176
177        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
178
179        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
180        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
181        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
182
183        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
184    }
185
186    void liikuta(PlatformCharacter hahmo, double nopeus)
187    {
188        hahmo.Walk(nopeus);
189        hahmo.LeftIdleAnimation = new Animation(paikallaanVasemmalle);
190        hahmo.RightIdleAnimation = new Animation(paikalleOikealle);
191
192        hahmo.LeftWalkingAnimation = new Animation(kavelyVasemmalle);
193        hahmo.RightWalkingAnimation = new Animation(kavelyOikealle);
194    }
195
196    void hyppaa(PlatformCharacter hahmo, double nopeus)
197    {
198        hahmo.Jump(nopeus);
199    }
200
201
202    void kasittelePelaajanTormays(PhysicsObject hahmo, PhysicsObject kohde)
203    {
204        if (kohde.Tag.ToString() == "Vaara")
205        {
206            arghAani.Play();
207            Label umad = new Label();
208
209            umad.TextColor = Color.Crimson;
210            umad.Font = Font.DefaultLarge;
211            umad.Text = "Kuolit!";
212            umad.MaximumLifetime = new TimeSpan(0, 0, 1);
213            hahmo.Position = pelaaja1paikka;
214
215            umad.TextColor = Color.Pink;
216            umad.Text = "Hävisit <3";
217            hahmo.Destroy();
218
219            Add(umad);
220
221        }
222        if (kohde.Tag.ToString() == "Voitto")
223        {
224            Timer.SingleShot(2.0, Pox);
225            Widget Win = new Widget(LoadImage("Voittokuva"));
226            Add(Win);
227            ClearControls();
228            Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
229            Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
230        }
231
232    }
233    void Pox()
234    {
235        Explosion pox = new Explosion(500);
236        Add(pox);
237        pox.Position = pelaaja1.Position;
238        pelaaja1.Destroy();
239
240    }
241}
Note: See TracBrowser for help on using the repository browser.