No entiendo porque cada dos por tres, el operador delete[] me falla así como los new...
Os explico, tengo un juego de la serpiente en que cargo los niveles en un array al principio del programa:
Nivel *Laberinto; // Puntero de estructura nivel, es un puntero global. ... // Inicialización de niveles Laberinto = new Nivel[NUMERO_DE_MAPAS]; /* Creamos tantas estructuras nivel como mapas haya*/ ... // Iniciamos cada nivel con sus parametros
Cargo los mapas y hasta ahí bien, el problema que mi juego tiene un editor de niveles. Luego el número de mapas puede variar en la ejecución, de modo que he colocado este código cuando se crea un nuevo mapa:
Nivel Buffer[NUMERO_DE_MAPAS+1]; for (int l = 0; l < NUMERO_DE_MAPAS;l++) Buffer[l] = Laberinto[l]; NUMERO_DE_MAPAS++; delete[] Laberinto; // Borramos Laberinto y lo volvemos a crear Laberinto = new Nivel[NUMERO_DE_MAPAS]; for (int l = 0; l < NUMERO_DE_MAPAS;l++) Laberinto[l] = Buffer[l]; Laberinto[NUMERO_DE_MAPAS-1].InicializarNivel(Fasess,1,0,0);
El código funciona, pero es muy "delicadito". He probado a crear varios niveles del tirón, cuando ya llevo 5-6 niveles creado el programa se queda pillado y sale el mensajito de windows de "Este programa no responde".
El numero de mapas no es lo suficientemente grande (21-25) como para agotar la memoria, y bueno la estructura nivel tampoco tiene demasiada carga:
struct Nivel { Mapa Fase; // Esto es un matriz char de 80,60 aproximadamente int POSICIONINICIALX; int POSICIONINICIALY; int MOVIMIENTOX; int MOVIMIENTOY; int LONGITUDINICIAL; bool Piezas_Moviles; double Tiempo_Piezas_Moviles; int Piezas_Moviles_InicialX[100],Piezas_Moviles_InicialY[100],Pieza_Movil_MovimientoX[100],Pieza_Movil_MovimientoY[100], Piezas_Moviles_Contador; ... // Funciones };
Puede ser fallo del SO? Corrupción de memoria? OverBuffer? (esto último no creo, porque si me funciona cuando creo 1-2 mapas...).
Os subo el código entero, aunque os advierto que es demásiado largo como para verlo entero:
https://dl.dropbox.com/u/69551225/Snake%20C%C3%B3digo.rar
Vectores
¿Y por qué no usas vectores? Por ejemplo:
A ver si te sirve, de todas formas es una alternativa, hay muchas más formas.
~Actualmente estudiando Ingeniería de las Tecnologías de la Telecomunicación en la Escuela de Ingenieros~
Al final ya lo solucione,
Al final ya lo solucione, pero gracias:
Mi creacciónes particulares:
http://www.scenebeta.com/noticia/la-serpiente
http://www.scenebeta.com/node/22535