#include <iostream>
#include <Windows.h>
using namespace std;
const int HEIGHT = 20;
const int WIDTH = 40;
class Snake {
public:
int r[(HEIGHT - 2) * (WIDTH - 2)];
int c[(HEIGHT - 2) * (WIDTH - 2)];
int dr, dc, size;
Snake(int, int);
void move(int[][WIDTH]);
};
void print(int[][WIDTH]);
void init(int[][WIDTH], Snake*);
void input(Snake*);
int main() {
Snake snake(1, 1);
int board[HEIGHT][WIDTH];
init(board, &snake);
bool GAME_RUNNING = true;
while (GAME_RUNNING) {
input(&snake);
snake.move(board);
print(board);
Sleep(1000);
system("cls");
}
cin.ignore();
cin.get();
return 0;
}
void init(int board[][WIDTH], Snake* snake) {
for (int c = 0; c < WIDTH; c++) {
board[0][c] = 1;
}
for (int r = 1; r < HEIGHT; r++) {
board[r][0] = 1;
}
for (int r = 1; r < HEIGHT; r++) {
board[r][WIDTH - 1] = 1;
}
for (int c = 1; c < WIDTH - 1; c++) {
board[HEIGHT - 1][c] = 1;
}
for (int r = 1; r < HEIGHT - 1; r++) {
for (int c = 1; c < WIDTH - 1; c++) {
board[r][c] = 0;
}
}
board[snake->r[0]][snake->c[0]] = 2;
}
void print(int board[][WIDTH]) {
for (int r = 0; r < HEIGHT; r++) {
for (int c = 0; c < WIDTH; c++) {
switch (board[r][c]) {
case 0:
cout << " ";
break;
case 1:
cout << "#";
break;
case 2:
cout << "@";
break;
}
}
cout << endl;
}
}
void input(Snake* snake) {
if (GetAsyncKeyState(VK_UP)) {
snake->dr = 1;
snake->dc = 0;
} else if (GetAsyncKeyState(VK_DOWN)) {
snake->dr = -1;
snake->dc = 0;
} else if (GetAsyncKeyState(VK_RIGHT)) {
snake->dc = 1;
snake->dr = 0;
} else if (GetAsyncKeyState(VK_LEFT)) {
snake->dc = -1;
snake->dr = 0;
}
}
Snake::Snake(int r, int c) {
size = 0;
this->r[0] = r;
this->c[0] = c;
}
void Snake::move(int board[][WIDTH]) {
int nextR = this->r[0] + this->dr;
int nextC = this->c[0] + this->dc;
if (board[nextR][nextC] == 0) {
this->r[0] = nextR;
this->c[0] = nextC;
}
}
Thank you in advance, any help is appreciated.

New Topic/Question
Reply




MultiQuote









|