Curso programación de videojuegos con SDL – Creando continuidad

Finalmente, sólo nos queda darle continuidad a nuestro juego. En función de los objetivos que nos habíamos propuesto, es que los aviones vuelvan a aparecer por la parte superior de la pantalla una vez lleguen al final. Esto es bastante simple ya que solamente tenemos que copiar y pegar la inicialización de los aviones enemigos dentro de una condición que compruebe si ha llegado ya al final de la pantalla por la parte inferior. read more

Leer más » 7 Comentarios

Curso programación de videojuegos con SDL – Colisiones

Una vez ya tenemos los enemigos moviéndose, el doble búfer implementado e incluso si queremos la pantalla completa pasemos a establecer algún objetivo en el juego. Para este ejemplo el objetivo será evitar que nuestro avión se choque con los aviones enemigos. Una vez se choquen terminaremos el juego. Aunque esto en un juego real no pasaría dado que es un ejemplo didáctico, es la opción que tomamos. Podríamos también poner un número de vidas por ejemplo, pero esto ya alargaría demasiado el ejemplo (tened en cuenta que tendríamos entonces que escribir con letras y números en nuestra pantalla de SDL, lo que no es tan fácil). Lo que si haremos será que cada vez que desaparezcan los enemigos posicionarlos de nuevo en el comienzo para que vuelvan a aparecer.

Comprobando si existe colisión

Para comprobar si existe colisión calcularemos la distancia entre el jugador y cada uno de los enemigos. Para calcular la distancia, primero hallaremos el centro de cada uno de los enemigos y del jugador para posteriormente calcular la distancia euclidea entre ambos puntos.

Ya que las dimensiones son:

  • Jugador: 59×42
  • Enemigo: 50×40

El centro de cada uno de ellos debe estar desplazado de la posición en la que están dibujados (teniendo en cuenta que SDL dibuja desde la posición superior izquierda del objeto):

  •  Jugador: (30,21)
  • Enemigo: (25,20)

Veamos cuál es la distancia límite a la que pueden estar el jugador y un enemigo (si la distancia es menor se considerará que ha habido una colisión y por lo tanto el juego se termina):

  • Distancia crítica=(30²+21²)^(1/2)+(25²+20²)^(1/2) aproximadamente 69.

Es decir el punto en el que se tocan los extremos de las superficie enemigo con la superficie jugador. Este modo de calcular la distancia no es el más exacto, pero es bastante orientativo. Si quisiéramos calcular la distancia de manera más exacta deberíamos estudiar mejor la geometría y las dimensiones reales de nuestro dibujo (despreciando la parte con transparencia en los extremos).

La función que hace esta comprobación sería la siguiente:

int existeColision(int x, int y, int numeroEnemigos, struct posicion* posicionesEnemigos) { int i; int centroJugador[2]={x+30,y+21}; struct posicion* centroEnemigos; double distancia; centroEnemigos=(struct posicion*)malloc (sizeof(struct posicion)*numeroEnemigos); for(i=0; i < numeroEnemigos; i++) { centroEnemigos[i].x=posicionesEnemigos[i].x+25; centroEnemigos[i].y=posicionesEnemigos[i].y+20; distancia=sqrt(pow((double)centroJugador[0]- centroEnemigos[i].x,2)+pow((double)centroJugador[1]-centroEnemigos[i].y,2)); if(distancia <= 69) return 1; } return 0; } read more

Leer más » 4 Comentarios

Libresfera, nueva revista libre en español

Los creadores de Libresfera, nos informan directamente que acaba de publicarse el primer número de esta revista, de libre difusión y que sigue la filosofía CreativeCommons. Os dejo la nota que nos han hecho llegar al correo:

Libresfera es una nueva revista en la que todo el mundo puede colaborar, enviar sus artículos, imágenes, entrevistas, etc. Todo pensado para tener informados a los lectores de como está el panorama cultural libre.

Una revista publicada con licencia libre, concretamente bajo Creative commons By-Sa, de la que todos podrán disfrutar, descargar gratis y compartir con sus amigos. En este primer número encontrareis artículos de tecnología, ocio, cultura, etc. Además de las entrevistas a: los creadores de “El Cosmonauta”, primera película libre en España; Moisés Cabello, escritor de varias obras Creative Commons que todo el mundo puede obtener gratis desde su web; y dos de los grupos de música libre más populares de Jamendo, Vagos Permanentes y Misery. read more

Leer más » 2 Comentarios

Desinstalar aplicación de Adobe AIR

Hace unos días me instalé la aplicación GeeMail, se trata de una aplicación de escritorio multiplataforma (corre bajo Adobe Air) para controlar nuestra cuenta de Gmail.

Ya sabéis que me encantan los productos de Google, en especial el correo. Fueron los pioneros en cambiar el concepto de mail, y siguen siendo los que más avances realizan para que un sistema con tantos años no pierda su esencia principal, comunicarse. Han pasado unos días y no he notado que GeeMail me aporte nada nuevo, salvo que corre en local y parece que mola más. read more

Leer más » 2 Comentarios

Eliminar cuadro de recuperación de ficheros en OpenOffice y LibreOffice

Creo que no soy el primero que sufre el temido diálogo de recuperación de ficheros de OpenOffice y LibreOffice. Cuando el sistema sufre un problema y cerramos indebidamente la suite ofimática, los ficheros que estemos usando pueden recuperarse en un estado posterior a la última versión guardada que tenemos del mismo.

Cuando el fichero está presente no hay problema, la recuperación se efectúa y no vuelve a aparecernos el diálogo. El problema surge cuando hemos borrado el fichero, por ejemplo porque estaba en una carpeta temporal. Si nos ocurre esto empieza a repetirse todo el rato el proceso: cada vez que arrancamos la suite, aparece el diálogo y no hay forma de eliminarlo. Para solucionarlo, hacemos lo siguiente. read more

Leer más » 2 Comentarios

Lo mejor de mi RSS del 5 al 11 de septiembre

Leer más » 1 Comentario

Ubuntu en las ofertas de trabajo

Curioso el caso que me he encontrado desde College of Charleston, la universidad pública más antigua de Virginia (USA), y es que en una oferta de trabajo del departamento de informática, dentro de las oportunidades ofrecidas premian con la instalación y administración en tu propia máquina.

Me gusta el hecho de que mencionen a Ubuntu en una oferta de trabajo, pero sinceramente desconozco el porqué de ese apremio, ¿acaso no podrían haber puesto un sistema Linux o GNU/Linux? Soy usuario de este sistema, pero entedería y apoyaría incluso a los que reclaman que Linux no es Ubuntu. read more

Leer más » 2 Comentarios

Lo mejor de mi RSS del 29 de agosto al 4 de septiembre

Leer más » 1 Comentario

Guardar un entero en cuatro char sin signo en C

En ocasiones, por motivos del protocolo utilizado en una comunicación, por la forma de acceder a la capa física o por cualquier otra razón similar, no podemos manejar directamente enteros de 4 bytes en nuestro programa, sino que debemos manejar valores de 1 sólo byte. No debemos preocuparnos, al fin y al cabo, podemos enviar un vector de 4 elementos de un tipo de dato que tenga 1 byte, por ejemplo, un carácter sin signo. read more

Leer más » 10 Comentarios

Atajos de teclado útiles en gedit

Esta entrada es una recopilación de los atajos de teclado que más uso en gedit, el editor de texto por defecto de Gnome y, en consecuencia, de Ubuntu. Personalmente prefiero Geany, pero cuando no tengo otra opción, gedit es más que aceptable.

Acción Combinación
Cambiar una pestaña a la izquierda Ctrl + Alt + Re Pág
Cambiar una pestaña a la derecha Ctrl + Alt + Av Pág
Cerrar pestaña actual Ctrl + W
Guardar todas las pestañas abierta Ctrl + Mayús. + L
Cerrar todas las pestañas. Ctrl + Mayús. + W
Saltar a la enésima pestaña Alt + n
Crear un documento nuevo Ctrl + N
Abrir un documento Ctrl + O
Guardar el documento actual Ctrl + S
Guardar el documento actual con un nombre nuevo Ctrl + Mayús. + S
Imprimir el documento actual Ctrl + P
Vista previa de impresión Ctrl + Mayús. + P
Cerrar el documento actual Ctrl + W
Salir de gedit Ctrl + Q
Deshacer la última acción Ctrl + Z
Rehacer la última acción deshecha Ctrl + Mayús. + Z
Cortar el texto o región seleccionada y ubicarlo en el portapapeles Ctrl + X
Copiar el texto o región seleccionado al portapapeles Ctrl + C
Pegar el contenido del portapapeles Ctrl + V
Seleccionar todo el texto en el archivo Ctrl + A
Eliminar la línea actual Ctrl + D
Mover la línea seleccionada una línea arriba Alt + flecha arriba
Y línea abajo Alt + flecha abajo
Buscar una cadena Ctrl + F
Seguir buscando la misma cadena hacia delante Ctrl + G
Y hacia atrás Ctrl + Mayús. + G
Buscar y reemplazar Ctrl + H
Ir a la línea Ctrl + I

Si queréis más, tenéis el listado entero en la página “Teclas rápidas” dentro de la sección de gedit en Gnome.

Leer más » 4 Comentarios