source: 2018/24/ValtteriM/DeathrunDDC/DeathrunDDC/DeathrunDDC.cs @ 9748

Revision 9748, 6.6 KB checked in by vajumono, 16 months ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Widgets;
7
8public class DeathrunDDC : PhysicsGame
9{
10    const double nopeus = 200;
11    const double hyppyNopeus = 450;
12    const int RUUDUN_KOKO = 40;
13    PlatformCharacter pelaaja2;
14    PlatformCharacter pelaaja1;
15    PlatformCharacter pelaaja3;
16    PlatformCharacter pelaaja4;
17    Image pelaajan2Kuva = LoadImage("p2");
18    Image pelaajan1Kuva = LoadImage("p1");
19    Image pelaajan3Kuva = LoadImage("p3");
20    Image pelaajan4Kuva = LoadImage("p4");
21    Image kytkimenkuva = LoadImage("nappi");
22    Image laavankuva = LoadImage("lava");
23    Key[,] pelaajienNappaimet;
24
25    void AloitaAlusta()
26    {
27        ClearAll();
28        LisaaNappaimet();
29        LuoKentta();
30       
31       
32    }
33    //
34
35
36    public override void Begin()
37    {
38       
39
40        LisaaNappaimet();
41        LuoKentta();
42       
43
44       
45        //Camera.ZoomFactor = 1.2;
46        //Camera.StayInLevel = true;
47    }
48
49    void LuoKentta()
50    {
51        Gravity = new Vector(0, -1000);
52        pelaaja1 = new PlatformCharacter(10, 10);
53        TileMap kentta = TileMap.FromLevelAsset("kentta1");
54        kentta.SetTileMethod('#', LisaaTaso);
55        kentta.SetTileMethod('1', LisaaPelaaja1);
56        kentta.SetTileMethod('2', LisaaPelaaja2);
57        kentta.SetTileMethod('3', LisaaPelaaja3);
58        kentta.SetTileMethod('4', LisaaPelaaja4);
59        kentta.SetTileMethod('Y', SiirraPelaaja);
60        kentta.SetTileMethod('t', lisaaansa);
61        kentta.SetTileMethod('k', lisaakytkin);
62        kentta.SetTileMethod('l', lisaalaava);
63        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
64        Level.CreateBorders();
65        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
66        Camera.Follow(pelaaja1, pelaaja2, pelaaja3, pelaaja4);
67        Camera.Zoom(1.5);
68    }
69
70    void LisaaTaso(Vector paikka, double leveys, double korkeus)
71    {
72        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
73        taso.Position = paikka;
74        taso.Color = Color.Gray;
75        Add(taso);
76    }
77    void LisaaPelaaja1(Vector paikka, double leveys, double korkeus)
78    {
79        pelaaja1 = LisaaPelaaja(paikka, leveys, korkeus, pelaajan1Kuva, 1);
80    }
81    void LisaaPelaaja2(Vector paikka, double leveys, double korkeus)
82    {
83        pelaaja2 = LisaaPelaaja(paikka, leveys, korkeus, pelaajan2Kuva, 2);
84    }
85    void LisaaPelaaja3(Vector paikka, double leveys, double korkeus)
86    {
87        pelaaja3 = LisaaPelaaja(paikka, leveys, korkeus, pelaajan3Kuva, 3);
88    }
89    void LisaaPelaaja4(Vector paikka, double leveys, double korkeus)
90    {
91        pelaaja4 = LisaaPelaaja(paikka, leveys, korkeus, pelaajan4Kuva, 4);
92    }
93    void SiirraPelaaja(Vector paikka, double leveys, double korkeus)
94    {
95        PlatformCharacter pelaaja = RandomGen.SelectOne(pelaaja1, pelaaja2, pelaaja3, pelaaja4);
96        pelaaja.Position = paikka;
97    }
98    void lisaaansa(Vector paikka, double leveys, double korkeus)
99    {
100        PhysicsObject ansa = PhysicsObject.CreateStaticObject(leveys, korkeus);
101        ansa.Position = paikka;
102        Add(ansa);
103        ansa.Tag = "ansa";
104
105 }
106    void lisaakytkin(Vector paikka, double leveys, double korkeus)
107    {
108        PhysicsObject kytkin = PhysicsObject.CreateStaticObject(leveys, korkeus*0.8);
109        kytkin.Position = paikka;
110        Add(kytkin);
111        kytkin.Image = kytkimenkuva;
112        kytkin.Tag = "kytkin";
113    }
114    void lisaalaava(Vector paikka, double leveys, double korkeus)
115    {
116        PhysicsObject laava = PhysicsObject.CreateStaticObject(leveys, korkeus * 0.8);
117        laava.Position = paikka;
118        Add(laava);
119        laava.Image = laavankuva;
120        laava.Tag = "laava";
121    }
122    PlatformCharacter LisaaPelaaja( Vector paikka, double leveys, double korkeus, Image kuva, int pelaajaNro)
123    {
124
125        PlatformCharacter pelaaja = new PlatformCharacter(leveys, korkeus);
126        pelaaja.Position = paikka;
127        pelaaja.Mass = 4.0;
128        pelaaja.Image = kuva;
129        Add(pelaaja);
130        LisaaPelaajanNappaimet(pelaajaNro, pelaaja);
131        pelaaja.Tag = "pelaaja";
132        AddCollisionHandler(pelaaja, "kytkin", PelaajaOsuiKytkimeen);
133        AddCollisionHandler(pelaaja, "laava", Osuilaavaan);
134        return pelaaja;
135    }
136    void PelaajaOsuiKytkimeen(PhysicsObject pelaaja, PhysicsObject kytkin)
137    {
138        foreach (var ansa in GetObjectsWithTag("ansa"))
139        {
140            Vector aloituspaikka = ansa.Position;
141            ansa.Destroy();         
142            Timer.SingleShot(3.0,
143  delegate { lisaaansa(aloituspaikka, RUUDUN_KOKO, RUUDUN_KOKO); }
144);
145
146        }
147    }
148    void Osuilaavaan(PhysicsObject pelaaja, PhysicsObject laava)
149    {
150        pelaaja.Destroy();
151
152     
153    }
154
155    void LisaaNappaimet()
156    {
157        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
158        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
159        Keyboard.Listen(Key.F2, ButtonState.Pressed, AloitaAlusta, "reset");
160
161        LuoNappaintaulukko();
162        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
163
164        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
165        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
166        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
167
168        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
169
170   }
171    void LisaaPelaajanNappaimet(int pelaajaNro, PlatformCharacter pelaaja)
172    {
173        Keyboard.Listen(pelaajienNappaimet[pelaajaNro - 1, 0], ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja, hyppyNopeus);
174        Keyboard.Listen(pelaajienNappaimet[pelaajaNro - 1, 1], ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja, -nopeus);
175        Keyboard.Listen(pelaajienNappaimet[pelaajaNro - 1, 2], ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja, nopeus);
176       
177    }
178    void LuoNappaintaulukko()
179    {
180        pelaajienNappaimet = new Key[4, 3]
181        {
182            {Key.W, Key.A, Key.D },
183            {Key.Up, Key.Left, Key.Right },
184            {Key.I, Key.J, Key.L },
185            {Key.NumPad8, Key.NumPad4, Key.NumPad6 }
186        };
187    } 
188    void Liikuta(PlatformCharacter hahmo, double nopeus)
189    {
190        hahmo.Walk(nopeus);
191    }
192
193    void Hyppaa(PlatformCharacter hahmo, double nopeus)
194    {
195        hahmo.Jump(nopeus);
196    }
197
198   
199}
Note: See TracBrowser for help on using the repository browser.