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

Revision 1225, 6.6 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    void LuoKentta()
37    {
38        TileMap ruudut = TileMap.FromFile("kentta.txt");
39        ruudut['='] = LuoPalikka;
40        ruudut['1'] = LuoVihollinen;
41        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
42        Level.BackgroundColor = Color.White;
43        Camera.ZoomToLevel();
44        PhysicsObject kissa = new PhysicsObject(40, 20);
45        kissa.Shape = Shapes.Rectangle;
46        kissa.Mass = 10.0;
47        Add(kissa);
48
49    }
50
51    PhysicsObject LuoPalikka()
52    {
53        PhysicsObject palikka = PhysicsObject.CreateStaticObject(25.0, 25.0, Shapes.Rectangle);
54        Add(palikka);
55        palikka.Color = Color.Black;
56
57        return palikka;
58    }
59
60
61    void ABC()
62    {
63        kissa = new PhysicsObject(200, 400, Shapes.Rectangle, CollisionShapeQuality.FromValue(1.0));
64        kissa.Tag = "pelaaja";
65        kissa.Angle = Angle.Degrees(0);
66        Add(kissa);
67        pyssy = new AssaultRifle(100, 100);
68        Vihollisenpyssy = new LaserGun(100, 100);
69        pyssy2 = new LaserGun(100, 100);
70        pyssy.BulletCollision = ammusOsuu;
71        Vihollisenpyssy.LaserCollision = ammusOsuu;
72        pyssy2.LaserCollision = ammusOsuu;
73        kissa.Image = LoadImage("longcat");
74        pyssy2.TimeBetweenUse = TimeSpan.FromMilliseconds(100);
75        kissa.Add(pyssy);
76        kissa.Add(pyssy2);
77        kissa.CanRotate = false;
78        kissa.StaticFriction = 0.0;
79        kissa.Color = Color.Black;
80        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-1000, 0));
81        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, new Vector(1000, 0));
82        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 1000));
83        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -1000));
84        Mouse.Listen(MouseButton.Left, ButtonState.Down, ammuAseella, "ammu");
85        Mouse.Listen(MouseButton.Right, ButtonState.Down, ammuAseella2, "ammu");
86        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-1000, 0));
87        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, LiikutaPelaajaa, null, new Vector(1000, 0));
88        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 1000));
89        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -1000));
90        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.1, LiikutaPelaajaa, "Liikuta pelaajaa tattia pyörittämällä.");
91        ControllerOne.Listen(Button.A, ButtonState.Down, ammuAseella, "ammu");
92
93        Mouse.IsCursorVisible = true;
94        Mouse.ListenMovement(0.1, KuunteleLiiketta, null);
95
96    }
97    void ammuAseella()
98    {
99
100        PhysicsObject ammus = pyssy.Shoot();
101        if (ammus != null)
102        {
103            ammus.Tag = "ammus";
104            ammus.IgnoresCollisionResponse = true;
105            ammus.IgnoresExplosions = true;
106            ammus.Size = new Vector(65, 20);
107            ammus.Image = LoadImage("bullet");
108            ammus.IgnoresGravity = true;
109
110            //ammus.Hit(new Vector(200, 0));
111            //Add(ammus);
112        }
113
114
115    }
116
117    void ammuAseella2()
118    {
119        PhysicsObject ammus = pyssy2.Shoot();
120        if (ammus != null)
121        {
122            ammus.Tag = "ammus";
123            ammus.IgnoresCollisionResponse = true;
124            ammus.IgnoresExplosions = true;
125            ammus.Size = new Vector(80, 20);
126            ammus.MaximumLifetime = TimeSpan.FromMinutes(1);
127            ammus.IgnoresGravity = true;
128
129            //ammus.Hit(new Vector(200, 0));
130            //Add(ammus);
131        }
132    }
133    void LiikutaPelaajaa(Vector vektori)
134    {
135        kissa.Push(vektori);
136        Vector tatinAsento = ControllerOne.LeftThumbDirection;
137    }
138
139    void KuunteleLiiketta(AnalogState hiirenTila)
140    {
141        Vector suunta = Mouse.PositionOnWorld - pyssy.AbsolutePosition;
142        pyssy.Angle = suunta.Angle;
143        pyssy2.Angle = suunta.Angle;
144    }
145
146    void ListenLiiketta(Timer sender)
147    {
148        Vector suunta = kissa.Position - Vihollisenpyssy.AbsolutePosition;
149        Vihollisenpyssy.Angle = suunta.Angle;
150       
151        PhysicsObject ammus = Vihollisenpyssy.Shoot();
152        if (ammus != null)
153        {
154            ammus.Tag = Vihollinen;
155            ammus.Size = new Vector(80, 20);
156            ammus.MaximumLifetime = TimeSpan.FromMinutes(1);
157            ammus.IgnoresGravity = true;
158       
159        }
160       
161    }
162    void KuunteleLiiketta()
163    {
164        Vector suunta = kissa.Position - pyssy.AbsolutePosition;
165        pyssy.Angle = suunta.Angle;
166        pyssy2.Angle = suunta.Angle;
167    }
168
169    void ammusOsuu(PhysicsObject ammus, PhysicsObject toinen)
170    {
171        if (toinen.Tag.ToString() != "pelaaja" && toinen.Tag.ToString() != "ammus" && ammus.Tag != toinen)
172        {
173            ammus.Destroy();
174            Explosion rajahdys = new Explosion(40);
175            rajahdys.Position = ammus.Position;
176            Add(rajahdys);
177        }
178    }
179    void LiikutaPelaajaa(AnalogState tatinTila)
180    {
181        Vector tatinAsento = tatinTila.StateVector;
182
183        kissa.Push(tatinAsento * 1500);
184    }
185    PhysicsObject LuoVihollinen()
186    {
187        Vihollinen = new PhysicsObject(200, 400);
188        Vihollinen.Tag = "Vihollinen";
189        Vihollinen.Angle = Angle.Degrees(0);
190        Vihollinen.Color = Color.Black;
191        Vihollinen.Image = LoadImage("EFG");
192        Vihollinen.CanRotate = false;
193        Vihollinen.Add(Vihollisenpyssy);
194
195        FollowerBrain vihunAivot = new FollowerBrain(kissa);
196        vihunAivot.Active = true;
197        vihunAivot.Owner = Vihollinen;
198        vihunAivot.MovingSpeed = 140;
199
200        Vihollinen.Brain = vihunAivot;
201       
202        Add(Vihollinen);
203        return Vihollinen;
204    }
205}
Note: See TracBrowser for help on using the repository browser.