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

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