source: 2015/30/ArttuH/TasoHyppely/TasoHyppely/TasoHyppely/TasoHyppely.cs @ 6819

Revision 6819, 4.8 KB checked in by arjuhoyl, 4 years ago (diff)

päivä 1 loppu

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class TasoHyppely : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    PlatformCharacter pelaaja2;
17
18    Image pelaajanKuva1 = LoadImage("ukko");
19    Image pelaajanKuva2 = LoadImage("toinenukko");
20    Image tahtiKuva = LoadImage("tahti");
21    private Animation pelihahmo1;
22    private Animation pelihahmo2;
23    SoundEffect maaliAani = LoadSoundEffect("maali");
24
25    public override void Begin()
26    {
27        Gravity = new Vector(0, -1000);
28
29        Paavalikko();
30        //LuoKentta();
31        //LisaaOhjaimet();
32
33        //Camera.Follow(pelaaja1,pelaaja2);
34        //Camera.ZoomFactor = 1.2;
35        //Camera.StayInLevel = true;
36    }
37
38    void LuoKentta(int pelaajienMaara)
39    {
40        TileMap kentta = TileMap.FromLevelAsset("kentta2");
41        kentta.SetTileMethod('#', LisaaTaso);
42        kentta.SetTileMethod('*', LisaaTahti);
43        kentta.SetTileMethod('N', LisaaPelaaja);
44        if (pelaajienMaara == 2)
45        {
46            kentta.SetTileMethod('Z', LisaaPelaaja2);
47        }
48        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
49
50        Level.CreateBorders();
51        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
52        LisaaOhjaimet();
53        Camera.Follow(pelaaja1);
54        if (pelaajienMaara == 2)
55        {
56            Camera.Follow(pelaaja1, pelaaja2);
57        }
58    }
59
60    void LisaaTaso(Vector paikka, double leveys, double korkeus)
61    {
62        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
63        taso.Position = paikka;
64        taso.Color = Color.Green;
65        Add(taso);
66    }
67
68    void LisaaTahti(Vector paikka, double leveys, double korkeus)
69    {
70        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
71        tahti.IgnoresCollisionResponse = true;
72        tahti.Position = paikka;
73        tahti.Image = tahtiKuva;
74        tahti.Tag = "tahti";
75        Add(tahti);
76    }
77
78    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
79    {
80        pelihahmo1 = LoadAnimation("ukkoanimaatio");
81        pelaaja1 = new PlatformCharacter(leveys, korkeus);
82        pelaaja1.Position = paikka;
83        pelaaja1.Mass = 4.0;
84        pelaaja1.Image = pelaajanKuva1;
85        pelaaja1.AnimWalk = pelihahmo1;
86        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
87        ControllerOne.Listen(Button.A, ButtonState.Down, Hyppaa, "pelaaja hypää", pelaaja1, 150.0);
88        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.1, Liikuta, "Pelaaja liikkuu vasemmalle/oikealle", pelaaja1);
89        Add(pelaaja1);
90    }
91    void Liikuta(PlatformCharacter hahmo, double nopeus)
92    {
93        hahmo.Walk(nopeus);
94    }
95
96    void Hyppaa(PlatformCharacter hahmo, double nopeus)
97    {
98        hahmo.Jump(nopeus);
99    }
100
101    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
102    {
103        maaliAani.Play();
104        MessageDisplay.Add("Keräsit tähden!");
105        tahti.Destroy();
106    }
107    void LisaaOhjaimet()
108    {
109
110        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
111    }
112
113    void LisaaPelaaja2(Vector paikka, double leveys, double korkeus)
114    {
115        pelihahmo2 = LoadAnimation("toinenukkoanimaatio");
116        pelaaja2 = new PlatformCharacter(leveys, korkeus);
117        pelaaja2.Position = paikka;
118        pelaaja2.Mass = 4.0;
119        pelaaja2.Image = pelaajanKuva2;
120        pelaaja2.AnimWalk = pelihahmo2;
121        AddCollisionHandler(pelaaja2, "tahti", TormaaTahteen);
122        ControllerTwo.Listen(Button.A, ButtonState.Down, Hyppaa, "pelaaja hypää", pelaaja2, 150.0);
123        ControllerTwo.ListenAnalog(AnalogControl.LeftStick, 0.1, Liikuta, "Pelaaja liikkuu vasemmalle/oikealle", pelaaja2);
124        Add(pelaaja2);
125       
126    }
127    void Liikuta(AnalogState tatinTila, PlatformCharacter hahmo)
128    {
129        Vector tatinAsento = tatinTila.StateVector;
130        if (tatinAsento.X == 0.0)
131        {
132            return;
133        }
134        hahmo.Walk(300 * tatinAsento.X);
135
136    }
137    void Paavalikko()
138    {
139        MultiSelectWindow alkuvalikko = new MultiSelectWindow("pelin valikko", "aloita peli", "lopeta");
140        alkuvalikko.AddItemHandler(0, PelaajaValikko);
141        alkuvalikko.AddItemHandler(1, Exit);
142        Add(alkuvalikko);
143
144    }
145    void PelaajaValikko()
146    {
147        MultiSelectWindow alkuvalikko = new MultiSelectWindow("montako pelaajaa", "yksin", "kahdestaan");
148        alkuvalikko.AddItemHandler(0, delegate { LuoKentta(1); });
149        alkuvalikko.AddItemHandler(1, delegate{LuoKentta(2);});
150        Add(alkuvalikko);
151    }
152}
Note: See TracBrowser for help on using the repository browser.