我想打印一个国际象棋/棋盘,并在一个教程的帮助下找到了此代码。我了解除此行以外的所有活动:rect(i * squareSize,j * squareSize,squareSize, squareSize);
我不明白的是为什么要将i乘以squareSize变量。
我的第一个直觉是在fill函数下方而不是else下方的if / else语句内的区域。
有人可以向我解释我所缺少的内容吗,为什么我的方法不起作用并且必须乘以squareSize?
我在以下代码段中添加了我的工作代码。
const WIDTH = 400;
const HEIGHT = 400;
const ROWS = 10;
const COLS = 10;
var squareSize = WIDTH/10;
function setup() {
createCanvas(400, 400);
}
function draw() {
background(220);
drawBoard();
}
function drawBoard(){
for(var i = 0; i < ROWS; i++)
{
for(var j = 0; j < COLS; j++)
{
if((i+j) % 2 == 0)
{
fill(0);
}
else
{
fill(255);
}
rect(i * squareSize,j * squareSize,squareSize, squareSize);
}
}
noLoop();
}
html, body {
margin: 0;
padding: 0;
}
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.7.1/p5.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.7.1/addons/p5.dom.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.7.1/addons/p5.sound.min.js"></script>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<script src="sketch.js"></script>
</body>
</html>
答案 0 :(得分:0)
为什么我的方法不起作用
我有点困惑:您的代码似乎可以正常工作。什么不起作用呢?
我不明白的是为什么要将i乘以squareSize变量。
遇到这样的问题时,您可以做的最好的事情之一就是拿出一些方格纸并画出一些例子。
假设您有一张1000x1000的纸,并且想要在其上绘制10x20(10列x 20行)的网格。
请注意,对于每个列和行的x和y值,我们将列或行索引(您的i
和j
变量)乘以列和行的大小(您的squareSize
变量)。
如果仍然不清楚,请尝试列举一些示例。