Introducción a C++

1

Programación de Videojuegos con C++ desde Cero

2

Programación en C++: Fundamentos y Aplicaciones Prácticas

Conceptos Generales de C++

3

Historia y uso del compilador GCC en programación

Preparando el entorno de trabajo

4

Instalación de Code::Blocks en Windows paso a paso

5

Instalación de CodeBlocks en Mac paso a paso

6

Creación de un Proyecto de Consola en C++ Paso a Paso

7

Uso de Librerías y Entrada/Salida en C++

Manejo de memoria

8

Memoria y Tipos de Datos en Computadoras y Programación

9

Variables y tipos de datos en programación básica

10

Operadores Aritméticos y Lógicos en Programación

11

Uso de Apuntadores para Manipulación de Memoria en Programación

12

Cálculo del Área de Círculo y Esfera con Variables

Entrada de datos y funciones

13

Entrada y manejo de datos en programas C++

14

Operadores Relacionales y Condicionales en Programación

15

Condicionales y estructuras de control en programación

16

Funciones y Encapsulamiento en Programación

17

Funciones en Programación: Creación y Uso Eficiente

18

Creación de aventuras interactivas con C++ y decisiones de usuario

Loops y arreglos

19

Arreglos: Conceptos Básicos y Manipulación en Programación

20

Estructuras de Control: Bucles en Programación

21

Contadores y Bucles en Programación: While, Do-While y For

22

Arreglos Unidimensionales y Bidimensionales en Programación

23

Dibujar Mapas y Personajes en Juegos con Arreglos en C++

24

Movimiento de Personajes en Juegos con Python

25

Programación de Mapas Bidimensionales en Videojuegos

26

Movimiento de Personajes en Cuatro Direcciones con CIN

Lectura de Archivos

27

Lectura y escritura de archivos en C++ con fstream

28

Lectura y Escritura de Archivos en Programación

29

Posicionamiento del Jugador en el Mapa de Juego

Programación Orientada a Objetos

30

Programación Orientada a Objetos: Conceptos y Beneficios

31

Programación Orientada a Objetos: Clases e Instancias en Java

32

Encapsulación de Datos en Programación Orientada a Objetos

33

Abstracción en Programación Orientada a Objetos

34

Herencia en Programación Orientada a Objetos: Clases y Constructores

35

Tipos de acceso en la herencia de clases en programación

36

Polimorfismo en C++: Teoría y Práctica

Finalizando nuestro proyecto

37

Programación de un Juego de Laberinto en C++

38

Controles básicos de movimiento en videojuegos con programación en C++

39

Creación de Clases para Mapas en Juegos de Programación

40

Conexión de Jugador y Coordenadas en Mapas de Videojuegos

41

Carga y Lectura de Archivos para Mapas en Juegos

42

Colisiones y Movimiento en Juegos 2D con C++

43

Colisiones y restricciones de movimiento en mapas de juegos

44

Colisiones y Portadas en Videojuegos: Implementación en C++

45

Creación de Juegos de Aventuras en C++: Laberintos y Cofres del Tesoro

46

Programación Orientada a Objetos en Videojuegos Básicos

47

Creación de Enemigos y Laberintos en C++ Avanzado

No tienes acceso a esta clase

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

Conexión de Jugador y Coordenadas en Mapas de Videojuegos

40/47
Recursos

Vamos a crear la función SetPlayerCell dentro de nuestra clase GameMap para dibujar y volver a dibujar el mapa cada vez que el jugador presiona una tecla para cambiar su posición y moverse por el mapa. Vamos a usar apuntadores para cambiar la celda con la posición del jugador por una instancia de la clase PlayerCell con un caracter diferente (por ejemplo, un 3):

// GameMap.h
class GameMap
{
        public:
                GameMap();

                MapCell* PlayerCell;
                MapCell cells[15][10];

                void Draw();

                void SetPlayerCell(int PlayerX, int PlayerY);
}
// GameMap.cpp
GameMap::GameMap()
{
        PlayerCell = null;
}

void GameMap::SetPlayerCell(int PlayerX, int PlayerY)
{
        PlayerCell = &cells[PlayerY][PlayerX];
        PlayerCell->id = 3;
}

Además, vamos a solucionar el error de dejar el rastro de posiciones por las que el jugador pasó en movimientos anteriores. Vamos a volver a dejarlas como celdas o espacios normales con el siguiente código:

if (PlayerCell != NULL) {
        PlayerCell->id = 0;
}

Aportes 18

Preguntas 1

Ordenar por:

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

Éste es el proceso si no quieren mover las variables X y Y de ser protected, y seguir manteniendo las buenas prácticas 😛

Primero declaran como públicas las dos funciones de tipo entero, yo las nombre XAxis() y YAxis(), pero le pueden poner como gusten, esto es en Player.h

Después en Player.cpp declaramos su funcionalidad, que en este caso solo nos regresarían el entero.

Y al final utilizamos nuestras funciones creadas en main.cpp

Espero que les haya servido! 😎

8:19 JAJA no es un bug es una feature
Acabas de crear un snake, felicidades (?

Hasta el momento la clase más complicada, pero nada que la práctica no ayude.

Esta clase me hubiera servido en mi primer semestre en la carrera 😦
Tuve que buscar muchos vídeos en youtube para entenderle.

IMPORTANTE Podemos en vez de cambiar las variables int x, int y, a publicas, podriamos manipularlas mediante a puntero y trabajaria de la misma forma

Me estallo la cabeza ver ese array de tipos funcionando, ya que es normal declarar un `Obj obj`, pero nunca había visto un `Obj obj[15][10]`, que loco viejo. Y pensar que baca `obj[n][n]` tiene sus propiedad como `id`, esta tripiante hermano.

🤯

Tengo un problema, cuando se hace el dibujo del mapa, me aparecen 2 jugadores, los dos se mueven. He estado buscando el error pero aun no se que puede ser ¿Alguien me puede ayudar?

Luego de unos minutos logré entender el error, ya estoy entendiendo mejor, es bastante complejo el juego con las clases.

Probando

perdona pero me perdi en el .id despues del arreglo bidimensional, eso no lo vimos en clases pasadas, asumo que es un apuntador? no era igua a cero?

Como solución alternativa, antes del minuto 8:40, basta con hacer que lo que contenga el puntero PlayerCell sea 0 antes de cambiarlo a su nuevo valor.

void GameMap::SetPlayerCell (int PlayerX, int PlayerY)
{
    PlayerCell -> id = 0;
    PlayerCell = &Cells[PlayerX][PlayerY];
    PlayerCell -> id = 3;
}```

Toca repetir varias veces el video para entenderlo, pero todo bien

Hecho !!

#include <iostream>
#include "Player.h"
#include "Mapaceldas.h"
#include "Gamemapa.h"

using namespace std;

int main()
{
 cout << "inicaia el juego" <<endl;
    bool isGameOver = false;
    Player heroe;
    Gamemapa MAP;
    heroe.entrada();


     while(isGameOver==false)
    {
       // loop de nuestro juego. cada vuelta del loop de nuestro juego vamos aa llamar el heroe.
        heroe.entrada();
        //actulizado de informacion heroe a mapa
        MAP.setplayer(heroe.x , heroe.y);
        //aqui dibujamos el mapa
        MAP.drawmap();


    }



    return 0;
}

->: Es usado para entrar a los parametros de un objeto, cuando se utiliza una variable de tipo apuntador *

Es el mejor proyecto final en un curso de Platzi que he seguido. Gracias por tanto, Eri!

gracias!