source: 2015/26/RasmusP/DungeonClasher/DungeonClasher/DungeonClasher/DungeonClasher.cs @ 6260

Revision 6260, 7.7 KB checked in by rapelton, 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
9class mob : PhysicsObject
10{
11    private IntMeter elamaLaskuri = new IntMeter(50,0, 50);
12    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
13
14    public mob(double leveys, double korkeus)
15        : base(leveys, korkeus)
16    {
17        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
18    }
19    public int Elamat { get; set; }
20    public int Kilpi { get; set; }
21}
22
23
24
25public class DungeonClasher : PhysicsGame
26{
27    Image tiiliskivi = LoadImage("Tiiliskivi");
28    Image miekkaKuva = LoadImage("Miekka");
29    PlatformCharacter pelaaja;
30    PhysicsObject miekka;
31   
32   
33
34    private IntMeter elamaLaskuri = new IntMeter(20, 0, 20);
35
36    int kenttaNro = 1;
37
38    bool miekkaEsille = false;
39    int vihujenMaara = 0;
40
41    public override void Begin()
42    {
43        SmoothTextures = false;
44       
45        LuoKentta();
46        //SeuraavaKentta();
47
48       
49
50    }
51    void SeuraavaKentta()
52{
53    ClearAll();
54    if (kenttaNro > 6)
55    { MessageDisplay.Add("voitit pelin"); }
56    else { LuoKentta(); }
57 
58   
59}
60    void LuoKentta()
61    {
62        miekkaEsille = false;
63
64        TileMap ruudut = TileMap.FromLevelAsset("kentta" + kenttaNro );
65
66        ruudut.SetTileMethod('=', LuoHirvio);
67        ruudut.SetTileMethod('*', LisaaLattia);
68        ruudut.SetTileMethod('P', LuoPelaaja);
69        ruudut.SetTileMethod('B', LuoBossi);
70        ruudut.SetTileMethod('k', LisaaKallio);
71        ruudut.Execute(40, 40);
72
73        Gravity = new Vector(0.0, -1000);
74
75        Level.CreateBorders();
76        asetaNappaimet();
77
78        Mouse.IsCursorVisible = true;
79
80        Camera.ZoomToLevel();
81    }
82
83    void asetaNappaimet()
84    {
85
86        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
87        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-500, 0));
88        Keyboard.Listen(Key.Left, ButtonState.Released, PysaytaPelaaja, null, new Vector());
89        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, new Vector(500, 0));
90        Keyboard.Listen(Key.Right, ButtonState.Released, PysaytaPelaaja, null, new Vector());
91        Keyboard.Listen(Key.A, ButtonState.Pressed, IskeMiekalla, null);
92     
93
94    }
95    void LiikutaPelaajaa(Vector vektori)
96    {
97        pelaaja.Walk(vektori.X);
98    }
99    void PysaytaPelaaja(Vector vektori)
100    {
101        pelaaja.Velocity = new Vector(0, 0);
102    }
103
104    void LuoHirvio(Vector paikka, double leveys, double korkeus)
105    {
106        //mob Hirvio = RandomGen.SelectOne(orc, darkKnight, giant);
107        mob Hirvio = new mob(20, 20);
108        int arvonta = RandomGen.NextInt(3);
109
110        if (arvonta == 1)
111        {
112            //orc
113            Hirvio = new mob(80.0, 80.0);
114
115            Hirvio.Elamat = 3;
116            Hirvio.Shape = Shape.Rectangle;
117            Hirvio.Color = Color.Yellow;
118            Hirvio.Mass = 1000;
119            Hirvio.MaxVelocity = 0;
120            Hirvio.MaxAngularVelocity = 0;
121            Hirvio.Tag = "Enimy";
122
123
124        }
125        else if (arvonta == 2)
126        {
127            //darkKnight
128            Hirvio = new mob(128, 128);
129            Hirvio.Elamat = 3;
130            Hirvio.Shape = Shape.Rectangle;
131            Hirvio.Color = Color.Black;
132            Hirvio.Mass = 1000;
133            Hirvio.MaxVelocity = 0;
134            Hirvio.MaxAngularVelocity = 0;
135            Hirvio.Tag = "Enimy";
136        }
137        else
138        {
139            //giant
140            Hirvio = new mob(150, 200);
141            Hirvio.Elamat = 3;
142            Hirvio.Shape = Shape.Rectangle;
143            Hirvio.Color = Color.Blue;
144            Hirvio.Mass = 1000;
145            Hirvio.MaxVelocity = 0;
146            Hirvio.MaxAngularVelocity = 0;
147            Hirvio.Tag = "Enimy";
148
149        }
150
151        Hirvio.ElamaLaskuri.LowerLimit += delegate 
152        { 
153            vihujenMaara--;
154            if (vihujenMaara == 0)
155            { kenttaNro++; SeuraavaKentta(); }
156        };
157       
158        Hirvio.Position = paikka;
159        Hirvio.Y -= 20 - Hirvio.Height * 0.5;
160        Add(Hirvio);
161        vihujenMaara++;
162
163
164
165    }
166    void LisaaLattia(Vector paikka, Double leveys, Double korkeus)
167    {
168        PhysicsObject lattia = PhysicsObject.CreateStaticObject(leveys, korkeus);
169        lattia.Position = paikka;
170        lattia.Color = Color.Brown;
171        lattia.Image = tiiliskivi;
172        Add(lattia);
173
174
175    }
176
177    void LisaaKallio(Vector paikka, Double leveys, Double korkeus)
178    {
179        PhysicsObject kallio = PhysicsObject.CreateStaticObject(leveys, korkeus);
180        kallio.Position = paikka;
181        kallio.Color = Color.HotPink;
182        Add(kallio);
183    }
184
185    void LuoBossi(Vector paikka, Double leveys, double korkeus)
186    {
187        mob Boss = new mob(150, 150);
188        Boss.Position = paikka;
189        Boss.Elamat = 75;
190        Boss.Shape = Shape.Rectangle;
191        Boss.Color = Color.Pink;
192        Boss.Y -= 20 - Boss.Height * 0.5;
193       
194        Boss.MaxAngularVelocity = 0;
195        Boss.MaxVelocity = 1000;
196
197        Boss.Tag = "Boss";
198        Boss.Tag = "Enimy";
199
200
201        Add(Boss);
202
203       
204
205        FollowerBrain seuraajaAivo = new FollowerBrain(pelaaja);
206        seuraajaAivo.Speed = 100;
207
208        Boss.Brain = seuraajaAivo;
209        seuraajaAivo.StopWhenTargetClose = true;
210        seuraajaAivo.Active = true;
211
212       
213     
214   
215}
216    void LuoPelaaja(Vector paikka, Double leveys, Double korkeus)
217    {
218        pelaaja = new PlatformCharacter(40, 120);
219        pelaaja.Position = paikka;
220        pelaaja.Y -= 20 - pelaaja.Height * 0.5;
221        //pelaaja.Elamat = 3;
222        pelaaja.Color = Color.Black;
223
224        elamaLaskuri.LowerLimit += delegate { pelaaja.Destroy(); };
225
226        ProgressBar elamaPalkki = new ProgressBar(150, 20);
227        elamaPalkki.X = Screen.Left + 150;
228        elamaPalkki.Y = Screen.Top - 20;
229        elamaPalkki.BindTo(elamaLaskuri);
230        Add(elamaPalkki);
231
232        Add(pelaaja);
233
234        pelaaja.MaxAngularVelocity = 0;
235        pelaaja.MaxVelocity = 500;
236
237
238        AddCollisionHandler(pelaaja, "Enimy", PelaajaOsui);
239        AddCollisionHandler(pelaaja, "Boss", PelaajaOsuiBossiin);
240
241    }
242    void PelaajaOsui(PhysicsObject pelaaja, PhysicsObject kohde)
243    {
244        elamaLaskuri.Value -= RandomGen.SelectOne(1, 2, 3, 4);
245
246    }
247    void PelaajaOsuiBossiin(PhysicsObject pelaaja, PhysicsObject kohdde)
248    {
249        elamaLaskuri.Value -= RandomGen.SelectOne(2, 3, 5, 7, 9);
250   
251    }
252
253    void IskeMiekalla()
254    {
255        if (!miekkaEsille)
256        {
257            miekkaEsille = true;
258            miekka = new PhysicsObject(70, 64);
259            miekka.X = pelaaja.X + pelaaja.Width / 2;
260            miekka.Image = miekkaKuva;
261            miekka.IgnoresCollisionResponse = true;
262            miekka.IgnoresGravity = true;
263            miekka.Y = pelaaja.Y;
264            Add(miekka);
265            Timer.SingleShot(1, delegate { miekka.Destroy(); miekkaEsille = false; });
266
267            AddCollisionHandler(miekka, "Enimy", vahingoitaVihollista);
268
269            Timer MiekanLiikutus = new Timer();
270            MiekanLiikutus.Interval = 0.01;
271            MiekanLiikutus.Timeout += delegate { miekka.Position = pelaaja.Position + pelaaja.FacingDirection.GetVector() * 33; };
272            MiekanLiikutus.Start();
273
274
275           
276
277           
278        }
279    }
280    void vahingoitaVihollista(PhysicsObject miekka, PhysicsObject vihollinen)
281    {
282        mob vihu = vihollinen as mob;
283        int pudotus = RandomGen.NextInt(10);
284        vihu.ElamaLaskuri.Value -= pudotus;
285    }
286}
Note: See TracBrowser for help on using the repository browser.