Witajcie. Dzisiaj poczytałem trochę o klasach i jako iż jestem początkującym programistą chciałbym wam pokazać mój kod na snake'a który nie działa.
Prosiłbym o NIE-naprawienie go, lecz pokazanie co jest źle, co musze poprawić, o ile wszystko nie jest źle.
Kod się kompiluje, debbuguje i inne takie tam, pojawai się mapa ale snake ani jedzenie nie pojawia się na 'mapie'.
Kod:
#include <iostream>
#include <ctime>
using namespace std;
class Snake
{
public:
int x,y; // głowa węża..
int dlugosc;
int punkty;
bool onX;
int fposx,fposy;
//////////////////////////
void setPos();
void randomFood();
void addPiece();
};
class Plansza
{
public:
int map[25][25];
void setMap();
void ShowMap();
};
void Snake::randomFood()
{
srand((unsigned)time(0));
Plansza mapa;
bool foodOnMap = false;
for(int i = 0; i < 25; i++)
{
for(int j = 0; j < 25; j++)
{
if(mapa.map[i][j] == 1)
foodOnMap = true;
}
}
if(foodOnMap == false)
{
fposx = rand() % 25;
fposy = rand() % 25;
mapa.map[fposx][fposy] = 1; // jedzenie = 1;
}
}
void Snake::setPos()
{
Plansza mapa;
mapa.map[x][y] = 3; // głowa węża = 3
for(int i = 0; i < dlugosc; i++)
{
if(onX)
mapa.map[x-i][y] = 2; // ciało węża.
else
mapa.map[x][y+i] = 2;
}
}
void Snake::addPiece()
{
Plansza mapa;
if(mapa.map[x][y] == 3 && x == fposx && y == fposy)
{
punkty++;
dlugosc++;
}
}
void Plansza::setMap()
{
for(int i = 0; i < 25; i++)
for(int j = 0; j < 25; j++)
map[i][j] = 0;
}
void Plansza::ShowMap()
{
//Snake snake;
cout << "|-------------------------|";
cout << "\n";
for(int i = 0; i < 25; i++)
{
cout << "|";
for(int j = 0; j < 25; j++)
{
if(map[i][j] == 0)
cout << " ";
if(map[i][j] == 1)
cout << "*";
if(map[i][j] == 2 || map[i][j] == 3)
cout << "+";
}
cout << "|\n";
}
cout << "|-------------------------|";
}
int main()
{
Plansza mapa;
Snake snake;
mapa.setMap();
snake.onX = true;
snake.dlugosc = 5;
snake.x = 0;
snake.y = 0;
snake.punkty = 0;
snake.setPos();
snake.randomFood();
mapa.ShowMap();
cin.sync();
cin.get();
return 0;
}