Dev - C++ - MI PRIMER MINIJUEGO!

   
Vista:
Imágen de perfil de klgallego

MI PRIMER MINIJUEGO!

Publicado por klgallego (17 intervenciones) el 27/06/2015 19:24:06
Buenas a todos!

Necesito un pequeño empujón, llevo unas semanas trabajando en un pequeño minijuego creado con dev++ y la ayuda de ascii para recrear imágenes sencillas como base para en el futuro convertir esos "dibujos" en imágenes ".bmp". Bien una vez ya tengo la ALFA del juego creada, con su incremento de nivel, sus bonificaciones, etc. Quiero probar de cambiar ya esos "dibujos" con ascii y poder poner imágenes de fondos, objetos... etc en la consola y que el pequeño minijuego se haga más visual. Hay posibilidad de poner las imágenes de una forma fácil, o tendría que modificar todas las variables creadas? He estado navegando por youtube y lo que he encontrado no me acaba de convencer, me descargado "codeblocks" recomendado por un youtube que hace minijuegos pero el implementar bitmap no lo entiendo y no quiero hacerlo sin conocimiento de lo que estoy tocando por que entonces no sirve de nada. Conocéis algún vídeo que me explique bien como implementar imágenes, la verdad no me gustaría tener que recurrir a otros programas que no sea dev++ por que lo llevo por la mano pero estoy abierto a todas las ideas posibles. Muchas gracias y siento el escrito. Un saludo a todos


pd: Os adjunto la base del minijuego, para ver si alguien entiende lo que pido, gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

MI PRIMER MINIJUEGO!

Publicado por Rene gar (50 intervenciones) el 27/06/2015 20:47:34
Lindo juego te basaste en los tutoriales de davidcopterochann , te quedo bien creo que david tiene en su canal algunos tutoriales de la libreria allegro para crear juegos lo de seguir usando directamente la consola no lo recomiendo mucho si es que quieres tener un mejor aspecto visual ademas de performance

asi que te invito a mirar alguna libreria estilo allegro, sdl o sfml que esta ultima en lo personal es la mas sencilla y clara de enteder pero necesitas conocimientos de programacion orientada a objetos

te recomiendo tambien el canal de pau fernandez que tiene videos de una mini libreria llamada miniwin

te dejo un juego similar al tuyo pero usando miniwin https://www.youtube.com/playlist?list=PLDD6B727E5B6B5E33

ademas su canal de youtube tiene un contenido de mucha calidad en el lenguaje c++
que recomiendo ver https://www.youtube.com/user/paueky/playlists
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de klgallego

MI PRIMER MINIJUEGO!

Publicado por klgallego (17 intervenciones) el 27/06/2015 21:13:07
Muchisisimas gracias! si la base la he cogido de el. Realmente mi juego tiene menu, submenus, bonificaciones, rangos y mejoras con canjeo de las bonificaciones que consigues por mission, pero la base es de david. Me mirare estos tutoriales y a ver si así consigo lo que quiero, una vez lo termine intentare subirlo aquí para que la gente me de su opinión. Un saludo muy grande y muchas gracias una vez mas por la aportación!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de vangodp

MI PRIMER MINIJUEGO!

Publicado por vangodp (287 intervenciones) el 27/06/2015 21:26:38
No se te entiende nada de lo que quieres. Pero supongo que te has hartado de jugar con la consolita y ahora quieres hacer juegos de verdad. jajaja

Si te han dicho que te pases a codeblocks hágales caso, dev c++ debería estar prohibido. >_<

C++ no tiene ninguna forma padrón de cargar imágenes BMP, o de ningún otro tipo de imagen, vamos. Por suerte, C++ es un lenguaje extensible mediante librerías, ese es el motivo por el cual haya subsistido durante tanto tiempo. ¡Ojalá siga existiendo muchos años más!. =)

Queda decir que no solo necesitas cargar imágenes, si no que necesitas cargar audio, gestionar la entrada(Eventos) y posiblemente muchas otras cosas. Entonces necesitas varias librerías, o por lo menos una que pueda hacer todo eso y más. Para ello puedes alegrarte porque disponemos de varios sabores para la creación de juegos en C/C++, para C puedes usar SDL2 y si mejor aun programas en C++, entonces lo que andas buscando es SFML2.3(Ultima versión hasta el momento). Que de claro que no son las únicas opciones, pero sí que para mí son las mejores.

Yo por supuesto uso SFML, pero también, en algún tiempo dado, podría usar OpenGL para 3d, que por suerte viene incluido en SFML también o puedo usarla simplemente sola.

Entonces seria juego 2D == codeblocks+SFML. ¿Capiche?

Con respecto a lo de cargar gráficos... Tal como lo indica en su pagina los gráficos en SFML son como una variable más, existe un tipo de datos que se llama sf::Texture, es una clase, y trae un abanico de posibilidades que puedes ver aquí.

Un ejemplo para que veas sería hacer:
sf::Texture textura; //<-objeto tipo sf::Texture al que le llamamos textura. Permite guardar una textura, obvio XD

Como podemos observar parece un tipo de dado normal como un int o un char, pero pertenece a al espacio de nombre sf, parecido a cuando hacemos std::cout, incluso podemos hacer using namespace sf y ya no tendríamos que poner el sf:: delante de Texture, quedando Texture textura;, pero no recomiendo esa práctica. ;)

Tenga claro que no se trata de un tipo de dato básico aun que lo parezca, pues es una clase como dije anteriormente, pues tenemos funciones miembro que usaremos para gestionar de forma sencilla esa textura. Empezando por cargar una imagen con la función miembro loadFromFile() que nos carga la textura desde un PNG por ejemplo.

Un ejemplo puede ser:
1
2
3
4
5
/* carga un en un rectángulo de 32x32 pixeles(debe ser el tamaño de la imagen) una imagen desde un archivo PNG llamado imagen.png, la imagen inicia en las coordenadas x10 y10 (parecido al gotoxy, pero en pixeles), y como tiene un tamaño de de 32x32, terminará en x10+32 y10+32. Debes aprender el sistema de coordenadas 2D de sfml.*/
if (!texture.loadFromFile("imagen.png", sf::IntRect(10, 10, 32, 32)))
{
    // Si da un error, y por ejemplo no encuentra el archivo, ejecutaría lo que hemos puesto aquí. Un cout << "error"; o liberar la ram etc etc
}

como ves muy fácil cargar la imagen pero no solo depende de eso, hay que crear una ventana en modo render antes, darle un tamaño, crear como dije el gameloop con el gestor de eventos, y entonces se hacen esos pasos que describí. Y al final solo queda mostrar el resultado con una función draw o ya ni recuerdo. jaja

todo lo que necesitas lo tienes en esta pagina: http://www.sfml-dev.org/tutorials/2.3/
... Desde como instalar SFML en Code::Blocks hasta como crear la ventana de render, gestionar eventos de teclado, como cargar formas gráficas básicas como círculos rectángulos, lineas, triángulos etc etc, como cargar imágenes, y como refrescar la pantalla.

En la teoría, es como si de una mesa de trabajo se tratara, creas una ventana de render, que seria como por ejemplo a mesa donde colocamos fotos encima, luego cargamos una imagen que nos servirá de de fondo o como una hoja blanca a la que pegaremos en ella varias imágenes menores encima haciendo un "colage", esa hora blanca es grande, posiblemente hasta más grande que la propria mesa, luego encima de esa "hoja" pegamos nuestras fotos(muñeco, nave, etc), y luego de estar todo "encajado" hacemos una foto o como si la escaneamos para convertir todo eso en una sola imagen, eso es como un foto montaje(método draw()), incluso Phoshop se basa en ese mismo sistema si te pones a pensar(superposición de imágenes), luego por ultimo seria mostrar al cliente el resultado(refrescar la pantalla sería mostrar lo que hemos echo con el método display() ). Es una analogía claro, pero así funciona, como un foto montaje. Todo serian sprites, hasta el mismo fondo o hoja blanca como en el ejemplo. Es como tener una revista, recortar un paisaje y pegar encima los personajes de nuestra historia, la teoría es realmente ridícula, pero programar todo eso realmente es algo complejo.

Debes buscar información, tutoriales etc etc. Espero haber sido de utilidad.

PD: Si necesitas ayuda para instalarlo te puedo echar una mano XD.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar