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

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