Changeset 7392 for 2016/24/LasseK/TankkiPeli
- Timestamp:
- 2016-06-16 15:00:59 (6 years ago)
- Location:
- 2016/24/LasseK/TankkiPeli
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
2016/24/LasseK/TankkiPeli/TankkiPeli/TankkiPeli/TankkiPeli.cs
r7359 r7392 1 using System; 1 2 using System; 2 3 using System.Collections.Generic; 3 4 using Jypeli; … … 9 10 public class TankkiPeli : PhysicsGame 10 11 { 11 Image Tykki2 = LoadImage("TykkiJonkaMuokkasit"); 12 //Image Tykkikuva = LoadImage("Tykki"); 12 Image Tykkikuva = LoadImage("Tykki"); 13 13 Image TankkiRunko = LoadImage("VaununRunko"); 14 14 Image Tornikuva = LoadImage("Tykkitorni"); 15 Image Tykki2 = LoadImage("TykkiJonkaMuokkasit"); 16 Image kokoTankki = LoadImage("kokotankki"); 17 Image Ammus1 = LoadImage("Ammus1"); 18 //hysicsObject Tankki; 19 //PhysicsObject Torni; 20 //PhysicsObject Tykki; 15 21 16 Image kokoTankki = LoadImage("kokotankki"); 17 18 PhysicsObject Tankki; 19 PhysicsObject Torni; 20 PhysicsObject Tykki; 22 Tankki tankki; 23 Tankki kakkostankki; 21 24 public override void Begin() 22 23 25 { 24 26 Kentta(); 25 27 LuoTankki(); 26 28 AsetaOhjaimet(); 27 28 29 } 29 30 30 void LiikutaTykkiä( PhysicsObject Tykki, double Suunta)31 void LiikutaTykkiä(Tankki tankki, double Suunta) 31 32 { 33 GameObject tykki = ((Tankki)tankki).Tykki; 34 tykki.Angle += Angle.FromRadians(Suunta) * (tankki.FacingDirection == Direction.Left ? -1 : 1); 35 36 if (tankki.Tykki.Angle.MainDirection != tankki.FacingDirection) 37 { 38 tykki.Angle -= Angle.FromRadians(Suunta); 39 } 32 40 33 41 … … 37 45 { 38 46 Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 39 Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaTankkia, "Liikuttaa Tankkia Vasempaan", Tankki, new Vector(-800, 0));40 Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaTankkia, "Liikuttaa Tankkia Oikeaan", Tankki, new Vector(550, 0));41 47 42 Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaTykkiä, "Liikuta Tykkiä Ylös", Tykki, 0.1); 48 Keyboard.Listen(Key.Left, ButtonState.Down, delegate () { tankki.Tykki.Angle = tankki.FacingDirection == Direction.Right ? Angle.FromDegrees(180) : tankki.Tykki.Angle; LiikutaTankkia(tankki, new Vector(-2500.0, 0)); 49 if (tankki.FacingDirection == Direction.Right) { tankki.MirrorImage(); } tankki.FacingDirection = Direction.Left; }, "Liikuttaa Tankkia Vasempaan"); 50 Keyboard.Listen(Key.Right, ButtonState.Down, delegate () { tankki.Tykki.Angle = tankki.FacingDirection == Direction.Left ? Angle.FromDegrees(0) : tankki.Tykki.Angle; LiikutaTankkia(tankki, new Vector(2000.0, 0)); if (tankki.FacingDirection == Direction.Left) { tankki.MirrorImage(); } tankki.FacingDirection = Direction.Right; }, "Liikuttaa Tankkia Oikealle"); 51 52 Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaTykkiä, "Liikuta Tykkiä Ylös", tankki, 0.1); 53 Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaTykkiä, "Liikuta Tykkiä Alas", tankki, -0.1); 54 55 /* 56 Keyboard.Listen(Key.A, ButtonState.Down, delegate () { kakkostankki.Tykki.Angle = kakkostankki.FacingDirection == Direction.Right ? Angle.FromDegrees(180) : kakkostankki.Tykki.Angle; LiikutaTankkia(kakkostankki, -300.0); }, "Liikuttaa Tankkia Vasempaan"); 57 Keyboard.Listen(Key.D, ButtonState.Down, delegate () { kakkostankki.Tykki.Angle = kakkostankki.FacingDirection == Direction.Left ? Angle.FromDegrees(0) : kakkostankki.Tykki.Angle; LiikutaTankkia(kakkostankki, 300.0); }, "Liikuttaa Tankkia Vasempaan"); 58 59 Keyboard.Listen(Key.W, ButtonState.Down, LiikutaTykkiä, "Liikuta Tykkiä Ylös", kakkostankki, 0.1); 60 Keyboard.Listen(Key.S, ButtonState.Down, LiikutaTykkiä, "Liikuta Tykkiä Alas", kakkostankki, -0.1); 61 */ 62 63 Keyboard.Listen(Key.Space, ButtonState.Down, () => Ammu(tankki, "tankki2"), "Ammu tykillä"); 64 Keyboard.Listen(Key.LeftShift, ButtonState.Down, () => Ammu(kakkostankki, "tankki1"), "Ammu tykillä"); 43 65 44 66 } 45 67 46 void Tahtaa(AnalogState hiirenLiike)68 void Ammu(Tankki tankki, String tankinnimi) 47 69 { 48 if (Mouse.PositionOnWorld.X > Tankki.Position.X) 70 PhysicsObject ammus = tankki.Ase.Shoot(); 71 72 if (ammus != null) 49 73 { 50 Torni.Image = Image.Mirror(Tornikuva); 51 Tykki.Image = Image.Mirror(Tykki2); 52 Tykki.Position = Torni.Position + new Vector(10, 1); 53 } 54 else 55 { 56 Torni.Image = Tornikuva; 57 Tykki.Image = Image.Mirror(Tykki2); 58 Tykki.Position = Torni.Position + new Vector(-10, 1); 74 ammus.Image = Ammus1; 75 ammus.Size *= 2; 76 AddCollisionHandler(ammus, tankinnimi, delegate (PhysicsObject a, PhysicsObject b) { ((Tankki)b).ElamaLaskuri.Value--; }); 77 ammus.IgnoresCollisionWith(tankki); 78 ammus.IgnoresCollisionWith(tankki.Tykki); 79 ammus.Position = tankki.Tykki.Position + Vector.FromLengthAndAngle(tankki.Tykki.Width * 0.5, tankki.Tykki.Angle); 80 81 //ammus.Velocity = new Vector(100, 0); 82 /*tankki.Ase.Ammo.Value = 500; 83 tankki.Ase.Power.DefaultValue = 2000; 84 tankki.Ase.FireRate = 5.0; 85 tankki.Ase.AmmoIgnoresGravity = false; 86 tankki.Ase.AmmoIgnoresExplosions = true; 87 tankki.Ase.CanHitOwner = true;*/ 59 88 } 60 89 61 62 Angle suunta = ((Mouse.PositionOnWorld - Tykki.AbsolutePosition).Normalize()).Angle;63 Tykki.Position = Vector.FromLengthAndAngle(Tykki.Width, suunta);64 Tykki.Angle = suunta;65 90 } 66 91 … … 68 93 void Kentta() 69 94 { 70 Surface alaReuna = Surface.CreateBottom(Level, 299, 300, 100, 5); 95 /*PhysicsObject alataso = PhysicsObject.CreateStaticObject(Level.Width, 60); 96 alataso.Position = new Vector(0, Level.Bottom + alataso.Height / 2); 97 Add(alataso);*/ 98 99 Surface alaReuna = Surface.CreateBottom(Level, 600, 625, 100, 2); 100 alaReuna.Restitution = 0; 71 101 Add(alaReuna); 102 103 72 104 Level.CreateLeftBorder(0, true); 73 105 Level.CreateRightBorder(0, true); 74 Gravity = new Vector(0, -500); 106 107 Gravity = new Vector(0, -550); 108 109 } 110 void LuoTankki() 111 { 112 113 tankki = new Tankki(150, 75, Image.Mirror(kokoTankki), Tykki2); 114 tankki.Position = new Vector(-200, 0); 115 tankki.Tag = "tankki1"; 116 Add(tankki); 117 tankki.Ase.ProjectileCollision += (PhysicsObject a, PhysicsObject b) => AmmusOsuu(a, b); 118 119 kakkostankki = new Tankki(150, 75, Image.Mirror(kokoTankki), Tykki2); 120 kakkostankki.Position = new Vector(200, 0); 121 kakkostankki.Tag = "tankki2"; 122 Add(kakkostankki); 123 kakkostankki.Ase.ProjectileCollision += (PhysicsObject a, PhysicsObject b) => AmmusOsuu(a, b); 75 124 76 125 } 77 126 127 void LiikutaTankkia(Tankki Tankki, Vector nopeus) 128 { 129 Tankki.Push(nopeus); 130 } 78 131 132 public void AmmusOsuu(PhysicsObject ammus, PhysicsObject kohde) 133 { 134 //ammus.Destroy(); 135 } 136 } 79 137 138 class Tankki : PhysicsObject 139 { 140 private IntMeter elamaLaskuri = new IntMeter(3, 0, 3); 141 public IntMeter ElamaLaskuri { get { return elamaLaskuri; } } 80 142 81 void LuoTankki() 143 public Image Tykki2; 144 145 public Weapon Ase; 146 147 public Direction FacingDirection = Direction.Right; 148 149 public PhysicsObject Tykki; 150 151 public override void Update(Time time) 82 152 { 153 Ase.AbsolutePosition = Tykki.Position; 154 Ase.AbsoluteAngle = Tykki.Angle; 83 155 84 Tankki = new PhysicsObject(160, 65); 85 Tankki.Image = TankkiRunko; 86 Tankki.LinearDamping = 0.95; 87 Tankki.Position = new Vector(-200, -350); 88 Add(Tankki); 156 Tykki.AbsolutePosition = this.FacingDirection == Direction.Right ? new Vector(this.X + 30, this.Top - 20) : new Vector(this.X - 30, this.Top - 20); 89 157 90 Torni = new PhysicsObject(85, 45); 91 Torni.Image = Tornikuva; 92 Torni.IgnoresPhysicsLogics = true; 93 Torni.Position = Torni.Position + new Vector(0, 38); 94 Tankki.Add(Torni); 158 //LahtoPaikka = this.FacingDirection == Direction.Right ? new Vector(this.AbsolutePosition.X + this.Tykki.Width, Tykki.Y) : new Vector(this.AbsolutePosition.X - Tykki.Width, this.Tykki.Y); 159 } 95 160 96 Tykki = new PhysicsObject(120, 10); //80 97 Tykki.Image = Tykki2; 98 Tykki.Position = Torni.Position + new Vector(-40, 1 ); //Torni.Position + new Vector(70, 1); 99 Tykki.IgnoresPhysicsLogics = true; 100 Tankki.Add(Tykki); 161 public Tankki(double leveys, double korkeus, Image kuva, Image tykki2) 162 : base(leveys, korkeus) 163 { 164 this.IsUpdated = true; 101 165 166 Tykki2 = tykki2; 167 Tykki = new PhysicsObject(120, 10); 168 Tykki.Image = Image.Mirror(tykki2); 169 this.Game.Add(Tykki, -1); 170 Tykki.Position = new Vector(this.X + 34, this.Top - 20); 171 Tykki.IgnoresCollisionResponse = true; 102 172 173 Ase = new Cannon(30, 10); 174 Ase.IsVisible = true; 175 Ase.FireRate = 1; 176 Ase.IsAddedToGame = true; 177 Ase.MaxAmmoLifetime = TimeSpan.FromSeconds(4); 178 Ase.CanHitOwner = false; 179 // this.Add(Ase); 180 elamaLaskuri.LowerLimit += delegate { this.Destroy(); this.Tykki.Destroy(); this.Ase.Destroy(); }; 181 Image = kuva; 182 Mass = 5; 103 183 104 184 } 105 void LiikutaTankkia(PhysicsObject Tankki, Vector suunta)106 {107 Tankki.Push(suunta);108 109 }110 111 185 }
Note: See TracChangeset
for help on using the changeset viewer.