source: 2016/koodauskerho/OttoK/PalikkaPeli/PalikkaPeli/PalikkaPeli/PalikkaPeli.cs @ 8368

Revision 8368, 5.0 KB checked in by tesatapa, 3 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 PalikkaPeli : PhysicsGame
10{
11    const double nopeus = 400;
12    const double hyppyNopeus = 1000;
13    const int RUUDUN_KOKO = 40;
14
15    MultiJumpPlatformCharacter pelaaja1;
16
17    Image pelaajanKuva = LoadImage("Palikkakyborgi");
18    Image tahtiKuva = LoadImage("tahti");
19    Image tasonKuva = LoadImage("palikka");
20    Image pahiksenKuva = LoadImage("Pahispalikka");
21
22    SoundEffect maaliAani = LoadSoundEffect("maali");
23
24    public override void Begin()
25    {
26        Gravity = new Vector(0, -3000);
27
28        LuoKentta();
29        LisaaNappaimet();
30        TeeElamalaskuri();
31        Camera.Follow(pelaaja1);
32        Camera.ZoomFactor = 2.0;
33        Camera.StayInLevel = true;
34
35        SmoothTextures = false;
36    }
37
38    void LuoKentta()
39    {
40        TileMap kentta = TileMap.FromLevelAsset("kentta1");
41        kentta.SetTileMethod('O', LisaaTaso);
42        kentta.SetTileMethod('*', LisaaTahti);
43        kentta.SetTileMethod('K', LisaaPelaaja);
44        kentta.SetTileMethod('P', LisaaPahispalikka);
45        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
46        Level.CreateBorders();
47        Level.Background.CreateGradient(Color.DarkRed, Color.Red);
48    }
49
50    void LisaaTaso(Vector paikka, double leveys, double korkeus)
51    {
52        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
53        taso.Position = paikka;
54        taso.Color = RandomGen.NextColor();
55        taso.Image = tasonKuva;
56        Add(taso);
57    }
58
59    void LisaaTahti(Vector paikka, double leveys, double korkeus)
60    {
61        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
62        tahti.IgnoresCollisionResponse = true;
63        tahti.Position = paikka;
64        tahti.Image = tahtiKuva;
65        tahti.Tag = "tahti";
66        Add(tahti);
67    }
68
69    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
70    {
71        pelaaja1 = new MultiJumpPlatformCharacter(leveys, korkeus, 20, 10);
72        pelaaja1.Position = paikka;
73        pelaaja1.Mass = 4.0;
74        pelaaja1.Image = pelaajanKuva;
75        AddCollisionHandler(pelaaja1, "pahis", Tormaapahikseen);
76        pelaaja1.CanRotate = false;
77        Add(pelaaja1);
78
79    }
80
81    void LisaaPahispalikka(Vector paikka, double leveys, double korkeus)
82    {
83        MultiJumpPlatformCharacter pahis = new MultiJumpPlatformCharacter(leveys, korkeus, 3, 3);
84        pahis.Position = paikka;
85        pahis.Tag = "pahis";
86        pahis.Mass = 4.0;
87        pahis.Image = pahiksenKuva;
88        pahis.CanRotate = false;
89        Add(pahis);
90        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
91        tasoAivot.Speed = 100;
92        tasoAivot.JumpSpeed = 700;
93        tasoAivot.TriesToJump = true;
94        pahis.Brain = tasoAivot;
95        tasoAivot.FallsOffPlatforms = true;
96        //pahis.ElamaLaskuri.Value -= 3;
97    }
98    void LisaaNappaimet()
99    {
100        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
101        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
102
103        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
104        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
105        Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
106        Keyboard.Listen(Key.RightControl, ButtonState.Pressed, Lyo, "Pelaaja lyö", pelaaja1);
107
108        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
109
110        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
111        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
112        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
113
114        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
115
116    }
117
118    void TeeElamalaskuri()
119    {
120        ProgressBar elamaPalkki = new ProgressBar(150, 20);
121        elamaPalkki.X = Screen.Left + 150;
122        elamaPalkki.Y = Screen.Top - 20;
123        elamaPalkki.BindTo(pelaaja1.ElamaLaskuri);
124        elamaPalkki.BarColor = Color.Lime;
125        elamaPalkki.Color = Color.Black;
126        Add(elamaPalkki);
127    }
128
129    void Liikuta(MultiJumpPlatformCharacter hahmo, double nopeus)
130    {
131        hahmo.Walk(nopeus);
132    }
133
134    void Hyppaa(MultiJumpPlatformCharacter hahmo, double nopeus)
135    {
136        hahmo.MultiJump(nopeus);
137    }
138
139    void Lyo(MultiJumpPlatformCharacter hahmo)
140    {
141
142    }
143
144    void Tormaapahikseen(PhysicsObject hahmo, PhysicsObject pahis)
145    {
146        MultiJumpPlatformCharacter pelaaja = hahmo as MultiJumpPlatformCharacter;
147        pelaaja.ElamaLaskuri.Value--;
148    }
149}
Note: See TracBrowser for help on using the repository browser.