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

¿Cómo manejar el movimiento de nuestro personaje en un juego?

En la creación de videojuegos, el movimiento de personajes es un componente crucial para garantizar una experiencia fluida y atractiva para el jugador. Aquí exploraremos cómo implementar dicho movimiento utilizando un ciclo de comandos básicos que permite al personaje desplazarse a la derecha e izquierda.

¿Cómo se utiliza el comando de entrada?

Para mover un personaje dentro del juego, es esencial permitir la interacción del usuario mediante la entrada de datos. Usamos el comando input() para capturar la entrada desde la consola. Este comando solicita al jugador que ingrese una opción que definirá el movimiento del personaje. Así se almacena:

character_input = input()

¿Cómo validar el movimiento hacia la derecha?

Una vez recogida la entrada, se verifica si corresponde a la dirección deseada. En este ejemplo, movemos el personaje hacia la derecha si el usuario ingresa la letra 'd':

if character_input == 'd':
    hero_position = hero_position + 1

Se suma uno a la posición actual para reflejar el desplazamiento del personaje hacia la derecha en el mapa del juego.

¿Qué sucede al intentar mover hacia la izquierda?

Mover al personaje hacia la izquierda implica restar uno a la posición actual. Para capturar este movimiento, verificamos si la entrada del usuario es la letra 'a':

elif character_input == 'a':
    hero_position = hero_position - 1

¿Cómo mantener activo el juego con un ciclo?

Para asegurarnos de que el juego continúe corriendo, se implementa un bucle que siga solicitando entradas hasta que una condición de finalización se cumpla. Esto se logra con un bucle while:

game_over = False
while not game_over:
    character_input = input()
    # Lógica de movimiento

¿Cómo y cuándo finaliza el juego?

El juego se detendrá si se recibe una entrada específica destinada a finalizar el ciclo. Por ejemplo, al recibir una letra 'p', la condición game over del juego se vuelve True, terminando así la ejecución del bucle:

if character_input == 'p':
    game_over = True

¿Cómo se actualiza el mapa del juego?

Antes de solicitar la siguiente entrada, es fundamental actualizar el estado visual del juego para reflejar la nueva posición del personaje:

# Dibuja el mapa y el personaje en la nueva posición

Consejos prácticos:

  • Manejo de colisiones: Considera incorporar lógica para manejar colisiones con objetos del juego que puedan dañar al personaje.
  • Feedback visual: Asegúrate de actualizar de forma continua el display del juego para dar feedback visual inmediato al jugador.
  • Pruebas y ajustes: Realiza pruebas para ajustar la sensibilidad y la velocidad del movimiento según las entradas del jugador.

Con una estructura de código clara y lógica sencilla, facilitarás una dinámica de juego interactiva y entretenida. ¡No subestimes la importancia de un movimiento fluido, y sigue explorando maneras innovadoras de enriquecer tus creaciones de juego!

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!