←動作の確認に戻る
【補足】ソースコードは JavaScript だけ抜き出したものです。 キャンバスを使うにはHTMLに <canvas id="bg" width="640" height="640"></canvas> と記述します。
  //描画面(キャンバス)の準備
  var cvs = document.getElementById("bg");
  var ctx = cvs.getContext("2d");

  //キー入力
  var key = 0;
  window.onkeydown = function(event) { key = event.keyCode; }
  window.onkeyup = function(event) { key = 0; }

  //マップを配列で定義する 0は草地(床)、1は岩(壁)
  var MAP = [
   [1,1,1,1,1,1,1,1,1,1],
   [1,0,0,0,0,0,0,0,0,1],
   [1,0,0,0,0,0,0,1,0,1],
   [1,0,0,0,0,0,0,0,0,1],
   [1,0,1,0,1,1,0,0,0,1],
   [1,0,1,0,1,1,0,0,0,1],
   [1,0,0,0,0,0,0,0,0,1],
   [1,0,0,0,0,0,0,1,0,1],
   [1,0,0,0,0,0,0,0,0,1],
   [1,1,1,1,1,1,1,1,1,1]
  ];

  var plCX = 64, plCY = 64;//プレイヤーキャラの座標

  //画像の読み込み
  var img = [], iOK = [];
  function loadImg( n, fname ) {
   iOK[n] = false;
   img[n] = new Image();
   img[n].src = fname;
   img[n].onload = function() { iOK[n] = true; }
  }

  loadImg( 0, "kusa.png" );
  loadImg( 1, "iwa.png" );
  loadImg( 2, "yuusya.png" );

  //整数を返す関数
  function toInt( val ) { return parseInt(val); }

  //メイン処理
  var tmr = 0;
  window.onload = mainProc();
  function mainProc() {
   var n, x, y;

   tmr ++;

   //プレイヤーキャラの移動
   x = plCX;//現在の位置
   y = plCY;
   if( key == 38 ) y -= 16;//カーソルキー↑
   if( key == 40 ) y += 16;//カーソルキー↓
   if( key == 37 ) x -= 16;//カーソルキー←
   if( key == 39 ) x += 16;//カーソルキー→
   //移動しようとしているところが草地(床)だったら
   if( MAP[toInt(y/64)][toInt(x/64)] == 0
    && MAP[toInt(y/64)][toInt((x+63)/64)] == 0
    && MAP[toInt((y+63)/64)][toInt(x/64)] == 0
    && MAP[toInt((y+63)/64)][toInt((x+63)/64)] == 0 ) {
    plCX = x;
    plCY = y;
   }

   //背景を描画する
   for( y = 0; y < 10; y ++ )
   for( x = 0; x < 10; x ++ ) {
    n = MAP[y][x];
    if( iOK[n] == true ) ctx.drawImage( img[n], x*64, y*64 );
   }

   //プレイヤーキャラを表示する
   if( iOK[2] == true ) ctx.drawImage( img[2], plCX, plCY-tmr%2 );

   setTimeout( mainProc, 100 );
  }
(C)WorldWideSoftware