source: 2017/31/LeoM/_/_/_/_.cs @ 9303

Revision 9303, 5.5 KB checked in by npo17_89, 23 months 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 _ : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 20;
14
15    PlatformCharacter pelaaja1;
16
17    Image pelaajanKuva = LoadImage("kissa");
18    Image tahtiKuva = LoadImage("tahti");
19    Image pizzaKuva = LoadImage("pizza");
20    SoundEffect maaliAani = LoadSoundEffect("maali");
21
22    public override void Begin()
23    {
24   
25
26        AloitaPeli();
27    }
28    void AloitaPeli()
29    {
30        ClearAll();
31        Gravity = new Vector(0, -1000);
32
33        LuoKentta();
34        LisaaNappaimet();
35
36        Camera.Follow(pelaaja1);
37        Camera.ZoomFactor = 0.2;
38        Camera.StayInLevel = true;
39    }
40    void LuoKentta()
41    {
42        TileMap kentta = TileMap.FromLevelAsset("kentta1");
43        kentta.SetTileMethod('#', LisaaTaso);
44        kentta.SetTileMethod('*', LisaaTahti);
45        kentta.SetTileMethod('n', LisaaPelaaja);
46        kentta.SetTileMethod('p', LisaaPizza);
47        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
48        Level.CreateBorders();
49        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
50    }
51
52    void LisaaTaso(Vector paikka, double leveys, double korkeus)
53    {
54        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
55        taso.Position = paikka;
56        taso.Image = tahtiKuva;
57        Add(taso);
58    }
59
60    void LisaaTahti(Vector paikka, double leveys, double korkeus)
61    {
62        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
63        tahti.IgnoresCollisionResponse = true;
64        tahti.Position = paikka;
65        tahti.Image = tahtiKuva;
66        tahti.Tag = "tahti";
67        Add(tahti);
68    }
69    void LisaaPizza(Vector paikka, double leveys, double korkeus)
70    {
71        PhysicsObject pizza = PhysicsObject.CreateStaticObject(leveys, korkeus);
72        pizza.IgnoresCollisionResponse = true;
73        pizza.Position = paikka;
74        pizza.Image = pizzaKuva;
75        pizza.Tag = "pizza";
76        Add(pizza);
77    }
78
79    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
80    {
81        pelaaja1 = new PlatformCharacter(leveys, korkeus);
82        pelaaja1.Position = paikka;
83        pelaaja1.Mass = 4.0;
84        pelaaja1.Image = pelaajanKuva;
85        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
86        AddCollisionHandler(pelaaja1, "pizza", TormaaPizzaan);
87        Add(pelaaja1);
88    }
89
90    void LisaaNappaimet()
91    {
92        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
93        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
94
95        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
96        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
97        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
98
99        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
100
101        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
102        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
103        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
104
105        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
106    }
107
108    void Liikuta(PlatformCharacter hahmo, double nopeus)
109    {
110        hahmo.Walk(nopeus);
111    }
112
113    void Hyppaa(PlatformCharacter hahmo, double nopeus)
114    {
115        hahmo.Jump(nopeus);
116    }
117
118    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
119    {
120        maaliAani.Play();
121        MessageDisplay.Add("Keräsit tähden!");
122        tahti.Destroy();
123    }
124
125    void TormaaPizzaan(PhysicsObject hahmo, PhysicsObject pizza)
126    {
127
128        MessageDisplay.Add("söit pizzan!");
129
130        AloitaAlusta();
131
132    }
133
134    void AloitaAlusta()
135    {
136        Mouse.IsCursorVisible = true;
137        ClearAll(); // Tyhjennetään kenttä kaikista peliolioista
138        List<Label> valikonKohdat;
139        valikonKohdat = new List<Label>(); // Alustetaan lista, johon valikon kohdat tulevat
140
141        Label kohta1 = new Label("Aloita uusi peli");  // Luodaan uusi Label-olio, joka toimii uuden pelin aloituskohtana
142        kohta1.Position = new Vector(0, 40);  // Asetetaan valikon ensimmäinen kohta hieman kentän keskikohdan yläpuolelle
143        valikonKohdat.Add(kohta1);  // Lisätään luotu valikon kohta listaan jossa kohtia säilytetään
144
145        Label kohta3 = new Label("Lopeta peli");
146        kohta3.Position = new Vector(0, -40);
147        valikonKohdat.Add(kohta3);
148        // Lisätään kaikki luodut kohdat peliin foreach-silmukalla
149        foreach (Label valikonKohta in valikonKohdat)
150
151            Add(valikonKohta);
152        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
153        Mouse.ListenOn(kohta3, MouseButton.Left, ButtonState.Pressed, Exit, null);
154
155
156        foreach (Label kohta in valikonKohdat)
157        {
158            if (Mouse.IsCursorOn(kohta))
159            {
160                kohta.TextColor = Color.Red;
161            }
162            else
163            {
164                kohta.TextColor = Color.Black;
165            }
166
167
168        }
169   
170   
171
172       
173    }
174}
Note: See TracBrowser for help on using the repository browser.