Игра в понг через Javascript: ракетка игрока, чтобы оставаться в области холста

Я учу детей базовому и простейшему способу разработки и кодирования игры Pong с помощью Javascript в редакторе p5. У меня просто вопрос по начальному этапу проектирования.

Код выглядит следующим образом:

function setup()

{
    createCanvas(400,400);
}

function draw()

{
    background('black');
    rect(20,160,10,80);
    rect(195,195,10,10);
    rect(380,mouseY,10,80);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.0.0/p5.min.js"></script>

Первая функция rect предназначена для компьютерного манипулятора, управляемого ИИ. Вторая функция rect предназначена для мяча. Третья функция rect предназначена для ракетки игрока.

Я использую mouseY для вертикального движения, но весло выходит за пределы холста размером 400*400 к нижней части холста.

Как я могу предотвратить перемещение весла игрока за пределы холста без использования какой-либо функции и путем простого добавления / вычитания различных числовых координат, задействованных в этом коде?

1 ответ

Вы должны ограничить координату y ракетки диапазоном [0, высота-80]. height - встроенная переменная, содержащая высоту холста, а высота ракетки - 80.

function setup() {
    createCanvas(400,400);
}

function draw() {
    background('black');
    rect(20,160,10,80);
    rect(195,195,10,10);

    let y = mouseY;
    if (y < 0)
        y = 0;
    if (y+80 > height)
        y = height-80;
    rect(380,y,10,80);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.0.0/p5.min.js"></script>

Это можно улучшить, используя min а также max:

function setup() {
    createCanvas(400,400);
}

function draw() {
    background('black');
    rect(20,160,10,80);
    rect(195,195,10,10);

    let y = max(0, min(height-80, mouseY));
    rect(380,y,10,80);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.0.0/p5.min.js"></script>

Другие вопросы по тегам