Создайте цикл, который определяет, находится ли объект на левой или правой стороне экрана с учетом координат - PullRequest
0 голосов
/ 27 сентября 2019

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

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

Ответы [ 2 ]

0 голосов
/ 29 сентября 2019

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

this->Refresh();

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

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

Допустим, мое окно 100X100 (х и у).Мы знаем, что последние 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();

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

0 голосов
/ 27 сентября 2019

здесь

    // 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
        }
    }

...