Trucos sobre manejo de softwarelibre y gnu linux. También a los programas que hago en gambas3, python, java, etc.... Consejos y trucos sobre otros programas: excel, word, internet, instalación de programas, Arduino y demás....
Dedicado a mis proyectos en Gambas ,un lenguaje de programación parecido al Visual Basic + Java pero ampliamente mejorado y...¡¡para gnu/linux!!.La potencia del gnu/linux sumada a la facilidad del Basic
Consultas, Desarrollo de programas y petición de presupuestos:
Ebay: un ticket regalo de 5 euros... y Ratón Game por 0.69 €
Todo el mundo habla de amazon... pero también existe..... ebay.
De vez en cuando, ebay regala descuentos y ticket de regalos a sus clientes (que hayan hecho compras hace tiempo o que sean muy habituales, no importa), y hace un mes me regalaron un ticket de 5 euros.
Estuve buscando un ratón para jubilar el que tenia que estaba "echo polvo", y encontré una oferta de un ratón game por 5.69 euros. (sin marca y genérico, ¡¡¡ ojo !!!), pero la tienda aceptaba paypal cosa buena.
Me tardaba un mes (me lo traían de Hong Kong) y los portes estaban incluidos en el precio... con la oferta que me daban, se me quedaba en 0.69 euros, aunque me tardaba casi un mes me merecía esperar...(los ratones "normales" están sobre 6 euros en tienda).
Me llegó, y ya lo tengo conectado y funciona perfectamente, y por supuesto, también con GNU/LINUX !!! (en mi caso Linux Mint)
Características:
Botones: 7 botones con rueda de desplazamiento.
Sistemas de seguimiento: ópticos.
El DPI máximo: 5500DPI.
Interruptor de DPI ajustable: 1000DPI / 1600DPI / 2400DPI / 3200DPI / 5500DPI;
Rueda de desplazamiento ultra-precisa.
La tecnología óptica funciona en la mayoría de las superficies.
Diseño ergonómico, uso a largo plazo sin fatiga.
Conectividad inteligente, sin necesidad de codificar, plug & play.
Hierro de peso incorporado, se siente cómodo, móvil y estabilidad.
Cambio de vida: 5 millones de ciclos.
Tamaño: 127 (L) x 85 (W) x 37 (H) mm.
Peso: alrededor de 140g.
Compatible con Windows XP, Vista, Windows 7, ME, 2000 y Mac OS ... o más reciente.
'y gnu/linux'
Contenido del paquete:
1 X Gaming Mouse (sin paquete al por menor)
Normalmente en los juegos de ruleta online, nos muestran un marcador sobre los números que salen, y los van colocando en 3 columnas: los números Rojos, el Cero, y los números Negros. Pues he hecho un programa para que también veamos la distribución de los números que salen por: Columnas(o filas), Docena, Par-Impar, 1-18 y 19-36 y por supuesto Rojo y Negro.
Os dejo un video para que lo veais en funcionamiento:
Desarrollo de Juegos de Tablero (4 y 5): Autómata para Animación del personaje y/o fichas (4º parte)
En esta entrada, vamos a desarrollar varias animaciones para el personaje. Nuestro personaje va a tener 3 estados:
- Parado
- Andando hacia la izquierda
- Andando hacia la derecha
Cada estado tiene su propia animación, con lo cual nuestro personajes o fichas, las tienes que ir almacenando. El estado inicial del personaje es "Parado", y si se mueve a una casilla cambia de estado. Si por ejemplo, va hacia la derecha de la pantalla, su estado cambia a "Andando hacia la derecha", y se animará con esos sprites. Cuando llegue a la casilla de destino cambiará de estado y volverá a estar en el estado "Parado".
¿Como implementar todo esto?
1º Creamos una nueva clase que contiene la lista de estados posibles, la clase "EstadosPosibles":
'
Gambas class file PublicParadoAsInteger=1PublicAndarDerechaAsInteger=2PublicAndarIzquierdaAsInteger=3
Esto nos facilitará en el futuro ampliar los estados posibles, y además ayuda a escribir el código en el IDE de gambas
2º Creamos otra clase "EstadoAnimacion" que se encargará de llevar la lista de animaciones para usarla por el personaje:
'
Gambas class filePropertyestadoAsStringPrivatehestadoAsString PublicGaleriaAnimacinesAsNewCollection PrivateFunctionestado_Read()AsStringReturnhestadoEnd PrivateSubestado_Write(ValueAsString)hestado=ValueEnd PublicSubCambioEstado(cadenaAsString)hestado=cadenaEnd PublicSubanimacionActual()AsAnimacionReturnGaleriaAnimacines[hestado]End
Como veis en los objetos de esta clase, almacenamos tanto el estado en que este el personaje como la lista de animaciones. Para ellos internamente usamos una colección "GaleriaAnimacines", siendo su key (o llave) el estado (hestado). (enlace al curso de gambas: uso de colecciones en gambas3)
A la clase "PiezaAnimada", vamos a hacer varios cambios:
- A su constructor _new() le cambiamos los parámetros de entrada, porque anteriormente lo habíamos codificado para que admitiera los datos de una animación. Ahora como vamos a manejar varios, crearemos un objeto público de la clase "EstadoAnimacion" para añadirselos:
PublicSub_new(ficheroRutaEnTableroAsString,ptableroAsDrawingArea)…end '------------------
estados de animacion -----------------PublicmiEstadoAnimacionAsNewEstadoAnimacionPublicmiEstadoAsNewEstadosPosibles'---------------------------------------------------------
- Tendremos un nuevo método para asignar la animación que deberá usar para cuando se dibuje:
PublicSubActualizaAnimacion(estadoAsString) AnimacionTmp=miEstadoAnimacion.GaleriaAnimacines[estado] End
- El método "Mueve": lo modificamos para que cuando la casilla este hacia la izquierda, cambie la animación a la izquierda, y viceversa.
Además aparece un nuevo contador "ContadorA", que llevará la cuenta de los incrementos que lleva la animación (esta la usaremos en el método actualizaposición() )
- Tambien cambiamos el método de actualizaPosicion(), para que cuando llegue a la casilla destino, cambie la animación al estado "parado":
PublicSubactualizaPosicion() IfcasillaFinal=casillaInicialThenReturn'a
llegado a la casilla de destino contadorA+=1pto.x=casillaInicialX+difx*contadorApto.y=casillaInicialY+dify*contadorA IfcasillafinalX=pto.xAndcasillafinaly=pto.yThencasillaInicial=casillaFinalmiEstadoAnimacion.CambioEstado(miEstado.Parado)AnimacionTmp=miEstadoAnimacion.animacionActual()Endif End
- La Clase Jugador:
Para facilitar y "abstraer" el uso de estas nuevas clases y métodos, vamos a crear una nueva clase "interface" que usaremos como clase Padre, llamada Jugador, para manejar los método de los objetos de PiezaAnimada:
'
Gambas class file Public
MiPiezaAnimada
As PiezaAnimada Public
miEstado
As New EstadosPosibles Public
Sub _New() End Public
Sub dibuja() MiPiezaAnimada.dibuja() End Public
Sub actualizaPosicion() MiPiezaAnimada.actualizaPosicion() End Public
Sub Mueve(casilla
As Integer) MiPiezaAnimada.Mueve(casilla) End
Esta clase es muy útil, ya que tiene el método constructor (_new()) sin definir. Crearemos tantas clases que hereden de este "Jugador" como tipo de personajes tengamos (enemigos, soldados, tanques, cañones, etc), así tendremos un constructor a la medida, osea con sus propias animaciones y en futuro añadirle sus propiedades y métodos específicos.
Por ejemplo la clase "JugadorAzul", la definimos asi:
'
Gambas class file InheritsJugador PublicSub_New(ficheroRutaEnTableroAsString,ptableroAsDrawingArea) DimanimacionTmpAsAnimacion Me.MiPiezaAnimada=NewPiezaAnimada(ficheroRutaEnTablero,ptablero)'agrego
distintas animaciones 'Andando
a la derechaanimacionTmp=NewAnimacion("jacinto.png",4,7,"0,1,2,3,2,1,0,4,5,6,5,4,1")Me.MiPiezaAnimada.miEstadoAnimacion.GaleriaAnimacines.Add(animacionTmp,Str$(Me.miEstado.AndarDerecha)) 'Parado...animacionTmp=NewAnimacion("jacinto.png",4,7,"26,26,26,26,26,26,26,0,0,0,0,0,0,26,26,26,26,26,26,26,7,7,7,7,7,7")Me.MiPiezaAnimada.miEstadoAnimacion.GaleriaAnimacines.Add(animacionTmp,Str$(Me.miEstado.Parado)) 'Andando
a la derechaanimacionTmp=NewAnimacion("jacinto.png",4,7,"7,8,9,10,9,8,7,11,12,13,12,11")Me.MiPiezaAnimada.miEstadoAnimacion.GaleriaAnimacines.Add(animacionTmp,Str$(Me.miEstado.AndarIzquierda)) 'digo
cual es el estado inicial.Me.MiPiezaAnimada.miEstadoAnimacion.estado=Me.miEstado.Parado'actualizo
animacionMe.MiPiezaAnimada.ActualizaAnimacion(Me.miEstado.parado) Me.Mueve(0)
'Me pongo en la casilla 0 End
De esta manera definimos sus animaciones correspondiente y usaremos los métodos de la clase interface "Jugador", para realizar las distintas tareas que tenga que hacer la ficha o personaje.
Os dejo un video que muestra lo explicado, ya en funcionamiento:
Ya hemos acabado con el tema de animación de personajes/fichas, en el próximo artículo entraremos en la dinámica del juego de tablero y como programarlo, osea que cuando llegue el personaje a una casilla del tablero, pasará algo en el juego:
- caemos en una casilla de "pregunta": si acertamos, dará puntos al personaje , sino, perderemos puntos.
- caemos en una casilla de otro jugador: nos hacen pagar un tributo o se produce un combate, por ejemplo.
- caemos en una casilla y esta nos envía a otra casilla del tablero (la cárcel , o avanzamos o retrocedemos en el tablero)
- etc.
La industria del videojuego ocupa el primer lugar en el ocio audio-visual e interactivo a nivel mundial, por encima de industrias tan potentes como el cine o la música. Como consecuencia directa, existe una gran demanda de profesionales cualificados para diseñar y desarrollar videojuegos no sólo para consolas y ordenadores, sino también para el más que creciente mercado de los teléfonos móviles. Este libro, dividido en cuatro bloques, tiene como objetivo principal proporcionar los conocimientos necesarios para llevar a cabo dicha tarea desde una perspectiva esencialmente técnica: 1. Arquitectura del Motor, donde se estudian los aspectos esenciales del diseño de un motor de videojuegos, así como las técnicas básicas de programación y patrones de diseño. En este bloque también se estudian los conceptos más relevantes del lenguaje de programación C++. 2. Programación Gráfica, donde se presta especial atención a los algoritmos y técnicas de representación gráfica, junto con las optimizaciones en sistemas de despliegue interactivo. 3. Técnicas Avanzadas, donde se recogen ciertos aspectos avanzados, como estructuras de datos específicas, técnicas de validación y pruebas o simulación física. Así mismo, en este bloque se profundiza en el lenguaje C++. 4. Desarrollo de Componentes, donde, finalmente, se detallan ciertos componentes específicos del motor, como la Inteligencia Artificial, Networking, Sonido y Multimedia o técnicas avanzadas de Interacción.
"Este libro que tienes en tus manos es una ampliación y revisión de los apuntes del Curso de Experto en Desarrollo de Videojuegos, impartido en la Escuela Superior de Informática de Ciudad Real de la Universidad de Castilla-La Mancha. Puedes obtener más información sobre el curso, así como los resultados de los trabajos creados por los alumnos, en la web del mismo: http://www.cedv.es. La versión electrónica de este libro puede descargarse desde la web anterior. El libro «físico» puede adquirirse desde la página web de la editorial online Edlibrix en http://www.shoplibrix.com."