下面是代碼,下面是jsfiddle的鏈接。對俄羅斯方塊和網格使用數組。爲什麼這件作品不會完全顯示出來?
塊的第一行沒有繪製出於某種原因,所有這些2維的循環對我來說很難包圍我的頭,並且找不到塊爲什麼只是從第二排並不完整。
add_block函數應該從任何塊中讀取數組數據並將其放在我的x和y座標所在的網格上。
如果有人知道如何旋轉塊,那也會很酷,我知道爲了轉動一些+90度的東西我需要轉置然後再渲染每一行,但它在早期並沒有真正起作用嘗試。
我知道我不擅長解釋,但我一定會回答你的任何問題。 在此先感謝!我真的很想有一個關於數組和double for循環如何與海誓山盟互動的完整圖片,在我的腦海中。
var canvas = document.getElementById('c');
var ctx = canvas.getContext('2d');
canvas.width = 300;
canvas.height = 500;
var grid_columns = 10;
var grid_rows = 15;
var grid_cell_size = 10;
var grid = [];
function create_empty_grid(){
for(var i=0;i<grid_columns;i++){
grid[i] = [];
for(var j=0;j<grid_rows;j++){
grid[i][j] = 0;
}
}
// END DOUBLE FOR LOOPS
}
function clear_grid(){
for(var i=0;i<grid_columns;i++){
for(var j=0;j<grid_rows;j++){
grid[i][j] = 0;
}
}
// END DOUBLE FOR LOOPS
}
var x = 0;
var y = 0;
var w = 2;
var h = 3;
var block = [];
block[0] = [
[1,0,0,0],
[1,1,0,0],
[0,1,0,0],
[0,0,0,0]
];
function add_block(num){
var b = block[num];
for(var i=0;i<w;i++){
for(var j=0;j<h;j++){
if(i >= x && j >= y && i <= w && j <= h){
grid[i][j] = b[i][j];
}
}
}
// END DOUBLE FOR LOOPS
}
function draw(){
for(var i=0;i<grid_columns;i++){
for(var j=0;j<grid_rows;j++){
ctx.fillStyle = "black";
if(grid[i][j] === 1){
ctx.fillStyle = "red";
}else if(grid[i][j] === 0){
ctx.fillStyle = "green";
}
ctx.fillRect(i*grid_cell_size,j*grid_cell_size,grid_cell_size-1,grid_cell_size-1);
}
}
// END DOUBLE FOR LOOP
}
function update(){
}
function tick(){
clearRect(0,0,canvas.width,canvas.height);
clear_grid();
draw();
update();
}
create_empty_grid();
add_block(0);
draw();
在'b [i] [j]'中,請注意'i'指的是您的矩陣的y軸,'j'指的是x軸。你是這樣做的。 – Arnauld