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

Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Creación de personaje y archivo de encabezado

37/47
Recursos

Vamos a construir nuestro proyecto: un laberinto por donde los personajes deben moverse (con las teclas) y explorar hasta encontrar el tesoro para ganar el juego.

Los archivos de encabezado y de código fuente son archivos diferentes a nuestro archivo principal (main.cpp) donde podemos guardar partes de nuestro código para usarlo desde nuestro archivo principal sin necesidad de escribir todo el código en un solo lugar.

Solo debemos añadir el siguiente código para importar (o incluir) estos nuevos archivos:

#include ""NombreDeNuestroArchivo.h""

Los destructores son como los constructores de nuestras clases pero, en vez de llamarse cuando creamos la clase, se ejecutan cuando se destruyen. Podemos definirlos de la siguiente manera:

class Player
{
        public:
                Player(); // Constructor
                virtual ~Player(); // Destructor
}

Aportes 23

Preguntas 8

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Para compilar en Linux con g++ debemos compilar cada archivo cpp y usar el flag -I con la ruta de los Headers (.h) y con el flag -c para crear objetos. Posteriormente ensamblamos todos los objetos del proyecto en una salida.
Si tenemos la misma estructura de carpetas que en el video y nos colocamos al nivel de main.cpp, podemos compilar todo con el siguiente comando:

g++ -c -I ../Headers/include src/*.cpp main.cpp && g++ -o proyect.out *.o

Yo cree un Makefile para el proyecto y coloque en el nivel mas alto, a la misma altura que las carpetas Headers y Sources, lo dejo por si a alguien le interesa:

# using:
# make				# compile proyect
# make remove	#	remove all binaries and objects
# 
.PHONY = all clean ensamble remove

CC = g++
HEADERSDIR = ./Headers/include
SRCSDIR = ./Sources/src
MAINDIR = ./Sources

SRCS := $(wildcard ${SRCSDIR}/*.cpp)
OBJECTSRCS := ${SRCS:${SRCSDIR}/%.cpp=%.o}

all: ${OBJECTSRCS} main.o ensamble clean

ensamble: main.o
	@echo "Ensambling.."
	${CC} -o proyect.out *.o

%.o: ${SRCSDIR}/%.cpp
	@echo "Creating object..."
	${CC} -c -I ${HEADERSDIR} $<

main.o: ${MAINDIR}/main.cpp
	@echo "Compiling main.cpp.."
	${CC} -c -I ${HEADERSDIR} $<

clean:
	@echo "Cleaning compilation..."
	rm *.o

remove:
	rm -fv proyect.out
	rm -fv *.o

Hola… vengo de VS Code
Si tu como yo intentaste compilar el archivo como en la clase del profe Mauro Introducción a c déjame ayudarte diciendo que el compilador en consola es g++ y no gcc… por lo que el comando en consola seria

g++ main.cpp ./Sources/player.cpp -o main

Mucha suerte!

Complementando un poco el destructor es lo contrario al constructor info Aqui

En la clase 19 del curso de introduacción a C “Crear bibliotecas propias”, se habla un poco mas de los header y los archivos fuente
https://platzi.com/clases/1740-lenguaje-c-2019/24221-crear-bibliotecas-propias/

Si a alguien le sirve… creo dos archivos con los nombres player.cpp y player.h con el mismo contenido y lo agregue al archivo personajes.cpp y compilo bien! estoy trabajando con vscode.

#ifndef PLAYER_H
#define PLAYER_H

class Player
{
private:
    /* data */
public:
    Player();
    

protected:

};

Si alguien está usando Atom, puede descargar una paqueteria “header-implementation” para poder general la plantilla cpp

Tengo un problema con vscode cuando intento ejecutar programas multi-file (.cpp con .h) al intentar compilar el programa y ejecuto main.cpp me aprece este error:

C:\Users\pc\AppData\Local\Temp\ccjWEKmF.o:main.cpp:(.text+0x15): undefined reference to `Player::Player()'
C:\Users\pc\AppData\Local\Temp\ccjWEKmF.o:main.cpp:(.text+0x20): undefined reference to `Player::CallInput()'```

POR FAVOR AYUDENME

Por si alguien tiene problemas o dudas. Así se puede compilar y ejectuar en visual studio code en terminal creando el object link entre archivos:

Los archivos de encabezado y de código fuente son archivos diferentes a nuestro archivo principal (main.cpp) donde podemos guardar partes de nuestro código para usarlo desde nuestro archivo principal sin necesidad de escribir todo el código en un solo lugar.

Los archivos de encabezado son archivos en los cuales podemos definir clases, métodos, entre otras cosas para poder usarlas en el proyecto.
Mientras los archivos de código fuente son en donde programamos el funcionamiento de las definiciones que creamos en el archivo de encabezado.

archivo 1 personajes.cpp

<code>
#include <iostream>
#include "player.h"

using namespace std;
//Jugador

int main()
{
    Player Hero();
    return 0;
}

Muy bien

para agregar una clase en visual studio , ve a proyect y luego a agregar clase

En el minuto 5:13 el profesor comete un grave error, las bibliotecas estáticas NO Son .dll, las .dll son “Dynamic Loaded Libraries”, o sea, bibliotecas de carga dinámica. Recomiendo investigar bibliotecas estáticas, dinámicas y compartidas. Es muy interesante el tema y se puede aplicar sin mucho problema en Linux. A su vez, recomiendo investigar sobre “Makefile” para poder compilar proyectos complejos como el que se realiza en esta clase de forma muy simple, algo similar a la “Abstracción”.

Interesante implementación, revisaré los siguientes capítulos ya para finalizar el juego.

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

using namespace std;

int main()
{
    Player hero;
    hero.CallInput();
    return 0;
}

excelente

que bien que nos enseno a crear clases con el programa que utilizamos

Los destructores son como los constructores de nuestras clases pero, en vez de llamarse cuando creamos la clase, se ejecutan cuando se destruyen.

Destructor ~: Los destructoress funcionan como miempro espacial de las clases para elminar un objeto de las misma, el destructor se encargara en realizar los proceso cuando el objeto termine su funcion dentro del sistema, por ejemplo: Se puede entender como una liberacion de memoria dinamica utilizada por el objeto o liberando recursos al proyecto.

Buenas prácticas en carpetas de proyectos es no usar espacios o caracteres no estándar en los nombres para evitar errores; claro que siempre se puede paliar eso haciendo uso de las comillas:

cd "~/ruta completa/del directorio de/tu archivo fuente.cpp"

Otra posible opción es crear un softlink o symlink a una ruta más corta y así la ruta al directorio del proyecto queda más corta.

ln -s "~/ruta larga/original de/tu directorio fuente/" ~/ruta_final/

Visualizando todo el código entendí mejor 😄
Creamos un archivo de encabezado
Usando el formato de _crear nuevo archivo _
en el cual creamos una clase.

<#ifndef PLAYER_H
#define PLAYER_H

class Player
{
    public:
        
        Player();

        void CallImput();

    protected:

    private:
};

#endif // PLAYER_H>

Luego fuimos al archivo fuente,
Aquí incluimos la librería <iostream> así como el: using namespace std;
aquí definimos el comportamiento de nuestro héroe.

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

using namespace std;

Player::Player()
{
    //ctor
}

void Player::CallImput()
{
    cout <<"Aqui llamaria los inputs"<<endl;
}>

En nuestro main incluimos nuestro archivo encabezado "Player.h"
Creamos un Player llamado Heroe
y llamamos la función que se encarga de llamar la entrada del jugador.

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

using namespace std;

int main()
{
    Player Hero;

    Hero.CallImput();

    return 0;
}>

Gracias!

Funciona bien con VSCode después de varias fallas pero todo solucionado