source: 2014/30/AtteB/Peli/Peli/Peli/Peli.cs @ 5540

Revision 5540, 7.0 KB checked in by athebla, 8 years ago (diff)

Peli päivitetty ja tekstuurit lisätty

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9class Vihollinen : PhysicsObject
10{
11    private IntMeter elamaLaskuri = new IntMeter(3, 0, 3);
12    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
13
14    public Vihollinen(double leveys, double korkeus)
15        : base(leveys, korkeus)
16    {
17        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
18    }
19}
20
21public class Peli : PhysicsGame
22{
23    int pelaajanTerveys = 100;
24
25    DoubleMeter P1Elämät;
26
27    const double nopeus = 200;
28    const double hyppyNopeus = 750;
29    const int RUUDUN_KOKO = 40;
30
31    PlatformCharacter pelaaja1;
32    PlatformCharacter vihollinen1;
33
34    Image tahtiKuva = LoadImage("tahti");
35    Image StoneKuva = LoadImage("StoneWall");
36    Image StoneTaso = LoadImage("Stone_katto");
37    Image StoneKuva_katto = LoadImage("Stone_katto");
38    Image Pelaaja_Seisoo = LoadImage("Pelaaja_Seisoo");
39    Image Pelaaja_Juoksee = LoadImage("Pelaaja_Juoksee");
40    Image StoneBrickTaso = LoadImage("Stone_brick_tile");
41    Image Slime = LoadImage("Slime");
42
43    SoundEffect maaliAani = LoadSoundEffect("maali");
44
45    public override void Begin()
46    {
47        Gravity = new Vector(0, -1000);
48
49        IsMouseVisible = true;
50        SetWindowSize(1000, 800);
51
52        LuoKentta();
53        LisaaNappaimet();
54
55        Camera.Follow(pelaaja1);
56        Camera.ZoomFactor = 1.2;
57        Camera.StayInLevel = true;
58
59        SmoothTextures = false;
60
61        P1Elämät= new DoubleMeter(100);
62        P1Elämät.MaxValue = 100;
63
64        BarGauge P1Elämä = new BarGauge(20, Screen.Width / 3);
65        P1Elämä.X = Screen.Left + Screen.Width / 2;
66        P1Elämä.Y = Screen.Top - 200;
67        P1Elämä.Angle = Angle.FromDegrees(90);
68        P1Elämä.BindTo(P1Elämät);
69        P1Elämä.Color = Color.BloodRed;
70        P1Elämä.BarColor = Color.Cyan;
71        Add(P1Elämä);
72
73    }
74
75    void LuoKentta()
76    {
77        TileMap kentta = TileMap.FromLevelAsset("kentta1");
78        kentta.SetTileMethod('#', LisaaTaso);
79        kentta.SetTileMethod('*', LisaaTahti);
80        kentta.SetTileMethod('N', LisaaPelaaja);
81        kentta.SetTileMethod('P', LisaaStoneLattia);
82        kentta.SetTileMethod('+', LisaaStoneKatto);
83        kentta.SetTileMethod('?', LisaaStoneBrickLattia);
84        kentta.SetTileMethod('S', LuoSlime);
85        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
86        Level.CreateBorders();
87        Level.Background.Image = StoneKuva;
88        Level.Background.TileToLevel();
89    }
90
91    void LisaaTaso(Vector paikka, double leveys, double korkeus)
92    {
93        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
94        taso.Position = paikka;
95        taso.Image = StoneTaso;
96        Add(taso);
97    }
98
99    void LisaaStoneLattia(Vector paikka, double leveys, double korkeus)
100    {
101        PhysicsObject Stone = PhysicsObject.CreateStaticObject(leveys, korkeus);
102        Stone.IgnoresCollisionResponse = true;
103        Stone.Position = paikka;
104        Stone.Image = StoneKuva;
105        Add(Stone);
106       
107    }
108
109    void LisaaStoneBrickLattia(Vector paikka, double leveys, double korkeus)
110    {
111        PhysicsObject stoneBrick = PhysicsObject.CreateStaticObject(leveys, korkeus);
112        stoneBrick.IgnoresCollisionResponse = false;
113        stoneBrick.Position = paikka;
114        stoneBrick.Image = StoneBrickTaso;
115        Add(stoneBrick);
116
117    }
118
119
120    void LisaaStoneKatto(Vector paikka, double leveys, double korkeus)
121    {
122        PhysicsObject Stone = PhysicsObject.CreateStaticObject(leveys, korkeus);
123        Stone.IgnoresCollisionResponse = true;
124        Stone.Position = paikka;
125        Stone.Image = StoneKuva_katto;
126        Add(Stone);
127
128    }
129
130
131    void LisaaTahti(Vector paikka, double leveys, double korkeus)
132    {
133        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
134        tahti.IgnoresCollisionResponse = true;
135        tahti.Position = paikka;
136        tahti.Image = tahtiKuva;
137        tahti.Tag = "tahti";
138        Add(tahti);
139    }
140
141    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
142    {
143        pelaaja1 = new PlatformCharacter(leveys, korkeus);
144        pelaaja1.Position = paikka;
145        pelaaja1.Mass = 10.0;
146        pelaaja1.Image = Pelaaja_Seisoo;
147        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
148        Add(pelaaja1);
149    }
150
151    void LisaaNappaimet()
152    {
153        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
154        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
155
156        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
157        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
158        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
159
160        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
161
162        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
163        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
164        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
165
166        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
167    }
168
169    void Liikuta(PlatformCharacter hahmo, double nopeus)
170    {
171        hahmo.Walk(nopeus);
172    }
173
174    void Hyppaa(PlatformCharacter hahmo, double nopeus)
175    {
176        hahmo.Jump(nopeus);
177    }
178
179    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
180    {
181        maaliAani.Play();
182        MessageDisplay.Add("Keräsit tähden!");
183        tahti.Destroy();
184    }
185
186    void LuoVihollinen(Vector paikka, double leveys, double korkeus)
187    {
188        PhysicsObject vihollinen = new PhysicsObject(leveys, korkeus);
189        vihollinen.Position = paikka;
190        vihollinen.Tag = "pahis";
191        Add(vihollinen);
192    }
193
194    void LuoHealthPotion(Vector paikka, double leveys, double korkeus)
195    {
196        PhysicsObject potion = new PhysicsObject(leveys, korkeus);
197        potion.Position = paikka;
198        potion.Tag = "health";
199        Add(potion);
200    }
201
202    void TörmäysKäsittelijät()
203    {
204        AddCollisionHandler(pelaaja1, "pahis", PelaajaOsuu);
205        AddCollisionHandler(pelaaja1, "health", PelaajaParantuu);
206    }
207
208    void PelaajaOsuu(PhysicsObject pelaaja1, PhysicsObject kohde)
209    {
210        pelaajanTerveys--;
211
212        if (pelaajanTerveys <= 0)
213            pelaaja1.Destroy();
214    }
215
216    void PelaajaParantuu(PhysicsObject pelaaja1, PhysicsObject kohde)
217    {
218        pelaajanTerveys++;
219    }
220
221    void LuoSlime(Vector paikka, double leveys, double korkeus)
222    {
223        Vihollinen Slime1 = new Vihollinen(40, 40);
224        Slime1.X = 20;
225        Slime1.Y = 20;
226        Slime1.Image = Slime;
227
228    }
229}
Note: See TracBrowser for help on using the repository browser.