This is an old revision of the document!

Documentation » Using WinSCP » Basic Tasks »

<!DOCTYPE html>

Advertisement

  <head>
    <style>
      /* Styling für das Spielfeld */
      #game {
        width: 400px;
        height: 400px;
        border: 1px solid black;
        position: relative;
        background-image: url("landscape.png");
        background-size: cover;
      }
      /* Styling für den Spieler */
      #player {
        width: 50px;
        height: 50px;
        background-color: blue;
        position: absolute;
        bottom: 0;
        left: 175px;
      }
      /* Styling für die Plattformen */
      .platform {
        width: 100px;
        height: 20px;
        background-color: transparent;
        position: absolute;
      }
    </style>
  </head>
  <body>
    <!-- Das Spielfeld -->
    <div id="game">
      <!-- Der Spieler -->
      <div id="player"></div>
      <!-- Die Plattformen -->
      <div class="platform" style="top: 60px; left: 0;"></div>
      <div class="platform" style="top: 140px; left: 300px;"></div>
      <div class="platform" style="top: 220px; left: 150px;"></div>
    </div>
    <script>
      // Der Spieler
      var player = document.getElementById("player");
      // Die Plattformen
      var platforms = document.getElementsByClassName("platform");
      // Die Fallgeschwindigkeit des Spielers
      var playerVelocity = 0;
      // Die Schwerkraft
      var gravity = 0.3;
      // Flag, ob sich der Spieler auf einer Plattform befindet
      var isOnPlatform = false;
      // Horizontale Geschwindigkeit des Spielers
      var playerHorizontalVelocity = 0;
      // Horizontale Bewegungsgeschwindigkeit des Spielers
      var playerMovementSpeed = 0.5;

      // Spielfunktion, die immer wieder aufgerufen wird
      function gameLoop() {
        // Schwerkraft anwenden
        playerVelocity += gravity;
        player.style.top = player.offsetTop + playerVelocity + "px";
        // Horizontale Bewegung des Spielers
        player.style.left = player.offsetLeft + playerHorizontalVelocity + "px";

        // Prüfen, ob der Spieler eine Plattform berührt
        for (var i = 0; i < platforms.length; i++) {
                    var platform = platforms[i];
          if (
            player.offsetLeft < platform.offsetLeft + platform.offsetWidth &&
            player.offsetLeft + player.offsetWidth > platform.offsetLeft &&
            player.offsetTop + player.offsetHeight > platform.offsetTop &&
            player.offsetTop < platform.offsetTop + platform.offsetHeight
          ) {
            // Spieler berührt Plattform von unten
            if (player.offsetTop + player.offsetHeight < platform.offsetTop + platform.offsetHeight) {
              player.style.top = platform.offsetTop - player.offsetHeight + "px";
              playerVelocity = 0;
              isOnPlatform = true;
            }
          }
        }

        // Prüfen, ob der Spieler das Spielfeld verlässt
        if (player.offsetTop > game.offsetHeight) {
          // Spieler ist unten aus dem Spielfeld gefallen
          player.style.top = "0px";
          playerVelocity = 0;
        } else if (player.offsetLeft < 0) {
          // Spieler ist links aus dem Spielfeld gefallen
          player.style.left = "0px";
        } else if (player.offsetLeft + player.offsetWidth > game.offsetWidth) {
          // Spieler ist rechts aus dem Spielfeld gefallen
          player.style.left = game.offsetWidth - player.offsetWidth + "px";
        }
      }

      // Sprungfunktion
      function jump() {
        if (isOnPlatform) {
          playerVelocity = -10;
          isOnPlatform = false;
        }
      }

      // Spielfunktion immer wieder aufrufen
      setInterval(gameLoop, 1000 / 60);

      // Maus- und Touch-Eingaben abfangen
            document.addEventListener("mousedown", jump);
      document.addEventListener("touchstart", function(event) {
        event.preventDefault();
        jump();
      }, { passive: false });
      document.addEventListener("mousemove", function(event) {
        // Mausposition abfangen
        var mouseX = event.clientX;
        // Horizontale Bewegung des Spielers in Abhängigkeit von der Mausposition
        if (mouseX < player.offsetLeft) {
          playerHorizontalVelocity = -playerMovementSpeed;
        } else if (mouseX > player.offsetLeft + player.offsetWidth) {
          playerHorizontalVelocity = playerMovementSpeed;
        } else {
          playerHorizontalVelocity = 0;
        }
      });
      document.addEventListener("touchmove", function(event) {
        // Touchposition abfangen
        var touchX = event.touches[0].clientX;
        // Horizontale Bewegung des Spielers in Abhängigkeit von der Touchposition
        if (touchX < player.offsetLeft) {
          playerHorizontalVelocity = -playerMovementSpeed;
        } else if (touchX > player.offsetLeft + player.offsetWidth) {
          playerHorizontalVelocity = playerMovementSpeed;
        } else {
          playerHorizontalVelocity = 0;
        }
      });
      document.addEventListener("mouseup", function(event) {
        // Mausklick losgelassen
        playerHorizontalVelocity = 0;
      });
      document.addEventListener("touchend", function(event) {
        // Touch losgelassen
        playerHorizontalVelocity = 0;
      });
    </script>
  </body>

Advertisement

Last modified: by 91.66.185.8