JavaScriptLib

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Javascript</language>
Auf dieser Seite finden Sie einige JavaScript Bibliotheksfunktionen. Sie können diese in Ihre Wikiseiten einbinden (siehe [[Code referenzieren]]). 

== JavaScript Hamster ==
Beispiel für graphische Ausgabe. Einbinden mit <nowiki>[[JavaScriptLib|Hamster]]</nowiki>.

<code id="Hamster">
var GridSize = 50;

function Hamster(Spielfeld) {
   this.x = 0;
   this.y = 0;
   this.look = 0; // 0 up, 1 right, 2 down, 3 left
   this.speed = 50;
   this.Feld = Spielfeld;
   this.inMouth = 0;

   this.wait = function() {
     if(this.speed < 1) this.speed = 1;
     if(this.speed > 100) this.speed = 100;
     //Thread.sleep(1000-(this.speed-1)*10);
   };

   this.vor = function() {
     this.wait();
     this.Feld.drawField(this.x,this.y);
     if(this.look == 0)
      if(this.y > 0) this.y--; else this.y = this.Feld.sizeY-1;
     if(this.look == 1)
      if(this.x < this.Feld.sizeX-1) this.x++; else this.x = 0;
     if(this.look == 2)
      if(this.y < this.Feld.sizeY-1) this.y++; else this.y = 0;
     if(this.look == 3)
      if(this.x > 0) this.x--; else this.x = this.Feld.sizeX-1;
     this.draw();
   };

   this.linksUm = function() {
     this.wait();
     if(this.look == 0) this.look = 3; else
     if(this.look == 1) this.look = 0; else
     if(this.look == 2) this.look = 1; else
     if(this.look == 3) this.look = 2; 
     this.draw();
   }

   this.nimm = function() {
     this.wait();
     if(this.Feld.map[this.x][this.y] > 0) {
      this.Feld.map[this.x][this.y]--;
      this.inMouth++;
      this.draw();
     }else alert("Kein Korn hier");
   }

   this.gib = function() {
     this.wait();
     if(this.inMouth > 0){
      this.Feld.map[this.x][this.y]++;
      this.inMouth--;
      this.draw();
     }else alert("Kein Korn im Mund");
   }

   this.vornFrei = function() {
     if(this.look == 0)
      if(this.y > 0) return this.Feld.map[this.x][this.y-1] != -1;
     if(this.look == 1)
      if(this.x < this.Feld.sizeX-1) return this.Feld.map[this.x+1][this.y] != -1;
     if(this.look == 2)
      if(this.y < this.Feld.sizeY-1) return this.Feld.map[this.x][this.y+1] != -1;
     if(this.look == 3)
      if(this.x > 0) return this.Feld.map[this.x-1][this.y] != -1;
     return false;
   }

   this.kornDa = function() {
     return this.Feld.map[this.x][this.y] > 0;
   }

   this.maulLeer = function() {
     return this.inMouth == 0;
   }

   this.draw = function(){
     this.Feld.drawField(this.x,this.y);
     this.Feld.canvas.drawImage(this.x*GridSize,this.y*GridSize,GridSize,GridSize,"http://michael-hielscher.de/hamster/hamster"+this.look+".png");
   }   
   return this;
}

function Spielbrett(c) {
   this.sizeX = 8;
   this.sizeY = 8;
   this.map= [[]];
   this.canvas = c;
   this.initMap = function(){
     canvas.clear();
     this.map = [];
     for(var x=0; x < this.sizeX; x++){
      this.map.push([]);
      for(var y=0; y < this.sizeY; y++){ 
       this.map[x].push(0);
       if(x==0 ||y == 0||x == this.sizeX-1|| y == this.sizeY-1) this.map[x][y] = -1;
      }
     } 
     this.drawMap();
   }
   this.placeWall = function(x,y){
       if(x>=0 && y >= 0 && x < this.sizeX && y < this.sizeY) { this.map[x][y] = -1; this.drawField(x,y); }
   }
   this.clearWall = function(x,y){
       if(x>=0 && y >= 0 && x < this.sizeX && y < this.sizeY) { this.map[x][y] = 0; this.drawField(x,y); }
  
   }
   this.drawMap = function(){
     for(var y=0; y < this.sizeY; y++) 
      for(var x=0; x < this.sizeX; x++) 
       this.drawField(x,y);
   }
   this.drawField = function(x,y) {
     canvas.setColor(255,255,255);
     canvas.fillRect(x*GridSize,y*GridSize,GridSize,GridSize);
     canvas.setColor(0,0,0);
     canvas.rect(x*GridSize,y*GridSize,GridSize-1,GridSize-1);
     if(this.map[x][y] == -1) {
       canvas.drawImage(x*GridSize,y*GridSize,GridSize,GridSize,"http://michael-hielscher.de/hamster/brick_wall.png");
     }
     if(this.map[x][y] > 0) {
       var image = this.map[x][y];  
       if(image > 9) image = 9;
       canvas.drawImage(x*GridSize,y*GridSize,GridSize,GridSize,"http://michael-hielscher.de/hamster/grain"+image+".png");
     }
   }
   this.putGrain = function(x,y,count) {
     this.map[x][y] = count;
     this.drawField(x,y);
   }
   return this;
}
</code>
<run id="54e7b178d1bbe"></run>