source: 2014/24/NooraH/Diamond/Diamond/Diamond/Diamond.cs @ 4938

Revision 4938, 5.2 KB checked in by noaialha, 7 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 Diamond : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 400;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    Image pelaajanKuva = LoadImage("Hahmo1");
18    Image tahtiKuva = LoadImage("Diamond");
19    Image pahiskuva = LoadImage("Pahis");
20    Image hahmokuva;
21
22    Image[] hahmokuvat = LoadImages("Hahmo1", "Hahmo2");
23
24    SoundEffect maaliAani = LoadSoundEffect("maali");
25
26    public override void Begin()
27    {
28        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko", "Aloita peli", "Lopeta");
29        Add(alkuValikko);
30        alkuValikko.AddItemHandler(0, ValitseHahmo);
31        alkuValikko.AddItemHandler(1, Exit);
32    }
33
34    void ValitseHahmo()
35    {
36        MultiSelectWindow hahmoValikko = new MultiSelectWindow("Valitse Hahmo", "Ha ", "Hahmo2");
37        Add(hahmoValikko);
38
39        for (int i = 0; i < hahmokuvat.Length; i++)
40        {
41            int indeksi = i;
42            hahmoValikko.AddItemHandler(indeksi, delegate {
43                hahmokuva = hahmokuvat[indeksi];
44                AloitaPeli();
45            });
46        }
47    }
48
49    void AloitaPeli()
50    {
51        ClearAll();
52        LuoKentta();
53        LisaaNappaimet();
54
55        Camera.Follow(pelaaja1);
56        Camera.ZoomFactor = 1.2;
57        Camera.StayInLevel = true;
58    }
59
60    void LuoKentta()
61    {
62        Gravity = new Vector(0, -1000);
63
64        TileMap kentta = TileMap.FromLevelAsset("kentta1");
65        kentta.SetTileMethod('#', LisaaTaso);
66        kentta.SetTileMethod('*', LisaaDiamond);
67        kentta.SetTileMethod('N', LisaaPelaaja);
68        kentta.SetTileMethod('P', LisaaPahis);
69        kentta.SetTileMethod('O', LisaaPallo);
70        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
71        Level.CreateBorders();
72        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
73    }
74
75    void LisaaTaso(Vector paikka, double leveys, double korkeus)
76    {
77        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
78        taso.Position = paikka;
79        taso.Color = Color.Teal;
80        Add(taso);
81    }
82
83    void LisaaDiamond(Vector paikka, double leveys, double korkeus)
84    {
85        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys*0.5, korkeus*0.5);
86        tahti.IgnoresCollisionResponse = true;
87        tahti.Position = paikka;
88        tahti.Image = tahtiKuva;
89        tahti.Tag = "Diamond";
90        Add(tahti);
91    }
92
93    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
94    {
95        pelaaja1 = new PlatformCharacter(leveys, korkeus);
96        pelaaja1.Position = paikka;
97        pelaaja1.Mass = 4.0;
98        pelaaja1.Image = hahmokuva;
99        AddCollisionHandler(pelaaja1, "Diamond", TormaaTahteen);
100        AddCollisionHandler(pelaaja1, "vaara", PelaajaKuolee);
101        Add(pelaaja1);
102    }
103
104    void LisaaNappaimet()
105    {
106        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
107        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
108
109        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
110        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
111        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
112
113        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
114
115        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
116        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
117        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
118
119        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
120    }
121
122    void Liikuta(PlatformCharacter hahmo, double nopeus)
123    {
124        hahmo.Walk(nopeus);
125    }
126
127    void Hyppaa(PlatformCharacter hahmo, double nopeus)
128    {
129        hahmo.Jump(nopeus);
130    }
131
132    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
133    {
134        maaliAani.Play();
135        MessageDisplay.Add("Keräsit timanttin!");
136        tahti.Destroy();
137    }
138
139    void LisaaPahis(Vector paikka, double leveys, double korkeus)
140    {
141
142        PlatformCharacter Pahis = new PlatformCharacter(leveys*2, korkeus*2);
143        Add(Pahis);
144        Pahis.Position = paikka;
145        Pahis.Image = pahiskuva;
146        Pahis.Tag = "vaara";
147        Timer ajastin = new Timer();
148        ajastin.Interval = 2;
149        ajastin.Timeout += delegate
150        {
151            Pahis.Jump(850);
152        };
153        ajastin.Start();
154    }
155    void PelaajaKuolee(PhysicsObject hahmo, PhysicsObject vaara)
156    {
157        AloitaPeli();
158    }
159
160
161    void LisaaPallo(Vector paikka, double leveys = 20, double korkeus = 20)
162    {
163        PhysicsObject pallo = new PhysicsObject(leveys/2, korkeus/2);
164        Add(pallo);
165        pallo.Shape = Shape.Circle;
166        pallo.Color = Color.Black;
167    }
168}
Note: See TracBrowser for help on using the repository browser.