source: 2016/24/MikoA/LukanSeikkailu/LukanSeikkailu/LukanSeikkailu/LukanSeikkailu.cs @ 7362

Revision 7362, 7.7 KB checked in by karkaite, 4 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 LukanSeikkailu : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    bool OnkoAvainKerätty = false;
17
18    Image pelaajanKuva = LoadImage("kylpytakkiupng");
19    Image VarjonKuva = LoadImage("kylpytakkiVARJO");
20    Image pohjanKuva = LoadImage("Guide");
21    Image BlokkiKuva = LoadImage("Blokki");
22    Image VihollinenKuva = LoadImage("Vihollinen");
23    Image AvainKuva = LoadImage("Avain");
24    Image AvaimenreikäKuva = LoadImage("Avaimenreikä");
25    SoundEffect maaliAani = LoadSoundEffect("maali");
26    Image taustakuva = LoadImage("TaustaPuisto");
27    public override void Begin()
28    {
29        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
30"Aloita peli","Peliohjeet", "Lopeta");
31        Add(alkuValikko);
32
33        alkuValikko.AddItemHandler(0, AloitaPeli);
34        alkuValikko.AddItemHandler(1, Peliohjeet);
35        alkuValikko.AddItemHandler(2, Exit);
36
37    }
38    void Peliohjeet()
39    {
40        IsMouseVisible = true;
41        List<Widget> jutut = new List<Widget>();
42        string[] tekstit = { "Liikkuminen: Nuolinäppäimistä", "Tehtävä: Ota avain spacebarista, sitten yritä päästä avaimenreiän luo ja paina spacebaria voittaaksesi",
43        "Viholliset: Kuolet jos osut vihreään viholliseen sivulta, mutta jos hyppäät sen päälle niin se kuolee", "Yritä saada Luka kotiin turvallisesti"};
44        Label pohja = new Label(Screen.Width * 0.85, Screen.Height * 0.85);
45        pohja.Image = pohjanKuva;
46        Add(pohja);
47        jutut.Add(pohja);
48        Vector okPosition = pohja.Position - new Vector(0, pohja.Height * 0.40);
49
50        for (int i = 0; i < tekstit.Length; i++)
51        {
52            Label teksti = new Label(tekstit[i]);
53            teksti.Y = pohja.Top - 100 - i * (pohja.Height + okPosition.Y) / tekstit.Length;
54            teksti.TextColor = Color.Blue;
55            teksti.TextScale = new Vector(1.2, 1.4);
56            Add(teksti);
57            jutut.Add(teksti); 
58        }
59
60
61        PushButton ok = new PushButton("Ok");
62        jutut.Add(ok);
63        ok.Position = okPosition;
64        ok.Clicked += delegate {
65            foreach (var item in jutut)
66            {
67                item.Destroy();
68            }
69            IsMouseVisible = false;
70            Begin();
71        };
72        Add(ok);
73
74    }
75    void AloitaPeli()
76    {
77        Gravity = new Vector(0, -1000);
78
79        LuoKentta();
80        LisaaNappaimet();
81
82        Camera.Follow(pelaaja1);
83        Camera.ZoomFactor = 1.2;
84        Camera.StayInLevel = true;
85
86       
87    }
88    void LuoKentta()
89    {
90        OnkoAvainKerätty = false;
91        TileMap kentta = TileMap.FromLevelAsset("kentta1");
92        kentta.SetTileMethod('#', LisaaTaso);
93        kentta.SetTileMethod('*', LisaaVihollinen);
94        kentta.SetTileMethod('N', LisaaPelaaja);
95        kentta.SetTileMethod('&', LisaaAvain);
96        kentta.SetTileMethod('+', LaitaAvain);
97        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
98        Level.CreateBorders();
99        Level.Background.Image = taustakuva;
100        Level.Background.FitToLevel();
101    }
102
103    void LisaaTaso(Vector paikka, double leveys, double korkeus)
104    {
105        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
106        taso.Position = paikka;
107        taso.Image = BlokkiKuva;
108        Add(taso);
109    }
110    void LisaaAvain(Vector paikka, double leveys, double korkeus)
111    {
112        PhysicsObject Avain = PhysicsObject.CreateStaticObject(leveys *1.6, korkeus *1.3);
113        Avain.Position = paikka + new Vector (20, -25);
114        Avain.CollisionIgnoreGroup = 2;
115        Add(Avain);
116        Avain.Image = AvainKuva;
117        Avain.Tag = "Avain";
118    }
119    void LaitaAvain(Vector paikka, double leveys, double korkeus)
120    {
121        PhysicsObject Avaimenreikä = PhysicsObject.CreateStaticObject(leveys *5.5, korkeus *3.06);
122        Avaimenreikä.Position = paikka + new Vector(0.0, 0.0);
123        Avaimenreikä.CollisionIgnoreGroup = 2;
124        Add(Avaimenreikä, -1);
125        Avaimenreikä.Image = AvaimenreikäKuva;
126        Avaimenreikä.Tag = "Avaimenreikä";
127    }
128
129
130
131    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
132    {
133        PlatformCharacter Vihollinen =  new PlatformCharacter(leveys, korkeus);
134        Vihollinen.Position = paikka;
135        Vihollinen.Image = VihollinenKuva;
136        Vihollinen.MirrorImage();
137        Vihollinen.Tag = "Vihollinen";
138        Add(Vihollinen);
139        PlatformWandererBrain aivot = new PlatformWandererBrain();
140        Vihollinen.Brain = aivot;
141    }
142
143    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
144    {
145        pelaaja1 = new PlatformCharacter(leveys * 1, korkeus * 1.9);
146        pelaaja1.Shape = Shape.FromImage(VarjonKuva);
147        pelaaja1.Position = paikka;
148        pelaaja1.CollisionIgnoreGroup = 2;
149        pelaaja1.Mass = 4.0;
150        pelaaja1.Image = pelaajanKuva;
151        AddCollisionHandler(pelaaja1, "Vihollinen", TormaaViholliseen);
152        Add(pelaaja1);
153    }
154    void LisaaPahis()
155    {
156
157
158    }
159    void LisaaNappaimet()
160    {
161        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
162        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
163        Keyboard.Listen(Key.Space, ButtonState.Pressed, OtaAvain, "Avain katoaa");
164        Keyboard.Listen(Key.Space, ButtonState.Pressed, LaitaAvain, "Avaimenreika katoaa");
165
166        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
167        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
168        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
169
170        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
171
172        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
173        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
174        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
175
176        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
177    }
178
179    void Liikuta(PlatformCharacter hahmo, double nopeus)
180    {
181        hahmo.Walk(nopeus);
182    }
183
184    void Hyppaa(PlatformCharacter hahmo, double nopeus)
185    {
186        hahmo.Jump(nopeus);
187    }
188
189    void OtaAvain()
190    {
191        List<GameObject> avaimet = GetObjectsAt(pelaaja1.Position, "Avain", 100);
192        if (avaimet.Count == 0) return;
193        avaimet[0].Destroy();
194        maaliAani.Play();
195        MessageDisplay.Add("Sait avaimen!");
196        OnkoAvainKerätty = true;
197    }
198
199    void TormaaViholliseen(PhysicsObject Pelaaja, PhysicsObject Vihollinen)
200    {
201
202        Vector erotus = new Vector(Pelaaja.X, Pelaaja.Bottom) - Vihollinen.Position;
203        if (erotus.Y > 0 && erotus.Y > Math.Abs(erotus.X) * 0.5)
204        {
205            Vihollinen.Destroy();
206        }
207        else
208        {
209            Pelaaja.Destroy();
210            MessageDisplay.Add("Kuolit!......LOL");
211        }
212
213
214    }
215    void LaitaAvain()
216    {
217        List<GameObject> avaimenreiät = GetObjectsAt(pelaaja1.Position, "Avaimenreikä", 100);
218        if (avaimenreiät.Count == 0 || !OnkoAvainKerätty) return;
219        avaimenreiät[0].Destroy();
220        MessageDisplay.Add("Pääsit kentän!");
221    }
222
223   
224
225}
Note: See TracBrowser for help on using the repository browser.