Hace mucho tiempo que no publico una entrada así que aquí les traigo lo que es un juego sencillo en flash, desarrollado en Macromedia Flash Professional 8, en donde se utiliza ActionScript 2 que en mi opinión es mas fácil de usar que ActionScript 3 pero este ultimo se transforma en una herramientas mas eficiente si es que se sabe usar, yo no lo se usar muy bien por eso opte por el 2.
El juego consiste en una barra que se mueve mediante las flechas de dirección que debe ir capturando las esferas que caen aleatoriamente, cada vez que el marcador("score") llegue a un múltiplo de 150 la velocidad de las esferas aumentara en 1, esa es la explicación funcional del juego y ahora les presento mi primer juego en flash.
Como vieron no es un juego muy elaborado, las acciones que ocupan son todas en su mayoria simples, siendo la mas elaborada el random que logra que la esfera aparezca en un lugar aleatorio dentro del rango del eje x que seria entre 0 y 533. Para consultas sobre los actionScript realizados comenten o mandenme algun mensaje en cualquier caso les adjunto el .fla para que puedan ver el proyecto de juego.
Juego en flash
sábado, 11 de mayo de 2013
sábado, 19 de enero de 2013
Modelado 3D en Opengl
En esta ocasión veremos modelado 3D en Opengl, veremos la creación de un auto rojo con 2 pájaros y 6 arboles.
El auto cuenta con variados polígonos ubicados de tal manera que le da una cierta apariencia creíble de que es un auto, las ruedas sin embargo son debido a la manipulación de una función de la biblioteca glut que nos permite crear un objeto parecido a una dona, dicha función es glutSolidTorus, de la misma forma están creadas las luces del auto pero esta vez con la función glutSolidSphere. Los arboles son conos y múltiples esferas (glutSolidCone y glutSolidSphere). El pájaro esta hecho con esferas y polígonos.
Lo que es el suelo solamente es un cuadrado gigante por lo tanto tiene un limite, a este cuadrado se le han añadido 2 texturas, la de la carretera y la del pasto, estas texturas son imágenes en formato .RAW ya que en la única forma en la que pude implementarlas era en este formato, se que hay mas formas pero las desconozco.
Cuenta con movimiento de cámara usando la tecla "A" la cámara girara hacia la izquierda y con la tecla "D" girara hacia la derecha, en cambio con las teclas "W" la cámara se acerca y con la "S" se aleja.
El auto también puede moverse "Z" para avanzar y "X" para retroceder.
También podemos observar la presenciar de efectos de luz que se ven en los arboles y en los focos del auto, ademas de un pequeño detalle que es el sonido que utilice aquí que supuesta mente es el sonido del viento, este sonido se encuentra en un loop así que se repetirá hasta que la aplicacion se cierre.
Y eso es todo lo que tiene esta simple aplicación que muestra modelado en 3D, el código es mucho así que no lo dejare como en la publicación anterior sin embargo lo dejare para que descarguen todo el proyecto. Cualquier duda déjenla en los comentarios o envíenme un mensaje.
jueves, 17 de enero de 2013
Modelado 2D en Opengl
Modelado de objetos con opengl comenzando con modelado 2D, se creó un auto que cuenta de interacción con el teclado, al llegar a alguno de los limites de la pantalla el auto vuelve a aparecer en el extremo contrario.
A continuación dejare el código en lenguaje C, y el ejecutable de la aplicación para que puedan ver por si mismo el trabajo realizado
#include <stdio.h>
#include <stdlib.h>
#include <GL/glut.h>
#include <GL/gl.h>
#include <math.h>
float posx = 0.0;
float posx1 = 0.0;
int angulo = 1;
void IniciarGLUT() {
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize(1000,600);
glutInitWindowPosition(100,100);
glutCreateWindow("TALLER 1");
glClearColor(0., 1., 1., 1.);
glColor3f(0., 0., 0.);
glEnable(GL_DEPTH_TEST);
}
void circulo(float x, float y, int radio){
glBegin(GL_TRIANGLE_FAN);
glColor3f(0., 0., 0.);
glVertex3f(x, y, 1);
for (angulo=0; angulo<360; angulo+=5){
glVertex3f(x+sin(angulo)*radio, y+cos(angulo)*radio, 1);
}
glEnd();
}
void Auto(int x, int y){
glBegin(GL_POLYGON);
glColor3f(0., 0., 0.);
glVertex3f(4.+posx, -3., 1.);
glVertex3f(0.+posx, -3., 1.);
glVertex3f(-5.+posx, -5., 1.);
glVertex3f(-5.+posx, -6., 1.);
glVertex3f(4.+posx, -6., 1.);
glEnd();
glBegin(GL_QUADS);
glColor3f(0., 0., 0.);
glVertex3f(9.+posx, -3., 1.);
glVertex3f(5.+posx, -3., 1.);
glVertex3f(5.+posx, -6., 1.);
glVertex3f(13.+posx, -6., 1.);
glEnd();
glBegin(GL_LINE_LOOP);
glColor3f(0., 0., 0.);
glVertex3f(4.5+posx, -2.5, 1.);
glVertex3f(4.5+posx, -10, 1.);
glVertex3f(-5.5+posx, -10, 1.);
glVertex3f(-6.+posx, -5., 1);
glVertex3f(0.+posx, -2.5, 1);
glEnd();
glBegin(GL_LINE_LOOP);
glColor3f(0., 0., 0.);
glVertex3f(9.5+posx, -2.5, 1.);
glVertex3f(14.5+posx, -6, 1.);
glVertex3f(14.5+posx, -8, 1.);
glVertex3f(12+posx, -7.6, 1);
glVertex3f(10+posx, -8., 1);
glVertex3f(9+posx, -9., 1);
glVertex3f(8+posx, -10, 1);
glVertex3f(4.5+posx, -10, 1);
glVertex3f(4.5+posx, -2.5, 1);
glEnd();
glBegin(GL_LINE_LOOP);
glColor3f(0., 0., 0.);
glVertex3f(10.+posx, -2., 0.5);
glVertex3f(0.+posx, -2., 0.5);
glVertex3f(-6.8+posx, -4.7, 0.5);
glVertex3f(-15.+posx, -6., 0.5);
glVertex3f(-15.+posx, -11., 0.5);
glVertex3f(19.+posx, -11., 0.5);
glVertex3f(19.+posx, -6., 0.5);
glEnd();
glBegin(GL_POLYGON);
glColor3f(1., 0., 0.);
glVertex3f(10.+posx, -2., 0.5);
glVertex3f(0.+posx, -2., 0.5);
glVertex3f(-10.+posx, -6., 0.5);
glVertex3f(-15.+posx, -6., 0.5);
glVertex3f(-15.+posx, -11., 0.5);
glVertex3f(-10.+posx, -11., 0.5);
glVertex3f(10.+posx, -11., 0.5);
glVertex3f(19.+posx, -11., 0.5);
glVertex3f(19.+posx, -6., 0.5);
glVertex3f(16.+posx, -6., 0.5);
glEnd();
circulo(-9+posx, -11, 3.8);
circulo(12+posx, -11, 3.8);
}
void arbol(float x, float y, float z){
glBegin(GL_QUADS);
glColor3ub(150., 0., 0);
glVertex3f(-18+posx1+x, -5+y, 0.1);
glVertex3f(-19+posx1+x, -5+y, 0.1);
glVertex3f(-19+posx1+x, -9+y, 0.1);
glVertex3f(-18+posx1+x, -9+y, 0.1);
glEnd();
glBegin(GL_QUADS);
glColor3ub(0., 100, 0);
glVertex3f(-17+posx1+x, -4+y, 0.1);
glVertex3f(-20+posx1+x, -4+y, 0.1);
glVertex3f(-20+posx1+x, -5+y, 0.1);
glVertex3f(-17+posx1+x, -5+y, 0.1);
glEnd();
glBegin(GL_QUADS);
glColor3ub(0., 100, 0);
glVertex3f(-16+posx1+x, -3+y, 0.1);
glVertex3f(-21+posx1+x, -3+y, 0.1);
glVertex3f(-21+posx1+x, -4+y, 0.1);
glVertex3f(-16+posx1+x, -4+y, 0.1);
glEnd();
glBegin(GL_QUADS);
glColor3ub(0., 100, 0);
glVertex3f(-15+posx1+x, -2+y, 0.1);
glVertex3f(-22+posx1+x, -2+y, 0.1);
glVertex3f(-22+posx1+x, -3+y, 0.1);
glVertex3f(-15+posx1+x, -3+y, 0.1);
glEnd();
glBegin(GL_QUADS);
glColor3ub(0., 100, 0);
glVertex3f(-16+posx1+x, -1+y, 0.1);
glVertex3f(-21+posx1+x, -1+y, 0.1);
glVertex3f(-21+posx1+x, -2+y, 0.1);
glVertex3f(-16+posx1+x, -2+y, 0.1);
glEnd();
glBegin(GL_QUADS);
glColor3ub(0., 100, 0);
glVertex3f(-17+posx1+x, 0+y, 0.1);
glVertex3f(-20+posx1+x, 0+y, 0.1);
glVertex3f(-20+posx1+x, -1+y, 0.1);
glVertex3f(-17+posx1+x, -1+y, 0.1);
glEnd();
}
void fondo(int x, int y){
arbol(-45, 0, 0);
arbol(-30, 0, 0);
arbol(-15, 0, 0);
arbol(0, 0 , 0);
arbol(15, 0, 0);
arbol(30, 0, 0);
arbol(45, 0, 0);
arbol(60, 0, 0);
arbol(75, 0, 0);
glBegin(GL_QUADS);
glColor3f(0., 1., 0.);
glVertex3f(35, -7, 0.);
glVertex3f(-40, -7, 0.);
glVertex3f(-40, -25, 0.);
glVertex3f(35, -25, 0.);
glEnd();
}
void Display(void) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
Auto(10+posx, 0);
fondo(0, 0);
glFlush();
glutSwapBuffers();
glutPostRedisplay();
}
void ControlFlechas(int key, int x, int y){
switch (key)
{
case GLUT_KEY_LEFT:
posx=posx-0.2;
posx1=posx1+0.3;
if(posx<=-40) posx=35;
if(posx1>=45) posx1=-40;
break;
case GLUT_KEY_RIGHT:
posx=posx+0.2;
posx1=posx1-0.3;
if(posx>=35) posx=-40;
if(posx1<=-50) posx1=45;
break;
}
glutPostRedisplay();
}
void Reshape(int w, int h) {
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45., (GLfloat) w / h, 1., 50.);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0, -6, 30, 0, 0, -100, 0, 1, 0);
}
int main(int argc, char *argv[]){
glutInit(&argc, argv);
IniciarGLUT();
glutReshapeFunc(Reshape);
glutDisplayFunc(Display);
glutSpecialFunc(ControlFlechas);
glutMainLoop();
return 0;
}
Auto 2D
Y eso es todo, cualquier duda mandenme un mensaje o comenten, esto esta hecho en Dev-C++ y recuerden que no funcionara a menos que descargen e instalen las librerias de opengl y glut
Y eso es todo, cualquier duda mandenme un mensaje o comenten, esto esta hecho en Dev-C++ y recuerden que no funcionara a menos que descargen e instalen las librerias de opengl y glut
Suscribirse a:
Comentarios (Atom)


