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

Paredes

41/47
Recursos

Vamos a crear un archivo de texto con nuestro mapa de celdas para crear niveles y laberintos tan avanzados como podamos. Vamos a crear la funci贸n LoadMapFromFile para imprimir este archivo de texto y convertir cada celda en una instancia de nuestra clase MapCell.

// GameMap.cpp
void GameMap::LoadFromFile()
{
        string line;
        ifstream  MyFile(""Map.txt"");

        if (MyFile.is_open())
        {
                // ...
        }
        else{
                cout << ""FATAL ERROR"" << endl;
        }
}

Importante: Recuerda que puedes programar la creaci贸n de este archivo desde el c贸digo C++ o crearlo directamente desde la carpeta de tu proyecto. Tambi茅n debemos incluir la librer铆a fstream en todos los archivos donde trabajas con archivos del disco duro (en este caso, en el archivo GameMap.cpp).

Aportes 16

Preguntas 0

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Algo que me sirvi贸 para comprender las coordenadas es no pensar en x,y ya que no se comporta como si estuvi茅ramos en un plano cartesiano, si no mas bien son matrices que tienen i,j para indicar la posici贸n, adem谩s de m y n, para indicar m la cantidad de filas y n la cantidad de columnas

Entonces a22 es como decir fila 2, columna 2. Por eso si queremos ir hacia arriba debemos restar a la fila (cuando en un plano cartesiano sum谩bamos), esa es la diferencia.

1111111111
1000000001
1000000001
1000000001
1000000001
1000000001
1000000001
1000000001
1000000001
1000000001
1000000001
1000000001
1000000001
1000000001
1111111111

Aqui les dejo el algoritmo para generar el mapa automaticamente sin necesidad de escribirlo nosotros mismos.

Hola mi gente, les dejo mi codigo el cual crear un archivo 鈥渕apa鈥 si este no existe, no hace falta comentarlo ya que si este existe simplemente no ejecutamos la logia ofstream, creo que lo hace un poco mas robusto ante errores. Abrazo! excelenete clase 鉂わ笍

void GameMap::loadMapFromFile()
{
    string line;
    ifstream file("Map.txt");

    if(file.is_open())
    {

    }else
    {
        ofstream createFile("Map.txt");

        if(createFile.is_open())
        {

        }else
        {
            cout <<"FATAL ERROR: Map can't be created" << endl;
        }
    }
}
#include "GameMap.h"
#include <iostream>
#include <fstream>

using namespace std;


GameMap::GameMap()
{
    //ctor
    PlayerCell = NULL;
    LoadMap();
}
void GameMap::Draw(){
    for(int f=0; f<21; f++){
        for(int c=0; c<51; c++){
            cout << cells[f][c].id;
        }
        cout << endl;
    }
}

void GameMap::SetPlayerCell(int x, int y){
    if(PlayerCell != NULL){
        PlayerCell->id = ' ';
    }
    PlayerCell = &cells[y][x];
    PlayerCell->id = 'X';
}

void GameMap::LoadMap(){
    string line;
    ifstream MyMap("maze.txt");
    if(MyMap.is_open()){
        for(int f=0; f<21; f++){
            getline(MyMap,line);
            for(int c=0; c<51; c++){
                cells[f][c].id = line[c];
            }
        }
        MyMap.close();
    }else{
        cout << "Maze file could not be read" << endl;
    }
}

Mi Mapa (21 de alto x 51 de largo)

    |                                              
    V                                              
HHH O HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HHH   HHH                  HHH                  HHH
HHH   HHH   HHHHHHHHHHHH   HHH   HHHHHHHHHHHH   HHH
HHH   HHH      HHH   HHH   HHH   HHH            HHH
HHH   HHHHHH   HHH   HHH   HHH   HHH   HHH   HHHHHH
HHH            HHH   HHH         HHH   HHH      HHH
HHH   HHHHHHHHHHHH   HHHHHHHHHHHHHHH   HHHHHH   HHH
HHH                     HHH               HHH   HHH
HHHHHHHHHHHHHHHHHHHHH   HHHHHHHHHHHHHHHHHHHHH   HHH
HHH               HHH   HHH                     HHH
HHH   HHHHHHHHH   HHHHHHHHH   HHHHHHHHHHHHHHHHHHHHH
HHH         HHH               HHH               HHH
HHHHHHHHH   HHHHHHHHHHHHHHHHHHHHH   HHHHHHHHH   HHH
HHH   HHH                     HHH   HHH         HHH
HHH   HHHHHHHHHHHHHHHHHHHHH   HHH   HHH   HHHHHHHHH
HHH                                 HHH         HHH
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH W HHH
                                              |    
                                              V    

Jujuu se est谩 poniendo cada vez m谩s complejo este 煤ltimo m贸dulo. Me parece que lo voy a tener que repetir varias veces hasta entender bien qu茅 es todo lo que est谩 pasando 馃槄

馃槑

Excelente curso y muy buen profesor.

Gracias!

Excelente clase, siempre hay algo nuevo que aprender.
Gracias

HECHO

void Gamemapa::CargadeArchivo()
{
/*
ofstream archivocreado("map.txt");

 if(archivocreado.is_open())
 {

 }

 else
{
     cout << "el archivo no pudo cargarse"<<endl;

}
*/
string line; //esta linea va a estar cargando cada linea de mi archivo
ifstream  Myfile("map.txt"); //entrada de flujo de datos

if(Myfile.is_open())

{

}
else
{
    cout << "el archivo no pudo cargarse"<<endl;
}

}


// GameMap.cpp
void GameMap::LoadFromFile()
{
        string line;
        ifstream  MyFile(""Map.txt"");

        if (MyFile.is_open())
        {
                // ...
        }
        else{
                cout << ""FATAL ERROR"" << endl;
        }
}```

esta interesante 馃槃

Personalmente, comparto la idea del profesor, las funciones de crear los archivos una sola vez y luego ya no hacerlo, para tomarlo como una practica.

Jajaja yo tuve que cambiar los parametros completos, en vez de hacer la sustitucion de Y por X 馃槃

Crear el mapa automaticamente.
ROW y COL constantes que indican la dimension del mapa y asi hacerlo mucho mas personalizable.

 if (fileCreated.is_open()){
        for (int i = 0; i < ROW; i++){
            for (int j = 0; j < COL; j++){
                if (i == 0 || i == (ROW-1) || j == 0 || j == (COL-1)){
                    fileCreated << 1;
                }else{
                    fileCreated << 0;
                }
            }
            fileCreated << endl;
        }
    }else{
        cout << "FATAL ERROR: MAP FILE COULD NOT BE CREATED!" << endl;
    }```