Я пытаюсь получить след, который появится за игровым байком, но по какой-то причине вместо «x», появляющегося за игроком каждый раз, когда он движется, игрок фактически дублирует себя. Это звучит немного запутанно, но вы должны сами составить этот код и посмотреть, что я имею в виду. То, что я пытаюсь сделать, - это просто получить «x» за игроком, а не оставлять след «P». спасибоC++ tron 2d array repeating
#include <iostream>
#include "windows.h"
#include <conio.h>
#include <ctime>
using namespace std;
//prototype functions used
void DisplayMap();
void PlayerBike();
void setCursorTo();
void SetBike();
//global variables that will be used by different functions
int PlayerX = 10;
int PlayerY = 70;
bool GameOver = false;
const int H = 25; // const variable so it doesnt change size
const int W = 82;// const variable so it doesnt change size
char Map[H][W]; // char map with HxW
char trail = 'x'; // this is where the trail is initialized as a *
int main()
{
SetBike();
DisplayMap();
while (GameOver == false){
setCursorTo();
PlayerBike();
} // end while loop
return 0;
}//end main
void DisplayMap(){ // display map function
for(int i = 0; i < H; i++){
for(int j = 0; j < W; j++){
if(i == 0 || i == 24 || j == 0 || j == 81){ Map[i][j] = 'x';} // characters in row 24x81 are changed to x
cout << Map[i][j]; // output map
} // end for loop
cout << "\n"; // create new line to output the map correctly
} //end for loop
} // end DisplayMap function
void SetBike(){
Map[PlayerX] [PlayerY] = 'P';
}
void PlayerBike(){
Map[PlayerY][PlayerX]= trail; // I would like this trail to repeat behind the player but it does not appear at all.
if (kbhit()) {// get user key input
char GetCh = getch(); // GetCh equal to the button the user presses
if (GetCh == 'w'){PlayerX = PlayerX - 1; Trailx = Trailx -1;}
else if (GetCh == 's'){PlayerX = PlayerX +1; Trailx = Trailx +1;}
else if (GetCh == 'd'){PlayerY = PlayerY +1;}
else if (GetCh == 'a'){PlayerY = PlayerY - 1;}
}// end kbhit
}// end PlayerBike function
void setCursorTo() // stops constant flashing on the map
{
HANDLE handle;
COORD position;
handle = GetStdHandle(STD_OUTPUT_HANDLE);
position.X = 0;
position.Y = 0;
SetConsoleCursorPosition(handle, position);
}
Благодарим вас за ввод, я установил карту, велосипед игрока «SetBike()» вне цикла, так что теперь они не повторяются многократно в цикле. Как только я устанавливаю плеер и нахожу карту снаружи, у меня нет возможности переместить персонаж игрока с помощью функции PlayerBike() и как я могу постоянно обновлять карту? doesnt setCursorTo(); функция делает это уже? – ssj3goku878
Ваш 'setCursorTo' определенно делает * не * делает это. Посмотрите на свой собственный код ... Похоже, вы внесли мои предложения только частично - особенно в пункты с 1 по 5. Я вижу, что вы переместили «DisplayMap» из цикла; извините, это должно быть * в * - я имел в виду взятие 'P'. Попытайтесь повторить попытку? – usr2564301
Есть ли способ связаться с вами по электронной почте или скайпу? Мне нужна дополнительная помощь :( – ssj3goku878