Я пытаюсь вычислить угол движения для спрайта в C ++.
Хотя сейчас я просто использую консоль для вывода своих результатов.
Моя проблема в том, что когда мои результаты отображаются в консоли, я не могу заставить ось х перейти в минус числа.
К сожалению, я только что узнал об основах триггера, поэтому понятия не имею, правильно ли я делаю математику.
Например: если я выберу угол, равный 270, и скорость, равную 1, консоль отобразит новые координаты как (1, -1), когда я думала, что это должно быть (-1,0)
Точно так же, если я попробую свой угол как -90 и свою скорость как 1, я получу (0, -1)
Разве х не может войти в минус числа?
Или я совершаю фундаментальную ошибку?
Мой код приведен ниже - поэтому, если кто-нибудь и укажет, что я делаю неправильно, это будет с благодарностью.
#include <iostream>
#include <cmath>
using namespace std;
const float PI = 3.14159265;
class sprite {
public:
int x;
int y;
int angle;
int speed;
sprite();
};
sprite::sprite() {
x = 0;
y = 0;
angle = 0;
speed = 0;
}
int main() {
int userInput = 0;
sprite mySprite;
cout << "Starting co-ordinates: (" << mySprite.x << "," << mySprite.y << ")\n\n";
while(userInput != 999) {
cout << "Angle to move: ";
cin >> userInput;
mySprite.angle = userInput;
cout << "Speed to move at: ";
cin >> userInput;
mySprite.speed = userInput;
mySprite.x += ceil(cos(mySprite.angle*PI/180)*mySprite.speed);
mySprite.y += ceil(sin(mySprite.angle*PI/180)*mySprite.speed);
cout << "\n\n";
cout << "New co-ordinates: (" << mySprite.x << "," << mySprite.y << ")\n\n";
}
return 0;
}