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

Revision 6241, 6.3 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(3, 0, 3);
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    PlatformCharacter pelaaja;
29    PhysicsObject miekka;
30
31    private IntMeter elamaLaskuri = new IntMeter(10, 0, 10);
32
33    int kenttaNro = 1;
34
35    bool miekkaEsille = false;
36    int vihujenMaara = 0;
37
38    public override void Begin()
39    {
40
41       
42        LuoKentta();
43        //SeuraavaKentta();
44
45       
46
47    }
48    void SeuraavaKentta()
49{
50    ClearAll();
51    if (kenttaNro > 6)
52    { MessageDisplay.Add("voitit pelin"); }
53    else { LuoKentta(); }
54 
55   
56}
57    void LuoKentta()
58    {
59        miekkaEsille = false;
60
61        TileMap ruudut = TileMap.FromLevelAsset("kentta" + kenttaNro );
62
63        ruudut.SetTileMethod('=', LuoHirvio);
64        ruudut.SetTileMethod('*', LisaaLattia);
65        ruudut.SetTileMethod('P', LuoPelaaja);
66        ruudut.Execute(40, 40);
67
68        Gravity = new Vector(0.0, -1000);
69
70        Level.CreateBorders();
71        asetaNappaimet();
72
73        Mouse.IsCursorVisible = true;
74
75        Camera.ZoomToLevel();
76    }
77
78    void asetaNappaimet()
79    {
80
81        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
82        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-500, 0));
83        Keyboard.Listen(Key.Left, ButtonState.Released, PysaytaPelaaja, null, new Vector());
84        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, new Vector(500, 0));
85        Keyboard.Listen(Key.Right, ButtonState.Released, PysaytaPelaaja, null, new Vector());
86        Keyboard.Listen(Key.A, ButtonState.Pressed, IskeMiekalla, null);
87        //Keyboard.Listen(Key.A, ButtonState.Released, TuhoaMiekka, null);
88
89    }
90    void LiikutaPelaajaa(Vector vektori)
91    {
92        pelaaja.Walk(vektori.X);
93    }
94    void PysaytaPelaaja(Vector vektori)
95    {
96        pelaaja.Velocity = new Vector(0, 0);
97    }
98
99    void LuoHirvio(Vector paikka, double leveys, double korkeus)
100    {
101        //mob Hirvio = RandomGen.SelectOne(orc, darkKnight, giant);
102        mob Hirvio = new mob(20, 20);
103        int arvonta = RandomGen.NextInt(3);
104
105        if (arvonta == 1)
106        {
107            //orc
108            Hirvio = new mob(80.0, 80.0);
109
110            Hirvio.Elamat = 3;
111            Hirvio.Shape = Shape.Rectangle;
112            Hirvio.Color = Color.Yellow;
113            Hirvio.Mass = 1000;
114            Hirvio.MaxVelocity = 0;
115            Hirvio.MaxAngularVelocity = 0;
116            Hirvio.Tag = "Enimy";
117
118
119        }
120        else if (arvonta == 2)
121        {
122            //darkKnight
123            Hirvio = new mob(40, 120);
124            Hirvio.Elamat = 3;
125            Hirvio.Shape = Shape.Rectangle;
126            Hirvio.Color = Color.Black;
127            Hirvio.Mass = 1000;
128            Hirvio.MaxVelocity = 0;
129            Hirvio.MaxAngularVelocity = 0;
130            Hirvio.Tag = "Enimy";
131        }
132        else
133        {
134            //giant
135            Hirvio = new mob(150, 200);
136            Hirvio.Elamat = 3;
137            Hirvio.Shape = Shape.Rectangle;
138            Hirvio.Color = Color.Blue;
139            Hirvio.Mass = 1000;
140            Hirvio.MaxVelocity = 0;
141            Hirvio.MaxAngularVelocity = 0;
142            Hirvio.Tag = "Enimy";
143
144        }
145
146        Hirvio.ElamaLaskuri.LowerLimit += delegate 
147        { 
148            vihujenMaara--;
149            if (vihujenMaara == 0)
150            { kenttaNro++; SeuraavaKentta(); }
151        };
152       
153        Hirvio.Position = paikka;
154        Hirvio.Y -= 20 - Hirvio.Height * 0.5;
155        Add(Hirvio);
156        vihujenMaara++;
157
158
159
160    }
161    void LisaaLattia(Vector paikka, Double leveys, Double korkeus)
162    {
163        PhysicsObject lattia = PhysicsObject.CreateStaticObject(leveys, korkeus);
164        lattia.Position = paikka;
165        lattia.Color = Color.Brown;
166        lattia.Image = tiiliskivi;
167        Add(lattia);
168
169
170    }
171    void LuoPelaaja(Vector paikka, Double leveys, Double korkeus)
172    {
173        pelaaja = new PlatformCharacter(40, 120);
174        pelaaja.Position = paikka;
175        pelaaja.Y -= 20 - pelaaja.Height * 0.5;
176        //pelaaja.Elamat = 3;
177        pelaaja.Color = Color.Black;
178
179        elamaLaskuri.LowerLimit += delegate { pelaaja.Destroy(); };
180
181        ProgressBar elamaPalkki = new ProgressBar(150, 20);
182        elamaPalkki.X = Screen.Left + 150;
183        elamaPalkki.Y = Screen.Top - 20;
184        elamaPalkki.BindTo(elamaLaskuri);
185        Add(elamaPalkki);
186
187        Add(pelaaja);
188
189        pelaaja.MaxAngularVelocity = 0;
190        pelaaja.MaxVelocity = 500;
191
192
193        AddCollisionHandler(pelaaja, "Enimy", PelaajaOsui);
194
195    }
196    void PelaajaOsui(PhysicsObject pelaaja, PhysicsObject kohde)
197    {
198        elamaLaskuri.Value -= RandomGen.SelectOne(1, 2, 3, 4);
199
200
201    }
202    void IskeMiekalla()
203    {
204        if (!miekkaEsille)
205        {
206            miekkaEsille = true;
207            miekka = new PhysicsObject(70, 20);
208            miekka.X = pelaaja.X + pelaaja.Width / 2;
209            miekka.IgnoresCollisionResponse = true;
210            miekka.IgnoresGravity = true;
211            miekka.Y = pelaaja.Y;
212            Add(miekka);
213            Timer.SingleShot(1, delegate { miekka.Destroy(); miekkaEsille = false; });
214
215            AddCollisionHandler(miekka, "Enimy", vahingoitaVihollista);
216
217            Timer MiekanLiikutus = new Timer();
218            MiekanLiikutus.Interval = 0.01;
219            MiekanLiikutus.Timeout += delegate { miekka.Position = pelaaja.Position + pelaaja.FacingDirection.GetVector() * 33; };
220            MiekanLiikutus.Start();
221
222
223           
224
225           
226        }
227    }
228    void vahingoitaVihollista(PhysicsObject miekka, PhysicsObject vihollinen)
229    {
230        mob vihu = vihollinen as mob;
231        int pudotus = RandomGen.NextInt(5);
232        vihu.ElamaLaskuri.Value -= pudotus;
233    }
234}
Note: See TracBrowser for help on using the repository browser.