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

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