source: 2015/27/IlmoP/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1.cs @ 6758

Revision 6758, 5.5 KB checked in by misakana, 4 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 Tasohyppelypeli1 : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    Image pelaajanKuva = LoadImage("pelaaja");
18    Image patteriKuva = LoadImage("patteri");
19    Image Orkki = LoadImage("Orkki");
20    Image maalikuva = LoadImage("maali");
21    Image voittokuva = LoadImage("voitto");
22
23    SoundEffect maaliAani = LoadSoundEffect("maali");
24
25    public override void Begin()
26    {
27        ClearAll();
28        Gravity = new Vector(0, -500);
29
30        LuoKentta();
31        LisaaNappaimet();
32
33        Camera.Follow(pelaaja1);
34        Camera.ZoomFactor = 3.0;
35        Camera.StayInLevel = true;
36    }
37
38    void LuoKentta()
39    {
40        TileMap kentta = TileMap.FromLevelAsset("kentta1");
41        kentta.SetTileMethod('#', LisaaTaso);
42        kentta.SetTileMethod('*', LisaaPatteri);
43        kentta.SetTileMethod('P', LisaaPelaaja);
44        kentta.SetTileMethod('?', LisaaVihollinen);
45        kentta.SetTileMethod('M', LisaaMaali);
46        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
47        Level.CreateBorders();
48        Level.Background.CreateStars();
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 = Color.Blue;
56        Add(taso);
57    }
58
59    void LisaaMaali(Vector paikka, double leveys, double korkeus)
60    {
61        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
62        maali.Position = paikka;
63        maali.Color = Color.Red;
64        maali.Tag = "maali";
65        maali.Image = maalikuva;
66        Add(maali);
67    }
68    void LisaaPatteri(Vector paikka, double leveys, double korkeus)
69    {
70        PhysicsObject patteri = PhysicsObject.CreateStaticObject(leveys, korkeus);
71        patteri.IgnoresCollisionResponse = true;
72        patteri.Position = paikka;
73        patteri.Image = patteriKuva;
74        patteri.Tag = "patteri";
75        Add(patteri);
76    }
77
78    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
79    {
80        pelaaja1 = new PlatformCharacter(leveys, korkeus);
81        pelaaja1.Position = paikka;
82        pelaaja1.Mass = 4.0;
83        pelaaja1.Image = pelaajanKuva;
84        pelaaja1.Tag = "pelaaja";
85        AddCollisionHandler(pelaaja1, "patteri", TormaaPatteriin);
86        AddCollisionHandler(pelaaja1, "orkki", TormaaOrkkiin);
87        AddCollisionHandler(pelaaja1, "maali", TormaaMaaliin);
88        Add(pelaaja1);
89
90        pelaaja1.Weapon = new PlasmaCannon(30, 10);
91        pelaaja1.Weapon.Ammo.Value = 20;
92        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
93
94    }
95
96    void AmmusOsui (PhysicsObject ammus, PhysicsObject kohde)
97    {
98        ammus.Destroy();
99    }     
100    void TormaaOrkkiin(PhysicsObject a, PhysicsObject b)
101    {
102        if (a.Tag.Equals("pelaaja"))
103        {
104            a.Destroy(); 
105        }
106    }
107
108    void TormaaMaaliin(PhysicsObject a, PhysicsObject b)
109    {
110        if (a.Tag.Equals("pelaaja"))
111        {
112            a.Destroy();
113            GameObject voittoScreen = new GameObject(500, 500);
114            voittoScreen.Image = voittokuva;
115            voittoScreen.Position = b.Position;
116            Add(voittoScreen);
117        }
118    }
119
120    void LisaaNappaimet()
121    {
122        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
123        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
124        Keyboard.Listen(Key.R, ButtonState.Pressed, Begin, "Lopeta peli");
125
126        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
127        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
128        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
129
130        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
131
132        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
133        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
134        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
135
136        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
137    }
138
139    void Liikuta(PlatformCharacter hahmo, double nopeus)
140    {
141        hahmo.Walk(nopeus);
142    }
143
144    void Hyppaa(PlatformCharacter hahmo, double nopeus)
145    {
146        hahmo.Jump(nopeus);
147    }
148
149    void TormaaPatteriin(PhysicsObject hahmo, PhysicsObject tahti)
150    {
151        MessageDisplay.Add("Keräsit patterin!");
152        tahti.Destroy();
153    }
154
155    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
156    {
157        PlatformCharacter orkki = new PlatformCharacter(40, 20);
158        orkki.Shape = Shape.Rectangle;
159        orkki.Image = (Orkki);
160        orkki.Position = paikka;
161        orkki.Tag = "orkki";
162        Add(orkki);
163
164        FollowerBrain seuraajaAivot = new FollowerBrain("pelaaja");
165        seuraajaAivot.Speed = 200;
166        seuraajaAivot.DistanceFar = 600;
167        seuraajaAivot.DistanceClose = 200;
168        orkki.Brain = seuraajaAivot;
169
170    }
171
172}
Note: See TracBrowser for help on using the repository browser.