Mostrando entradas con la etiqueta Herramientas. Mostrar todas las entradas
Mostrando entradas con la etiqueta Herramientas. Mostrar todas las entradas

13 octubre 2014

Cambiar colores en Geany

Geany es posiblemente mi editor preferido para programar: rápido, de pequeño tamaño, multiplataforma, multicodificación, con realce de sintaxis en colores, permite compilar desde el propio editor (y destaca las líneas con errores en el editor), tiene una versión portable...

Eso sí, permite hacer menos cosas que Notepad++ (especialmente si contamos los plugins de éste último, más numerosos que los de Geany) y configurar los colores de la sintaxis es relativamente trabajoso. Tenemos tres alternativas:


  • La primera opción, que debería ser la más simple, pero se queda muy corta, es entrar al menú "Ver" y en la subopción editor encontraremos "Esquemas de color"... pero sólo hay dos esquemas para elegir. Si queremos más, tendremos que buscar alguna página que recopile unos cuantos, como "Geany themes" y "Base 16 Geany", descargar las plantillas y copiarlas a mano en la carpeta "colorschemes" del directorio de instalación de Geany.

  • La segunda opción, más avanzada pero muy a mano, es entrar al menú "Archivos de configuración", y escoger "filetypes.common", que tiene la configuración común a todos los tipos de fichero. En ese fichero encontraremos secuencias hexadecimales que indican los colores que se usarán para el texto normal, los comentarios, palabras reservadas, números, cadenas de texto, etc. Podemos cambiar la secuencia por otra que nos guste más (hay muchos "selectores de color" online y en la gran mayoría de programas de dibujo, que te pueden ayudar a saber qué secuencia corresponde a un cierto color), salir de Geany y volver a entrar para ver los cambios.

  • Una tercera opción, más avanzada, es modificar los ficheros de configuración específicos de un cierto lenguaje, si no quieres que los comentarios (por ejemplo) se vean en el mismo color para todos los lenguajes. En ese caso, deberás entrar a la carpeta "filedefs" dentro del directorio de Geany y editar el fichero correspondiente al lenguaje que te interese (por ejemplo, "filetypes.c" para el lenguaje C, o "filetypes.cpp" para C++, o "filetypes.cs" para C#. 

10 abril 2014

WaveEngine: Mostrar un sprite 2D y mover con teclado

¿Qué tiene de bueno WaveEngine?


Es un motor de juegos en C#, multiplataforma y gratuito, con el que es fácil crear juegos para Windows 8 y Windows Phone, y no mucho más complicado crearlos para Android e iOS.


¿Qué tiene de malo WaveEngine?


La curva de aprendizaje comienza de forma más pronunciada que con motores más básicos: es fácil crear un sistema de partículas para imitar humo, con poquísimas líneas de código, pero, por el contrario, es relativamente largo (comparado con otras plataformas básicas para 2D) hacer algunas tareas sencillas, como mostrar una imagen en pantalla. Y cuando uno empieza a programar, normalmente prefiere empezar por cosas que tengan una "lógica simple" antes de llegar a los "efectos vistosos".

Por eso, vamos a ver algún ejemplo básico que ayuden a crear un juego 2D simple usando WaveEngine.


Disclaimer


No soy ningún experto en WaveEngine, sólo alguien ha asistido al WaveEngine University Tour 2014, así que puede que alguna cosa se pueda hacer de formas (mucho) más eficientes que la que yo exponga. Si lees esto y conoces alguna, puedes publicar un comentario para ayudar a mejorarlo.


¿Qué pasos hay que dar para instalar (en Windows)?


1.- Descargar e instalar Visual Studio 2012 o 2013 (basta con la versión Express, gratuita): http://www.microsoft.com/es-es/download/details.aspx?id=40787

2.- Si usas Windows 7, deberás descargar (e instalar) "el Framework Punto Net 4.5"; si empleas Windows 8, ya lo tendrás instalado: http://www.microsoft.com/en-US/download/details.aspx?id=30653

3.- Necesitarás instalar el SDK de DirectX (no basta con usar el "runtime" que empleas para jugar a juegos que usan DirectX, porque ahora vas a crear cosas que utilizan DirectX). Puedes usar un instalador web desde http://www.microsoft.com/en-us/download/details.aspx?id=35

4.- Finalmente, el instalador de WaveEngine: http://waveengine.net/Download/Index

5.- Es habitual que las versiones recientes de WaveEngine incluyan el VC++ 2012 Runtime; si no es así, tendrás que descargarlo también): http://www.microsoft.com/en-US/download/details.aspx?id=30679


¿Qué apariencia tiene un programa?


Si entras a Visual Studio y creas un nuevo proyecto de tipo "WaveEngine Game Project", aparecerá un esqueleto casi vacío, como éste:

public class MyScene : Scene
{
    protected override void CreateScene()
    {
        RenderManager.BackgroundColor = Color.CornflowerBlue;

        //Insert your code here
    }
}

Nuestro "juego" tiene una única escena, con color de fondo azul claro... y nada más.

Si lanzas el proyecto (con el botón "Iniciar") de Visual Studio, debería aparecer esa escena vacía con color azul:



Vamos a añadir un elemento que el usuario pueda mover...


En primer lugar, tenemos que buscar la imagen que nos interese (por ejemplo, un fichero PNG) y convertirla al propio formato nativo de WaveEngine, de forma que esa imagen se pueda utilizar en cualquier plataforma.

Para convertir la imagen utilizaremos una de las herramientas que incorpora WaveEgine: el "Assets Exporter". Deberemos abrirla y crear un nuevo proyecto (File / New project), escogiendo una carpeta, que es en la que aparecerán los ficheros exportados. Ahora arrastramos nuestra imagen hasta la palabra "Assets", que aparece en el panel superior izquierdo. Después vamos al menú "Project" y escogemos la opción "Export". No tendremos ningún aviso (al menos en la versión actual) de que todo ha funcionado, pero si vamos a la subcarpeta "Export" dentro de la carpeta que habíamos escogido, veremos un fichero con el mismo nombre que nuestra imagen, y terminado en ".wpk" (en mi caso, a partir de "player.png" se ha generado "player.wpk").



Ya tenemos la imagen preparada. Ahora hay que llevarla a nuestro proyecto de Visual Studio. En el panel superior derecho ("Explorador de soluciones") aparecerá la carpeta "Content". Debemos arrastrar nuestra imagen hasta allí.



Para asegurarnos de que la imagen realmente se incluya en el proyecto distribuible, nos falta un paso adicional: hacer clic en ella, ir a la pestaña "propiedades" y, en la opción "Copiar en el directorio de resultados", cambiar la opción "No copiar" por "Copiar si es posterior".



Nos vamos acercando. Nuestra imagen está incluida al proyecto y será distribuida con el proyecto. Ahora vamos a incluir el código que realmente la muestre en pantalla. Para conseguirlo, deberemos crear una nueva "entidad", un nuevo elemento del juego.



Cada "Entity" (entidad) estará formado por varios "componentes". Algunos de estos componentes serán necesarios para que la entidad sea visible en pantalla:


  • Un "Transform2D", que tendrá detalles como la posición, escala y rotación del elemento.
  • Un "Sprite", que será la imagen en sí.
  • Un "SpriteRenderer", que dará detalles adicionales sobre cómo se debe dibujar el Sprite (y que de momento se limitará a avisar de que se debe mostrar en una "capa opaca").


Así, un fuente básico que muestre la Entity correspondiente a nuestra imagen será:

public class MyScene : Scene
{
    protected override void CreateScene()
    {
        RenderManager.BackgroundColor = Color.CornflowerBlue;

        Entity player = new Entity()
                .AddComponent(new Transform2D())
                .AddComponent(new Sprite("content/player.wpk"))
                .AddComponent(new SpriteRenderer(DefaultLayers.Opaque));
    }
}

En un principio no compilará: no sabrá no que es Transform2D, ni Sprite, ni SpriteRenderer... Podemos añadir

using WaveEngine.Common.Graphics;
using WaveEngine.Components.Graphics2D;

o bien pulsar "Ctrl+." para que el propio VisualStudio nos proponga los "using" que faltan.

Si lo lanzamos, veremos que aún no funciona, sigue apareciendo la pantalla azul, porque falta un último detalle: existe un elemento en el juego, que es el encargado de gestionar todas esas "entidades". Se llama "EntityManager", y debemos incluir en él cada "Entity" que creemos:

EntityManager.Add(player);

Ahora sí aparecerá la imagen dentro de la pantalla de juego:









Pero esa imagen aún es estática. Para añadir un que un objeto se mueve, debemos añadirle un "comportamiento" ("Behavior"). El comportamiento será una clase que herede de "Behavior" y que deberá tener un método "Update" (actualizar), que será llamado de forma regular. Desde ese método podremos comprobar distintos métodos de entrada. Por ejemplo, podemos mirar si se ha pulsado la flecha hacia la derecha con:

if ((WaveServices.Input.KeyboardState.Right == ButtonState.Pressed))

En ese caso deberíamos cambiar la coordenada X del jugador. Podemos acceder a ella a través de su "Transform2D". La forma de conseguirlo es incluyendo al principio de nuestra clase PlayerBehavior las líneas

[RequiredComponent]
private Transform2D playerData;

De modo que a partir de entonces podremos acceder a detalles como la X y la Y del jugador con "playerData.X" y "playerData.Y".  El fuente completo de esa clase "PlayerBehavior" (comportamiento del jugador) sería algo como:

using System;
using WaveEngine.Common.Input;
using WaveEngine.Framework;
using WaveEngine.Framework.Graphics;
using WaveEngine.Framework.Services;

namespace WaveEnginePrueba01Project
{
    class PlayerBehavior : Behavior
    {
        [RequiredComponent]
        private Transform2D playerData;

        protected override void Update(TimeSpan gameTime)
        {
            if ((WaveServices.Input.KeyboardState.Right == ButtonState.Pressed))
            {
                 playerData.X += 5;

            }

            if ((WaveServices.Input.KeyboardState.Down == ButtonState.Pressed))
            {
                playerData.Y += 5;

            }
        }
    }
}

(Sí, sólo se mueve hacia la derecha y hacia abajo, pero seguro que no te cuesta completarlo).

Y así habría quedado el bloque principal, la escena, al que sólo faltaría añadir (con AddComponent) el comportamiento (un nuevo objeto de la clase PlayerBehaviour):

using WaveEngine.Common.Graphics;
using WaveEngine.Components.Graphics2D;
using WaveEngine.Framework;
using WaveEngine.Framework.Graphics;

namespace WaveEnginePrueba01Project
{
    public class MyScene : Scene
    {
        protected override void CreateScene()
        {
            RenderManager.BackgroundColor = Color.CornflowerBlue;

            Entity player = new Entity()
                    .AddComponent(new Transform2D() )
                    .AddComponent(new Sprite("content/player.wpk"))
                    .AddComponent(new SpriteRenderer(DefaultLayers.Opaque))
                    .AddComponent(new PlayerBehavior() );

            EntityManager.Add(player);
        }
    }
}


¿Tienes dudas (que quizá hasta pueda responder... pero no garantizo nada)?  ¿Quieres que esto sea el principio de una serie que cuente más detalles de cómo hacer un juego paso a paso?  ¡Deja un comentario!

09 octubre 2013

Compilar C++ en Windows con Visual C++ Express

Visual C++ es parte de la plataforma de desarrollo llamada Visual Studio, de la cual existe una versión llamada Express, que se puede descargar libremente. En este caso, vamos a usar Visual C++ 2010 Express, que no es la última versión, pero requiere menos recursos que la versión 2012 y es más que suficiente para el uso que le puede dar alguien que está empezando a programar (de hecho, también bastaría con Visual C++ 2005 o 2008, pero éstas ya no están disponibles para descargar desde la web "oficial" de Microsoft, aunque sí desde la web para estudiantes de MSDNAA, a la que pueden tener acceso los alumnos de algunos centros educativos).

Desde la propia pantalla de bienvenida tendremos la opción de crear un nuevo proyecto:

vscpp2010_01.png

El tipo de proyecto adecuado para un principiante sería una "Aplicación de consola Win32":

vscpp2010_03.png

Comenzará un asistente, que en este caso se limitará a confirmar si lo que queremos es una aplicación de consola:

vscpp2010_06.png

Y aparecerá un esqueleto de programa, que nos muestra la apariencia que debe tener. Habrá detalles desconcertantes, como que no existe "main" sino "_tmain", y que aparecerá un primer "include" al comienzo del fuente. Deberemos respetar esa estructura, o nuestro programa no compilará correctamente:

vscpp2010_07.png

El cuerpo de nuestro programa irá dentro de "_tmain", y nuestros "includes" deberán seguir al que se nos proporciona:

vscpp2010_09.png

En general, no será necesario compilar antes de ejecutar, porque el entorno se dará cuenta de que hemos modificado el fuente: Si hacemos clic en el botón de "Ejecutar"

vscpp2010_10.png

Se nos preguntaría entonces si queremos generar el ejecutable

vscpp2010_11.png

Pero, al igual que si usamos CodeLite (y la mayoría de entornos integrados para Windows), la ventana de ejecución se abre y se cierra tan rápido que no da tiempo a ver el resultado, así que podemos forzar una pausa añadiendo "cin.ignore()" justo antes de "return":

vscpp2010_12.png

Y así sí podremos comprobar si nuestro fuente ha funcionado correctamente:

vscpp2010_13.png

08 octubre 2013

Compilar C++ en Windows usando CodeLite

Hay varios entornos gratuitos que nos permiten programar en C y C++ bajo Windows de una manera razonablemente sencilla. El más extendido es Dev-C++, pero es antiguo y puede no soportar características recientes del lenguaje. El mismo problema ocurrirá con las versiones más extendidas de CodeBlocks. Por eso vamos a ver una alternativa más reciente y que se actualiza con frecuencia: CodeLite.
CodeLite es un entorno que está disponible para Windows, Linux y Mac. Se basa en el propio GCC (y G++) que se usa para compilar en Linux, al que añade un editor que hace más amigable su uso. Veremos cómo descargarlo y usarlo en Windows. No incluiré las instrucciones para Mac, porque no uso Mac, ni tampoco para Linux, porque Geany es más que suficiente para crear y probar fuentes básicos en ese sistema.

El primer paso será descargar el entorno desde su página oficial (codelite.org). En el momento de escribir este texto, la última versión es la 5.2.

codelite52_instal_01.png

Se nos propondrá donar alguna cantidad, pero no es necesario (en la parte inferior aparece un "No, thanks):

codelite52_instal_02.png

Aparecen varias categorías de descargas, según el sistema operativo. El primer bloque es el de Windows, que descarará tanto el entorno de edición como el compilador.

codelite52_instal_03.png

Se nos llevará a la página de descargas, en Sourceforge, y en un instante debería estar listo para instalar.

codelite52_instal_04.png

La instalación será poco más que pulsar "Siguiente" varias veces, aceptando las opciones que se nos proponen o cambiando las que nos apetezca (por ejemplo, si no queremos que se instale en el disco C sino en alguna otra unidad de disco). Al cabo de un instante, aparecerá el icono en nuestro escritorio.

codelite52_instal_06.png

Y al hacer doble clic veremos la pantalla principal del editor:

codelite52_uso_01.png

Para comenzar, deberemos crear un nuevo proyecto. Lo podemos hacer desde la propia pantalla de bienvenida, un poco más abajo

codelite52_uso_02.png

En el menú "Workspace" tendremos también la opción "New Project", que es equivalente:

codelite52_uso_02b.png

Se nos mostrarán los diversos tipos de proyectos que podemos crear

codelite52_uso_03.png

Y entre ellos, en el bloque "Console" (consola), escogeremos "Simple executable (g++)", para crear ejecutables sencillos de consola en C++ (usando el compilador "g++"):

codelite52_uso_04.png

Sólo faltará indicar el nombre de nuestro proyecto y la carpeta en la que queremos guardarlo:

codelite52_uso_05.png

Se creará el esqueleto del proyecto, pero es posible que aun así, la pantalla de nuestro editor parezca vacía:

codelite52_uso_06.png

Si es el caso, deberíamos desplegar el panel izquierdo ("Workspace") hasta ver nuestro programa principal ("main.cpp").

codelite52_uso_07.png

Al hacer doble clic sobre él, su contenido se mostrará en la ventana de edición:

codelite52_uso_08.png

Ese contenido corresponde a un programa en C. Si queremos trabajar en C++, deberemos cambiarlo por nuestro propio esqueleto:

codelite52_uso_09.png

Para compilar el proyecto y ver si tiene errores, entraremos al menú "Build" y escogeremos la opción "Build project":

codelite52_uso_10.png

O usaremos el botón correspondiente de la barra de herramientas:

codelite52_uso_11.png

Y en el panel inferior se nos mostrará la lista de errores, si es que hay alguno:

codelite52_uso_12.png

Si todo ha ido bien, podemos lanzar la ejecución:

codelite52_uso_13.png

Y quizá se nos recuerde que debemos compilar antes de ejecutar (habría sido fácil para los desarrolladores del editor saber que acabamos de compilar y no hacernos esa pregunta, pero es un detalle incómodo e innecesario que tiene la versión 5.2 de CodeLite y que quizá se mejore en alguna versión posterior):

codelite52_uso_14.png

El problema es que la ventana de ejecución se abrirá y se cerrará tan rápido que no dará tiempo a ver si lo que nuestro programa muestra en pantalla es lo correcto o no. Se puede "solucionar" (de forma poco elegante) añadiendo "cin.ignore()" al final de nuestro programa, justo antes de "return":

codelite52_uso_16.png

Y esta vez ya sí podremos comprobar si nuestro programa ha funcionado correctamente:

codelite52_uso_17.png

07 octubre 2013

Compilar C++ en Linux con Geany

A raíz de la "Introducción a C++" que voy creando a ratos sueltos, he preparado unas instrucciones básicas sobre cómo compilar en C++ usando varios entornos gratuitos: Geany, CodeLite y Visual C++ Express.

Lo dejo aquí en tres entregas, por si a alguien le resulta útil...

Compilar fuentes sencillos en C++ usando Linux
El primer paso es encontrar un editor con el que puedas teclear tus programas. En el menú, dentro del apartado "Accesorios", es fácil que tengas un editor de textos, como GEdit:
cppLinux01.png
Aparecerá la pantalla del editor, todavía vacía:
cppLinux02.png
Podemos empezar a teclear nuestro programa. La sintaxis no se verá en colores todavía.
cppLinux03.png
En el momento en que guardemos los cambios, es fácil que el editor empiece a destacar la sintaxis en colores:
cppLinux04.png
Para compilar el programa y crear un ejecutable, podemos abrir un "Terminal", al que también deberíamos poder acceder desde el menú:
cppLinux05.png
La orden que usaremos para compilar es "g++". Deberemos indicar el nombre de nuestro fuente. Si queremos indicar un nombre para el ejecutable, deberemos usar la opción "-o"; si no es así, el ejecutable se llamaría "a.out".
cppLinux06.png
Si no recibimos ningún mensaje de error como respuesta, podremos lanzar el ejecutable, indicando su nombre precedido por "./":
cppLinux07.png
Geany es un editor más adecuado para programadores, que permitirá compilar nuestro programa y ejecutarlo desde el propio editor. Una vez lo hayas instalado mediante el gestor de software de tu sistema, debería aparecer en un menú llamado "Desarrollo" o "Programación":
cppLinux08.png
Al igual que ocurría con GEdit, veremos la pantalla de edición vacía cuando entremos:
cppLinux09.png
Y podremos comenzar a teclear nuestro fuente, que no se verá en colores todavía
cppLinux10.png
Pero en cuanto lo guardemos con un nombre terminado en ".cpp", la sintaxis quedará realzada con colores:
cppLinux11.png
Tenemos un botón que nos permite "compilar" nuestro fuente:
cppLinux12.png
Y en la parte inferior de la ventana de Geany se nos mostrarán los errores o el resultado correcto de la compilación
cppLinux13.png
Aun asi, este paso comprueba errores pero todavía no crea un ejecutable. Para obtenerlo, deberemos usar la opción de "construir:"
cppLinux14.png
Y nuevamente se nos mostrarán los errores o se nos avisará de que todo ha sido correcto:
cppLinux15.png
Si no había problemas, podremos ejecutar nuestro programa, para ver su resultado:
cppLinux16.png
Y dicho resultado se nos mostrará en una ventana nueva, y se pausará hasta que pulsemos Intro:
cppLinux17.png