source: 2012/26/EliasY/test1/test1/test1/test1.cs @ 3311

Revision 3311, 8.9 KB checked in by elalylon, 9 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class test1 : PhysicsGame
10{
11    const int ruudunLeveys = 50;
12    const int ruudunKorkeus = 50;
13    PhysicsObject pelaaja, avain;
14    AssaultRifle kivaari;
15    GameObject pimeys;
16    IntMeter pelaajanterveys;
17    Label label1;
18    public override void Begin()
19    {
20        LuoPelaaja();
21        LuoKentta();
22        Pimenna();
23        AsetaOhjaimet();
24
25        LuoNaytto(500, 450, "Terveys: ", pelaajanterveys);
26        LuoNaytto(300, 450, "Ammukset: ", kivaari.Ammo);
27
28        Camera.Follow(pelaaja);
29        Camera.ZoomFactor = 1.7;
30        /*todo:
31         * pelaaja osaksi mappia
32         * aseet
33         * vihut
34         * mapin parantelu
35         */
36    }
37
38    protected override void Update(Time time)
39    {
40        pimeys.Position = pelaaja.Position;
41        pimeys.Angle = pelaaja.Angle + Angle.FromDegrees(-90);
42        //zombi.Angle = pelaaja.Angle.Degrees;
43        base.Update(time);
44    }
45
46    void AsetaOhjaimet()
47    {
48        Keyboard.Listen(Key.W, ButtonState.Down, Liiku, null, 1);
49        Keyboard.Listen(Key.A, ButtonState.Down, Liiku, null, 2);
50        Keyboard.Listen(Key.S, ButtonState.Down, Liiku, null, 3);
51        Keyboard.Listen(Key.D, ButtonState.Down, Liiku, null, 4);
52
53        Keyboard.Listen(Key.Left, ButtonState.Down, Kaanny, null, 2.0);
54        Keyboard.Listen(Key.Right, ButtonState.Down, Kaanny, null, -2.0);
55
56        Keyboard.Listen(Key.W, ButtonState.Released, Pysayta, null, new Vector(1, 0));
57        Keyboard.Listen(Key.A, ButtonState.Released, Pysayta, null, new Vector(0, 1));
58        Keyboard.Listen(Key.S, ButtonState.Released, Pysayta, null, new Vector(1, 0));
59        Keyboard.Listen(Key.D, ButtonState.Released, Pysayta, null, new Vector(0, 1));
60
61        Keyboard.Listen(Key.Left, ButtonState.Released, LopetaKaantyminen, null);
62        Keyboard.Listen(Key.Right, ButtonState.Released, LopetaKaantyminen, null);
63
64        Keyboard.Listen(Key.Up, ButtonState.Down, Ammu, null);
65
66        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, null);
67    }
68
69    void Ammu()
70    {
71        PhysicsObject ammus = kivaari.Shoot();
72
73        if (ammus != null)
74        {
75            ammus.Position = pelaaja.Position + Vector.FromLengthAndAngle(25, pelaaja.Angle);
76            ammus.Size /= 3;
77            ammus.Mass = 30;
78            //ammus.Velocity *= 3;
79            AddCollisionHandler<PhysicsObject, Zombi>(ammus, "zombi", ViholliseenOsuu);
80            AddCollisionHandler<PhysicsObject, Zombi>(ammus, "zombi", CollisionHandler.DestroyObject);
81        }
82    }
83
84    void Kaanny(double suunta)
85    {
86        pelaaja.AngularVelocity = suunta;
87    }
88
89    void LopetaKaantyminen()
90    {
91        pelaaja.AngularVelocity = 0;
92    }
93
94    void Liiku(int nappain)
95    {
96        Vector pulssi;
97        switch (nappain)
98        {
99            case 1:
100                pulssi = Vector.FromLengthAndAngle(50, pelaaja.Angle);
101                pelaaja.Velocity = pulssi;
102                break;
103            case 2:
104                pulssi = Vector.FromLengthAndAngle(50, pelaaja.Angle + Angle.RightAngle);
105                pelaaja.Velocity = pulssi;
106                break;
107            case 3:
108                pulssi = Vector.FromLengthAndAngle(50, pelaaja.Angle - Angle.StraightAngle);
109                pelaaja.Velocity = pulssi;
110                break;
111            case 4:
112                pulssi = Vector.FromLengthAndAngle(50, pelaaja.Angle - Angle.RightAngle);
113                pelaaja.Velocity = pulssi;
114                break;
115        }
116    }
117
118    void Pysayta(Vector nopeusKerroin)
119    {
120        pelaaja.Velocity = Vector.ComponentProduct(nopeusKerroin, pelaaja.Velocity);
121    }
122
123    void LuoPelaaja()
124    {
125        pelaaja = new PhysicsObject(30, 30);
126        pelaaja.X = 550;
127        pelaaja.Y = -550;
128        pelaaja.Mass = 10;
129        pelaaja.Angle = Angle.FromDegrees(90);
130        pelaaja.MomentOfInertia = 10000;
131        Animation pelaajaanimation = new Animation(LoadImage("pelaaja_1"), LoadImage("pelaaja_2"));
132        pelaajaanimation.FPS = 5;
133        pelaaja.Animation = pelaajaanimation;
134        pelaajaanimation.Start();
135        AddCollisionHandler(pelaaja, "zombi", PelaajaanOsuu);
136        kivaari = new AssaultRifle(30, 7.5);
137        kivaari.X = 14;
138        kivaari.Image = LoadImage("ase");
139        kivaari.TimeBetweenUse = TimeSpan.FromMilliseconds(1000);
140        kivaari.Ammo.Value = 30;
141
142        pelaajanterveys = new IntMeter(5, 0, 5);
143        pelaaja.Add(kivaari);
144        Add(pelaaja);
145    }
146
147    void Pimenna()
148    {
149        pimeys = new GameObject(new Animation(LoadImage("pimeys2")));
150        pimeys.Width = 1050;
151        pimeys.Height = 1050;
152        pimeys.Position = pelaaja.Position;
153        Add(pimeys, 1);
154    }
155
156    void LuoKentta()
157    {
158        //tee konepistooli, maali
159
160        Level.BackgroundColor = Color.DarkBrown;
161        TileMap ruudut = TileMap.FromFile("kentta.txt");
162        ruudut['='] = LuoSeina;
163        ruudut['z'] = LuoZombi;
164        ruudut['a'] = LuoAmmoBox;
165        ruudut['m'] = LuoMedikit;
166        ruudut['k'] = LuoAvain;
167        ruudut['g'] = LuoPortti;
168        ruudut['s'] = LuoKonepistooli;
169        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
170
171        label1 = new Label("Ase: Kivääri");
172        label1.X = 100;
173        label1.Y = 450;
174        label1.TextColor = Color.Green;
175        label1.BorderColor = Color.Green;
176        label1.Color = Color.Black;
177        Add(label1);
178    }
179
180    PhysicsObject LuoKonepistooli()
181    {
182        PhysicsObject konepistooli = PhysicsObject.CreateStaticObject(40.0, 15.0);
183        //konepistooli.Image = LoadImage("portti");
184        AddCollisionHandler(pelaaja, konepistooli, delegate { 
185            konepistooli.Destroy();
186            kivaari.Ammo.AddValue(50);
187            kivaari.TimeBetweenUse = new TimeSpan(0,0,0,0,66);
188        });
189        return konepistooli;
190    }
191
192    PhysicsObject LuoAvain()
193    {
194        avain = PhysicsObject.CreateStaticObject(40.0, 15.0);
195        avain.Image = LoadImage("avain");
196        return avain;
197    }
198
199    PhysicsObject LuoPortti()
200    {
201        PhysicsObject portti = PhysicsObject.CreateStaticObject(100.0, 50.0);
202        portti.Image = LoadImage("portti");
203        AddCollisionHandler(pelaaja, avain, delegate { portti.Destroy(); kivaari.Ammo.AddValue(50); });
204        return portti;
205    }
206
207    PhysicsObject LuoAmmoBox()
208    {
209        PhysicsObject ammobox = PhysicsObject.CreateStaticObject(40.0, 30.0);
210        ammobox.Image = LoadImage("ammobox");
211        AddCollisionHandler(pelaaja, ammobox, delegate { ammobox.Destroy(); kivaari.Ammo.AddValue(50); });
212        return ammobox;
213    }
214
215    PhysicsObject LuoMedikit()
216    {
217        PhysicsObject medikit = PhysicsObject.CreateStaticObject(40.0, 30.0);
218        medikit.Image = LoadImage("medikit");
219        AddCollisionHandler(pelaaja, medikit, delegate { medikit.Destroy(); pelaajanterveys.Value = 5; });
220        return medikit;
221    }
222
223    PhysicsObject LuoZombi()
224    {
225        Zombi zombi = new Zombi(35.0, 35.0);
226        zombi.Tag = "zombi";
227        FollowerBrain zombinaivot = new FollowerBrain(pelaaja);
228        zombinaivot.DistanceFar = 600;
229        zombinaivot.DistanceToTarget.Changed += delegate { zombi.Angle = (zombi.Position - zombinaivot.CurrentTarget.Position).Angle - Angle.RightAngle; };
230        zombinaivot.Speed = 50;
231        zombi.Brain = zombinaivot;
232        Animation zombianimation = new Animation(LoadImage("zombi_1"), LoadImage("zombi_2"));
233        zombi.Animation = zombianimation;
234        zombianimation.FPS = 5;
235        zombianimation.Start();
236        return zombi;
237    }
238
239    PhysicsObject LuoSeina()
240    {
241        PhysicsObject seina = PhysicsObject.CreateStaticObject(50.0, 50.0);
242        seina.Image = LoadImage("seina");
243        return seina;
244    }
245
246    void PelaajaanOsuu(PhysicsObject tormaaja, PhysicsObject kohde)
247    {
248        pelaajanterveys.AddValue(-1);
249        pelaajanterveys.LowerLimit += delegate { pelaaja.Destroy(); MessageDisplay.Add("Kuolit!"); };
250    }
251
252    void ViholliseenOsuu(PhysicsObject tormaaja, Zombi kohde)
253    {
254        kohde.elamaLaskuri.Value--;
255    }
256   
257    void LuoNaytto(double x, double y, String title, IntMeter mittari)
258    {
259        Label naytto = new Label();
260        naytto.BindTo(mittari);
261        naytto.X = x;
262        naytto.Title = title;
263        naytto.Y = y;
264        naytto.TextColor = Color.Green;
265        naytto.BorderColor = Color.Green;
266        naytto.Color = Color.Black;
267        Add(naytto);
268    }
269}
270
271class Zombi : PhysicsObject
272{
273    public IntMeter elamaLaskuri = new IntMeter(3, 0, 3);
274
275    public Zombi(double leveys, double korkeus)
276        : base(leveys, korkeus)
277    {
278        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
279    }
280}
Note: See TracBrowser for help on using the repository browser.