Exemple #1
0
 public void setPosition(Position position)
 {
     Image.Margin = new Thickness(position.X, position.Y, 0, 0);
 }
Exemple #2
0
 private void ProcessTank(Tank tank)
 {
     tank.Update();
     Position p = new Position(tank.getPosition().X, tank.getPosition().Y);
     for (int i = 0; i < tank.Instructions.Count; i++) {
         if (tank.Instructions[i].Type == TypeInstruction.MoveForward) {
             float value = Math.Min(tank.Instructions[i].Parameter, tank.SpeedMove);
             tank.MoveForward(value);
             tank.Instructions[i].Parameter -= value;
             for (int j = 0; j < Tanks.Count; j++)
                 if (Tanks[j] != tank && tank.IsCollided(Tanks[j])) {
                     tank.setPosition(p);
                     break;
                 }
             if (tank.Instructions[i].Parameter == 0) tank.Instructions.RemoveAt(i--);
             else break;
         } else if (tank.Instructions[i].Type == TypeInstruction.MoveBackward) {
             float value = Math.Min(tank.Instructions[i].Parameter, tank.SpeedMove);
             tank.MoveBackward(value);
             tank.Instructions[i].Parameter -= value;
             for (int j = 0; j < Tanks.Count; j++)
                 if (Tanks[j] != tank && tank.IsCollided(Tanks[j])) {
                     tank.setPosition(p);
                     break;
                 }
             if (tank.Instructions[i].Parameter == 0) tank.Instructions.RemoveAt(i--);
             else break;
         } else if (tank.Instructions[i].Type == TypeInstruction.RotateLeft) {
             float value = Math.Min(tank.Instructions[i].Parameter, 5);
             tank.RotateLeft(value);
             tank.Instructions[i].Parameter -= value;
             if (tank.Instructions[i].Parameter == 0) tank.Instructions.RemoveAt(i--);
             else break;
         } else if (tank.Instructions[i].Type == TypeInstruction.RotateRight) {
             float value = Math.Min(tank.Instructions[i].Parameter, 5);
             tank.RotateRight(value);
             tank.Instructions[i].Parameter -= value;
             if (tank.Instructions[i].Parameter == 0) tank.Instructions.RemoveAt(i--);
             else break;
         } else if (tank.Instructions[i].Type == TypeInstruction.Fire) {
             if (tank.AllowToFire) {
                 tank.Fire();
                 Bullets.Add(tank.bullet);
                 tank.Instructions.RemoveAt(i);
                 NeedToUpdate = true;
                 //tank.UpdateStats();
             }
         }
     }
 }