Note that there are some explanatory texts on larger screens.

plurals
  1. POTrying to create tetris, but can't
    primarykey
    data
    text
    <p>For some reason my code refuses to let me assign an x and y position to each block. Each block is 30 pixels wide and tall and will be colored according to which piece it is a part of. Gravity and a clear function haven't been implemented and the move left and move right function are so different because it wasn't working right and then recreated it as it is seen now in the left function and it works less...</p> <p>Please help!</p> <p>Edit: My apologies, i dont normally post anything. The part i cant get past now is function block/add block/typeSet/assigning the type. it assigns a random one pretty well but then when that type (such as square) goes to assign x and y values it gives an error.</p> <pre><code>&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;Tetris in Canvas&lt;/title&gt; &lt;style type="text/css"&gt; canvas { border: solid 1px black; margin: -8px; } &lt;/style&gt; &lt;script type="text/javascript"&gt; var canvas = null; var ctx = null; var blockArray = []; var board = []; var blockNum = 0; for (var s = 0; s &lt; 14; s++) { board[s] = [27]; for (var t = 0; t &lt; 27; t++) { board[s][t] = -1; } } document.onkeydown = function(event) { var keyCode; if(event == null) keyCode = window.event.keyCode; else keyCode = event.keyCode; switch(keyCode) { case 37: left(blockArray.length); break; case 38: up(blockArray.length); break; case 39: right(blockArray.length); break; case 40: down(blockArray.length); break; default: break; } } window.onload = function init() { canvas = document.getElementById('Canvas1'); ctx = canvas.getContext("2d"); blank(); addBlock(); animate(); } function up(i) { blank(); animate(); } function down(i) { var u = 0; var p = 0; while(u&lt;4) { if (blockArray[i].y[u] + 1 &gt; 26) { u = 10; } else if ((board[blockArray[i].x[u]][blockArray[i].y[u] + 1]) == -1) { u++; } else { p = u; for (var g = 0; ((g &lt; 4) &amp;&amp; (p = u)); g++) { if ((blockArray[i].x[u] == blockArray[i].x[g]) &amp;&amp; (blockArray[i].y[u] + 1 == blockArray[i].y[g])) { u++; } } if (p == u) u = 10; } } if (u &lt; 10) { for (var j=0; j&lt;4; j++) { blockArray[i].y[j] +=1; } } else addBlock(); animate(); } function right(i) { var u = 0; var p = 0; while(u&lt;4) { if (blockArray[i].x[u] + 1 &gt; 13) { u = 10; } else if ((board[blockArray[i].x[u] + 1][blockArray[i].y[u]]) == -1) u++; else { p = u; for (var g = 0; ((g &lt; 4) &amp;&amp; (p = u)); g++) { if ((blockArray[i].x[u] + 1 == blockArray[i].x[g]) &amp;&amp; (blockArray[i].y[u] == blockArray[i].y[g])) u++; } if (p == u) u = 10; } } if (u &lt; 10) { for (var j=0; j&lt;4; j++) { blockArray[i].x[j] +=1; } } else addBlock(); animate(); } function left(i) { var u; var p = 14; for (var w = 0; w&lt;4; w++) { if (blockArray[i].x[w] &lt; p) { p = blockArray[i].x[w]; u = w; } } if (p &gt; 0) { if ((board[blockArray[i].x[u] - 1][blockArray[i].y[u]]) == -1) { for (var j=0; j&lt;4; j++) { blockArray[i].x[j] -=1; } } } animate(); } function block(x, y, type) { blockNum += 1; this.id = blockNum; this.x = []; this.y = []; this.landed = false; this.type = Math.floor(Math.random() * (6)) + 1; typeSet(this.type); } function addBlock() { blockArray[blockArray.length] = new block(); } function typeSet(type) { i = blockArray.length; switch (type) { case 1: square(i); break; case 2: elR(i); break; case 3: elL(i); break; case 4: line(i); break; case 5: zeR(i); break; case 6: zeL(i); break; default: break; } } function animate() { fillBoard(); colorBoard(); } function fillBoard() { for (var i = 0; i &lt; 14; i++) { for (var q = 0; q &lt; 27; q++) { board[i][q] = -1; } } for (var i=0; i&lt;blockArray.length; i++) { for (var q=0; q&lt;4; q++) { board[blockArray[i].x[q]][blockArray[i].y[q]] = blockArray[i].type; } } } function colorBoard() { blank(); ctx.strokeStyle = "white"; for(var q=0; q&lt;14; q++) { for(var r=0; r&lt;27; r++) { switch (board[q][r]) { case 1: ctx.fillStyle = "green"; color(q,r); break; case 2: ctx.fillStyle = "orange"; color(q,r); break; case 3: ctx.fillStyle = "cyan"; color(q,r); break; case 4: ctx.fillStyle = "black"; color(q,r); break; case 5: ctx.fillStyle = "yellow"; color(q,r); break; case 6: ctx.fillStyle = "brown"; color(q,r); break; default: break; } } } } function color(q,r) { ctx.fillRect(q*30,(r-4)*30,30,30); ctx.strokeRect(q*30,(r-4)*30,30,30); } function square(i) { blockArray[i].x[0] = 7; blockArray[i].y[0] = 0; blockArray[i].x[1] = 7; blockArray[i].y[1] = 1; blockArray[i].x[2] = 8; blockArray[i].y[2] = 0; blockArray[i].x[3] = 8; blockArray[i].y[3] = 1; } function elR(i) { blockArray[i].x[0] = 7; blockArray[i].y[0] = 0; blockArray[i].x[1] = 7; blockArray[i].y[1] = 1; blockArray[i].x[2] = 7; blockArray[i].y[2] = 2; blockArray[i].x[3] = 8; blockArray[i].y[3] = 2; } function elL(i) { blockArray[i].x[0] = 7; blockArray[i].y[0] = 0; blockArray[i].x[1] = 7; blockArray[i].y[1] = 1; blockArray[i].x[2] = 7; blockArray[i].y[2] = 2; blockArray[i].x[3] = 6; blockArray[i].y[3] = 2; } function line(i) { blockArray[i].x[0] = 7; blockArray[i].y[0] = 0; blockArray[i].x[1] = 7; blockArray[i].y[1] = 1; blockArray[i].x[2] = 7; blockArray[i].y[2] = 2; blockArray[i].x[3] = 7; blockArray[i].y[3] = 3; } function zeR(i) { blockArray[i].x[0] = 6; blockArray[i].y[0] = 0; blockArray[i].x[1] = 7; blockArray[i].y[1] = 0; blockArray[i].x[2] = 7; blockArray[i].y[2] = 1; blockArray[i].x[3] = 8; blockArray[i].y[3] = 1; } function zeL(i) { blockArray[i].x[0] = 8; blockArray[i].y[0] = 0; blockArray[i].x[1] = 7; blockArray[i].y[1] = 0; blockArray[i].x[2] = 7; blockArray[i].y[2] = 1; blockArray[i].x[3] = 6; blockArray[i].y[3] = 1; } function blank() { ctx.restore(); ctx.fillStyle = "blue"; ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height); ctx.save(); } function blank2() { ctx.restore(); ctx.fillStyle = "purple"; ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height); ctx.save(); } function rotateImgRight() { for(d = 0; d &lt; 180; d++) { setTimeout(rotateImg, 50); } } function rotateImgLeft() { for(d = 0; d &lt; 180; d++) { setTimeout(rotateImg2, 50); } } function rotateImg2() { degrees = degrees - 0.5; radian = (Math.PI / 180.0) * degrees; blank(); ctx.translate(ctx.canvas.width/2, 700); ctx.rotate(radian); ctx.drawImage(srcImg, -srcImg.width/2,-srcImg.height/2); slide = (degrees / 90) % 4; } function rotateImg(x,y) { degrees = degrees + 0.5; radian = (Math.PI / 180.0) * degrees; ctx.translate(x,y); ctx.rotate(radian); ctx.drawImage(srcImg, -srcImg.width/2,-srcImg.height/2); slide = (degrees / 90) % 4; } &lt;/script&gt; &lt;/head&gt; &lt;body&gt; &lt;div style="width: 100%; text-align:center"&gt; &lt;canvas id="Canvas1" width="421" height="690"&gt;Your browser does not support canvas.&lt;/canvas&gt; &lt;/div&gt; &lt;/body&gt; &lt;/html&gt; </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload