Я инженер-программист первого года, поэтому я немного разбираюсь в кодировании C++, так или иначе я создаю игру, в которой есть два космических корабля, стреляющих друг в друга. В настоящее время мне удалось сделать первый запуск космического корабля, используя цикл while и функцию GetASyncKeyState. но теперь я делаю пули путешествовать. Я использовал цикл, и мне удалось сделать движение пули вверх. Но есть проблема, я не могу переместить космический корабль до тех пор, пока остановка цикла for или пуля не достигнет вершины окна консоли (я использую консоль btw). есть ли способ как запустить цикл for, так и в то же время? или запускать две разные функции одновременно, поскольку GameMovement() предназначен для перемещения космического корабля, а BulletTravel() - для пули. и я вызываю BulletTravel() из GameMovement().Запуск двух петель одновременно? перемещение и перемещение с использованием петель
void GameMovements()
{
bool FirstInitialization = true;
int Player1XCoordinate = 55, Player2XCoordinate = 55;
int Player1YCoordinateU = 28, Player1YCoordinateD = 29;
while (true)
{
BulletPattern(Player1XCoordinate);
if (FirstInitialization == true)
{
GameBorderAndStatus();
SetCoordinate(Player1XCoordinate, Player1YCoordinateU);
cout << " ^\n";
SetCoordinate(Player1XCoordinate, Player1YCoordinateD);
cout << "^==|==^ \n";
FirstInitialization = false;
}
//MOVEMENTS FOR PLAYER 1
else if (GetAsyncKeyState(VK_LEFT) && Player1XCoordinate != 16)
{
system("cls");
GameBorderAndStatus();
Sleep(10);
Player1XCoordinate -= 3;
SetCoordinate(Player1XCoordinate, Player1YCoordinateU);
cout << " ^\n";
SetCoordinate(Player1XCoordinate, Player1YCoordinateD);
cout << "^==|==^ \n";
}
else if (GetAsyncKeyState(VK_RIGHT) && Player1XCoordinate != 94)
{
system("cls");
GameBorderAndStatus();
Player1XCoordinate += 3;
Sleep(10);
SetCoordinate(Player1XCoordinate, Player1YCoordinateU);
cout << " ^\n";
SetCoordinate(Player1XCoordinate, Player1YCoordinateD);
cout << "^==|==^ \n";
}
else if (GetAsyncKeyState(VK_UP) && Player1YCoordinateU != 24)
{
system("cls");
GameBorderAndStatus();
Player1YCoordinateU -= 2;
Player1YCoordinateD -= 2;
Sleep(10);
SetCoordinate(Player1XCoordinate, Player1YCoordinateU);
cout << " ^\n";
SetCoordinate(Player1XCoordinate, Player1YCoordinateD);
cout << "^==|==^ \n";
}
else if (GetAsyncKeyState(VK_DOWN) && Player1YCoordinateU != 28)
{
system("cls");
GameBorderAndStatus();
Player1YCoordinateU += 2;
Player1YCoordinateD += 2;
Sleep(10);
SetCoordinate(Player1XCoordinate, Player1YCoordinateU);
cout << " ^\n";
SetCoordinate(Player1XCoordinate, Player1YCoordinateD);
cout << "^==|==^ \n";
}
}
}
void GameBorderAndStatus()
{
//Draw game border
for (int i = 0; i < 31; i++)
{
SetCoordinate(15, i);
cout << "|";
SetCoordinate(104, i);
cout << "|";
}
}
void BulletPattern(int Player1MuzzleLocation)
{
for (int i = 25; i != 3; i--)
{
Sleep(100);
SetCoordinate(Player1MuzzleLocation + 3, i);
}
}
void SetCoordinate(int CoordinateX, int CoordinateY)
{
COORD Coordinate;
Coordinate.X = CoordinateX;
Coordinate.Y = CoordinateY;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Coordinate);
}
Я не уверен, что вы знаете об этом, но ни один из ваших «игровых кодов», которые вы используете ('GetAsyncKeyState',' SetCoordinate' и т. Д.), Является стандартным C++. Это означает, что мы не знаем, что это такое, или если есть какие-либо проблемы с тем, как вы их используете. Я бы честно рекомендовал вам поговорить с вашим инструктором для руководства, так как очень мало мы можем сделать, чтобы помочь вам в отладке вашего кода с таким количеством тайных функций. –
@ChrisBritt это лето, и класс закончился. Я только делаю это, чтобы убить какое-то время. в любом случае, я думал, вы все узнали бы GetASyncKetState(), так что извините. любым способом я буду обновлять код с помощью SetCoordinate(). – Neo
@Neo Поскольку ваш код в значительной степени зависит от Windows API, я пошел дальше и повторно поставил ваш вопрос, чтобы надеяться, вы получите более эффективное воздействие от людей, знакомых с соответствующими функциями. Не стесняйтесь возвращать мое редактирование, если вы не найдете его полезным. – computerfreaker