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

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