Archive for the ‘Academico’ Category

Como dibujar un Sprite en Java

De hace tiempo que no escribo en mi blog, pero el Vistor me insistio amablemente para que publicará este tutorial. Bueno también es mi culpa porque yo le dije que iba subir tutorial, bueno aquí vamos 😛

Para este tutorial debes haber usado antes la clase Graphics en algún proyecto.

Usaremos las clases ImageIO y BufferedImage las que nos permitirá poder dibujar las imagenes en nuestra ventana.

Primer paso incluir las clases que necesitamos para nuestro proyecto.

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;

Segundo paso cargar nuestra imagen a la memoria osea en una vil variable

 //constructor
 private BufferedImage vil_variable;
 public  Panel(){
 vil_variable = ImageIO.read(new File("foto.png"));
 }

En este caso cargamos una imagen de nuestro computador a nuestra vil variable, pero podemos descargar esa imagen directamente desde internet o desde nuestro propio jar como por ejemplo.

 vil_variable = ImageIO.read(new URL("http://dominioX.com/foto.png"));
 
 vil_variable = ImageIO.read(ClassLoader.getSystemResourceAsStream("foto.png"));
 

Bueno ahora que tenemos la imagen cargada en una vil variable, podemos pintarla sin nigún problema

public paint(Graphics g){
int x = 10, y = 20;
g.drawImage(vil_variable,x,y,null);
}

Bueno, por fin hemos pintado la imagen en las posiciones x,y. Si deseas puedes cambiar esos valores y posicionarlo en cualquier lugar que quieras. Esto es bastante simple, pero cuando tenga más tiempo les mostraré como hacer sprites animados.

Nota: He ignorado todos las excepciones de Java para simplificar el codigo

Saludos!

Mega-Sort y Chari-Sort

Hoy en día, mas que escribir algo un aporte a internet(si es que lo es) sera un aporte para mi, por que realizare un resumen para un certamén para mañana sobre los algortimos de ordenamiento HeapSort, QuickSort.

HeapSort

Este algoritmo se basa en usar la estructrura llamada “heap” que maneja la información durante la ejecución del algoritmo, lo que permite crear una cola de prioridades util para este ordenamiento. El heap es un arbol binario completo  almacenado en un arreglo dado de la siguiente manera.

dado un nodo i (posición dentro del arreglo)

Padre(i)
   return|_ i/2 _|
Hijo-Izquierdo(i)
   return 2i
Hijo-Derecho(i)
   return 2i+1

Notar que la division es entera y se redondea hacia arriba.

Además se debe satisfacer la propiedad A[Padre(i)] >= A[i], donde A es arreglo.

Consideremos desde literatura los algoritmos HEAPIPY(A,i) que mantiene la propiedad de un Heap y tiene un costo de O(log(n))O(h) y el BUILD-HEAP(A) que construye un arbol Heap y tiene un costo de O(n)

HEAPSORT(A)

BUILD-HEAP(A)
for i ← largo[A] downto 2
     do exchange A[1] ↔ A[i]
     heap-size[A]  ← heap-size[A]-1
     HEAPIPY(A,1)

Este algoritmo de ordenamiento tiene un costo de O(nlog(n))

Quicksort

Este algoritmo, como el merge sort, se basa en el paradigma dividir y conquistar

QUICKSORT(A,p,r)
if p < r
  then q ← PARTICION(A,p,r)
         QuickSort(A,p,q)
         QuickSort(A,q+1,r)
PARTITION(A,p,r)
x←A[p]
i←p-1
j←r+1
while TRUE
        do repeat j ← j-1
            until A[j] ≤ x
            repeat i ← i+1
            until A[i] ≥ x
        if i < j
           then exchange A[i] ↔ A[j]
        else
           return j

Este algoritmo en el peor de los casos O(n²) y en mejor de los casos O(nlogn)

Un breve resumen.

Creando un “escenario” usando jT2

Updated:Mirar mas abajo.
En el siguiente video se mostrara como crear un escenario usando jT2.


En el video me equivoque en crear el codigo, el codigo correcto seria el de a continuación:

package primera;

import org.jT2.GameScreen;
import org.jT2.TiledImage;
public class Juego extends GameScreen{
    

    public void run(){
       TiledImage ti = TiledImage.getTiledImage(12, 12, "/primera/bgsimple.png", 32, 32);

        ti.setMap("/primera/mapa.txt");

        appendImagen(ti);

        //Game Loop
        while(running){

            update();
        }
    }
    
}

EDIT: Se recomienda crear el mapa usando el editor de Netbeans, notepad++ o gedit sin embargo si usa Notepad (de windows) este ultimo suele agregarle más caracteres que hacen que fallen la aplicación.
Si ya lo hiso, abra el archivo con Netbeans borre todo lo extra que puede haber despues del salto de linea y elimine todos los saltos de linea extras.

Programando un “Hola Mundo” con jT2

Update:Mirar mas abajo.
Hoy les he preparado un video como crear un “Hola Mundo” usando jT2. Le pido mil disculpas ya que no se escucha muy bien.

Sinceremente he mejorado algo en el aspecto de crear ScreenCast, ya que el anterior no me quedo muy bueno que digamos.

Saludos

EDIT: El codigo mostrado en el tutorial funciona correctamente en las versiones anteriores del motor, para que funcione correctamente en la nueva version.
El codigo debe quedarte asi, solo debes agregas update();

package org.jT2.examples.Screen;

import org.jT2.GameScreen;

/**
 * Ejemplo de como crear una animacion
  <br>Dificultad: <strong>[Starter]</strong>
 * @author edgardo
 */
public class HelloWorld_0 extends GameScreen {

   public void run(){
          while (running) {
                drawString("HelloWorld!",10,10);
                update();
          }
   }

}

Agregando jT2 a nuestro proyecto

He preparado un video, creo que eso lo explica todo:

En resumen:

  • Bajar el Netbeans aqui
  • Crear una nueva aplicación “Java ME“->”Mobile Aplication
  • Elegir CLDC 1.1 y MIDP 2.0
  • Finalizar
  • Propiedades del Proyecto
  • Libraries & Resources
  • Add Jar/Zip
  • Seleccionar Jar, Ok
  • Ok a la ventana de propiedades
  • Propiedades del Proyecto
  • Application Descriptor” -> “Midlets”
  • “Add” seleccionar “jT2Midlet” Ok
  • Ok a la ventana de propiedades
  • Ejecutar.

Saludos!!