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

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