source: 2014/24/AleksanteriS/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1.cs @ 5005

Revision 5005, 4.8 KB checked in by aldiskan, 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 Tasohyppelypeli1 : 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("Companion Cube");
18    Image tahtiKuva = LoadImage("Companion Cube 2");
19    Image taustaKuva = LoadImage("Moon");
20
21
22    int kerattavienMaara;
23    IntMeter laskuri;
24
25    SoundEffect maaliAani = LoadSoundEffect("IDHY");
26
27    public override void Begin()
28    {
29        MultiSelectWindow alkuValikko = new MultiSelectWindow("Derpal","Aloita peli", "Lopeta");
30        Add(alkuValikko);
31        alkuValikko.Color = Color.White;
32        alkuValikko.AddItemHandler(0, AloitaPeli);
33        //alkuValikko.AddItemHandler(1, ParhaatPisteet);
34        alkuValikko.AddItemHandler(1, Exit);
35        Level.Background.Image = taustaKuva;
36        Level.Background.Color = Color.Black;
37    }
38
39    void AloitaPeli()
40    {
41        Gravity = new Vector(0, -1000);
42
43        MediaPlayer.Play("Madeon");
44        MediaPlayer.Volume = 1.0;
45        MediaPlayer.IsRepeating = true;
46
47
48        LuoKentta();
49        LuoPistelaskuri();
50        LisaaNappaimet();
51
52        Camera.Follow(pelaaja1);
53        Camera.ZoomFactor = 4.5;
54        Camera.StayInLevel = true;
55    }
56
57    void LuoKentta()
58    {
59        TileMap kentta = TileMap.FromLevelAsset("kentta1");
60        kentta.SetTileMethod('#', LisaaTaso);
61        kentta.SetTileMethod('*', LisaaTahti);
62        kentta.SetTileMethod('N', LisaaPelaaja);
63        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
64        Level.CreateBorders();
65        Level.Background.CreateGradient(Color.Pink, Color.SkyBlue);
66    }
67
68    void LuoPistelaskuri()
69    {
70        laskuri = new IntMeter(0);
71
72        Label pisteNaytto = new Label();
73        pisteNaytto.X = Screen.Left + 100;
74        pisteNaytto.Y = Screen.Top - 100;
75        pisteNaytto.Title = kerattavienMaara.ToString();
76        pisteNaytto.TextColor = Color.Black;
77        pisteNaytto.Color = Color.White;
78
79        pisteNaytto.BindTo(laskuri);
80        Add(pisteNaytto);
81    }
82
83    void LisaaTaso(Vector paikka, double leveys, double korkeus)
84    {
85        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
86        taso.Position = paikka;
87        Add(taso);
88    }
89
90    void LisaaTahti(Vector paikka, double leveys, double korkeus)
91    {
92        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
93        tahti.IgnoresCollisionResponse = true;
94        tahti.Position = paikka;
95        tahti.Image = tahtiKuva;
96        tahti.Tag = "tahti";
97        Add(tahti);
98        kerattavienMaara++;
99    }
100
101    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
102    {
103        pelaaja1 = new PlatformCharacter(leveys, korkeus);
104        pelaaja1.Position = paikka;
105        pelaaja1.Mass = 4.0;
106        pelaaja1.Image = pelaajanKuva;
107        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
108        Add(pelaaja1);
109    }
110
111    void LisaaNappaimet()
112    {
113        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
114        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
115
116        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
117        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
118        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
119
120        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
121
122        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
123        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
124        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
125
126        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
127    }
128
129    void Liikuta(PlatformCharacter hahmo, double nopeus)
130    {
131        hahmo.Walk(nopeus);
132    }
133
134    void Hyppaa(PlatformCharacter hahmo, double nopeus)
135    {
136        hahmo.Jump(nopeus);
137    }
138
139    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
140    {
141        laskuri.Value++;
142        maaliAani.Play();
143        MessageDisplay.Add("Sait Companion Cuben!");
144        tahti.Destroy();
145        if (laskuri.Value >= kerattavienMaara) Maali();
146    }
147
148    void Maali()
149    {
150        Label tekstikentta = new Label("Voitit!");
151        tekstikentta.Position = pelaaja1.Position;
152        tekstikentta.Size = new Vector(200, 100);
153        Add(tekstikentta);
154    }
155
156
157}
Note: See TracBrowser for help on using the repository browser.