source: 2016/koodauskerho/SamuelN/OfficialNeseGame/OfficialNeseGame/OfficialNeseGame/OfficialNeseGame.cs @ 8424

Revision 8424, 5.9 KB checked in by sieerinn, 2 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 OfficialNeseGame : PhysicsGame
10{
11    double nopeus = 300;
12    const double hyppyNopeus = 600;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    Image pelaajanKuva = LoadImage("hahmo");
18    Image tahtiKuva = LoadImage("tahti");
19
20    SoundEffect maaliAani = LoadSoundEffect("maali");
21    SoundEffect hitAani = LoadSoundEffect("Hit_Hurt");
22    List<Label> valikonKohdat;
23    public override void Begin()
24    {
25        Valikko();
26        IsFullScreen = true;
27        IsMouseVisible = true;
28    }
29    void Valikko()
30    {
31        ClearAll();
32
33        valikonKohdat = new List<Label>();
34        Label text = new Label("Official Nese Game \n by NinjaPaimen");
35        text.Position = new Vector(0, 60);
36        valikonKohdat.Add(text);
37        Label kohta1 = new Label("Start");
38        kohta1.Position = new Vector(0, 0);
39        valikonKohdat.Add(kohta1);
40        Label kohta2 = new Label("Exit");
41        kohta2.Position = new Vector(0, -40);
42        valikonKohdat.Add(kohta2);
43
44        foreach (Label valikonKohta in valikonKohdat)
45        {
46            Add(valikonKohta);
47        }
48        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, Aloitus, null);
49        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Exit, null);
50        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
51    }
52    void ValikossaLiikkuminen(AnalogState hiirenTila)
53    {
54        foreach (Label kohta in valikonKohdat)
55        {
56            if (Mouse.IsCursorOn(kohta))
57            {
58                kohta.TextColor = Color.Red;
59            }
60            else
61            {
62                kohta.TextColor = Color.Black;
63            }
64
65        }
66    }
67    void Aloitus()
68    {
69        ClearAll();
70        Gravity = new Vector(0, -1000);
71
72        LuoKentta();
73        LisaaNappaimet();
74
75        Camera.Follow(pelaaja1);
76        Camera.ZoomFactor = 3;
77        Camera.StayInLevel = true;
78       
79    }
80    void LuoKentta()
81    {
82        TileMap kentta = TileMap.FromLevelAsset("kentta1");
83        kentta.SetTileMethod('#', LisaaTaso);
84        kentta.SetTileMethod('t', LisaaTahti);
85        kentta.SetTileMethod('p', LisaaPelaaja);
86        kentta.SetTileMethod('l', LisaaLaava);
87        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
88        Level.CreateBorders();
89        Level.Background.CreateGradient(Color.OrangeRed, Color.SkyBlue);
90    }
91
92    void LisaaTaso(Vector paikka, double leveys, double korkeus)
93    {
94        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
95        taso.Position = paikka;
96        taso.Color = Color.Gray;
97        Add(taso);
98    }
99    void LisaaLaava(Vector paikka, double leveys, double korkeus)
100    {
101        PhysicsObject laava = PhysicsObject.CreateStaticObject(leveys, korkeus);
102        laava.Position = paikka;
103        laava.Color = Color.OrangeRed;
104        laava.Tag = "laava";
105        Add(laava);
106    }
107    void LisaaTahti(Vector paikka, double leveys, double korkeus)
108    {
109        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
110        tahti.IgnoresCollisionResponse = true;
111        tahti.Position = paikka;
112        tahti.Image = pelaajanKuva;
113        tahti.Tag = "tahti";
114        Add(tahti);
115    }
116
117    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
118    {
119        pelaaja1 = new PlatformCharacter(leveys, korkeus);
120        pelaaja1.Position = paikka;
121        pelaaja1.Mass = 4.0;
122        pelaaja1.Image = pelaajanKuva;
123        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
124        AddCollisionHandler(pelaaja1, "laava", TormaaLaavaan);
125        Add(pelaaja1);
126    }
127
128    void LisaaNappaimet()
129    {
130        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
131        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
132
133        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -1.0);
134        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, 1.0);
135        Keyboard.Listen(Key.Space, ButtonState.Down, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
136        Keyboard.Listen(Key.F12, ButtonState.Pressed, Konsoli, "Avaa konsolin");
137
138        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
139
140        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -1.0);
141        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, 1.0);
142        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
143
144        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
145    }
146    void Konsoli()
147    {
148        InputWindow kysymysIkkuna = new InputWindow("Console");
149        kysymysIkkuna.TextEntered += ProcessInput;
150        Add(kysymysIkkuna);
151    }
152    void ProcessInput(InputWindow ikkuna)
153    {
154        string vastaus = ikkuna.InputBox.Text;
155        if (vastaus == "speed x2")
156        {
157            nopeus *= 2;
158        }
159        else if (vastaus == "speed normal")
160        {
161            nopeus = 300;
162        }
163    }
164        void Liikuta(PlatformCharacter hahmo, double suunta)
165    {
166        hahmo.Walk(suunta * nopeus);
167    }
168
169    void Hyppaa(PlatformCharacter hahmo, double nopeus)
170    {
171        hahmo.Jump(nopeus);
172    }
173    void TormaaLaavaan(PhysicsObject hahmo, PhysicsObject laava)
174    {
175        pelaaja1.ForceJump(100);
176        hitAani.Play();
177        Timer.SingleShot(2, delegate
178            {
179               
180            });
181    }
182    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
183    {
184        maaliAani.Play();
185        tahti.Destroy();
186    }
187}
Note: See TracBrowser for help on using the repository browser.