Trabajo de Inteligencia Artificial

4 diciembre 2008

Este es un trabajo en java que nos envio el profesor alfonso lobos, sobre la manipulacion de un robot.

dejo aqui el codigo fuente del trabajo…

#########################################################

/*    Main.java is free software; you can redistribute it and/or modify
*    it under the terms of the GNU General Public License as published by
*    the Free Software Foundation; either version 2 of the License, or
*    (at your option) any later version.
*
*    This program is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*    GNU General Public License for more details.
*
*    You should have received a copy of the GNU General Public License
*    along with this program; if not, write to the Free Software
*    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301$
*/
/**
*
* @author crodriguez
*
*/
class pie{
public String idPie;
public int numeroDeDedos;

pie(String pie,int dedos){
idPie=pie;
numeroDeDedos=dedos;
}
public void setNumeroDeDetos(int dedos){
numeroDeDedos=dedos;
}
public int getNumeroDeDedos(){
return numeroDeDedos;
}
public void pie(){

}

}

class pierna{
public pie CreaPie;
public int mueve=0;
public int levanta=0;
public int enoje=0;
pierna(pie CreaPie){
this.CreaPie=CreaPie;
}
public void moverPiernaAdelante(){
System.out.println(«Avanza pierna » + CreaPie.idPie);
}
public void moverPiernaAtras(){
System.out.println(«Retrocede pierna » + CreaPie.idPie);
}
public void subirPierna(){
System.out.println(«Sube pierna » + CreaPie.idPie);
}
public void encojerPiernaHaciaArriba(){
System.out.println(«Enoje pierna » + CreaPie.idPie);
}
public void bajarPierna(){
System.out.println(«Baja pierna » + CreaPie.idPie);
}
public void estirarPiernaHaciaAbajo(){
System.out.println(«Estira pierna » + CreaPie.idPie);
}
public void setCreaPie(pie CreaPie) {
this.CreaPie = CreaPie;
}
}

class mano{
public String idMano;
public int numeroDeDedos;
mano(String mano,int dedos){
idMano=mano;
numeroDeDedos=dedos;
}
public void setNumeroDeDedos(int dedos){
numeroDeDedos=dedos;
}
public int getNumeroDeDedos(){
return numeroDeDedos;
}
public void cerrarMano(){
System.out.println(«Cierra mano » + idMano);
}
public void abrirMano(){
System.out.println(«Abre mano «+ idMano);
}

}

class brazo{
public mano CreaMano;
brazo(mano CreaMano){
this.CreaMano=CreaMano;
}
public void enojerBrazo(){
System.out.println(«Brazo Encogido «+CreaMano.idMano);
}
public void estirarBrazo(){
System.out.println(«Brazo Estirado «+CreaMano.idMano);
}
public void levantarBrazo(){
System.out.println(«Brazo levantado «+CreaMano.idMano);
}
public void setCreaMano(mano CreaMano){
this.CreaMano=CreaMano;
}
}

class cabeza{
public int ideas;

cabeza(int idea){
ideas=idea;
}
public void nuevaIdea(){
ideas=ideas+1;
System.out.println(«Se acaba de aumentar las ideas actualmente tiene » + ideas);
}
public void ideaPerdida(){
System.out.println(«Se acaba de disminuir las ideas actualmente tiene » + ideas);
}
}

class tronco{
brazo brazoDerecho;
brazo brazoIzquierdo;
pierna piernaDerecha;
pierna piernaIzquierda;
cabeza cabezaRobot;
tronco(brazo brazoDerecho,brazo brazoIzquierdo, pierna piernaDerecha, pierna piernaIzquierda,cabeza cabezaRobot){
this.brazoDerecho=brazoDerecho;
this.brazoIzquierdo=brazoIzquierdo;
this.piernaDerecha=piernaDerecha;
this.piernaIzquierda=piernaIzquierda;
this.cabezaRobot=cabezaRobot;
}

}

class control{
tronco RopaToa;
control(tronco RopaToa){
this.RopaToa=RopaToa;
}
public void saludarIzquierda(){
System.out.println(«Un Saludo Brazo izquierdo:»);
RopaToa.brazoIzquierdo.estirarBrazo();
RopaToa.brazoIzquierdo.CreaMano.abrirMano();
RopaToa.brazoIzquierdo.CreaMano.cerrarMano();
RopaToa.brazoIzquierdo.enojerBrazo();
}
public void saludarDerecha(){
System.out.println(«Un Saludo Brazo derecho:»);
RopaToa.brazoDerecho.estirarBrazo();
RopaToa.brazoDerecho.CreaMano.abrirMano();
RopaToa.brazoDerecho.CreaMano.cerrarMano();
RopaToa.brazoDerecho.enojerBrazo();
}
public void caminar(){
System.out.println(«Da un paso:»);
RopaToa.piernaIzquierda.encojerPiernaHaciaArriba();
RopaToa.piernaIzquierda.subirPierna();
RopaToa.piernaIzquierda.moverPiernaAdelante();
RopaToa.piernaIzquierda.estirarPiernaHaciaAbajo();
RopaToa.piernaIzquierda.bajarPierna();
RopaToa.piernaDerecha.encojerPiernaHaciaArriba();
RopaToa.piernaDerecha.subirPierna();
RopaToa.piernaDerecha.moverPiernaAdelante();
RopaToa.piernaDerecha.estirarPiernaHaciaAbajo();
RopaToa.piernaDerecha.bajarPierna();
}
public void perderDedoDerecho(){
System.out.println(«Pierde un dedo del pie:»);
RopaToa.piernaDerecha.CreaPie.setNumeroDeDetos(RopaToa.piernaDerecha.CreaPie.getNumeroDeDedos());
}
public void cambiaPie(){
System.out.println(«Cambia un pie: «);
RopaToa.piernaDerecha.encojerPiernaHaciaArriba();
RopaToa.piernaDerecha.subirPierna();
pie nuevoPie=new pie(«nuevo pie derecho»,5);
RopaToa.piernaDerecha.setCreaPie(nuevoPie);
RopaToa.piernaDerecha.estirarPiernaHaciaAbajo();
RopaToa.piernaDerecha.bajarPierna();
}
public void ideaCambiaPie(){
System.out.println(«Crea una idea de cambiar el pie: «);
RopaToa.cabezaRobot.nuevaIdea();
}
public void eliminaIDea(){
System.out.println(«Elimina una idea: «);
RopaToa.cabezaRobot.ideaPerdida();
}
}

public class Main {

public static void main(String[] args) {
// TODO code application logic here;
mano manoDerecha=new mano(«derecho»,5);
mano manoIzquierda=new mano(«izquierdo»,5);
brazo braDer=new brazo(manoDerecha);
brazo braIz=new brazo(manoIzquierda);
pie pieDer=new pie(«derecho»,5);
pie pieIz=new pie(«izquierdo»,5);
pierna pierDer=new pierna(pieDer);
pierna pierIz=new pierna(pieIz);
cabeza cabRob=new cabeza(0);
tronco CreaRobot=new tronco(braDer,braIz,pierDer,pierIz,cabRob);
control maneja=new control(CreaRobot);
for (int i=0;i<3;i++)
maneja.saludarDerecha();
for(int i=0;i<3;i++)
maneja.saludarIzquierda();
for(int i=0;i<3;i++)
maneja.caminar();
maneja.perderDedoDerecho();
maneja.ideaCambiaPie();
maneja.cambiaPie();
maneja.eliminaIDea();
for (int i=0;i<3;i++)
maneja.saludarDerecha();
for(int i=0;i<3;i++)
maneja.saludarIzquierda();
}
}

###########################################################

Para que funcione se debe guardar como Main.java

además para compilarlo

se debe realizar:

javac Main.java
para ejecutar:

java Main

Saludos!!!


Esferas que rotan en su propio EJE

23 noviembre 2008

Acá dejo el código fuente que cree para realizar un trabajo de Computación Grafica el cual trata de 3 esferas que giran entorno a su eje, tanto el eje X el Y como el Z.

El trabajo fue realizado con la librería OpenGL se realizo en un sistema operativo Debian, en la rama testing, para hacer esto se utilizo el lenguaje C, con el IDE de trabajo (Ojo que es mas que un IDE), emacs :p

El código es:

##############################################################

#include<GL/gl.h>
#include<GL/glut.h>
GLfloat angulo=0.0f;
void Init(void)
{
glClearColor(0,0,0,0);
glEnable(GL_DEPTH_TEST);
glClearColor(0.0,0.0,0.0,0.0); //Selecciona el color de fondo
glColor3f(0.0f, 1.0f, 0.0f); //El color a dibujar
glPointSize(4.0);                 //Tamaño de los puntos

}
void display() // Mi_Ventana
{
glClear(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT); //Limpia la pantalla
/*con la siguiente esta función independizamos los objectos entre si*/
glLoadIdentity();
glBegin(GL_LINES);
/*Decimos que dibujaremos una linea apartir del punto (x1,y1) representado en (200,100)
y que termina en el punto (x2,y2) representado en (500,100) (esto es el dibujo del eje X)*/
glVertex3f(200, 100,0);
glVertex3f(500, 100,0);
glEnd();
/*Al igual que en la anterior definimos una función de Linea, donde dibujamos el eje Y*/
glBegin(GL_LINES);
glVertex3f(200,100,0);
glVertex3f(200,400,0);
glEnd();
/*Como definimos los anteriores, ahora definimos el eje Z de la misma forma que el eje X e Y*/
glBegin(GL_LINES);
glVertex3f(200,100,0);
glVertex3f(0,0,5);
glEnd();
/*Informamos en que punto debe inicilizar la rotación del objeto en este caso la esfera*/
glTranslatef(0,100,0);
/*Iniciamos la rotación en el eje x con el angulo entregado.*/
glRotatef(angulo, 1.0f, 0.0f, 0.0f);
/* esta función se define
glRotatef(anguloQueGira,trueAnguloX, trueAnguloY, trueAnguloZ);*/
glTranslatef(400,100,0);//Asignamos el lugar de posición para la esfera.
glutWireSphere(30,8,8);// Definimos la esfera
/*la esfera se define glutWireSphere(radioDeLaEsfera,cantidadLineasX,cantidadLineasY);*/
glLoadIdentity();
//Volvemos independiente la Esfera para el eje X con respecto al resto de los objetos
/*Esfera 2 Eje Y, hacemos lo mismo para esta Esfera*/
glTranslatef(200,60,0);
glRotatef(angulo,0.0f,1.0f,0.0f);
glTranslatef(-200,200,0);
glutWireSphere(30,8,8);
glLoadIdentity();
//*Esfera 3 Eje Z, realizamos el mismo procedimiento*/
glTranslatef(0,0,100);
glRotatef(angulo,0,0,1.0f);
glTranslatef(-80,-238,100);
glutWireSphere(30,8,8);
glFlush(); //Envía toda la salida a la pantalla
glutSwapBuffers();
angulo+=0.2f; //Realizamos Avanzamos el Angulo.
}
/*Esta función se utiliza para dar animación a los objetos*/
void reshape(int ancho,int alto){
glViewport(0, 0,-300,500); //Vista de salida
glMatrixMode(GL_PROJECTION); //Matriz base para dibujar
glLoadIdentity(); //Hacemos independiente los objetos
glOrtho(-300,500, -300, 400, -200, 200); //Pasamos a la vista ortogonal
glMatrixMode(GL_MODELVIEW); //Ordenamos la matriz de salida
}
/*Llamamos a la función para redibujar el Objeto*/
void idle()
{
display();
}
/*Función Main donde iniciamos el programa*/
int main (int argc, char** argv)
{
glutInit(&argc, argv); //Inicializa toolkit
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); //Selecciona el modo pantalla
glutInitWindowSize(640,480);     //Selecciona el tamaño de la ventana
glutInitWindowPosition(100, 150); //Posiciona la ventana en la pantalla
glutCreateWindow(«Esferas»);//Abre la ventana
Init(); //Inicializamos el dibujo
glutDisplayFunc(display); //Registra la función de redibujar
glutReshapeFunc(reshape); //Inicializa los valores del dibujo.
glutIdleFunc(idle); //Redibujamos
glutMainLoop(); //Mantiene en loop para que este continuamente dibujando
return 0;
}

#####################################################

Para compilar esto deben copiar el fuente darle un nombre en mi caso puse trab.c instalar las librerías OpenGL, el Compilador GCC, y la siguiente linea de comandos.

gcc trab.c -o trabajo -lglut

Así de simple :p

Ojala le sirva a alguien

Saludos!!!!