SlideShare una empresa de Scribd logo

Greenfoot & Kinect
Eduardo H. Calvillo Gámez
Primeros Pasos

 Configurar Greenfoot para que se comunique con
   Kinect
    http://www.greenfoot.org/doc/kinect/index.html

 Ejecutar kinectserver y dejarlo corriendo mientras
   se compila y ejecuta el programa
Primeros Pasos

 Obtener el escenario básico para Kinect
    Clase KinectWorld – subclase de World
    Clases
        Joint
        KinectClient
        Point3D
        UserData
    ZIP en página web del curso

 O agregar manualmente cada clase
Clases
   Revisar API
           Doble clic sobre clase
           Cambiar a ver documentación

   KinectWorld
           Métodos para que nuestro mundo pueda interactuar con Kinect

   Joint
           Clase para identificar coyunturas del esqueleto

   KinectClient
           Realiza la interacción entre Kinect y Greenfoot

   Point3D
           Un punto en 3D

   UserData
           Clase que almanacena los datos del usuario frente a la cámara

Ejercicio 1
Utilizando la cámara
Lo Básico

 Necesitamos obtener lo que este monitoreando la
   cámara y desplegarlo en el mundo

 Revisando la API de Greenfoot básica, necesitamos
   una imagen para desplegar en el mundo.

 Clase KinectWorld
    Método getThumbnail()
Instrucciones
   Crear un escenario nuevo
        Kinect1

   Crear una subclase de Actor que se llame “Foto”
        Las clases de tipo Actor son los que aparecen e interactúan en el mundo
        Sin imagen

   Cuando la clase actúe
        Nos traemos la imagen que este captando la cámara
            getWorld().getThumbnail()
            Necesitamos hacer un casting para que el mundo que nos traigamos
             reconozca los métodos de la subclase y no de la clase padre
            ((KinectWorld)getWorld).getThumbnail()
            Y se lo asignamos a una imagen de tipo GreenfootImage
        La asignamos a la clase al Actor
Código

public void act()

{

     GreenfootImage img =
       ((KinectWorld)getWorld()).getThumbnail();

     setImage(img);

 }
Instrucciones (2)

 No interactuamos directamente con la clase
   KinectWorld

 Creamos una subclase
    Kinect1World
       Sin imagen
    Creamos un objeto de tipo Foto
    Agregamos el objeto al centro del mundo
Código (2)

public Kinect1World()

  {

      Foto f = new Foto();

      addObject(f,getWidth()/2,getHeight()/2);

  }

Ejercicio 2
Agregando más actores
Clase Etiqueta (Label)

 Todo lo que aparece en el mundo de greenfoot
   debe de ser una imagen

 El texto lo debemos convertir a una imagen

 La clase Etiqueta, que nosotros tenemos que
   implementar, hace el trabajo
    Disponible por comunidad

 Revisar API de GreenfootImage
    Constructor
Instrucciones

 Crear una subclase de Actor
    Label

 Copiar el código que se muestra a continuación
    Modificar al gusto
Código (3)

 public Label(String text)
{
    setText(text, 20);
}
public void setText(String text, int size){
    setImage(new GreenfootImage(
     text, size,
     java.awt.Color.BLACK,
     new java.awt.Color(0,0,0)));
}
Instrucciones (4)

 En el mundo Kinect1World
    Agregar un objeto de tipo Etiqueta

 Los objetos tienen precedencia en el orden que los
   ponemos en la pantalla como una Pila
    El que ponemos primero, se queda atrás.
Código (4)

Label l = new Label("Hecho por EHCG");

addObject(l, 100,100);
Instrucciones (5)

 Crear una nueva subclase de Actor
   Pingu con la imagen de Tux
   Su única acción es dar vueltas

 Quitar el objeto de tipo Foto del mundo

 Implementar el método act() en Kinect1World

 La primera línea tiene que ser
   super.act();

 para que se actualice el mundo de Kinect
Instrucciones (5.2)

 Cambiar el fondo a negro
   getBackground().setColor(java.awt.Color.BLACK);
   getBackground().fill();

 Agregar objetos de tipo Pingu en posiciones al azar
   int x // contiene un número al azar del tamaño del
     fondo;
   addObject (new Pingu(), x, 100);

 Agregar la silueta del usuario de Kinect
   getCombinedUserImage();
Código (5)

GreenfootImage userImage =
   getCombinedUserImage();

   userImage.scale(getWidth(), getHeight());

   getBackground().drawImage(userImage, 0, 0);
Instrucciones (6)

 Editar Pingu para que se mueva por el mundo

 Agregar una propiedad a Pingu, si es 1 esta vivo, si
   es 0, esta muerto y no se mueve.

 En el Mundo Kinect1World
    Agregar una propiedad privada de tipo imagen,
     donde vamos a guardar la imagen que esta
     detectando el Kinect.
    Asignar un método para obtener la imagen
Instrucciones (6.2)

 Checar si los Pingus chocan con el usuario, si
   chocan, borrarlos.

 El usuario es una imagen, entonces únicamente se
   checa si tenemos alguna intersección

 Y tenemos que checar el alfa del color sea mayor a
   0.
Código (6)

 En act()
    if (!colision(x,y)){
                getWorld().removeObject(this);
            }
Código (6.2)

Kinect1World mundo = (Kinect1World)getWorld();
  GreenfootImage imagenUsuario =
     mundo.getImagenGuardada();
if (imagenUsuario!=null){
      if (
         ix < imagenUsuario.getWidth() &&
         iy < imagenUsuario.getHeight() &&
         imagenUsuario.getColorAt(ix, iy).getAlpha() > 0 )

Más contenido relacionado

PPTX
Greenfoot & Kinect (Parte 3)
PDF
Greenfoot 8
PDF
Introducción a la POO con Greenfoot
PPT
PROYECTO JUEGO PACMAN
PPTX
ARCore Realidad aumentada para Android
PPSX
Codemotion 2014 - Introducción a Unity
PPTX
Expo kinect
PDF
Programación con Pygame IV
Greenfoot & Kinect (Parte 3)
Greenfoot 8
Introducción a la POO con Greenfoot
PROYECTO JUEGO PACMAN
ARCore Realidad aumentada para Android
Codemotion 2014 - Introducción a Unity
Expo kinect
Programación con Pygame IV

Similar a Greenfoot & Kinect (20)

PPTX
Xna game studio presentación 05
PPTX
2011 05 23 Kinect for Windows SDK
PDF
Manual y temario unity
PDF
Desarrollo de Videojuegos Android con Cocos2D
PDF
Greenfoot 8
PDF
Jf 3 8_sg_esp(2)(3)
PDF
Jf 3 8_sg_esp(2)(3)
PDF
Jf 3 8_sg_esp(2)(3)
PDF
Greenfoot 8
PDF
CAPITULO 8 DE GREENFOOT
PDF
CAPITULO 8 GREENFOOT
PDF
Capitulo 8
PDF
Capitulo 8
PDF
leccion 8
PDF
Jf 3 8_sg_esp(2)(3) 8
PDF
Greenfoot 8
PDF
Capitulo 8 greenfoot
PDF
Greenfoot 8
PPTX
Xna game studio presentación 02
Xna game studio presentación 05
2011 05 23 Kinect for Windows SDK
Manual y temario unity
Desarrollo de Videojuegos Android con Cocos2D
Greenfoot 8
Jf 3 8_sg_esp(2)(3)
Jf 3 8_sg_esp(2)(3)
Jf 3 8_sg_esp(2)(3)
Greenfoot 8
CAPITULO 8 DE GREENFOOT
CAPITULO 8 GREENFOOT
Capitulo 8
Capitulo 8
leccion 8
Jf 3 8_sg_esp(2)(3) 8
Greenfoot 8
Capitulo 8 greenfoot
Greenfoot 8
Xna game studio presentación 02
Publicidad

Más de Eduardo Calvillo Gamez (18)

PDF
PDF
Diseñando para UX
PPTX
Usabilidad: Ejecución y Reporte
PDF
Cómputo Persuasivo (Continuación
PDF
Computo Persuasivo
KEY
Tips para Escribir un Reporte de Investigación o DTI
PDF
Semana10: Intro a la Experienc
PDF
Semana 7 - Curso de Creatividad
KEY
Semana 8: Introducción a IHC
PPTX
Semana4: Creatividad Representación
PDF
Semana6 - Proyecto de Desarrollo de VG
PPTX
Creatividad Semana 3: Técnicas Creativas 2
PPTX
Creatividad Semana2
PDF
Programación Orientada a Objetos y Videojuegos
PPTX
Creatividad - Semana 1
PDF
De Juegos y Diversion 2.0
PPTX
Niveles de Diseño de Foley
Diseñando para UX
Usabilidad: Ejecución y Reporte
Cómputo Persuasivo (Continuación
Computo Persuasivo
Tips para Escribir un Reporte de Investigación o DTI
Semana10: Intro a la Experienc
Semana 7 - Curso de Creatividad
Semana 8: Introducción a IHC
Semana4: Creatividad Representación
Semana6 - Proyecto de Desarrollo de VG
Creatividad Semana 3: Técnicas Creativas 2
Creatividad Semana2
Programación Orientada a Objetos y Videojuegos
Creatividad - Semana 1
De Juegos y Diversion 2.0
Niveles de Diseño de Foley
Publicidad

Último (20)

PPTX
AGENTES PATÓGENOS Y LAS PRINCIPAL ENFERMEAD.pptx
PDF
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
PDF
Educación Artística y Desarrollo Humano - Howard Gardner Ccesa007.pdf
PDF
OK OK UNIDAD DE APRENDIZAJE 5TO Y 6TO CORRESPONDIENTE AL MES DE AGOSTO 2025.pdf
PDF
Salcedo, J. et al. - Recomendaciones para la utilización del lenguaje inclusi...
PPT
Cosacos y hombres del Este en el Heer.ppt
PDF
Escuela Sabática 6. A través del Mar Rojo.pdf
PDF
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
PDF
TRAUMA_Y_RECUPERACION consecuencias de la violencia JUDITH HERMAN
DOCX
III Ciclo _ Plan Anual 2025.docx PARA ESTUDIANTES DE PRIMARIA
PDF
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
PDF
ciencias-1.pdf libro cuarto basico niños
PDF
biología es un libro sobre casi todo el tema de biología
DOCX
V UNIDAD - PRIMER GRADO. del mes de agosto
PDF
Escuela de Negocios - Robert kiyosaki Ccesa007.pdf
PDF
benveniste-problemas-de-linguistica-general-i-cap-6 (1)_compressed.pdf
PDF
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
PDF
Lección 6 Escuela Sab. A través del mar rojo.pdf
PDF
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
DOCX
PROYECTO DE APRENDIZAJE para la semana de fiestas patrias
AGENTES PATÓGENOS Y LAS PRINCIPAL ENFERMEAD.pptx
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
Educación Artística y Desarrollo Humano - Howard Gardner Ccesa007.pdf
OK OK UNIDAD DE APRENDIZAJE 5TO Y 6TO CORRESPONDIENTE AL MES DE AGOSTO 2025.pdf
Salcedo, J. et al. - Recomendaciones para la utilización del lenguaje inclusi...
Cosacos y hombres del Este en el Heer.ppt
Escuela Sabática 6. A través del Mar Rojo.pdf
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
TRAUMA_Y_RECUPERACION consecuencias de la violencia JUDITH HERMAN
III Ciclo _ Plan Anual 2025.docx PARA ESTUDIANTES DE PRIMARIA
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
ciencias-1.pdf libro cuarto basico niños
biología es un libro sobre casi todo el tema de biología
V UNIDAD - PRIMER GRADO. del mes de agosto
Escuela de Negocios - Robert kiyosaki Ccesa007.pdf
benveniste-problemas-de-linguistica-general-i-cap-6 (1)_compressed.pdf
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
Lección 6 Escuela Sab. A través del mar rojo.pdf
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
PROYECTO DE APRENDIZAJE para la semana de fiestas patrias

Greenfoot & Kinect

  • 1.  Greenfoot & Kinect Eduardo H. Calvillo Gámez
  • 2. Primeros Pasos  Configurar Greenfoot para que se comunique con Kinect  http://www.greenfoot.org/doc/kinect/index.html  Ejecutar kinectserver y dejarlo corriendo mientras se compila y ejecuta el programa
  • 3. Primeros Pasos  Obtener el escenario básico para Kinect  Clase KinectWorld – subclase de World  Clases  Joint  KinectClient  Point3D  UserData  ZIP en página web del curso  O agregar manualmente cada clase
  • 4. Clases  Revisar API  Doble clic sobre clase  Cambiar a ver documentación  KinectWorld  Métodos para que nuestro mundo pueda interactuar con Kinect  Joint  Clase para identificar coyunturas del esqueleto  KinectClient  Realiza la interacción entre Kinect y Greenfoot  Point3D  Un punto en 3D  UserData  Clase que almanacena los datos del usuario frente a la cámara
  • 6. Lo Básico  Necesitamos obtener lo que este monitoreando la cámara y desplegarlo en el mundo  Revisando la API de Greenfoot básica, necesitamos una imagen para desplegar en el mundo.  Clase KinectWorld  Método getThumbnail()
  • 7. Instrucciones  Crear un escenario nuevo  Kinect1  Crear una subclase de Actor que se llame “Foto”  Las clases de tipo Actor son los que aparecen e interactúan en el mundo  Sin imagen  Cuando la clase actúe  Nos traemos la imagen que este captando la cámara  getWorld().getThumbnail()  Necesitamos hacer un casting para que el mundo que nos traigamos reconozca los métodos de la subclase y no de la clase padre  ((KinectWorld)getWorld).getThumbnail()  Y se lo asignamos a una imagen de tipo GreenfootImage  La asignamos a la clase al Actor
  • 8. Código public void act() { GreenfootImage img = ((KinectWorld)getWorld()).getThumbnail(); setImage(img); }
  • 9. Instrucciones (2)  No interactuamos directamente con la clase KinectWorld  Creamos una subclase  Kinect1World  Sin imagen  Creamos un objeto de tipo Foto  Agregamos el objeto al centro del mundo
  • 10. Código (2) public Kinect1World() { Foto f = new Foto(); addObject(f,getWidth()/2,getHeight()/2); }
  • 12. Clase Etiqueta (Label)  Todo lo que aparece en el mundo de greenfoot debe de ser una imagen  El texto lo debemos convertir a una imagen  La clase Etiqueta, que nosotros tenemos que implementar, hace el trabajo  Disponible por comunidad  Revisar API de GreenfootImage  Constructor
  • 13. Instrucciones  Crear una subclase de Actor  Label  Copiar el código que se muestra a continuación  Modificar al gusto
  • 14. Código (3) public Label(String text) { setText(text, 20); } public void setText(String text, int size){ setImage(new GreenfootImage( text, size, java.awt.Color.BLACK, new java.awt.Color(0,0,0))); }
  • 15. Instrucciones (4)  En el mundo Kinect1World  Agregar un objeto de tipo Etiqueta  Los objetos tienen precedencia en el orden que los ponemos en la pantalla como una Pila  El que ponemos primero, se queda atrás.
  • 16. Código (4) Label l = new Label("Hecho por EHCG"); addObject(l, 100,100);
  • 17. Instrucciones (5)  Crear una nueva subclase de Actor  Pingu con la imagen de Tux  Su única acción es dar vueltas  Quitar el objeto de tipo Foto del mundo  Implementar el método act() en Kinect1World  La primera línea tiene que ser  super.act();  para que se actualice el mundo de Kinect
  • 18. Instrucciones (5.2)  Cambiar el fondo a negro  getBackground().setColor(java.awt.Color.BLACK);  getBackground().fill();  Agregar objetos de tipo Pingu en posiciones al azar  int x // contiene un número al azar del tamaño del fondo;  addObject (new Pingu(), x, 100);  Agregar la silueta del usuario de Kinect  getCombinedUserImage();
  • 19. Código (5) GreenfootImage userImage = getCombinedUserImage(); userImage.scale(getWidth(), getHeight()); getBackground().drawImage(userImage, 0, 0);
  • 20. Instrucciones (6)  Editar Pingu para que se mueva por el mundo  Agregar una propiedad a Pingu, si es 1 esta vivo, si es 0, esta muerto y no se mueve.  En el Mundo Kinect1World  Agregar una propiedad privada de tipo imagen, donde vamos a guardar la imagen que esta detectando el Kinect.  Asignar un método para obtener la imagen
  • 21. Instrucciones (6.2)  Checar si los Pingus chocan con el usuario, si chocan, borrarlos.  El usuario es una imagen, entonces únicamente se checa si tenemos alguna intersección  Y tenemos que checar el alfa del color sea mayor a 0.
  • 22. Código (6)  En act()  if (!colision(x,y)){  getWorld().removeObject(this);  }
  • 23. Código (6.2) Kinect1World mundo = (Kinect1World)getWorld(); GreenfootImage imagenUsuario = mundo.getImagenGuardada(); if (imagenUsuario!=null){ if ( ix < imagenUsuario.getWidth() && iy < imagenUsuario.getHeight() && imagenUsuario.getColorAt(ix, iy).getAlpha() > 0 )