Создайте цикл, который определяет, находится ли объект в левой или правой части экрана с учетом координат

Оставайся на экране! Анимация в видеоиграх похожа на анимацию в фильмах - это нарисованное изображение за изображением (так называемые «кадры»). Прежде чем игра сможет нарисовать кадр, ей необходимо обновить положение объектов на основе их скорости (среди прочего). Сделать это относительно просто: добавляйте скорость к положению объекта в каждом кадре. Для этой программы представьте, что мы хотим отслеживать объект и определять, выходит ли он за левую или правую сторону экрана (то есть его позиция по X меньше 0 и больше ширины экрана, скажем, 100). Напишите программу, которая запрашивает у пользователя начальное положение объекта по осям X и Y, а также начальную скорость по осям X и Y, а затем распечатывает его положение в каждом кадре, пока объект не уйдет за пределы экрана. Дизайн (псевдокод) и реализация (исходный код) этой программы.

Это моя проблема. Я это начал. Создал свои переменные, запросил ввод пользователя, прочитал ввод пользователя и т. Д. Теперь я застрял в том, с какого цикла начать ... Я не прошу помощи, чтобы обмануть !! Просто помогите встать на правильный путь !! Любой вклад приветствуется!


person Sydnie Danielle Seckinger    schedule 27.09.2019    source источник
comment
Это не подходящий SO-вопрос или вообще не настоящий вопрос. Как кто-то еще должен знать, с какого цикла начинать ?! правда, я имею в виду, как? Пожалуйста, попробуйте написать код, а затем показать его аудитории ... расскажите, что вы думаете и что ваш код должен делать!   -  person GitPhilter    schedule 27.09.2019


Ответы (2)


здесь

    // given this is the screen width `object`
     const screen = { x: window.innerWidth, y: window.innerHeight }
    // initial coordinates are chosen by the user 
    // as velocity is applied the'll change ofcourse
     let coordinates = {x: prompt('enter x-axis') , y: prompt('enter x-axis')}
    // game loop update
    update () {
        if (coordinates.x > screen. x){
            // right side 
        } else {
            // left side
        }
    }

person john swana    schedule 27.09.2019

Если вам нужен цикл визуального C ++, используйте таймер и установите для него любую тиковую скорость. Затем добавьте функцию галочки (каждый раз, когда она обновляет эту функцию). Это будет ваша функция обновления, поэтому переместите туда свой код. Вы можете добавить это в конце тика таймера:

this->Refresh();

Это в основном обновляет экран до координат.

Во-вторых, чтобы проверить, на какой стороне экрана отображается что-то вроде Visual C ++, вам нужно знать размер вашего окна.

Допустим, у меня окно 100X100 (x и y). Мы знаем, что прошлое x 50 - это левая часть экрана, а перед ним - правая. Так ты мог бы сделать

if(x > 50){
//do stuff to do with right side
}else if(x < 50){
//do stuff to do with left side
}

Для ввода вы можете добавить текстовые поля. Вы можете написать x и y, а затем, как только кнопка будет отправлена, ввод преобразуется в 2 int (inputx и inputy). В функции обновления у вас может быть это так:

//inputx is 10, inputy is 20

bool xdone = false;
bool ydone = false;

if(xdone == false){
if(inputx < 0){ // checks if x is negative
x = x - 1; //If the input was negative, it will start decreasing
}else if(inputx > 0){// checks if x is positive
x = x + 1;//If the input was positive, it will start increasing
}
}
if(ydone == false){
if(inputy < 0){ // checks if y is negative
y = y - 1; //If the input was negative, it will start decreasing
}else if(inputy > 0){// checks if y is positive
y = y + 1;//If the input was positive, it will start increasing 
}
}
if(inputx == x || inputy == y){
this->[NAME OF TIMER]->Enabled = false;
}

if(inputx == x){
xdone = true;
}
if(inputy == y){
ydone = true;
}
x = inputx;
y = inputy;
this->Refresh();

Если я сделаю что-нибудь не так с кем-то, кто знает, не стесняйтесь поправлять меня.

person big boi    schedule 29.09.2019