Deine Aufgabe: Gestalte dein Spiel

Code skill

 

<!DOCTYPE html>
<html>

<head lang="de">
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
   <title>Super Scratch</title>
</head>

<body>
  <canvas id="Spiel" width="640" height="480"></canvas>
  <script type="text/javascript">
    var canvas = document.getElementById("Spiel");
    var ctx = canvas.getContext("2d");
    var spiel = {
      timer: null,
      beendet: false,
      steuerung: {
        links: false,
        rechts: false,
        hoch: false,
        runter: false,
        mapping: {
          65: "links",
          68: "rechts",
          87: "hoch",
          83: "runter"
        },
        buttonPress: function(keyInfo) {
          this[this.mapping[keyInfo.keyCode]] = true;
          spiel.sounds.hintergrundmusik();
        },
        buttonRelease: function(keyInfo) {
          this[this.mapping[keyInfo.keyCode]] = false;
        },
        connect: function() {
          window.addEventListener("keydown", function(keyInfo) {
            spiel.steuerung.buttonPress(event);
          }, false);
          window.addEventListener("keyup", function(keyInfo) {
            spiel.steuerung.buttonRelease(event);
          }, false);
        }
      },
      sounds: {
        aktiviert: true,
        springe: function() {
             new Audio("sounds/meow.wav").play();
        },
        hintergrundmusik: function() {
            if (this.aktiviert) {
                new Audio("sounds/background.mp3").play();
                this.aktiviert = false;
            }
        },
       },
      schleife: function() {
        if (this.beendet) {
          return;
        }
        welt.tick();
        spieler.tick();
        welt.zeichne();
        spieler.zeichne();
        this.timer = window.setTimeout("spiel.schleife()", 1000 / 60);
      },
      start: function() {
        this.steuerung.connect();
        this.schleife();
      },
      stopp: function(grund) {
        this.beendet = true;
        window.clearTimeout(this.timer);
        alert(grund == "gewonnen" ? "Du hast gewonnen!" : "Du hast verloren!");
      }
    };
    var welt = {
      höhe: 480,
      breite: 640,
      schwerkraft: 10,
      strecke: 0,
      level: null,
      kollisionskarte: null,
      tickZähler: 0,
      feinde: [],
      ladeLevel: function() {
        this.level = new Image();
        this.level.src = "level.png";
        var kollisionskarteBild = new Image();
        kollisionskarteBild.onload = function(loadEvent) {
          var verborgenesCanvas = document.createElement("CANVAS");
          verborgenesCanvas.setAttribute("width", this.width);
          verborgenesCanvas.setAttribute("height", this.height);
          welt.kollisionskarte = verborgenesCanvas.getContext("2d");
          welt.kollisionskarte.drawImage(this, 0, 0);
        };
        kollisionskarteBild.src = "data:image/png;base64,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";
      },

      istFesteOberfläche: function(x, y) {
        return this.pixeltyp(x, y) == "#";
      },
      pixeltyp: function(x, y) {
        if (!this.kollisionskarte) {
          return ".";
        }
        var rohdaten = this.kollisionskarte.getImageData(x, y, 1, 1).data;
        var maske = rohdaten[0] + " " + rohdaten[1] + 
                    " " + rohdaten[2] + " " + rohdaten[3];
        if (maske == "255 0 0 255") return "Grube";
        if (maske == "76 255 0 255") return "Ausgang";
        if (maske == "255 255 255 255") return ".";
        if (maske == "0 0 0 255") return "#";
      },
      tick: function() {
        if (!this.level) {
          this.ladeLevel();
          this.feinde.push(new Feind(500, 100));
          this.feinde.push(new Feind(2000, 100));
          this.feinde.push(new Feind(3700, 100));
          this.feinde.push(new Feind(4000, 100));
          this.feinde.push(new Feind(5600, 100));
          this.feinde.push(new Feind(6500, 100));
          this.feinde.push(new Feind(7600, 100));
        }
        this.strecke += spieler.figur.speed;
        this.tickZähler++;
        this.aktiviereFeinde();
      },
      aktiviereFeinde: function() {
        for (var i = 0; i < this.feinde.length; i++) {
          this.feinde[i].tick();
        }
      },
      levelEndOffset: function() {
        return this.level.width - this.breite;
      },
      atLevelEnd: function() {
        return this.strecke >= this.levelEndOffset();
      },
      zeichne: function() {
        var zeichneBeiX = this.strecke * -1;
        zeichneBeiX = zeichneBeiX > 0 ? 0 : zeichneBeiX;
        zeichneBeiX = this.atLevelEnd() ? this.levelEndOffset() * -1 : zeichneBeiX;
        ctx.drawImage(this.level, zeichneBeiX, 0);
        for (var i = 0; i < this.feinde.length; i++) {
          this.feinde[i].zeichne();
        }
      }
    };
    var spieler = {
      figur: new Figur(160, 390, 25, 25, new Animation("graphics/cat", 5), new Animation("graphics/cat.backwards", 5)),
      tick: function() {
        var currentLocation = welt.pixeltyp(this.figur.leadingEdge(), this.figur.y);
        if (currentLocation == "Ausgang" || currentLocation == "Grube") {
          var state = currentLocation == "Ausgang" ? "gewonnen" : "verloren";
          spiel.stopp(state);
          return;
        }
        this.verarbeiteSteuerung();
        this.figur.tick();
      },
      verarbeiteSteuerung: function() {
        if (spiel.steuerung.rechts) {
          this.figur.speed = 5;
        }
        if (spiel.steuerung.links) {
          this.figur.speed = -5;
        }
        if (!spiel.steuerung.links && !spiel.steuerung.rechts) {
          this.figur.speed = 0;
        }
        if (spiel.steuerung.hoch && this.figur.standingOnAPlatform()) {
          this.figur.downwardForce = -8;
          spiel.sounds.springe();
        }
      },
      zeichne: function() {
        this.figur.zeichne();
      }
    };

    function Figur(x, y, breite, höhe, laufendeFigur, umgedrehteFigur) {
      this.x = x;
      this.y = y;
      this.höhe = höhe;
      this.breite = breite;
      this.speed = 0;
      this.downwardForce = 0;
      this.jumpHeight = 0;
      this.laufendeFigur = laufendeFigur;
      this.laufendeFigurReversed = umgedrehteFigur;
      this.tick = function() {
        this.applyGravity();
        this.applyMovement();
      }
      this.applyGravity = function() {
        if (this.isJumping()) {
          this.jumpHeight += (this.downwardForce * -1);
          if (this.jumpHeight >= this.höhe * 6) {
            this.downwardForce = welt.schwerkraft;
            this.jumpHeight = 0;
          }
        } else {
          if (this.standingOnAPlatform()) {
            this.downwardForce = 0;
          } else {
            this.downwardForce = welt.schwerkraft;
          }
        }
      }
      this.applyMovement = function() {
        var nextX = this.x + this.speed;
        var nextY = this.y + this.downwardForce;
        var nextLeadingX = this.leadingEdge() + this.speed;
        var walkingIntoSurface = welt.istFesteOberfläche(nextLeadingX, this.y);
        if (this.isMoving() && walkingIntoSurface) {
          nextX = this.x;
          this.speed = 0;
        }
        var topLeftIsSolid = welt.istFesteOberfläche(this.leadingEdge(), this.y);
        var topRightIsSolid = welt.istFesteOberfläche(this.trailingEdge(), this.y);
        if ((topLeftIsSolid || topRightIsSolid) && this.isJumping()) {
          this.downwardForce = welt.schwerkraft;
          this.jumpHeight = 0;
        }
        this.x = nextX;
        this.y = nextY;
      }
      this.bottom = function() {
        return this.y + this.höhe;
      }
      this.isJumping = function() {
        return this.downwardForce < 0;
      }
      this.isFalling = function() {
        return this.downwardForce > 0;
      }
      this.isMoving = function() {
        return this.speed != 0;
      }
      this.leadingEdge = function() {
        return this.speed < 0 ? this.x : this.x + this.breite;
      }
      this.trailingEdge = function() {
        return this.speed < 0 ? this.x + this.breite : this.x;
      }
      this.standingOnAPlatform = function() {
        return welt.istFesteOberfläche(this.leadingEdge(), this.bottom() + 1) ||
          welt.istFesteOberfläche(this.trailingEdge(), this.bottom() + 1);
      }
      this.zeichne = function() {
        if (!this.laufendeFigur) {
          return;
        }
        var zeichneBeiX = this.x - welt.strecke;
        zeichneBeiX = zeichneBeiX > this.x ? this.x : zeichneBeiX;
        if (welt.atLevelEnd()) {
          zeichneBeiX = (welt.breite - (welt.level.width - welt.strecke - (this.x - welt.strecke)));
        }
        var sprite = this.speed < 0 ? this.laufendeFigurReversed : this.laufendeFigur;
        if (this.isJumping() || this.isFalling()) {
          sprite.drawFrame(4, zeichneBeiX, this.y, this.höhe, this.breite);
        } else if (this.isMoving()) {
          sprite.zeichne(welt.tickZähler, zeichneBeiX, this.y, this.höhe, this.breite);
        } else {
          sprite.drawFrame(1, zeichneBeiX, this.y, this.höhe, this.breite);
        }
      }
      this.kollidiertMit = function(other) {
        if (this.x >= other.x &&
          this.x <= other.x + other.breite &&
          this.y >= other.y &&
          this.y <= other.y + other.höhe) {
          return true;
        }
        return false;
      }
    }

    function Animation(dateiname, frameZahl) {
      this.frames = [];
      this.currentFrameId = 1;
      for (var frameId = 1; frameId <= frameZahl; frameId++) {
        var frame = new Image();
        frame.src = dateiname + "." + frameId + ".png";
        this.frames[frameId] = frame;
      }
      this.zeichne = function(tickZähler, x, y, höhe, breite) {
        if (tickZähler % 5 == 0) {
          this.currentFrameId++;
        }
        this.currentFrameId = this.currentFrameId >= this.frames.length ? 1 : this.currentFrameId;
        this.drawFrame(this.currentFrameId, x, y, höhe, breite);
      }
      this.drawFrame = function(frameNumber, x, y, höhe, breite) {
        ctx.drawImage(this.frames[frameNumber], x, y, breite, höhe);
      }
    }

    function Feind(x, y) {
      this.figur = new Figur(x, y, 25, 25, new Animation("graphics/tiger", 5), new Animation("graphics/tiger.backwards", 5))
      this.tick = function() {
        var distanceFromPlayer = Math.abs(spieler.figur.x - this.figur.x);
        if (distanceFromPlayer <= welt.breite * 2) {
          this.figur.speed = 2;
          if (spieler.figur.x < this.figur.x) {
            this.figur.speed *= -1;
          }
          if (this.figur.kollidiertMit(spieler.figur)) {
            spiel.stopp();
          }
          this.figur.tick();
        }
      }
      this.zeichne = function() {
        this.figur.zeichne();
      }
    }
    spiel.start();
  </script>
</body>
</html>

Copyright © 2008 Walker Books Ltd
Illustrations © Duncan Beedie
All rights reserved.