Prosta gra "wąż" problem z malowaniem planszy
Ostatnio zmodyfikowano 2016-09-23 18:23
KingFromAfrica Temat założony przez niniejszego użytkownika |
Prosta gra "wąż" problem z malowaniem planszy » 2016-09-23 18:23:06 Witam, ostatnio wziąłem się za pisanie węży i utknąłem w miejscu kiedy trzeba dorysowywać mniejsze wężyki po zjedzeniu owocu. Współrzędne tych mniejszych są dobre i wszystko się powinno zgadzać, ale nie działa.Prosiłbym o przeglądnięcie w szczególności funkcji Draw bo wydaje mi się że to w niej leży problem,aczkolwiek głowy nie dam uciąć :D. Z góry bardzo dziękuje.Poniżej wklejam kod: #include<iostream> #include<stdlib.h> #include<Windows.h> #include<conio.h> #include <time.h> using namespace std;
int score( 0 ); int const height = 11; int const length = 21; int xSnake =( length / 2 ) + 1; int ySnake =( height / 2 ) + 1; int xMap( 1 ), yMap( 1 ), xFruit, yFruit; int smallSnakesNumber( 0 ), xSmallSnakes[ 100 ], ySmallSnakes[ 100 ], xFull[ 200 ], yFull[ 200 ]; unsigned char direction; string eDirection;
void Draw() { for( int i = 1; i <= length; i++ ) { cout << "X"; xMap++; } cout << endl; yMap = 2; xMap = 1; for( int i = 1; i <= height - 2; i++ ) { cout << "X"; xMap++; for( int t = 0; t < length - 2; t++ ) { if( smallSnakesNumber > 0 ) { if(( xMap == xSnake ) &&( yMap == ySnake ) ) cout << "O"; else if(( xMap == xFruit ) &&( yMap == yFruit ) ) cout << "F"; else if(( xMap == xSmallSnakes[ t ] ) &&( yMap == ySmallSnakes[ t ] ) ) cout << "o"; else cout << " "; } else if( smallSnakesNumber == 0 ) { if(( xMap == xSnake ) &&( yMap == ySnake ) ) cout << "O"; else if(( xMap == xFruit ) &&( yMap == yFruit ) ) cout << "F"; else cout << " "; } xMap++; } cout << "X" << endl; yMap++; xMap = 1; } for( int i = 1; i <= length; i++ ) { cout << "X"; xMap++; } }
void Move() { if( _kbhit() ) { direction = _getch(); switch( direction ) { case 'w': eDirection = "TOP"; break; case 's': eDirection = "BOT"; break; case 'd': eDirection = "RIGHT"; break; case 'a': eDirection = "LEFT"; break; } } if( smallSnakesNumber > 0 ) { for( int i = smallSnakesNumber - 1; i >= 0; i-- ) { if( i == 0 ) { xSmallSnakes[ i ] = xSnake; ySmallSnakes[ i ] = ySnake; } else { xSmallSnakes[ i ] = xSmallSnakes[ i - 1 ]; ySmallSnakes[ i ] = ySmallSnakes[ i - 1 ]; } } } if( eDirection == "TOP" ) ySnake--; else if( eDirection == "BOT" ) ySnake++; else if( eDirection == "RIGHT" ) xSnake++; else if( eDirection == "LEFT" ) xSnake--; }
void Check() { if( xSnake == 1 ) xSnake = 19; else if( xSnake == 21 ) xSnake = 1; else if( ySnake == 1 ) ySnake = 10; else if( ySnake == 11 ) ySnake = 2; if(( xSnake == xFruit ) &&( ySnake == yFruit ) ) { score += 10; xFruit =( rand() % 19 ) + 2; yFruit =( rand() % 9 ) + 2; smallSnakesNumber++; } }
void SmallSnakesDraw() { if( smallSnakesNumber > 0 ) { for( int i = 0; i < smallSnakesNumber; i++ ) { if( i == 0 ) { xSmallSnakes[ i ] = xSnake; ySmallSnakes[ i ] = ySnake; } else if( i > 0 ) { xSmallSnakes[ i ] = xSmallSnakes[ i - 1 ]; ySmallSnakes[ i ] = ySmallSnakes[ i - 1 ]; } } } }
int main() { srand( time( NULL ) ); xFruit =( rand() % 19 ) + 2; yFruit =( rand() % 9 ) + 2; int gameOver = 0; while( gameOver != 1 ) { system( "cls" ); Move(); Draw(); Check(); cout << endl << "Score:" << score << " Small snakes number:" << smallSnakesNumber << endl; cout << "Wspolrzedne wezy:" << endl; cout << "Glowny waz (" << xSnake << "," << ySnake << ")" << endl; if( smallSnakesNumber > 0 ) { for( int i = 0; i < smallSnakesNumber; i++ ) { cout << i + 1 << " dodatkowy waz " << "(" << xSmallSnakes[ i ] << "," << ySmallSnakes[ i ] << ")" << endl; } } Sleep( 500 ); } cin.get(); return 0; } |
|
« 1 » |