Hola tengo un error, estoy ejecutando en el visual studio 2019 y me salta un error por infracción en lectura en el archivo Gamemap.cpp el...

Fernando Leal

Fernando Leal

Pregunta
student
hace 5 años

Hola tengo un error, estoy ejecutando en el visual studio 2019 y me salta un error por infracción en lectura en el archivo Gamemap.cpp el cual es el siguiente:

Se produjo una excepción no controlada: infracción de acceso de lectura.

FramePointer fue 0x1AF4305. ocurrió

Adjunto mi código por si alguien me puede ayudar:

#include <iostream> #include <stdlib.h> #include <fstream> #include <string> #include "GameMap.h" using namespace std; GameMap::GameMap() { PlayerCell = NULL; loadMapFromFile(); }; void GameMap::Draw() { for (int i = 0; i < 15; i++) { for (int p = 0; p < 10; p++) { cout << cells[i][p].id << " "; } cout << endl; } }; void GameMap::setPlayerCell(int PlayerX, int PlayerY) { if (PlayerCell != NULL) { PlayerCell->id = 0; } PlayerCell = &cells[PlayerY][PlayerX]; PlayerCell->id = '3'; // cout << "Las coordenadas del jugador estan en: " << PlayerX << "," << PlayerY << endl; } void GameMap::loadMapFromFile() { //ofstream FileCreated("Map.txt"); //if (FileCreated.is_open()) { //} //else { // cout << "FATAL ERROR: MAP FILE NOT BE CREATED!" << endl; //} string line; int row = 0; ifstream MyFile("Map.txt"); if (MyFile.is_open()) { while (getline(MyFile, line)) { for (int p = 0; p < line.length(); p++) { if (line[p] == '0') { cells[row][p].id = 0; } else { } row++; }; } }else { cout << "FATAL ERROR: MAP FILE NOT BE LOADED!" << endl; } };
2 respuestas
para escribir tu comentario
    Jose Antonio Rojas Ollarves

    Jose Antonio Rojas Ollarves

    student
    hace 5 años

    Hola bro, te recomiendo que utilices las librerias para que tu codigo sea un poco mas abierto y entendible para otras personas

    Iván Jiménez Paz

    Iván Jiménez Paz

    student
    hace 5 años

    Copié tu código al mío para checarlo y ver si me arrojaba algo. Al compilar no me saca ningún error, sin embargo al correrlo no me carga el mapa. Estuve checando línea por línea y estaba igual, excepto por una cosa pequeña, es una omisión. Al declarar tu último IF , en la parte del Else ya no pusiste nada, por lo que el programa ya no dibuja nada si el caracter es distinto de 0, entonces no dibuja nada y creo que crea un error en el programa.

    if (line[p] == '0') { celdas[row][p].id = 0; } else { celdas[row][p].id = line[p]; }

    Inténtalo, tal vez así se pueda solucionar.

Curso de C++ [Empieza Gratis]

Curso de C++ [Empieza Gratis]

Explora el polimorfismo en C++ creando y manipulando objetos que heredan de clases base. Aprende a implementar constructores, usar apuntadores y construir jerarquías de clases efectivas. Ideal para quienes inician en C++.

Curso de C++ [Empieza Gratis]
Curso de C++ [Empieza Gratis]

Curso de C++ [Empieza Gratis]

Explora el polimorfismo en C++ creando y manipulando objetos que heredan de clases base. Aprende a implementar constructores, usar apuntadores y construir jerarquías de clases efectivas. Ideal para quienes inician en C++.