Este curso realmente es de los mejores que puede haber, Eri Dorado es muy curioso y tiene una forma de enseñas muy particular que realmente lo hacen resaltar.
Introducción a C++
Todo lo que aprenderás sobre C++
¿Qué es programar y por qué aprender C++?
Conceptos Generales de C++
La Historia de C++ y sus diferencias con C
Preparando el entorno de trabajo
Instalando Codeblocks
Pasos para instalar en mac
Ejecutando nuestro primer programa
¿Qué son las librerías STD? - Portada del Proyecto
Manejo de memoria
¿Qué es la memoria y tipos de datos?
Alojando variables en memoria
¿Cómo usar operadores?
¿Qué son los apuntadores?
Reto: Escribir un programa que calcule áreas.
Entrada de datos y funciones
¿Cómo introducir datos a nuestro programa?
¿Cómo usar condicionales?
Usando condicionales
¿Cómo encapsular código en funciones ?
¿Qué son los parámetros y como usarlos?
Reto: Juego narrativo implementando condicionales y entrada de datos.
Loops y arreglos
¿Qué son los arreglos?
¿Qué son los Loops?
Programando Loops
Loops , arreglos y arreglos bidimensionales
Dibujando el mapa de nuestro juego con arreglos
Manipulando mi jugador con inputs en arreglos unidimensionales
Arreglos bidimensionales
Reto: Moviendo a mi personaje en mi arreglo bidimensional
Lectura de Archivos
Creando y leyendo un archivo externo
Leyendo archivos externos
Reto: En el mapa, crear punto de inicio y salida del jugador
Programación Orientada a Objetos
¿Qué es POO?
Definiendo una clase y creando sus instancias
Encapsulación
Abstracción
Herencia
Propiedades de clase en herencia
Polimorfismo
Finalizando nuestro proyecto
Creación de personaje y archivo de encabezado
Moviendo mi personaje con entrada de datos
Mapa
Interacción entre el personaje y el mapa
Paredes
Optimizando trazado de mapa
Colisiones
Creando nuestra portada de juego
Tesoro y victoria
Conclusiones
Proyecto final
Aún no tienes acceso a esta clase
Crea una cuenta y continúa viendo este curso
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 17
Preguntas 0
Este curso realmente es de los mejores que puede haber, Eri Dorado es muy curioso y tiene una forma de enseñas muy particular que realmente lo hacen resaltar.
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 “mapa” 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;
}```
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.