source: 2010/27/julkivim/CCCP/FysiikkaPeli1/Peli.cs @ 1236

Revision 1236, 6.8 KB checked in by julkivim, 10 years ago (diff)
Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5
6public class Peli : PhysicsGame
7{
8    const int ruudunLeveys = 25;
9    const int ruudunKorkeus = 25;
10    LaserGun pyssy2;
11    AssaultRifle pyssy;
12    LaserGun Vihollisenpyssy;
13    PhysicsObject kissa;
14    PhysicsObject Vihollinen;
15
16    protected override void Begin()
17    {
18        MediaPlayer.Play("a");
19        MediaPlayer.Volume = 1.0;
20        LuoKentta();
21        Gravity = new Vector(0.0, -1000.0);
22        ABC();
23        LuoVihollinen();
24
25        Timer ajastin = new Timer();
26        ajastin.Interval = 0.1;
27        ajastin.Trigger += ListenLiiketta;
28        ajastin.Start();
29        Add(ajastin);
30
31       
32        ControllerOne.Vibrate(1.0, 1.0, 1.0, 1.0, .5);
33    }
34
35   
36
37    void LuoKentta()
38    {
39        TileMap ruudut = TileMap.FromFile("kentta.txt");
40        ruudut['='] = LuoPalikka;
41        ruudut['1'] = LuoStaattinenVihollinen;
42        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
43        Level.BackgroundColor = Color.White;
44        Camera.Follow(kissa);
45        kissa = new PhysicsObject(40, 20);
46        kissa.Shape = Shapes.Rectangle;
47        kissa.Mass = 10.0;
48        Add(kissa);
49
50    }
51
52    PhysicsObject LuoPalikka()
53    {
54        PhysicsObject palikka = PhysicsObject.CreateStaticObject(25.0, 25.0, Shapes.Rectangle);
55        Add(palikka);
56        palikka.Color = Color.Black;
57
58        return palikka;
59    }
60
61    PhysicsObject LuoStaattinenVihollinen()
62    {
63        PhysicsObject vihulainen = new PhysicsObject(20,40,Shapes.Rectangle,CollisionShapeQuality.FromValue(0.3));
64        Add(vihulainen);
65        return vihulainen;
66    }
67
68    void ABC()
69    {
70        kissa = new PhysicsObject(20, 40, Shapes.Rectangle, CollisionShapeQuality.FromValue(1.0));
71        kissa.Tag = "pelaaja";
72        kissa.Angle = Angle.Degrees(0);
73        Add(kissa);
74        pyssy = new AssaultRifle(10, 10);
75        Vihollisenpyssy = new LaserGun(10, 10);
76        pyssy2 = new LaserGun(10, 10);
77        pyssy.BulletCollision = ammusOsuu;
78        Vihollisenpyssy.LaserCollision = ammusOsuu;
79        pyssy2.LaserCollision = ammusOsuu;
80        kissa.Image = LoadImage("longcat");
81        pyssy2.TimeBetweenUse = TimeSpan.FromMilliseconds(100);
82        kissa.Add(pyssy);
83        kissa.Add(pyssy2);
84        kissa.CanRotate = false;
85        kissa.StaticFriction = 0.0;
86        kissa.Color = Color.Black;
87        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-1000, 0));
88        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, new Vector(1000, 0));
89        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 1000));
90        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -1000));
91        Mouse.Listen(MouseButton.Left, ButtonState.Down, ammuAseella, "ammu");
92        Mouse.Listen(MouseButton.Right, ButtonState.Down, ammuAseella2, "ammu");
93        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-1000, 0));
94        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, LiikutaPelaajaa, null, new Vector(1000, 0));
95        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 1000));
96        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -1000));
97        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.1, LiikutaPelaajaa, "Liikuta pelaajaa tattia pyörittämällä.");
98        ControllerOne.Listen(Button.A, ButtonState.Down, ammuAseella, "ammu");
99
100        Mouse.IsCursorVisible = true;
101        Mouse.ListenMovement(0.1, KuunteleLiiketta, null);
102
103    }
104    void ammuAseella()
105    {
106
107        PhysicsObject ammus = pyssy.Shoot();
108        if (ammus != null)
109        {
110            ammus.Tag = "ammus";
111            ammus.IgnoresCollisionResponse = true;
112            ammus.IgnoresExplosions = true;
113            ammus.Size = new Vector(6.5, 2.0);
114            ammus.Image = LoadImage("bullet");
115            ammus.IgnoresGravity = true;
116
117            //ammus.Hit(new Vector(200, 0));
118            //Add(ammus);
119        }
120
121
122    }
123
124    void ammuAseella2()
125    {
126        PhysicsObject ammus = pyssy2.Shoot();
127        if (ammus != null)
128        {
129            ammus.Tag = "ammus";
130            ammus.IgnoresCollisionResponse = true;
131            ammus.IgnoresExplosions = true;
132            ammus.Size = new Vector(80, 20);
133            ammus.MaximumLifetime = TimeSpan.FromMinutes(1);
134            ammus.IgnoresGravity = true;
135
136            //ammus.Hit(new Vector(200, 0));
137            //Add(ammus);
138        }
139    }
140    void LiikutaPelaajaa(Vector vektori)
141    {
142        kissa.Push(vektori);
143        Vector tatinAsento = ControllerOne.LeftThumbDirection;
144    }
145
146    void KuunteleLiiketta(AnalogState hiirenTila)
147    {
148        Vector suunta = Mouse.PositionOnWorld - pyssy.AbsolutePosition;
149        pyssy.Angle = suunta.Angle;
150        pyssy2.Angle = suunta.Angle;
151    }
152
153    void ListenLiiketta(Timer sender)
154    {
155        Vector suunta = kissa.Position - Vihollisenpyssy.AbsolutePosition;
156        Vihollisenpyssy.Angle = suunta.Angle;
157       
158        PhysicsObject ammus = Vihollisenpyssy.Shoot();
159        if (ammus != null)
160        {
161            ammus.Tag = Vihollinen;
162            ammus.Size = new Vector(8.0, 2.0);
163            ammus.MaximumLifetime = TimeSpan.FromMinutes(1);
164            ammus.IgnoresGravity = true;
165       
166        }
167       
168    }
169    void KuunteleLiiketta()
170    {
171        Vector suunta = kissa.Position - pyssy.AbsolutePosition;
172        pyssy.Angle = suunta.Angle;
173        pyssy2.Angle = suunta.Angle;
174    }
175
176    void ammusOsuu(PhysicsObject ammus, PhysicsObject toinen)
177    {
178        if (toinen.Tag.ToString() != "pelaaja" && toinen.Tag.ToString() != "ammus" && ammus.Tag != toinen)
179        {
180            ammus.Destroy();
181            Explosion rajahdys = new Explosion(40);
182            rajahdys.Position = ammus.Position;
183            Add(rajahdys);
184        }
185    }
186    void LiikutaPelaajaa(AnalogState tatinTila)
187    {
188        Vector tatinAsento = tatinTila.StateVector;
189
190        kissa.Push(tatinAsento * 1500);
191    }
192    PhysicsObject LuoVihollinen()
193    {
194        Vihollinen = new PhysicsObject(20.0, 40.0);
195        Vihollinen.Tag = "Vihollinen";
196        Vihollinen.Angle = Angle.Degrees(0);
197        Vihollinen.Color = Color.Black;
198        Vihollinen.Image = LoadImage("EFG");
199        Vihollinen.CanRotate = false;
200        Vihollinen.Add(Vihollisenpyssy);
201
202        FollowerBrain vihunAivot = new FollowerBrain(kissa);
203        vihunAivot.Active = true;
204        vihunAivot.Owner = Vihollinen;
205        vihunAivot.MovingSpeed = 140;
206
207        Vihollinen.Brain = vihunAivot;
208       
209        Add(Vihollinen);
210        return Vihollinen;
211    }
212}
Note: See TracBrowser for help on using the repository browser.