source: 2016/30/PyryS/Peli/Peli/Peli/Peli.cs @ 8171

Revision 8171, 5.0 KB checked in by pybesilt, 3 years ago (diff)

tein pelaajalle kontrollit ja viholliselle tekoälyn, jonka avulla se osaa ampua

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Peli : PhysicsGame
10{
11
12    Vector nopeusYlos = new Vector(0, 50000);
13    Vector nopeusAlas = new Vector(0, -50000);
14    Vector nopeusOikeaan = new Vector(50000, 0);
15    Vector nopeusVasempaan = new Vector(-50000, 0);
16
17    AssaultRifle vihu1Laser;
18    AssaultRifle pelaajanAse;
19
20    PhysicsObject wihu;
21    PhysicsObject vihu;
22    PhysicsObject pelaaja;
23    PhysicsObject oikeareuna;
24    PhysicsObject vasenreuna;
25   
26    public override void Begin()
27    {
28
29       
30        Leveli();
31        Ohjaimet();
32       
33
34
35        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
36        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
37    }
38
39    void LuoVihollinen(double x, double y)
40    {
41        Vihollinen vihu1 = new Vihollinen(40.0, 40.0); 
42        vihu1.X = x;
43        vihu1.Y = y;
44        //vihu1.CollisionIgnoreGroup = 1;
45        Add(vihu1);
46
47    //AddCollisionHandler(vihu1, "joku", VihuunOsuu);
48        vihu1Laser = new AssaultRifle(30, 10);
49        vihu1Laser.InfiniteAmmo = true;
50        vihu1Laser.ProjectileCollision = VihuOsuu;
51        vihu1.Add(vihu1Laser);
52
53        Timer ammusajastin = new Timer();
54        ammusajastin.Interval = 1.5;
55        ammusajastin.Timeout += V1LaserAmpuu;
56        ammusajastin.Start();
57       
58
59
60         
61}
62    void Leveli()
63    {
64
65        pelaaja = new PhysicsObject(40.0, 40.0);
66        pelaaja.Shape = Shape.Triangle;
67        pelaaja.X = 0.0;
68        pelaaja.Y = -300;
69        pelaaja.CollisionIgnoreGroup = 1;
70        pelaaja.KineticFriction = 0;
71        pelaaja.StaticFriction = 0;
72        pelaaja.MaxVelocity = 1.0;
73        pelaaja.CanRotate = false;
74        Add(pelaaja);
75
76        PelaanjaAse();
77
78
79        oikeareuna = Level.CreateRightBorder();
80        vasenreuna = Level.CreateLeftBorder();
81        oikeareuna.Restitution = 0.0;
82        vasenreuna.Restitution = 0.0;
83           
84        vihu = new Vihollinen(50.0, 50.0);
85        wihu = new Vihollinen(-50, -50);
86       
87
88
89    }
90
91    void Ohjaimet()
92    {
93        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null,  pelaaja, nopeusVasempaan);
94        Keyboard.Listen(Key.Left, ButtonState.Released, LiikutaPelaajaa, null, pelaaja, Vector.Zero);
95        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, pelaaja, nopeusOikeaan);
96        Keyboard.Listen(Key.Right, ButtonState.Released, LiikutaPelaajaa, null, pelaaja, Vector.Zero);
97        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, null, pelaaja, nopeusAlas);
98        Keyboard.Listen(Key.Down, ButtonState.Released, LiikutaPelaajaa, null, pelaaja, Vector.Zero);
99        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, pelaaja, nopeusYlos);
100        Keyboard.Listen(Key.Up, ButtonState.Released, LiikutaPelaajaa, null, pelaaja, Vector.Zero);
101        Keyboard.Listen(Key.Z, ButtonState.Down, PelaajaAmpuu, null, pelaajanAse);
102
103    }
104
105    void LiikutaPelaajaa(PhysicsObject pelaaja, Vector nopeus)
106    {
107        pelaaja.Push(nopeus);
108    }
109   
110    void VihuOsuu(PhysicsObject laser, PhysicsObject kohde)
111    {
112        laser.Destroy();
113        if (kohde == pelaaja)
114        {
115            kohde.Destroy();
116        }
117    }
118
119    void PelaanjaAse ()
120    {
121        pelaajanAse = new AssaultRifle(30, 10);
122        pelaajanAse.InfiniteAmmo = true;
123        //pelaajanAse.ProjectileCollision = PelaajaaOsuu;
124        pelaajanAse.Angle = Angle.FromDegrees(90);
125        pelaajanAse.Image = null;
126        pelaaja.Add(pelaajanAse);
127    }
128
129    void V1LaserAmpuu ()
130    {
131        PhysicsObject laser = vihu1Laser.Shoot();
132       
133        if (laser != null)
134        {
135            Vector vihuAmpumisSuunta = (pelaaja.Position - vihu.Position).Normalize();
136            laser.Velocity = vihuAmpumisSuunta * 300;
137            laser.Angle = vihuAmpumisSuunta.Angle;
138            laser.CollisionIgnoreGroup = 2;
139        }
140    }
141
142    void PelaajaAmpuu (AssaultRifle pelaajanAse)
143    {
144        PhysicsObject pelaajanammus = pelaajanAse.Shoot();
145
146        if(pelaajanammus != null)
147        {
148            pelaajanammus.Size *= 3;
149            //pelaajanammus.Tag = "joku";
150            pelaajanammus.CollisionIgnoreGroup = 2;
151        }
152       
153    }
154
155    void PelaajaaOsuu (PhysicsObject luoti, PhysicsObject kohde)
156    {
157        luoti.Destroy();
158        if (kohde == vihu)
159        {
160            kohde.Destroy();
161           
162        }
163    }
164    /*void VihuunOsuu (PhysicsObject vihu, PhysicsObject ammus)
165    {
166        vihu.Destroy();
167        ammus.Destroy();
168
169    }*/
170
171}
172class Vihollinen : PhysicsObject
173{
174    private IntMeter elamaLaskuri = new IntMeter(3, 0, 3);
175    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
176
177    public Vihollinen(double leveys, double korkeus)
178        : base(40, 40)
179    {
180        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
181    }
182
183
184}
185
Note: See TracBrowser for help on using the repository browser.