source: 2013/anlakane/Tiernapojat/Tiernapojat/Tiernapojat/Tiernapojat.cs @ 4827

Revision 4827, 10.1 KB checked in by vesal, 7 years ago (diff)

veri

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Tiernapojat : PhysicsGame
10{
11
12    private static readonly string[] taso0 = {
13"                   *    ",
14"      *                 ",
15"   *     *     *        ",
16" *        *   *         ",
17"                        ",
18"                        ",
19"                        ",
20"                        ",
21"                        ",
22"                        ",
23"                        ",
24"                        ",
25"                        ",
26"                        ",
27"                        ",
28"                        ",
29"                        ",
30"   H    M      K      N ",
31"=                       ",
32                                             };
33
34
35    const double nopeus = 200;
36    const double hyppyNopeus = 750;
37    const int RUUDUN_KOKO = 40;
38
39    private List<Tiernapoika> pojat = new List<Tiernapoika>();
40
41    private Image tahtiKuva = LoadImage("tahti");
42
43    private TiernapojanKuvat herodeksenKuvat = new TiernapojanKuvat { vartalo = LoadImage("TP_Herodes"), vartaloTakaa = LoadImage("TP_HerodesBack"), polvillaan = LoadImage("TP_HerodesCrouch"), kasi = LoadImage("TP_HerodesHand"), miekka = LoadImage("TP_sword"), kahva = LoadImage("TP_handle"), paa = LoadImage("TP_HerodesHead"), paaTakaa = LoadImage("TP_HerodesHeadBack"), suuAuki = LoadImage("TP_HerodesHeadSpeak") };
44    private TiernapojanKuvat murjaaninKuvat = new TiernapojanKuvat { vartalo = LoadImage("TP_Murjaani"), vartaloTakaa = LoadImage("TP_MurjaaniBack"), polvillaan = LoadImage("TP_MurjaaniCrouch"), kasi = LoadImage("TP_MurjaaniHand"), miekka = LoadImage("TP_sword"), kahva = LoadImage("TP_handle"), paa = LoadImage("TP_MurjaaniHead"), paaTakaa = LoadImage("TP_MurjaaniHeadBack"), suuAuki = LoadImage("TP_MurjaaniHeadSpeak") };
45    private TiernapojanKuvat knihdinKuvat = new TiernapojanKuvat { vartalo = LoadImage("TP_Knihti"), vartaloTakaa = LoadImage("TP_KnihtiBack"), polvillaan = LoadImage("TP_HerodesCrouch"), kasi = LoadImage("TP_HerodesHand"), miekka = LoadImage("TP_sword"), kahva = LoadImage("TP_handle"), paa = LoadImage("TP_KnihtiHead"), paaTakaa = LoadImage("TP_KnihtiHeadBack"), suuAuki = LoadImage("TP_KnihtiHeadSpeak") };
46    private TiernapojanKuvat mankinKuvat = new TiernapojanKuvat { vartalo = LoadImage("TP_Manki"), vartaloTakaa = LoadImage("TP_MankiBack"), polvillaan = LoadImage("TP_HerodesCrouch"), kasi = LoadImage("TP_MankiHand"), miekka = LoadImage("TP_star"), kahva = LoadImage("TP_star"), paa = LoadImage("TP_MankiHead"), paaTakaa = LoadImage("TP_MankiHeadBack"), suuAuki = LoadImage("TP_MankiHeadSpeak") };
47
48    private SoundEffect maaliAani = LoadSoundEffect("maali");
49
50
51    public override void Begin()
52    {
53        SetWindowSize((int)Screen.Width, (int)Screen.Height);
54        GamePad[] ohjaimet = { ControllerOne, ControllerTwo, ControllerThree, ControllerFour };
55        Gravity = new Vector(0, -1000);
56
57        LuoKentta();
58
59        int ci = 0;
60        foreach (Tiernapoika poika in pojat)
61        {
62            LisaaNappaimet(ohjaimet[ci++], poika);
63            if (ci >= ohjaimet.Length) break;
64        }
65
66        Verho verho = new Verho(Screen.Width, Screen.Height, LoadImage("verho2"));
67        Add(verho, 1);
68
69
70        Keyboard.Listen(Key.Space, ButtonState.Pressed, LiikutaVerho, null, verho);
71
72        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
73        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
74
75        // Camera.Follow(poika1);
76        Camera.ZoomFactor = 1;
77        // Camera.ZoomToAllObjects(0);
78        // Camera.StayInLevel = true;
79    }
80
81    void LiikutaVerho(Verho verho)
82    {
83        if (verho.Nostettu) 
84        {
85            verho.MoveTo(new Vector(verho.X, verho.Y - verho.Height), 250);
86            MediaPlayer.Stop();
87        }
88        else
89        {
90            verho.MoveTo(new Vector(verho.X, verho.Y + verho.Height), 250);
91            MediaPlayer.Play("tiernapoika");
92        }
93        verho.Nostettu = !verho.Nostettu;
94    }
95
96    void LuoKentta()
97    {
98        // TileMap kentta = TileMap.FromLevelAsset("kentta1");
99        TileMap kentta = TileMap.FromStringArray(taso0);
100        kentta.SetTileMethod('#', LisaaTaso);
101        kentta.SetTileMethod('=', LisaaPohjaTaso);
102        kentta.SetTileMethod('*', LisaaTahti);
103        kentta.SetTileMethod('H', (p, l, k) => LisaaPelaaja(p, l, k, herodeksenKuvat));
104        kentta.SetTileMethod('M', (p, l, k) => LisaaPelaaja(p, l * 1.3, k * 1.1, murjaaninKuvat));
105        kentta.SetTileMethod('K', (p, l, k) => LisaaPelaaja(p, l * 1.2, k * 0.9, knihdinKuvat));
106        kentta.SetTileMethod('N', (p, l, k) => LisaaPelaaja(p, l, k, mankinKuvat));
107        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
108        //Level.CreateBorders();
109        Level.Background.CreateGradient(Color.SkyBlue, Color.Blue);
110
111        PhysicsObject vasen = new PhysicsObject(100, 2000);
112        vasen.Right = Level.Left-500;
113        vasen.MakeStatic();
114        Add(vasen);
115
116        PhysicsObject oikea = new PhysicsObject(100, 2000);
117        oikea.Left = Level.Right+500;
118        oikea.MakeStatic();
119        Add(oikea);
120    }
121
122
123    void LisaaTaso(Vector paikka, double leveys, double korkeus)
124    {
125        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
126        taso.Position = paikka;
127        taso.Color = Color.Green;
128        Add(taso);
129    }
130
131
132    void LisaaPohjaTaso(Vector paikka, double leveys, double korkeus)
133    {
134        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys * 100, korkeus);
135        taso.Position = paikka;
136        taso.Color = Color.Green;
137        taso.Tag = "Lattia";
138        Add(taso);
139    }
140
141
142    void LisaaTahti(Vector paikka, double leveys, double korkeus)
143    {
144        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
145        tahti.IgnoresCollisionResponse = true;
146        tahti.Position = paikka;
147        tahti.Image = tahtiKuva;
148        tahti.Tag = "tahti";
149        Add(tahti);
150    }
151
152
153    void LisaaPelaaja(Vector paikka, double leveys, double korkeus, TiernapojanKuvat kuvat)
154    {
155        Tiernapoika poika = new Tiernapoika(this, leveys * 4, korkeus * 4, kuvat);
156        poika.Position = paikka;
157        poika.Color = Color.Red;
158
159        AddCollisionHandler(poika, "tahti", TormaaTahteen);
160        AddCollisionHandler(poika.Miekka, "tahti", TormaaTahteen);
161        pojat.Add(poika);
162    }
163
164
165    void LisaaNappaimet(GamePad controller, Tiernapoika poika)
166    {
167        Keyboard.Listen(Key.Left, ButtonState.Down, () => poika.Liiku(-nopeus), "Liikkuu vasemmalle");
168        Keyboard.Listen(Key.Right, ButtonState.Down, () => poika.Liiku(nopeus), "Liikkuu vasemmalle");
169        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", poika, hyppyNopeus);
170        Keyboard.Listen(Key.Multiply, ButtonState.Down, () => poika.Pyorita(), "Pyöritä tähteä");
171        Keyboard.Listen(Key.Down, ButtonState.Pressed, () => poika.Polvistu(hyppyNopeus), "Pelaaja polvistuu");
172        Keyboard.Listen(Key.Subtract, ButtonState.Down, () => poika.Pois(nopeus), "Kävele pois");
173        Keyboard.Listen(Key.Add, ButtonState.Down, () => poika.Takaisin(nopeus), "Kävele takaisin");
174        Keyboard.Listen(Key.Divide, ButtonState.Down, () => { poika.MiekkaEsiin(); poika.Osoita(80); }, "Kävele takaisin");
175        Keyboard.Listen(Key.Back, ButtonState.Pressed, () => poika.AvaaSuu(), "Avaa suu");
176        Keyboard.Listen(Key.Back, ButtonState.Released, () => poika.SuljeSuu(), "Sulje suu");
177        Keyboard.Listen(Key.V, ButtonState.Pressed, () => poika.TiputaVerta(), "Tiputa verta");
178
179        // controller.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
180        controller.Listen(Button.DPadLeft, ButtonState.Down, () => poika.Liiku(-nopeus), "Pelaaja liikkuu vasemmalle");
181        controller.Listen(Button.DPadRight, ButtonState.Down, () => poika.Liiku(nopeus), "Pelaaja liikkuu oikealle");
182        controller.Listen(Button.DPadUp, ButtonState.Down, () => poika.Pois(nopeus), "Pelaaja poispäin");
183        controller.Listen(Button.DPadDown, ButtonState.Down, () => poika.Takaisin(nopeus), "Pelaaja takaisinpäin");
184        controller.Listen(Button.Y, ButtonState.Pressed, () => poika.Nouse(nopeus), "Pelaaja nousee");
185        //controller.Listen(Button.A, ButtonState.Down,  () => poika.Polvistu(hyppyNopeus), "Pelaaja polvistuu");
186        controller.Listen(Button.A, ButtonState.Pressed, () => poika.KyykyynYlos(nopeus), "Kyykyyn/Ylös");
187        controller.Listen(Button.RightTrigger, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", poika, hyppyNopeus);
188        controller.Listen(Button.LeftTrigger, ButtonState.Pressed, () => poika.TiputaVerta(), "Tiputa verta");
189        controller.Listen(Button.LeftShoulder, ButtonState.Pressed, () => poika.Pyorita(), "Pyöritä tähteä");
190        controller.Listen(Button.RightShoulder, ButtonState.Pressed, () => poika.AvaaSuu(), "Avaa suu");
191        controller.Listen(Button.RightShoulder, ButtonState.Released, () => poika.SuljeSuu(), "Sulje suu");
192        controller.Listen(Button.X, ButtonState.Pressed, () => poika.MiekkaSwap(), "Miekka pois/takaisin");
193        controller.Listen(Button.B, ButtonState.Pressed, () => poika.MiekkaEsiin(), "Miekka esiin");
194
195        controller.ListenAnalog(AnalogControl.RightStick, 0.03, (a) => poika.Osoita(a.StateVector.Y * 130), "Liikuta kättä");
196        controller.ListenAnalog(AnalogControl.LeftStick, 0.03, (a) => poika.KaannaPaa(a.StateVector.X * 60), "Käännä pää");
197        controller.ListenAnalog(AnalogControl.LeftStick, 0.03, (a) => poika.Suu(a.StateVector.Y * 100), "Käännä pää");
198
199        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
200    }
201
202
203    void Hyppaa(Tiernapoika hahmo, double nopeus)
204    {
205        hahmo.Nouse(nopeus);
206        hahmo.Jump(nopeus);
207    }
208
209
210    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
211    {
212        maaliAani.Play();
213        MessageDisplay.Add("Keräsit tähden!");
214        tahti.Destroy();
215    }
216}
217
218
219
Note: See TracBrowser for help on using the repository browser.