#p5.js
Вопрос:
У меня пока есть кое-какой код:
function setup() { createCanvas(500,550); } function draw() { background(150); o(); } function block(x,y) { rectMode(CENTER) rect(x,y, cols, rows, 2) } function o() { fill(255, 255,0) block(width/2, rows); block(width/2, rows* 2); block(width/2 cols, cols) block(width/2 cols, cols * 2) }
И мне интересно, что делать дальше. Я подумал о создании drop
функции, и вот как это будет выглядеть:
function drop() { rows = rows; cols = cols; }
Затем добавьте это в setup
функцию: frameRate(10);
Так что он движется медленнее, но это не сработает. Я не знаю, как заставить блок опуститься, не изменив значения cols
и rows
. Мой вопрос в том, как я могу заставить блоки двигаться вниз в функции(например, вызываемой функции drop
)?
ПРАВКА: Функция удаления не сработала бы, потому что она изменила бы размер, а не положение.
Ответ №1:
Чтобы блок двигался, он должен иметь x
и y
позицию.
В настоящее время вы просто жестко задали позицию.
block(width/2, rows);
Вместо этого вам следует сделать что-то вроде этого
let x; let y = rows; function setup() { createCanvas(500, 500); x = width / 2; //you could not set x before now, because the program didn't yet know what the width was
Затем замените свою o()
функцию на эту:
function o() { fill(255, 255,0) block(x, y); block(x, y cols); block(x cols, y); block(x cols, y cols); }
Наконец, вы можете изменить положение x и y в своей drop()
функции (не забудьте также вызвать ее).
function drop() { y = 10; }
Комментарии:
1. Это сработало. И я могу сделать это для всех фигур для тетриса, таких как L и T? А также должен ли я добавить y по кольцам: ?
y = cols
2. По какой-то причине он не позволяет мне редактировать, так что вот ^^^ комментарий лучше: это сработало. И я могу сделать это для всех фигур для тетриса, таких как L и T? А также должен ли я добавить y по кольцам: ?
y = cols
Мне также нужно, чтобы блоки падали, как при щелчке, так что мне следует снизить частоту кадров?3. Да, вы можете это сделать
y = cols
, и да, вы можете сделать это для всех блоков. Вы также можете изменять частоту кадров и количество падающих блоков в каждом кадре.4. Это хорошая идея… Не могу поверить, что я об этом не подумал. Спасибо за вашу помощь!
5. Я хотел бы получить ваш пост, но у меня даже нет 15 представителей.