source: 2016/27/OssiJ/Kuoppa/Kuoppa/Kuoppa/Kuoppa.cs @ 8028

Revision 8028, 5.2 KB checked in by ostajylh, 3 years ago (diff)

valmis peli

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Kuoppa : PhysicsGame
10{
11
12    const double nopeus = 200;
13    const double hyppyNopeus = 750;
14    const int RUUDUN_KOKO = 40;
15
16    PlatformCharacter pelaaja1;
17   
18    Image pelaajanKuva = LoadImage("Tyyppi2");
19    Image tahtiKuva = LoadImage("Kulta");
20    Image puuKuva = LoadImage("Puu");
21    Image tasoKuva = LoadImage("Taso");
22
23    SoundEffect maaliAani = LoadSoundEffect("maali");
24
25    IntMeter pisteLaskuri;
26
27    public override void Begin()
28    {
29        LuoAlkuvalikko();
30    }
31
32
33    void LuoAlkuvalikko()
34    {
35        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
36        "Aloita peli", "Lopeta");
37        Add(alkuValikko);
38        alkuValikko.AddItemHandler(0, AloitaPeli);
39        alkuValikko.AddItemHandler(1, Exit);
40    }
41
42    void AloitaPeli()
43    {
44        Gravity = new Vector(0, -1000);
45
46        LuoPistelaskuri();
47        LuoKentta();
48        LisaaNappaimet();
49
50        Camera.Follow(pelaaja1);
51        Camera.ZoomFactor = 1.2;
52        Camera.StayInLevel = true;
53    }
54    void LuoKentta()
55    {
56        TileMap kentta = TileMap.FromLevelAsset("kentta1");
57        kentta.SetTileMethod('#', LisaaTaso);
58        kentta.SetTileMethod('*', LisaaTahti);
59        kentta.SetTileMethod('N', LisaaPelaaja);
60        kentta.SetTileMethod('P', LisaaPuu);
61        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
62        Level.CreateBorders();
63        Level.Background.Color = Color.Beige;
64    }
65
66    void LisaaTaso(Vector paikka, double leveys, double korkeus)
67    {
68        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
69        taso.Position = paikka;
70        taso.Image = tasoKuva;
71        Add(taso);
72    }
73
74    void LisaaTahti(Vector paikka, double leveys, double korkeus)
75    {
76        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
77        tahti.IgnoresCollisionResponse = true;
78        tahti.Position = paikka;
79        tahti.Image = tahtiKuva;
80        tahti.Tag = "tahti";
81        Add(tahti);
82        pisteLaskuri.MaxValue += 1;
83    }
84
85    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
86    {
87        pelaaja1 = new PlatformCharacter(leveys, korkeus);
88        pelaaja1.Position = paikka;
89        pelaaja1.Mass = 4.0;
90        pelaaja1.Image = pelaajanKuva;
91        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
92        AddCollisionHandler(pelaaja1, "puu", TormaaPuuhun);
93        Add(pelaaja1);
94    }
95
96    void LisaaPuu(Vector paikka, double leveys, double korkeus)
97    {
98        PhysicsObject puu = PhysicsObject.CreateStaticObject(leveys, korkeus);
99        puu.Position = paikka;
100        puu.Image = puuKuva;
101        puu.Tag = "puu";
102        Add(puu);
103    }
104
105    void LisaaNappaimet()
106    {
107        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
108        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
109
110        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
111        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
112        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
113
114        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
115
116        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
117        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
118        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
119    }
120
121    void Liikuta(PlatformCharacter hahmo, double nopeus)
122    {
123        hahmo.Walk(nopeus);
124    }
125
126    void Hyppaa(PlatformCharacter hahmo, double nopeus)
127    {
128        hahmo.Jump(nopeus);
129    }
130
131    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
132    {
133        maaliAani.Play();
134        MessageDisplay.Add("Keräsit kullan!");
135        tahti.Destroy();
136        pisteLaskuri.Value += 1;
137    }
138
139    void TormaaPuuhun(PhysicsObject hahmo, PhysicsObject puu)
140    {
141        if (pisteLaskuri.Value == pisteLaskuri.MaxValue)
142        {
143            ClearAll();
144            MultiSelectWindow alkuValikko = new MultiSelectWindow("Läpäisit pelin!", "Uusi peli", "Lopeta");
145            Add(alkuValikko);
146            alkuValikko.AddItemHandler(0, Begin);
147            alkuValikko.AddItemHandler(1, Exit);
148            Level.Background.Color = Color.Aqua;
149        }
150        else
151        {
152            MessageDisplay.Add("Kerää kaikki kullat");
153        }
154    }   
155       
156        void LuoPistelaskuri()
157    {
158        pisteLaskuri = new IntMeter(0,0,0) ;
159
160        Label pisteNaytto = new Label();
161        pisteNaytto.X = Screen.Right - 100;
162        pisteNaytto.Y = Screen.Top - 100;
163        pisteNaytto.TextColor = Color.Black;
164        pisteNaytto.Color = Color.White;
165        pisteNaytto.Title = "Kultaa";
166
167        pisteNaytto.BindTo(pisteLaskuri);
168        Add(pisteNaytto);
169    }
170}
Note: See TracBrowser for help on using the repository browser.