source: 2015/30/MarkusS/git_gud_the_game/git_gud_the_game/git_gud_the_game/git_gud_the_game.cs @ 6908

Revision 6908, 7.9 KB checked in by masorval, 7 years ago (diff)

.me FALKMHT#JKLUMK

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9
10public class Pelaaja : PhysicsObject
11{
12    public AssaultRifle ase;
13    private IntMeter elamaLaskuri = new IntMeter(3, 0, 3);
14    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
15
16    public Pelaaja(Image pelaajanKuva) : base(pelaajanKuva)
17    {
18        this.KineticFriction = 1.0;
19        this.LinearDamping = 0.9;
20       
21       
22        this.ase = new AssaultRifle(100, 100);
23        //((git_gud_the_game)Game.Instance).Add(this.ase);
24
25        //this.ase.Image = null;
26        //this.ase.Color = Color.Transparent;
27        //Timer aseenPaikka = new Timer();
28        //aseenPaikka.Interval = 0.01;
29        //aseenPaikka.Timeout += delegate
30        //{
31        //    this.ase.Position = this.Position;
32        //};
33       
34        //aseenPaikka.Start();
35        this.Add(this.ase);
36
37        ase.FireRate = 1;
38        ase.CanHitOwner = false;
39        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
40
41    }
42}
43
44public class Vihollinen : PhysicsObject
45{
46    public AssaultRifle ase;
47    private IntMeter elamaLaskuri = new IntMeter(3, 0, 3);
48    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
49
50    public Vihollinen(Image vihollisenKuva)
51        : base(vihollisenKuva)
52    {
53        this.KineticFriction = 1.0;
54        this.LinearDamping = 0.9;
55
56
57        this.ase = new AssaultRifle(100, 100);
58        //((git_gud_the_game)Game.Instance).Add(this.ase);
59
60        //this.ase.Image = null;
61        //this.ase.Color = Color.Transparent;
62        //Timer aseenPaikka = new Timer();
63        //aseenPaikka.Interval = 0.01;
64        //aseenPaikka.Timeout += delegate
65        //{
66        //    this.ase.Position = this.Position;
67        //};
68
69        //aseenPaikka.Start();
70        this.Add(this.ase);
71
72        ase.FireRate = 1;
73        ase.CanHitOwner = false;
74        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
75
76    }
77}
78
79public class git_gud_the_game : PhysicsGame
80{
81    Pelaaja pelaaja2;
82    Pelaaja pelaaja1;
83    Image pelaajanKuva = LoadImage("pelaajankuva");
84    Image SeinanKuva = LoadImage("Seina");
85    Image vihollisenKuva = LoadImage("vihollisenKuva");
86    Image taustaKuva = LoadImage("Tausta");
87    public override void Begin()
88    {
89        // TODO: Kirjoita ohjelmakoodisi tähän
90        LuoKentta();
91       
92        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
93        PelinControllit();
94
95
96    }
97    void LuoKentta()
98    {
99        Level.Background.Image = taustaKuva;
100        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kentta1");
101        ruudut.SetTileMethod(Color.Cyan, LuoPelaaja1);
102        ruudut.SetTileMethod(Color.Gold, LuoPelaaja2);
103        ruudut.SetTileMethod(Color.Black, LuoSeinä);
104        ruudut.SetTileMethod(Color.Red, LuoVihollinen);
105        ruudut.Execute(20, 20); 
106        //Camera.ZoomToLevel();
107        Camera.Follow(pelaaja1);
108       
109    }
110    void LuoPelaaja1(Vector paikka, double leveys, double korkeus)
111    {
112        pelaaja1 = new Pelaaja(pelaajanKuva);
113        pelaaja1.Position = paikka;
114        Add(pelaaja1);
115        pelaaja1.ase.Ammo.Value = 1000;
116        pelaaja1.ase.ProjectileCollision = AmmusOsui;
117        pelaaja1.CanRotate = false;
118
119        pelaaja1.AngularDamping = 0.5;
120
121        AddCollisionHandler(pelaaja1, "ammus", AmmusOsuuPelaajaan);
122        pelaaja1.Tag = "pelaaja";
123    }
124
125    void LuoPelaaja2(Vector paikka, double leveys, double korkeus)
126    {
127        pelaaja2 = new Pelaaja(pelaajanKuva);
128        pelaaja2.Position = paikka;
129        Add(pelaaja2);
130        pelaaja2.ase.Ammo.Value = 1000;
131        pelaaja2.ase.ProjectileCollision = AmmusOsui;
132
133        pelaaja2.AngularDamping = 0.5;
134
135        AddCollisionHandler(pelaaja2, "ammus", AmmusOsuuPelaajaan);
136        pelaaja1.Tag = "pelaaja";
137    }
138
139    void LuoSeinä(Vector paikka, double leveys, double korkeus)
140    {
141        PhysicsObject Seina = PhysicsObject.CreateStaticObject(leveys, korkeus);
142        Seina.Image = SeinanKuva;
143        Seina.Position = paikka;
144        Add(Seina);
145
146    }
147    void LuoVihollinen(Vector paikka, double leveys, double korkeus)
148    {
149        Vihollinen vihollinen = new Vihollinen(vihollisenKuva);
150        vihollinen.Position = paikka;
151        Add(vihollinen);
152        vihollinen.ase.Ammo.Value = 1000;
153        vihollinen.ase.ProjectileCollision = AmmusOsui;
154        FollowerBrain seuraajanAivot = new FollowerBrain("pelaaja");
155        seuraajanAivot.Speed = 300;                 // Millä nopeudella kohdetta seurataan
156        seuraajanAivot.DistanceFar = 600;           // Etäisyys jolla aletaan seurata kohdetta
157        seuraajanAivot.DistanceClose = 200;         // Etäisyys jolloin ollaan lähellä kohdetta
158        seuraajanAivot.StopWhenTargetClose = true;  // Pysähdytään kun ollaan lähellä kohdetta
159        seuraajanAivot.Active = true;
160        vihollinen.Brain = seuraajanAivot;
161
162        Timer ajastin = new Timer();
163        ajastin.Interval = 1.5;
164        ajastin.Timeout += delegate {
165            int satunnainenLuku = RandomGen.NextInt(2);
166            Pelaaja valittuPelaaja = pelaaja1;
167            if (satunnainenLuku == 0) valittuPelaaja = pelaaja1;
168            if (satunnainenLuku == 1) valittuPelaaja = pelaaja2;
169            Vector suunta = (valittuPelaaja.Position - vihollinen.ase.AbsolutePosition).Normalize();
170            vihollinen.ase.Angle = suunta.Angle;
171            PhysicsObject ammus =  vihollinen.ase.Shoot();
172            if (ammus != null)
173            {
174                ammus.Tag = "ammus";
175            }
176        };
177        ajastin.Start();
178
179        vihollinen.AngularDamping = 0.5;
180
181        AddCollisionHandler(vihollinen, "ammus", AmmusOsuuViholliseen);
182    }
183
184    void PelinControllit()
185    {
186        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.1, LiikutaPelaajaa, "", pelaaja1);
187        ControllerOne.Listen(Button.RightTrigger, ButtonState.Down, AmmuAseella, "", pelaaja1);
188        ControllerOne.ListenAnalog(AnalogControl.RightStick, 0.1, Tahtays, "", pelaaja1);
189
190        ControllerTwo.ListenAnalog(AnalogControl.LeftStick ,0.1, LiikutaPelaajaa, "", pelaaja2);
191        ControllerTwo.ListenAnalog(AnalogControl.LeftStick, 0.1, LiikutaPelaajaa, "", pelaaja2);
192        ControllerOne.Listen(Button.RightTrigger, ButtonState.Down, AmmuAseella, "", pelaaja1);
193    }
194    void LiikutaPelaajaa(AnalogState tatinTila, Pelaaja pelaaja)
195    {
196        if (tatinTila.StateVector.Angle.MainDirection == Direction.Right)
197        {
198            pelaaja.Move(new Vector(200, 0));
199        }
200        else if (tatinTila.StateVector.Angle.MainDirection == Direction.Left)
201        {
202            pelaaja.Move(new Vector(-200, 0));
203        }
204        else if (tatinTila.StateVector.Angle.MainDirection == Direction.Down)
205        {
206            pelaaja.Move(new Vector(0, -200));
207        }
208        else if (tatinTila.StateVector.Angle.MainDirection == Direction.Up)
209        {
210            pelaaja.Move(new Vector(0, 200));
211        }
212        //pelaaja.Move(Vector.FromLengthAndAngle(tatinTila.StateVector.Magnitude * 200, tatinTila.StateVector.Angle));
213    }
214    void Tahtays(AnalogState tatinTila, Pelaaja pelaaja)
215    {
216        pelaaja.ase.Angle = tatinTila.StateVector.Angle;
217    }
218    void AmmuAseella(Pelaaja pelaaja)
219    {
220        PhysicsObject ammus = pelaaja.ase.Shoot();
221        if (ammus != null)
222        {
223            ammus.Tag = "ammus";   
224        }
225       
226    }
227    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
228    {
229        ammus.Destroy();     
230    }
231    void AmmusOsuuPelaajaan(PhysicsObject pelaaja, PhysicsObject ammus)
232    {
233        ((Pelaaja)pelaaja).ElamaLaskuri.Value--;
234    }
235    void AmmusOsuuViholliseen(PhysicsObject vihu, PhysicsObject kohde)
236    {
237        ((Vihollinen)vihu).ElamaLaskuri.Value--;
238    }
239}
Note: See TracBrowser for help on using the repository browser.