Лазер не стреляет после того, как я добавил игрока - PullRequest
0 голосов
/ 28 мая 2020

Я пытался создать игру, в которой персонаж стреляет из лазера, но по какой-то причине, когда вы нажимаете Q, которая является клавишей стрельбы, лазер не стреляет, что странно, потому что я пробовал этот код раньше, и это сработало, единственное, что я изменил, это добавил в игру еще одного игрока, и он не выдает никаких сообщений об ошибках

'' '

    #hero {
      background: #ff0000;
      width: 20px;
      height: 50px;
      position: absolute;
    }

    #player {
      background: #ff0000;
      width: 20px;
      height: 50px;
      position: absolute;
    }

    #Pic {
      width: 150px;
    }

    #laser {
      width: 30;
      height: 3;
      background: #ff0000 position:absolute;
    }

    #plaser {
      width: 30;
      height: 3;
      background: #ff0000 position:absolute;
    }
  </style>
  <div id="player"></div>
  <div id="hero"></div>
  <div id="laser"></div>
  <div id="plaser"></div>
  <script type="text/javascript">

    var LEFT_KEY = 65;
    var UP_KEY = 87;
    var RIGHT_KEY = 68;
    var DOWN_KEY = 83;
    var LEFT_ARROW = 37;
    var RIGHT_ARROW = 39;
    var SPACE_KEY = 32;
    var DOWN_ARROW = 40;
    var UP_ARROW = 38;
    var Q_KEY = 81;
    var E_KEY = 69;
    var HERO_MOVEMENT = 10;
    var ONE_KEY = 97;
    var TWO_KEY = 98;
    var lastLoopRun = 0;

    var controller = new Object();
    var player = new Object();
    player.element = 'player'
    player.x = 1450;
    player.y = 460;
    var hero = new Object();
    hero.element = 'hero';
    hero.x = 250;
    hero.y = 460;
    var laser = new Object();
    laser.element = 'laser'
    laser.x = 0;
    laser.y = -120;
    laser.w = 30;
    laser.h = 3;
    var plaser = new Object();
    plaser.element = 'plaser'
    plaser.x = 0;
    plaser.y = -130;
    plaser.w = 30;
    plaser.h = 3;

    function ensureBounds(sprite, ignoreY) {
      if (sprite.x < 20) {
        sprite.x = 20;
      }
      if (!ignoreY && sprite.y < 20) {
        sprite.y = 20;
      }
      if (sprite.x + sprite.w > 1910) {
        sprite.x = 1910 - sprite.w;
      }
      if (!ignoreY && sprite.y + sprite.h > 940) {
        sprite.y = 940 - sprite.h;
      }
    }

    function createSprite(element, x, y, w, h) {
      var result = new Object();
      result.element = element;
      result.x = x;
      result.y = y;
      result.w = w;
      result.h = h;
      return result;
    }

    function toggleKey(keyCode, isPressed) {
      if (keyCode == DOWN_KEY) {
        controller.down = isPressed;
      }
      if (keyCode == LEFT_KEY) {
        controller.left = isPressed;
      }
      if (keyCode == RIGHT_KEY) {
        controller.right = isPressed;
      }
      if (keyCode == UP_KEY) {
        controller.up = isPressed;
      }
      if (keyCode == SPACE_KEY) {
        controller.space = isPressed;
      }
      if (keyCode == LEFT_ARROW) {
        controller.leftarrow = isPressed;
      }
      if (keyCode == RIGHT_ARROW) {
        controller.rightarrow = isPressed;
      }
      if (keyCode == UP_ARROW) {
        controller.uparrow = isPressed
      }
      if (keyCode == DOWN_ARROW) {
        controller.downarrow = isPressed
      }
      if (keyCode == Q_KEY) {
        controller.qkey = isPressed
      }
      if (keyCode == E_KEY) {
        controller.ekey = isPressed
      }
      if (keyCode == ONE_KEY) {
        controller.onekey = isPressed
      }
      if (keyCode == TWO_KEY) {
        controller.twokey = isPressed
      }
    }

    function handleControls() {
      if (controller.down) {
        hero.y += HERO_MOVEMENT
      }
      if (controller.up) {
        hero.y -= HERO_MOVEMENT
      }
      if (controller.left) {
        hero.x -= HERO_MOVEMENT;
      }
      if (controller.right) {
        hero.x += HERO_MOVEMENT;
      }
      if (controller.qkey && laser.x <= -120) {
        laser.x = hero.x - 20;
        laser.y = hero.y + 15;
      }
      if (controller.space && laser.x <= -120) {
        laser.x = hero.x + 20;
        laser.y = hero.y + 10;
      }
      if (controller.onekey && plaser.x <= -120) {
        plaser.x = player.x - 20;
        plaser.y = player.y + 15;
      }
      if (controller.twokey) {

      }
      if (controller.uparrow) {
        player.y -= HERO_MOVEMENT
      }
      if (controller.downarrow) {
        player.y += HERO_MOVEMENT
      }
      if (controller.leftarrow) {
        player.x -= HERO_MOVEMENT;
      }
      if (controller.rightarrow) {
        player.x += HERO_MOVEMENT;
      }
      ensureBounds(hero);
      ensureBounds(player)
    }

    function showSprites() {
      setPosition(hero);
      setPosition(laser);
      setPosition(player)
      setPosition(plaser)
    }

    function updatePositions() {
      laser.x -= 90
      plaser.x -= 90
    }

    function loop() {
      if (new Date().getTime() - lastLoopRun > 40) {
        updatePositions();
        handleControls();
        showSprites();
        lastLoopRun = new Date().getTime();
      }
      setTimeout('loop();', 2);
    }

    document.onkeydown = function(evt) {
      toggleKey(evt.keyCode, true);
    };

    document.onkeyup = function(evt) {
      toggleKey(evt.keyCode, false);
    };
    loop();

    function setPosition(sprite) {
      var e = document.getElementById(sprite.element)
      e.style.left = sprite.x + 'px';
      e.style.top = sprite.y + 'px';
    }
    createSprite('laser', 0, -120, 2, 50)
    createSprite('plaser', 0, -120, 2, 50)
  </script>
</body>

</html>

' ' '

...