2016-12-23 11 views
0

私はこのスネークゲームを作成してもブラウザに何かが表示されるようにしたいが、何も表示されないようにしたい。私はそれを見て回&私は間違って何を把握することはできません。今ブラウザを更新すると、画面は完全に空白になります。なぜ私の蛇のゲームは全くロードされませんか?

gameTime.html

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>WOMP</title> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
    <link rel="stylesheet" href="gameTime.css"> 
</head> 

<body> 

<script type="text/javascript" src="gameTime.js"></script> 
</body> 
</html> 

gameTime.js

// constants 
var COLS = 26, ROWS = 26; 

// IDs 
var EMPTY = 0, SNAKE = 1, FRUIT = 2; 

// Directions 
var LEFT = 0, UP, = 1, RIGHT = 2, DOWN = 3; 

var grid = { 
    width: null, 
    height: null, 
    _grid: null, 

    init: function(d, c, r) { 
     this.width = c; 
     this.height = r; 

     this._grid = []; 

     for(var x = 0; x < c; x++) { 
      this._grid.push([]); // push an empty array 
      for(var y = 0; y < r; y++) { 
       this._grid[x].push(d); // push values into each row for the column 
      } 
     } 
    }, 

    set: function(val, x, y) { 
     this._grid[x][y] = val; // 
    }, 

    get: function(x, y) { 
     return this._grid[x][y]; 
    } 
} 

var snake = { 
    direction: null, 
    last: null; 
    _queue: null, 

    init: function(d, x, y) { 
     this.direction = d; 

     this._queue = []; 

     this.insert(x, y); 
    }, 

    insert: function(x, y) { 
     this._queue.unshift({x:x, y:y}) 
     this.last - this._queue[0]; 
    } 

    remove: function() { 
     return this._queue.pop(); 
    } 
} 

function setFood() { 
    var empty = []; 
    for(var x = 0; x < grid.width; x++) { 
     for(var y = 0; y < grid.height; y++) { 
      if(grid.get(x,y) == EMPTY) { 
       empty.push({x:x, y:y}) 
      } 
     } 
    } 
    var randpos = empty[Math.floor(Math.random() * empty.length)]; 
    grid.set(FRUIT, randpos.x, randpos.y); 
} 

// Game objects 

var canvas, ctx, keystate, frames; 

function main() { 
    canvas = document.createElement("canvas"); 
    canvas.width = COLS*20; 
    canvas.height = ROWS*20; 
    ctx = canvas.getContext("2d"); 
    document.body.appendChild(canvas); 

    frames = 0; 
    keystate = {}; // empty object 

    init(); 
    loop(); 
} 

function init() { 
    grid.init(EMPTY, COLS, ROWS); 

    var sp = {x:Math.floor(COLS/2), y:ROWS-1}; 
    snake.init(UP, sp.x, sp.y); 
    grid.set(SNAKE, sp.x, sp.y); 

    setFood(); 
} 

function loop() { 
    update(); 
    draw(); 

    window.requestAnimationFrame(loop, canvas); 
} 

function update() { 
    frames++; 
} 

    function draw() { 
     var tw = canvas.width/grid.width; 
     var th = canvas.height/grid.height; 

     for(var x = 0; x < grid.width; x++) { 
      for(var y = 0; y < grid.height; y++) { 
       switch(grid.get(x, y)) { 
        case EMPTY: 
        ctx.fillStyle = "#fff"; 
        break; 
        case SNAKE: 
        ctx.fillStyle = "#0ff"; 
        break; 
        case FRUIT: 
        ctx.fillStyle = "#f00"; 
        break; 
       } 
       ctx.fillRect(x*tw, y*th, tw, th); 
      } 
     } 
    } 

    main(); 
+3

もっと注意を払って、あなたのコードを確認してください。例えば、Directionsでは、 '' UP = 1 ''ではなく' 'UP、= 1''と書くべきです。ブラウザのコンソールを使用して、構文エラーを確認することができます(通常、キーボードのF12)。 –

+0

あなたのコードには多くのエラーがあります。私はそれらをすべて実行することをお勧めします。私はhttp://jshint.com/を使いました。 https://gist.github.com/TristanWiley/54e81e2fbeafbc41b9894abdbb145034 –

+0

@Andréあなたが言ったようにコンソールをチェックしてエラーを修正しましたが、他の構文エラーもありますが、画面はまだ空です。 – chompy

答えて

0

あなたはスタイリングの問題の束を持っています。間違った場所にカンマがあります。これをデバッグする最も簡単な方法は、コードを修正し、開発者ツールに入り、コンソールログでエラーを調べることです。また、あなたのjsファイルは、DOMを最初に読み込ませるためにファイルの最後に置かなければなりません。

var COLS = 26、ROWS = 26;

// IDs 
var EMPTY = 0, SNAKE = 1, FRUIT = 2; 

// Directions 
var LEFT = 0, UP = 1, RIGHT = 2, DOWN = 3; 

var grid = { 
    width: null, 
    height: null, 
    _grid: null, 

    init: function (d, c, r) { 
     this.width = c; 
     this.height = r; 

     this._grid = []; 

     for (var x = 0; x < c; x++) { 
      this._grid.push([]); // push an empty array 
      for (var y = 0; y < r; y++) { 
       this._grid[x].push(d); // push values into each row for the column 
      } 
     } 
    }, 

    set: function (val, x, y) { 
     this._grid[x][y] = val; // 
    }, 

    get: function (x, y) { 
     return this._grid[x][y]; 
    } 
} 

var snake = { 
    direction: null, 
    last: null, 
    _queue: null, 

    init: function (d, x, y) { 
     this.direction = d; 

     this._queue = []; 

     this.insert(x, y); 
    }, 

    insert: function (x, y) { 
     this._queue.unshift({ x: x, y: y }) 
     this.last - this._queue[0]; 
    }, 

    remove: function() { 
     return this._queue.pop(); 
    } 
} 


function setFood() { 
    var empty = []; 
    for (var x = 0; x < grid.width; x++) { 
     for (var y = 0; y < grid.height; y++) { 
      if (grid.get(x, y) == EMPTY) { 
       empty.push({ x: x, y: y }) 
      } 
     } 
    } 
    var randpos = empty[Math.floor(Math.random() * empty.length)]; 
    grid.set(FRUIT, randpos.x, randpos.y); 
} 

// Game objects 

var canvas, ctx, keystate, frames; 

function main() { 
    canvas = document.createElement("canvas"); 
    canvas.width = COLS * 20; 
    canvas.height = ROWS * 20; 
    ctx = canvas.getContext("2d"); 
    document.getElementById("game").appendChild(canvas); 

    frames = 0; 
    keystate = {}; // empty object 

    init(); 
    loop(); 
} 

function init() { 
    grid.init(EMPTY, COLS, ROWS); 

    var sp = { x: Math.floor(COLS/2), y: ROWS - 1 }; 
    snake.init(UP, sp.x, sp.y); 
    grid.set(SNAKE, sp.x, sp.y); 

    setFood(); 
} 

function loop() { 
    update(); 
    draw(); 

    window.requestAnimationFrame(loop, canvas); 
} 

function update() { 
    frames++; 
} 

function draw() { 
    var tw = canvas.width/grid.width; 
    var th = canvas.height/grid.height; 

    for (var x = 0; x < grid.width; x++) { 
     for (var y = 0; y < grid.height; y++) { 
      switch (grid.get(x, y)) { 
       case EMPTY: 
        ctx.fillStyle = "#fff"; 
        break; 
       case SNAKE: 
        ctx.fillStyle = "#0ff"; 
        break; 
       case FRUIT: 
        ctx.fillStyle = "#f00"; 
        break; 
      } 
      ctx.fillRect(x * tw, y * th, tw, th); 
     } 
    } 
} 

main(); 
+0

私のコンソールによれば、 'remove:function()'の行にエラーがあると言います。エラー:「Uncaught SyntaxError:Unexpected identifier'」と表示されます。しかしどうですか?それは私の知識に完全に書かれています。 – chompy

+0

remove関数は、その上にブラケットの後にカンマを入れて、挿入関数を分離する必要があるためです。 – sjramsay

+0

それは問題でした!どうもありがとうございました:Dと私の混乱の謝罪。 – chompy

0

あなたのためにスクリプトを整理しました。あなたの問題を強調表示するには:

  • あなたを挿入しますヘビ内部方法をオブジェクトがメソッドを削除からそれを分離するためにカンマが必要でした。
  • 最後ののプロパティスネークオブジェクトには、カンマを使用して他のプロパティと区切る必要があります。あなたはセミコロンを持っています。
  • 上向き変数の後にカンマがあります。それを除く。

このコードは私のために動作します:

<script> 

    // constants 
var COLS = 26, ROWS = 26; 

// IDs 
var EMPTY = 0, SNAKE = 1, FRUIT = 2; 

// Directions 
var LEFT = 0, UP = 1, RIGHT = 2, DOWN = 3; 

var grid = { 
    width: null, 
    height: null, 
    _grid: null, 

    init: function(d, c, r) { 
     this.width = c; 
     this.height = r; 

     this._grid = []; 

     for(var x = 0; x < c; x++) { 
      this._grid.push([]); // push an empty array 
      for(var y = 0; y < r; y++) { 
       this._grid[x].push(d); // push values into each row for the column 
      } 
     } 
    }, 

    set: function(val, x, y) { 
     this._grid[x][y] = val; // 
    }, 

    get: function(x, y) { 
     return this._grid[x][y]; 
    } 
} 

var snake = { 
    direction: null, 
    last: null, 
    _queue: null, 

    init: function(d, x, y) { 
     this.direction = d; 

     this._queue = []; 

     this.insert(x, y); 
    }, 

    insert: function(x, y) { 
     this._queue.unshift({x:x, y:y}) 
     this.last - this._queue[0]; 
    }, 

    remove: function() { 
     return this._queue.pop(); 
    } 
} 

function setFood() { 
    var empty = []; 
    for(var x = 0; x < grid.width; x++) { 
     for(var y = 0; y < grid.height; y++) { 
      if(grid.get(x,y) == EMPTY) { 
       empty.push({x:x, y:y}) 
      } 
     } 
    } 
    var randpos = empty[Math.floor(Math.random() * empty.length)]; 
    grid.set(FRUIT, randpos.x, randpos.y); 
} 

// Game objects 

var canvas, ctx, keystate, frames; 

function main() { 
    canvas = document.createElement("canvas"); 
    canvas.width = COLS*20; 
    canvas.height = ROWS*20; 
    ctx = canvas.getContext("2d"); 
    document.body.appendChild(canvas); 

    frames = 0; 
    keystate = {}; // empty object 

    init(); 
    loop(); 
} 

function init() { 
    grid.init(EMPTY, COLS, ROWS); 

    var sp = {x:Math.floor(COLS/2), y:ROWS-1}; 
    snake.init(UP, sp.x, sp.y); 
    grid.set(SNAKE, sp.x, sp.y); 

    setFood(); 
} 

function loop() { 
    update(); 
    draw(); 

    window.requestAnimationFrame(loop, canvas); 
} 

function update() { 
    frames++; 
} 

    function draw() { 
     var tw = canvas.width/grid.width; 
     var th = canvas.height/grid.height; 

     for(var x = 0; x < grid.width; x++) { 
      for(var y = 0; y < grid.height; y++) { 
       switch(grid.get(x, y)) { 
        case EMPTY: 
        ctx.fillStyle = "#fff"; 
        break; 
        case SNAKE: 
        ctx.fillStyle = "#0ff"; 
        break; 
        case FRUIT: 
        ctx.fillStyle = "#f00"; 
        break; 
       } 
       ctx.fillRect(x*tw, y*th, tw, th); 
      } 
     } 
    } 

    main(); 

</script> 
関連する問題