que tal amigos, estoy programando un juego en c++ basado en tiles con vista isometrica. tengo un problema que me esta quemando la cabeza.
la cosa es asi:
tengo una clase mapa, que tiene un puntero bidimensional a clases tile, y la clase tile tiene un puntero a mapa. la clase tile tiene un metodo dibujar(), que dibuja sobre una estructura BITMAP que esta definida en una clase Graphics, accediendo a esta mediante un puntero en mapa.
aqui esta el codigo, el error que obtengo es "Expected ')' before '*'"
donde esta el error?
//tile.h
#ifndef TILE_H
#define TILE_H
#include "mapa.h"
class Tile
{
public:
Tile(Mapa*, int, int);
~Tile();
void Draw();
private:
Mapa *parent;
int posX;
int posY;
};
#endif // TILE_H
[/code=cpp]
[code]//tile.cpp
#include "tile.h"
Tile::Tile(Mapa *_parent, int x, int y)
{
parent = _parent;
posX = x;
posY = y;
}
Tile::~Tile()
{
}
void Tile::Draw()
{
int px = (posX - posY) * (parent->parent->tile->w /2) + parent->scrollX;
int py = (posX + posY) * (parent->parent->tile->h /2) + parent->scrollY;
draw_sprite(parent->parent->buffer, parent->parent->tile, px, py);
delete px;
delete py;
}
//mapa.h
#include "graphics.h"
#ifndef MAPA_H
#define MAPA_H
#include "tile.h"
class Mapa
{
public:
Mapa(Graphics);
~Mapa();
void Draw();
private:
Tile *matriz[64][64];
int scrollX;
int scrollY;
Graphics *parent;
};
#endif // MAPA_H
#include "mapa.h"
Mapa::Mapa(Graphics *_parent)
{
parent = _parent;
for(int i=0; i<64; i++)
{
for(int j=0; j<64; j++)
{
matriz[j][i] = new Tile(this, j, i);
}
}
}
Mapa::~Mapa()
{
}
void Mapa::Draw()
{
for(int i=0; i<64; i++)
{
for(int j=0; j<64; j++)
{
matriz[j][i]->Draw();
}
}
}
[/code]
Has expuesto el tema, pero no el problema. ¿Qué ocurre con ello?
Cita de: ivancea96 en 11 Mayo 2016, 15:34 PM
Has expuesto el tema, pero no el problema. ¿Qué ocurre con ello?
disculpa, tuve un error al puiblicar el tema, ahora lo publico bien
No has puesto la línea del error.
En cualquier caso, coloca antes de los #IFDEF de cada clase, "class NOMBRE;", donde NOMBRE es el nombre de la clase del archivo. Comprueba si así funciona.
Ej:
class Tile;
#ifndef TILE_H
#define TILE_H
#include "mapa.h"
class Tile
{
Cita de: ivancea96 en 11 Mayo 2016, 15:59 PM
No has puesto la línea del error.
En cualquier caso, coloca antes de los #IFDEF de cada clase, "class NOMBRE;", donde NOMBRE es el nombre de la clase del archivo. Comprueba si así funciona.
Ej:
class Tile;
#ifndef TILE_H
#define TILE_H
#include "mapa.h"
class Tile
{
tenes razon, disculpa. la linea del error es la linea 12 del primer code.
si pongo el forward como dijiste vos me sale este error:
\mapa.cpp|5|error: prototype for 'Mapa::Mapa(Graphics*)' does not match any in class 'Mapa'
Porque no existe. Tú pusiste:
Mapa(Graphics);
Querrías decir:
Mapa(Graphics*);
Cita de: ivancea96 en 11 Mayo 2016, 16:32 PM
Porque no existe. Tú pusiste:
Mapa(Graphics);
Querrías decir:
Mapa(Graphics*);
tenes razon, que error pelotudo...
gracias amigo por tu ayuda jajaj