source: 2015/27/JesseS/JouninTasoloikka/JouninTasoloikka/JouninTasoloikka/JouninTasoloikka.cs @ 6656

Revision 6656, 5.4 KB checked in by jesirkia, 5 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 JouninTasoloikka : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    Image pelaajanKuva = LoadImage("kukka");
18    Image tahtiKuva = LoadImage("tahti");
19    Image pahiksenKuva = LoadImage("pahatyyppi");
20
21    SoundEffect maaliAani = LoadSoundEffect("maali");
22    //SoundEffect kuolemisenAani = LoadSoundEffect("kuolema");
23    //SoundEffect hyppaamisenAani = LoadSoundEffect("hyppy");
24   
25
26
27    public override void Begin()
28    {
29       
30
31        //SetWindowSize(800, 600);
32        IsFullScreen = true;
33
34        AlkuValikko();
35
36       
37    }
38    void AlkuValikko()
39    {
40        ClearAll();
41        MultiSelectWindow valikko = new MultiSelectWindow("BruhJumps", "Play ofline", "Quit");
42        valikko.ItemSelected += PainettiinValikonNappia;
43        Add(valikko);
44    }
45    void AloitaPeli()
46    {
47        SmoothTextures = true;
48
49        Gravity = new Vector(0, -1000);
50
51        LuoKentta();
52        LisaaNappaimet();
53
54        Camera.Follow(pelaaja1);
55        Camera.ZoomFactor = 1.2;
56        Camera.StayInLevel = true;
57    }
58    void PainettiinValikonNappia(int valinta)
59    {
60        switch (valinta)
61        {
62            case 0:
63                AloitaPeli();
64                break;
65            case 1:
66                //ParhaatPisteet();
67                break;
68            case 2:
69                Exit();
70                break;
71        }
72    } 
73
74    void LuoKentta()
75    {
76        TileMap kentta = TileMap.FromLevelAsset("kentta1");
77        kentta.SetTileMethod('#', LisaaTaso);
78        kentta.SetTileMethod('*', LisaaTahti);
79        kentta.SetTileMethod('k', LisaaPelaaja);
80        kentta.SetTileMethod('V', LisaaVihollinen);
81        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
82        Level.CreateBorders();
83        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
84    }
85
86    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
87    {
88        PlatformCharacter vihu = new PlatformCharacter(leveys, korkeus);
89        vihu.Position = paikka;
90        vihu.Color = Color.Black;
91        vihu.Image = pahiksenKuva;
92        vihu.Tag = "pahis";
93        Add(vihu);
94
95        PlatformWandererBrain vaelteluaivot = new PlatformWandererBrain();
96        vaelteluaivot.FallsOffPlatforms = true;
97        vaelteluaivot.JumpSpeed = 400.0;
98        vaelteluaivot.Speed = 50.0;
99        vaelteluaivot.TriesToJump = true;
100       
101        vihu.Brain = vaelteluaivot;
102        vihu.Brain.Active = true;
103    }
104
105    void LisaaTaso(Vector paikka, double leveys, double korkeus)
106    {
107        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
108        taso.Position = paikka;
109        taso.Color = Color.Green;
110        Add(taso);
111    }
112
113    void LisaaTahti(Vector paikka, double leveys, double korkeus)
114    {
115        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
116        tahti.IgnoresCollisionResponse = true;
117        tahti.Position = paikka;
118        tahti.Image = tahtiKuva;
119        tahti.Tag = "tahti";
120        Add(tahti);
121    }
122
123    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
124    {
125        pelaaja1 = new PlatformCharacter(leveys, korkeus);
126        pelaaja1.Position = paikka;
127        pelaaja1.Mass = 4.0;
128        pelaaja1.Image = pelaajanKuva;
129        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
130        AddCollisionHandler(pelaaja1, "pahis", TormaaVihuun);
131        Add(pelaaja1);
132    }
133
134    void LisaaNappaimet()
135    {
136        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
137        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
138
139        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Moves left.", pelaaja1, -nopeus);
140        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Moves left.", pelaaja1, nopeus);
141        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Player jumps.", pelaaja1, hyppyNopeus);
142
143        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Exits the game.");
144
145        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
146        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
147        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
148
149        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
150    }
151
152    void Liikuta(PlatformCharacter hahmo, double nopeus)
153    {
154        hahmo.Walk(nopeus);
155    }
156
157    void Hyppaa(PlatformCharacter hahmo, double nopeus)
158    {
159        //hyppaamisenAani.Play();
160        hahmo.Jump(nopeus);
161    }
162
163    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
164    {
165        // TODO Vaihda ääniefekti sille, kun hahmo törmää kerättävään tähteen
166        maaliAani.Play();
167        MessageDisplay.Add("You found a star!");
168        tahti.Destroy();
169    }
170
171    void TormaaVihuun(PhysicsObject pelaaja, PhysicsObject vihu)
172    {
173        pelaaja.Destroy();
174        //kuolemisenAani.Play();
175        MessageDisplay.Add("Woops, you died. -_-");
176        Timer.SingleShot(1.8, AlkuValikko);
177    }
178
179}
Note: See TracBrowser for help on using the repository browser.