source: 2013/30/SenkoL/FysiikkaPeli1/FysiikkaPeli1/FysiikkaPeli1/FysiikkaPeli1.cs @ 4736

Revision 4736, 7.8 KB checked in by seleung, 6 years ago (diff)

Talletus.

RevLine 
[4578]1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class FysiikkaPeli1 : PhysicsGame
10{
11    Image pelaajankuva = LoadImage("pelaaja");
12    Image vihollisenkuva= LoadImage("vihollinen");
[4636]13    PhysicsObject pelaaja;
14    PhysicsObject vihollinen;
15    AssaultRifle pelaajan1ase;
16    IntMeter pisteLaskuri;
[4663]17    IntMeter zombienMaara;
18   
19
[4578]20    public override void Begin()
21    {
[4663]22        MediaPlayer.Play("taustamusiikki");
[4668]23        MediaPlayer.IsRepeating = true;
[4663]24        bool test = MediaPlayer.IsPlaying;
25        MultiSelectWindow valikko = new MultiSelectWindow("Dungeon Survive","Start Game", "End Game");
26        valikko.AddItemHandler(0, aloitaalusta);
27        valikko.AddItemHandler(1, Exit);
28        valikko.Color = Color.Gray;
29        Level.BackgroundColor = Color.DarkGray;
30        Add(valikko);
31       
32    }
[4636]33
[4578]34    void luokentta()
35    {
36        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("luokentta");
[4668]37        ruudut.SetTileMethod("00FF21", valiseina);
[4663]38        ruudut.SetTileMethod("000000", luotaso);
[4578]39        ruudut.SetTileMethod("0026FF", luopelaaja);
[4636]40        ruudut.SetTileMethod("FF0000", lisaavihollinen);
[4668]41        ruudut.Optimize(Color.FromHexCode("00FF21"));
[4578]42        ruudut.Execute(20, 20);
[4668]43        Level.BackgroundColor = Color.DarkGray;
[4636]44       
[4578]45    }
[4668]46    void valiseina(Vector paikka, double leveys, double korkeus)
47    {
48        GameObject taso = new GameObject(leveys, korkeus);
49        taso.Color = Color.DarkBrown;
50        taso.Position = paikka;
51        Add(taso);
52    }
[4636]53    void lisaavihollinen(Vector paikka, double leveys, double korkeus)
54    {
55        luovihollinen(paikka, leveys, korkeus);
56        Timer ajastin = new Timer();
57        ajastin.Interval = RandomGen.NextInt(5, 60);
58        ajastin.Timeout += delegate { luovihollinen(paikka, leveys, korkeus);};
59        ajastin.Start();
60
61
62    }
[4578]63    void luotaso(Vector paikka, double leveys, double korkeus)
64    {
65        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
[4636]66        taso.Restitution = 0.0;
[4668]67        taso.Color = Color.Black;
[4578]68        taso.Position = paikka;
69        Add(taso);
70    }
71    void luopelaaja(Vector paikka, double leveys, double korkeus)
72    {
[4636]73        pelaaja = new PhysicsObject(leveys, korkeus);
74        pelaaja.Restitution = 0.0;
75        pelaaja.LinearDamping = 0.9;
[4578]76        pelaaja.Position = paikka;
[4636]77        pelaaja.CanRotate = false;
78        pelaaja.CollisionIgnoreGroup = 2;
[4578]79        pelaaja.Image = pelaajankuva;
[4636]80        pelaaja.Tag = "player";
[4578]81        Add(pelaaja);
[4636]82        pelaajan1ase = new AssaultRifle(30, 10);
83        pelaajan1ase.ProjectileCollision = CollisionHandler.DestroyObject;
[4663]84        pelaajan1ase.InfiniteAmmo = false;
[4636]85        Add(pelaajan1ase);
[4663]86        AddCollisionHandler(pelaaja, "pahis", pelaajaosuu);
[4636]87        pelaajan1ase.Ammo.LowerLimit += delegate { AloitaLataus(pelaajan1ase); };
[4704]88        Level.AmbientLight = 0.3;
89
90        Light valo = new Light();
[4736]91        valo.Intensity = 0.3;
[4704]92        valo.Distance = 100;
93        valo.Position = pelaaja.Position;
94        Add(valo);
[4636]95       
96
97        //pelaaja.Add(pelaajan1ase);
98        //pelaajan1ase.Position += new Vector(0, 7);
99        //Mouse.ListenMovement(0.1, Tahtaa, "Tähtää aseella");
[4663]100        Mouse.Listen(MouseButton.Left, ButtonState.Down, ammuaseella,"Shoot",pelaajan1ase);
101        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Help");
102        Keyboard.Listen(Key.A, ButtonState.Down, liikutapelaaja, "Left", new Vector(-500, 0));
103        Keyboard.Listen(Key.D, ButtonState.Down, liikutapelaaja, "Right", new Vector(500, 0));
104        Keyboard.Listen(Key.W, ButtonState.Down, liikutapelaaja, "Up", new Vector(0, 500));
105        Keyboard.Listen(Key.S, ButtonState.Down, liikutapelaaja, "Down", new Vector(0, -500));
[4636]106
[4578]107    }
[4663]108    void pelaajaosuu(PhysicsObject pelaaja, PhysicsObject kohde)
109{
110    pelaaja.Destroy();
111    pelaajan1ase.Destroy();
112    Label tekstikentta = new Label("YOU LOSE");
113    tekstikentta.Color =Color.BlueGray;
114    Add(tekstikentta);
115    Timer.SingleShot(3,Begin);
116}
117    void aloitaalusta()
118    {
119        ClearAll();
120        Mouse.IsCursorVisible = true;
121        zombienMaara = new IntMeter(0, 0, 60);
122        luokentta();
123        LuoPistelaskuri();
[4636]124
[4663]125
126        Camera.ZoomFactor=2.5;
127        Camera.Follow(pelaaja);
128
129        // TODO: Kirjoita ohjelmakoodisi tähän
130
131        PhoneBackButton.Listen(ConfirmExit, "End Game");
132        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "End Game");
133    }
[4636]134    void AloitaLataus(AssaultRifle ase)
135    {
136        Timer ajastin = new Timer();
137        ajastin.Interval = 10;
138        ajastin.Timeout += delegate { ase.Ammo.Value = 100; };
139        ajastin.Start(1);
140    }
141
142
143
144    protected override void Update(Time time)
145    {
146        if (pelaaja != null && pelaajan1ase != null)
147        {
148            Vector suunta = (Mouse.PositionOnWorld - pelaaja.AbsolutePosition).Normalize();
149            pelaajan1ase.Angle = suunta.Angle;
150            pelaajan1ase.Position = pelaaja.Position + suunta * 10;
151
152
153        }
154        base.Update(time);
155       
156    }
157
158    void ammusosui(PhysicsObject ammus, PhysicsObject kohde)
159    {
160
161        kohde.Destroy();
[4663]162        zombienMaara.Value--;
[4636]163
164    }
165    void ammuaseella(AssaultRifle ase)
166    {
167        PhysicsObject ammus = ase.Shoot();
168       
169        if (ammus != null)
170        {
171
172            ammus.CollisionIgnoreGroup = pelaaja.CollisionIgnoreGroup;
173            AddCollisionHandler(ammus, "pahis", ammusosui);
174        }
175    }
176   
177    void liikutapelaaja(Vector vektori)
178    {
179        pelaaja.Push(vektori);
180    }
[4578]181    void luovihollinen(Vector paikka, double leveys, double korkeus)
182    {
[4663]183        if (zombienMaara.Value == 60) return;
184        zombienMaara.Value++;
[4636]185        vihollinen = new PhysicsObject(leveys, korkeus);
186        vihollinen.Restitution = 0.0;
187        vihollinen.LinearDamping = 0.5;
[4578]188        vihollinen.Position = paikka;
189        vihollinen.Image = vihollisenkuva;
[4636]190        vihollinen.Tag = "pahis";
191        FollowerBrain seuraajanAivot = new FollowerBrain("player");
192        vihollinen.Brain = seuraajanAivot;
193        seuraajanAivot.Speed = 150;
194        vihollinen.Destroyed += lisaapisteita;
[4578]195        Add(vihollinen);
[4636]196
197
[4578]198    }
[4636]199    void LuoPistelaskuri()
200    {
201        pisteLaskuri = new IntMeter(0);
202
[4663]203       
204
[4636]205        Label pisteNaytto = new Label();
206        pisteNaytto.X = Screen.Left + 100;
207        pisteNaytto.Y = Screen.Top - 100;
[4663]208        pisteNaytto.TextColor = Color.White;
209        pisteNaytto.Color = Color.Brown;
[4636]210
[4663]211        Label ammusNaytto = new Label();
212        ammusNaytto.X = Screen.Right - 100;
213        ammusNaytto.Y = Screen.Top - 100;
214        ammusNaytto.TextColor = Color.White;
215        ammusNaytto.Color = Color.Brown;
216        pisteLaskuri.AddTrigger(100, TriggerDirection.Up, pisteet);
217        pisteLaskuri.AddTrigger(200, TriggerDirection.Up, pisteet1);
[4668]218        pisteLaskuri.AddTrigger(300, TriggerDirection.Up, pisteet2);
219        pisteLaskuri.AddTrigger(400, TriggerDirection.Up, pisteet3);
220        pisteLaskuri.AddTrigger(500, TriggerDirection.Up, pisteet4);
[4663]221       
[4636]222        pisteNaytto.BindTo(pisteLaskuri);
[4663]223        ammusNaytto.BindTo(pelaajan1ase.Ammo);
[4636]224        Add(pisteNaytto);
[4663]225        Add(ammusNaytto);
[4636]226    }
[4663]227    void pisteet()
228    {
229        MessageDisplay.Add("OVER HUNDREAD");
230    }
231    void pisteet1()
232    {
233        MessageDisplay.Add("OVER TWO HUNDREAD");
234    }
235    void pisteet2()
236    {
[4668]237        MessageDisplay.Add("OVER THREE HUNDREAD");
[4663]238    }
239    void pisteet3()
240    {
[4668]241        MessageDisplay.Add("OVER FOUR HUNDREAD");
[4663]242    }
243    void pisteet4()
244    {
[4668]245        MessageDisplay.Add("OVER FIVE HUNDREAD");
[4663]246    }
247   
[4636]248    void lisaapisteita()
249    {
250        pisteLaskuri.Value += 1;
251    }
252
253   
[4578]254}
Note: See TracBrowser for help on using the repository browser.