Introducción a C++

1

Todo lo que aprenderás sobre C++

2

¿Qué es programar y por qué aprender C++?

Conceptos Generales de C++

3

La Historia de C++ y sus diferencias con C

Preparando el entorno de trabajo

4

Instalando Codeblocks

5

Pasos para instalar en mac

6

Ejecutando nuestro primer programa

7

¿Qué son las librerías STD? - Portada del Proyecto

Manejo de memoria

8

¿Qué es la memoria y tipos de datos?

9

Alojando variables en memoria

10

¿Cómo usar operadores?

11

¿Qué son los apuntadores?

12

Reto: Escribir un programa que calcule áreas.

Entrada de datos y funciones

13

¿Cómo introducir datos a nuestro programa?

14

¿Cómo usar condicionales?

15

Usando condicionales

16

¿Cómo encapsular código en funciones ?

17

¿Qué son los parámetros y como usarlos?

18

Reto: Juego narrativo implementando condicionales y entrada de datos.

Loops y arreglos

19

¿Qué son los arreglos?

20

¿Qué son los Loops?

21

Programando Loops

22

Loops , arreglos y arreglos bidimensionales

23

Dibujando el mapa de nuestro juego con arreglos

24

Manipulando mi jugador con inputs en arreglos unidimensionales

25

Arreglos bidimensionales

26

Reto: Moviendo a mi personaje en mi arreglo bidimensional

Lectura de Archivos

27

Creando y leyendo un archivo externo

28

Leyendo archivos externos

29

Reto: En el mapa, crear punto de inicio y salida del jugador

Programación Orientada a Objetos

30

¿Qué es POO?

31

Definiendo una clase y creando sus instancias

32

Encapsulación

33

Abstracción

34

Herencia

35

Propiedades de clase en herencia

36

Polimorfismo

Finalizando nuestro proyecto

37

Creación de personaje y archivo de encabezado

38

Moviendo mi personaje con entrada de datos

39

Mapa

40

Interacción entre el personaje y el mapa

41

Paredes

42

Optimizando trazado de mapa

43

Colisiones

44

Creando nuestra portada de juego

45

Tesoro y victoria

46

Conclusiones

47

Proyecto final

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Manipulando mi jugador con inputs en arreglos unidimensionales

24/47
Recursos

Aportes 33

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

¡Hola todos!

#include <iostream>

using namespace std;

/* 
    @description: Draw the map with the player's current position in the screen.
    @param playerPos: Current player's position.
    @param gameMap: map to be drawn.
 */
void DrawMap(int playerPos, char gameMap[5]) {
    cout << endl;
    
    for (int i=0; i<5; i++) {
        if (i != playerPos) {
            cout << gameMap[i];
        }
        else {
            cout << 'H';
        }
    }

    cout << endl << endl;
}

int main(){
    int playerPos = 0;
    char input = ' ';
    bool gameOver = false;
    char gameMap[5] = {'.','.','.','.','.'};

    cout << "Bienvenido jugador" << endl;

    while (!gameOver) {
        cout << "¿Qué quieres hacer?";
        cout << "Moverte a la izquierda (a) o moverte a la derecha (d): ";
        cin >> input;

        if (input == 'd') playerPos += 1;
        else if (input == 'a') playerPos -= 1;
        else if (input == 'p') gameOver = true;

        DrawMap(playerPos, gameMap);
        cout << endl;
    } 
}
#include <iostream>
using namespace std;

void DrawMap(int HeroPos, char GameMap[5])
{
	for (int i = 0; i < 5; i++)
	{
		if (i != HeroPos)
		{
			cout << GameMap[i];
		}
		else
		{
			cout << 'H';
		}
	}
}

int main()
{
	int HeroPos = 0;
	bool isGameOver = false;
	char input = ' ';
	char GameMap[5] = { '0','0','0','0','0' };

	DrawMap(HeroPos, GameMap);

	while (isGameOver == false)
	{
		cin >> input;
		
		if (input == 'd')
		{
			HeroPos = HeroPos + 1;
		}

		else if (input == 'a')
		{
			HeroPos = HeroPos - 1;
		}

		else if (input == 'p')
		{
			isGameOver = true;
		}

		DrawMap(HeroPos, GameMap);
	}

}

HECHO 😄

#include <iostream>
using namespace std;
/*HeroPos no existe dentro de la funcion drawmap
por lo tanto se tiene que pasar como parametro al igual que map
*/
void drawmap(int HeroPos, char map[5])
{

  for(int i = 0; i < 5; i++)
    {
        if(i != HeroPos)
        {
         cout<<map[i];
        }
            else
           {
               cout<<'H';
           }

    }
}
int main()
{
    char HeroPos = 1;
    char Input = ' ';
    bool GameOver= false;
    char map[5]={'1','1','1','1','1'};


    drawmap(HeroPos,map);
/*mientras no sea GameOver el juego sigue, 
en caso de ingresar la letra p, el juego termina
*/
while(GameOver==false)
    {
       cin>>Input;

    if(Input=='d')
    {HeroPos=HeroPos+ 1;}

    else if(Input=='a')
    {HeroPos=HeroPos- 1;}

    else if(Input=='p')
    {GameOver=true;}
    
    drawmap(HeroPos,map);
  }
    return 0;
}

Y asi me quedo el de esta clase con todo y menu incluido osiosi

#include <iostream>

using namespace std;

bool playing=true;
bool InGame=true;
char input=' ';
int x;
int pjpos;
int option;

//Gameplay
void DrawMap(int x,int pjpos)
{
    //Seguridad *****************************
    if(x<=0){
        x=5;
    }
    if (pjpos>x || pjpos<=0)
    {
        pjpos=1;
    }
    //Seguridad___________________________

    //Inicio del codigo
    //creamos el arreglo para el mapa
    char map[x];


    for(int i=0;i<x;i++){
        if(i!=pjpos-1){
            map[i]='*';
        }else
        {
            map[i]='P';
        }
        cout<<map[i];
    }    
}

//Funcion para mover el pj 1 derecha, 2 izquierda
void movePj(int DMov){
    if (pjpos>1 && DMov==2)
    {
         pjpos-=1;
    }else if (pjpos<=x-1 &&DMov==1)
    {
       pjpos+=1; 
    }
}

//Menu de inicio del juego
void Play(){
    
    while (playing)
    {
        cout<<"Digita el tamaño del mapa"<<endl;
        cin>>x;
        cout<<"En que punto desearias iniciar"<<endl;
        cin>>pjpos; 
        cout<<"Presiona e para salir"<<endl;
        DrawMap(x,pjpos);
        while (playing)
        {
        cin>>input;
        switch (input)
        {
        case 'a':
     
            movePj(2);
            DrawMap(x,pjpos);
            break;
        case 'd': 
       
            movePj(1);
            DrawMap(x,pjpos);
            break; 
        case 'e':
                playing=false;  
            break;
        default:
            break;
            }
        }
    }
}

//Menu principal
void Start(){
    
    playing=true;
    InGame=true;
    input=' ';
    x;
    pjpos; 
    cout<<"**********************Run Games******************* "<<endl;
    while (InGame)
    {
        cout<<"                   Menu Principal                  "<<endl;
        cout<< "                    1-Jugar"<<endl;
        cout<<"                     2-Salir"<<endl;
        cout<<"                    ";
        cin>>option;
        while (option != 1 && option != 2)
            {
                cout<<option;
            cout<<"Seleccione una opcion correcta ";
            cin>>option;
            }
        if (option==1)
        {
            Play();
            playing=true;
        }if(option==2)
        {
            InGame=false;
            playing=false;
            cout<<"             Hasta la proxima :D";
        }    
    }
}

int main(int argc, char const *argv[])
{
    Start();
    return 0;
}
Mi código elegante =p ```java #include <iostream> using namespace std; void DibujarMapa(int HeroPos, char GameMap[6]) { for (int i = 0; i < 6; i++) { if(i == HeroPos) { cout << 'H'; } else { cout << GameMap[i]; } }; } int main() { int HeroPos = 0; char GameMap[6] = {'.','.','.','.','.','.'}; char Move = ' '; bool GameOver = false; cout << "Inicias la Partida, mueve a tu Heroe.\n" << endl; DibujarMapa(HeroPos, GameMap); while (GameOver == false) { cout << "\n\nAvanzar(d), Retroceder(a), Salir(q): "; cin >> Move; cout << endl; if(Move == 'd') { HeroPos = HeroPos + 1; } else if(Move == 'a') { HeroPos = HeroPos - 1; } else if (Move == 'q') { GameOver = true; } DibujarMapa(HeroPos, GameMap); }; return 0; } ```

Un pequeño tip

Si quieren que al presionar p salga automáticamente del programa sin escribir denuevo el mapa en pantalla hay dos opciones:

  1. En el else if que evalua si el input es p puedes escribir break. Esto simplemente rompera el ciclo while e ira directamente al return 0;
  1. La otra opción (y la mejor a mi parecer) es asignarle true al game over y luego escribes la declaración continue;. Lo que hace esto es saltar directamente a la siguiente iteración del ciclo saltandose todo lo que haya despues.

Muy interesante

Código con el personaje moviendose en todas las direcciones

#include <iostream>

using namespace std;

void DrawMap(int HeroPosX, int HeroPosY, char GameMap[5][5]){
	for(int i=0; i<5; i++){
		for(int j=0; j<5; j++){
		
			if(i!=HeroPosY ){
				cout<<GameMap[i][j];
			}
			else{
					if(j!=HeroPosX ){
						cout<<GameMap[i][j];
				}
				else{
						cout<<'H';
					}
			}
		}
		cout << endl;
	}			
}




int main(){
	char GameMap[5][5]={
			{'1','1','1','1','1'},
			{'1','1','1','1','1'},
			{'1','1','1','1','1'},
			{'1','1','1','1','1'},
			{'1','1','1','1','1'},
		};
		
		
	int HeroPosX = 0;
	int HeroPosY = 0;
	bool isGameOver = false;
	
	
	char Input = ' ';
	while(isGameOver==false){
		cin >> Input;
		if(Input == 'd'){
			HeroPosX = HeroPosX + 1;
		} 
		else if(Input == 'a'){
			HeroPosX = HeroPosX - 1;
		}
		if(Input == 'w'){
			HeroPosY = HeroPosY - 1;
		} 
		else if(Input == 's'){
			HeroPosY = HeroPosY + 1;
		}
		else if(Input == 'p'){
			isGameOver = true;
		}
		DrawMap(HeroPosX, HeroPosY, GameMap);
	}
	
	return 0;
}

aqui esta mi queneno juego ; lo mueves con A y con D

#include <iostream>
using namespace std;

void DrawMap(int O) {

	char map[5] = { '1','1','1','1','1' };

	for (size_t i = 0; i < 5; i++)
	{
		if (O != i) {
			cout << map[i];
		}
		else {
			cout << "H";		
		}
	
	}

}
int clamp(int num, int min, int max) {
	if (num <= min) {
		return min;
	}
	else if (num >= max){
		return max;
	}
	else {
		return num;
	}

	}

int main()
{
	char mover;
	int HeroPos = 2;
	DrawMap(HeroPos);


	while (true) {
		cin >> mover;
		if (mover == 'A') {
			HeroPos--;
		}
		else if (mover == 'D') {
			HeroPos++;
		}
		else {
			cout << "seleccionas A o D"; cin >> HeroPos;
		}
		HeroPos = clamp(HeroPos, 0, 4);
		DrawMap(HeroPos);
			
	}
}

hola 👋

#include <iostream>

using namespace std;

void mapdibujado (int charpos, char map[5])
{
    for (int i = 0; i < 5; i = i + 1)
    {
        if(i != charpos)
        {
            cout << map[i];
        }
        else
        {
            cout << 'H';
        }
    }
}
int main()
{
    int charpos = 1;
    bool IsGameOver = false;
    char input = ' ';
    char map[5] = {'1','1','1','1','1'};

    mapdibujado (charpos, map);

    while(!IsGameOver == false)
    {
    cin >> input;
    if(input == 'd')
      {
        charpos = charpos + 1; 
      }
    else if (input == 'a')
      {
        charpos = charpos - 1;
      }
      else if (input == 'p')
      {
        IsGameOver = true;
      }
    mapdibujado (charpos, map);
     }

return 0;
}
    

Si se sale del mapa, el juego termina 😄

#include <iostream>

using namespace std;

void drawMap(int hero, char map[5]) {
	for (int i = 0; i < 5; i++) {
		if (i != hero)
		{
			cout << map[i] << ", ";
		}
		else {
			cout << 'H';
		}

	}
}

int main()
{
	char input = ' ';
	bool isGameOver = false;
	int heroPos = 1;
	char gameMap[5] = { '1', '1', '1', '1', '1' };

	do {
		drawMap(heroPos, gameMap);
		
		cin >> input;

		if (input == 'd' || input == 'D') {
			heroPos++;
		}
		else if (input == 'a' || input == 'A') {
			heroPos--;
		}

		if (heroPos > 4 || heroPos < 0) {
			cout << "GAME OVER";
			isGameOver = true;
		}
	} while (isGameOver == false);

	
	
}

buena clase, estaría bien que declare siempre el inicio de las variables con mayusculas para que sea mas facil recordar

#include <iostream>
#include <stdlib.h>

using namespace std;


void DramMap(int Heropos, char map[5])
{

     for(int i=0; i<5; i++)
   {
       if(i !=Heropos)
       {
          cout<<map[i];
       }
       else
       {
           cout<<"H";
       }
   }

}

int main()
{

    int Heropos=1;
    bool gameisover=false;
    char Input=' ';
    char map[5]={'1','1','1','1','1'};
    DramMap(Heropos, map);

    while(gameisover==false)
    {
     cin>>Input;

        if(Input=='d')
        {
            Heropos++;
        }
        else if(Input=='a')
        {
            Heropos--;
        }
        else if(Input=='p')
        {
            gameisover=true;
        }

    DramMap(Heropos, map);

    }




return 0;
}

Utilizando conceptos que he aprendido llevo lo siguiente (que espero que le sirva a alguien):

#include <iostream>
#include <conio.h>
using namespace std;
typedef unsigned int uint;

void drawMap(const int* pheroPos, char * pmap);

bool mover(char pinput, int &pheroPos);

int main()
{
    bool isGamerOver = false;
    int* heroPos = new int;
    *heroPos = 1;
    char input = ' ';
    char mapa[] ={'1', '1', '1', '1', '1'};

    drawMap(heroPos, mapa);

    while (!isGamerOver){
        cout << endl;
        cin >> input;
        isGamerOver = mover(input, *heroPos);
        drawMap(heroPos, mapa);
    }



    delete heroPos;

//    cout << endl << "\nPresione enter para terminar" << endl;
//    getch();
    return 0;
}

void drawMap(const int * pheroPos, char * pmap){
    for(uint i = 0; i < 5; i++){
        if(i != *pheroPos){
            cout << pmap[i];
        }
        else {
            cout << 'H';
        }
    }
}

bool mover(char pinput, int &pheroPos){
    bool terminar = false;
    switch(pinput){
        case 'd':
            pheroPos++;
            break;
        case 'a':
            pheroPos--;
            break;
        case 'p':
            terminar = true;
            break;
        default:
            terminar = true;
            break;
    }
    return terminar;
}

Los arreglos bidimensionales nos ayudan a crear listas de filas y columnas. Podemos crearlos así como los arreglos normales pero debemos añadir un nuevo conjunto de corchetes y la cantidad de elementos en él para definir los espacios no solo de las filas sino también de las columnas.

![](

Hecho !!!

Se aprende varias cosas realizando pruebas

#include<iostream>

using namespace std;

void Game (char Map[5],int HeroPos)
{
    for (int i =0; i<5; i ++)
    {

        if (i!=HeroPos)
        {
            cout <<Map[i];
        }
        else
        {
            cout <<'H';
        }
    }

}

int main()
{

    char Map [5]= {'1','1','1','1','1'};
    char Input= ' ';
    int HeroPos =3;
    bool GameOver=false;

    Game(Map,HeroPos);
while(GameOver==false){


    cin>>Input;
    if (Input=='a')
    {
        HeroPos=HeroPos-1;

    }
    else if(Input=='d')
    {
        HeroPos=HeroPos+1;

    }
    else if (Input=='p')
    {
        GameOver=true;
    }

    Game(Map,HeroPos);

}

    return 0;

}```
#include <iostream>
using namespace std;

const int MAP_ARRAY_LEN = 5;

void DrawMap (const int& heroPos, const char GameMap[]) 
{
    for (int i = 0; i < MAP_ARRAY_LEN; i++)
    {
        if (i != heroPos)
            cout << GameMap[i];
        else
            cout << 'H';
    }
    cout << ' ';
}

int main ()
{
    int heroPos = 1;
    char GameMap[MAP_ARRAY_LEN] = {'1','1','1','1','1'};

    DrawMap(heroPos, GameMap);
    
    bool isGameOver = false;
    char input = ' ';
    while (isGameOver == false)
    {
        cin >> input;
        switch (input)
        {
        case 'd':
            heroPos++;
            break;
        case 'a':
            heroPos--;
            break;
        case 'p':
            isGameOver = true;
            break;
        default:
            break;
        }

        if (heroPos < 0)
            heroPos = 0;
        else if (heroPos == MAP_ARRAY_LEN)
            heroPos = MAP_ARRAY_LEN - 1;
        DrawMap(heroPos, GameMap);
    } 

    return 0;
}

Costo un poco por el sizeof, pero lo cambie al darle directamente el tamaño por parametro

#include <iostream>
#include <array>

using namespace std;

// Recorriendo un arreglo y dibujandolo
void drawMap(char gameMap[], int mapSize) {
    for ( int i = 0; i < mapSize; i++ ) {
        cout << gameMap[i];
    }
}


// Rellenando un arreglo
void fillMap( int player, char gameMap[], int mapSize ) {
    const char EMPTY = '1'; // constante de lugar vacio

    // Recorriendo el arreglo y rellenando dependiendo si es
    // Lugar vacio, o el jugador
    for ( int i = 0; i < mapSize; i++ ) {
        if ( i == player ) {
            gameMap[i] = 'H';
        }
        else {
            gameMap[i] = EMPTY;
        }
    }
}

int main() {
    // Constant
    const int mapSize = 5;

    // Variables
    char gameMap[mapSize];
    int heroPos = 1;
    bool keepPlaying = true;

    char input = ' ';

    while ( keepPlaying ) {
        // Volviendo a rellenar y a dibujar
        fillMap( heroPos, gameMap, mapSize );
        drawMap( gameMap, mapSize );

        // Tomando input del usuario
        cin >> input;

        // Cambiando la posicion del jugador dependiendo del input
        if ( input == 'd' ) {
            heroPos++;
        }
        else if ( input == 'a' ) {
            heroPos--;
        }
        else if ( input == 'p' ) {
            keepPlaying = false;
        }


    }

    return 0;
}

Intente hacer uno de dos dimensiones de una vez, pero siento que me falta conocimiento de POO en C++ para poder completarlo con mejor orden. Por ahora asi va mi codigo.

#include <iostream>
#include <stdio.h>
#include <cstdlib>

using namespace std;
//Asi es como se debe imprimir
void DrawMap(int pjpos, int x=5, int y=5)
{
    for(int i=0;i<y;i++){
        if (i==0 || i==y-1){
            for(int j=0;j<y;j++)
            {
                if(j==x-1){
                    cout<<"* "<<endl;
                }else
                {
                    cout<<"* ";
                }
            }    
        }else
            {
            for(int j=0;j<y;j++)
            {
                if(j==0){
                cout<<"* ";
                
                }else if (j==y-1)
                {
                    cout<<"* "<<endl;
                }
                
                else
                {
                    cout<<"  ";
                }               
            }
        }
    }
}
//El metodo que se usara para poder jugar bien
void DrawMap2(int pjpos,int x=5, int y=5)
{
    char map[x][y];
    
    for (int i = 0; i < x; i++)
    {
        for (int j = 0; j < y; j++)
        {
              map[i][j] = '* ';
              cout<<map[i][j];
        }   
    }
}
//TODO: Colocar los caracteres correctos al draw map para que imprima como drawmap1
//Lo que se ejecuta cuando damos play
void play()
{
    
}
//Lo que se ejecuta cuando perdemos
void GameOver(){


}
        
int main(int argc, char const *argv[])
{
 


    int pjpos =0;
    char map[5]={'1','1','1','1','1'};
    // DrawMap(pjpos,10,10);

    DrawMap2(pjpos,5, 5);

}

Hola hice un ajuste en el bloque del while para que parezca que el personaje se mueve en una plataforma y si sale de ella acaba el juego.

<while (GameOver == false)
    {
        DrawMap(Player, GameMap);
        cin >> Input;

        if (Input == 'd')
        {
            Player = Player + 1;
            if (Player > 4)
            {
                GameOver= true;
                cout << "Fin del juego" << endl;
            }
        }
        else if(Input == 'a')
        {
            Player = Player -1 ;
            if (Player <0 )
            {
                GameOver= true;
                cout << "Fin del juego" << endl;
            }
        }
    }>
#include <iostream>
using namespace std;
//dibuja el mapa
void DrawMap(int heroPos, char gameMap[5], char hero[1]){
        
    for (int i = 0; i < 5; i++){
        
        if (i != heroPos){
                
                cout << gameMap[i] ;
                
            }
            else{
                
                cout << hero;
                
            }
        }
        cout << endl;
    
}
//checa si se presiona la tecla p para terminar el juego
bool endGame (char input){
    
    if(input == 'p'){
        cout << "Game Over";
        return true;
    }
    return false;
    
}
//mueve el hero
int movePlayer(char input ,int heroPos){
    if(input == 'd'){
        return heroPos + 1;
    }
    else if(input == 'a'){
        return heroPos - 1;
    }
    return heroPos;
}

//checa si hero esta dentro de los limites
int isInTheMap(int heroPos){
    if(heroPos == -1){
        return 1;
    }
    if(heroPos == 5){
        return -1;
    }
    return 0;
}



int main(){
    char hero[1] = {'h'};
    int heroPos = 1;
    char gameMap[5] = {'1','1','1','1','1'};
    char input =  ' ';
    bool isGameOver = false;
    
    DrawMap(heroPos, gameMap, hero);
    
    while(isGameOver == false){
        cin >> input;
        heroPos = movePlayer(input, heroPos);
        heroPos = heroPos + isInTheMap(heroPos);
        DrawMap(heroPos, gameMap, hero);
        isGameOver = endGame(input);
    }
        return 0;
}

Vamos!!

Optimizacion de codigo

Puedes usar Heropost += 1;
que es igual a HeroPost = HeroPost + 1;

Hasta esta clase asi va mi codigo 😄

#include <iostream>

using namespace std;


// Funcion para dibujar el mapa

void DrawMap(int HeroPos, char GameMap[5]){
    
    for(int i=0;i<5;i++){
        
        if(i != HeroPos){
             cout << GameMap[i] << " ";
        }
        else{
            cout << 'H';
        }
        
    }
    
    cout << endl;

}
//////////////////


// Saltos de linea por que estoy en un compilador de c++ online D:

void Saltos_de_Linea(int cantidad){
    
    for(int i=0;i<cantidad;i++){
        cout << endl;
    }
}

//////////////// FUNCION PRINCIPAL //////////////

int main()
{
    int HeroPos = 0;
    char GameMap[5] = {'0','0','0','0','0',};
    bool salir = false;
    
    do{
        
        Saltos_de_Linea(2);
        
        DrawMap(HeroPos, GameMap);
        
        cout << "Mueve tu personaje del 0 al 4, o presiona 9 para salir" << endl;
        cin >> HeroPos;
    
        
        if(HeroPos == 9){
            salir = true;
        }
        else{
            DrawMap(HeroPos, GameMap);
        }
        
        
        
    }while(salir == false);
    
    cout << "FIN DEL JUEGO" << endl;
    cout << "Gracias Por jugar" << endl;
    
    
    return 0;
}

El código de la clase

#include <iostream>

using namespace std;

void drawMap(int heroPos, char gameMap[5]){

    for(int i = 0 ; i < 5; i++){

        if(i != heroPos){

            cout << gameMap[i];
        }else{

            cout << 'H';
        }


     }

}


int main()
{
    char input = ' ';
    int heroPos = 1;
    bool isGameOver = false;
    char gameMap[5] = {'1','1','1','1','1'};

    drawMap(heroPos,gameMap);

    while(isGameOver == false){ 
       cin >> input ;

        if (input == 'd'){
        heroPos = heroPos +1;

        }else if (input == 'a'){

        heroPos = heroPos-1;

        } else if( input == 'p'){

            isGameOver = true;

        }

        drawMap(heroPos,gameMap);

    }



    return 0;
}

Estoy teniendo problemas para colgar imágenes y código. Me manda un mensaje en rojo diciendo que ocurrió un error. ¿Le pasa a alguien más?

Gracias por la clase.

Le puse colisiones a mi código XD

#include <iostream>
using namespace std;

void drawMap (int heroPos, char gameMap[11]){
    for (int i=0; i<11; i++){
        if( i != heroPos){
            cout << gameMap[i];
        }
        else{
            cout << "H";
        }
        cout << " ";
    }
    cout << "   ";
}

int main(){

    /* Vamos a hacer el mapa del juego
    con un arreglo bidimensional */

    int heroPos = 5;
    char gameMap[11] = {'1','1','1','1','1','1','1','1','1','1','1'};
    bool gameOver = false;
    char input;

    cout << "Mueve a la derecha con d, a la izquierda con a y para salir escribe 0" << endl; cout << "" << endl;

    while(gameOver == false){

        drawMap(heroPos, gameMap);
        cin >> input;

            switch(input){
                case 'a': heroPos -= 1;
                break;
                case 'd': heroPos += 1;
                break;
                case '0': gameOver = true;
                break;
            }

            switch(heroPos){
                case -1: heroPos += 1;
                break;
                case 11: heroPos -= 1;
                break;
            }

    }

    return 0;
}

*Mis apuntes sobre: “Manipulando mi jugador con inputs en arreglos unidimensionales”:

Les comparto mi código, puse un espacio para que se aprecie mejor:

#include <iostream>

using namespace std;

void drawMap(int heroPos, char gameMap[5])
{
    for(int i=0;i<5;i++)
    {
        if(i!=heroPos)
        {
        cout<<gameMap[i];
        }else
        {
            cout<<'H';
        }
    }
}

int main()
{
    int heroPos=1;
    bool isGameOver=false;
    char gameMap[5]={'1','1','1','1','1'};
    drawMap(heroPos,gameMap);
    char input=' ';
    while(isGameOver==false)
    {
        cout<<endl;
        cin>>input;
    if(input=='d')
    {
        heroPos+=1;
    }else if(input=='a')
    {
        heroPos-=1;
    }
    else if(input=='p')
    {
        isGameOver=true;
    }
    drawMap(heroPos,gameMap);
    }
    return 0;
}

Gracias!