Funny Farmer, juego de celular Sendo para PC

16 comentarios

¡Para todos los que estaban buscando el juego de Funny Farmer de Sendo para celular! Por fín lo encontré y lo pongo a su disposición.

Después de mucho tiempo de no agregar nada nuevo al blog me doy un tiempecito para subir este juego,  venía originalmente con los celulares Sendo, de hace ya algunos años, precisamente yo tenía uno de estos modelos y este juego me encantaba, lo jugué por 3 días consecutivos al tercer día tuve que hacer un reset al celular (no recuerdo por que razón) y desde entonces el juego ya no inició. Hace 6 meses despues de buscar y buscar (por más de 3 días) por toda la internet el .jar, encontré un foro árabe, de una forma u otra conseguí registrarme y baje el archivo… Per al intentarlo ejecutar desde mi (entonces) celular no corría, intenté emularlo desde la PC con el Wireless Toolkit y tampoco, decía que necesitaba una clase de una librería de Nokia.  Ahora me dí a la tarea de hacer que funcionara, primero descompile los .class para ver que hacía la clase que necesitaba y si podía sustituirla, y no. Necesitaba a fuerza la clase com.nokia.mid.ui.FullCanvas para obtener el perfil de la pantalla del dispositivo, y a su vez, dicha clase necesitaba otras 3 y esas tres a su vez a otras 5 y asi sucesivamente, por lo que decidí que no iba a ser factible buscar cada clase por separado. Me bajé el SDK de Nokia y me robe la librería ya compilada en un .Jar el cual descomprimí y agregué los archivos .class descomprimidos al .Jar original, ya no marcó error de la librería pero aún el juego se cerraba sin aviso y sin mostrar ni la pantalla de inicio. Viendo una clase me di cuenta que tenia un fragmento de código que obtenía el nombre de la plataforma del celular y si era diferente de “Sendo X”, el programa se cerraba, borre esa condición y recompile. También modifiqué el código para que el juego esté en español, y arreglé unos errores de unos metodos que no retornaban valores correctos (supongo que estos “errores” los generó el descompilador). Finalmente empaqueté un emulador y el archivo Jar dentro de un autoextraible, por lo que al ejecutar el .EXE el juego automaticamente se abrirá dentro del emulador y pueden usarlo cada vez que quieran abrir el juego, inclusive si guardan desde dentro del juego, al ejecutar de nuevo el exe seguirá desde donde se quedaron.

Controles:

  • Utiliza las flechas para mover al Farmer
  • Enter para aceptar
  • Usa F1 para acceder a las opciones que se  muestran en la parte inferior izquierda, o dar click sobre el boton que está en esa misma parte
  • Usa F12 para acceder a las opciones que se  muestran en la parte inferior derecha, o dar click sobre el boton que está en esa misma parte
  • Puedes utilizar también los botones de la barra lateral derecha que simulan el teclado del celular

Sin más, les dejo el EXE (ocupa que tengas Java instalado) :

Funny Farmer para pc


Y les pongo también los archivos Jar y Jad modificados, para ser usados en un celular (la resolución del juego es 128×160 y con una configuración CLDC-1.1 y perfil MIDP-2.0):

Funny Farmer para celular

Diviertanse!


Juego en Blender: Cubilete 3D

2 comentarios

Hace dos semanas acabé el juego de cubilete 3D en Blender 2.5, logic bricks + Python, debo decir que soy un principiante en python, y aun que llevo más de 4 años usando blender, nunca había utilizado el GameEngine, hasta ahora, el juego realmente quedó pesado, se necesita una computadora decente para poder correrlo aunque en sí el juego ni tiene buenas gráficas, ni muchos detalles… pero si tiene como 30 scripts ejecutándose 1000 veces por segundo, o algo asi jejeje, no agregué detalles al juego por el tiempo, ya que este era un programa que debía entregar en una fecha dada, y no alcancé a texturizar el cubilete, ni el enviroment ni nada realmente, solo una textura de “Scratched Wood”, les cuento que el problema principal al hacer este juego fue el tener que preocuparme que ocurría en cada milésima de segundo en cada uno de los scripts, y que debía hacer el script cada vez que se ejecutara (ya dije que corrían como 100 veces por segundo?), además al final de 3 semanas aproximadamente de no decidirme como hacer el juego, entendí vagamente cómo funcionaban las bounding boxes de los objetos, muchas veces no servían y los dados se salían del cubilete, habiendo comentado esto, comento que el juego tiene ese “bug” que aun no sé cómo solucionar: si se ejecuta en una computadora que corre el juego a una velocidad de < de 45 fps hay muchiiiisimas probabilidades que los dados se salgan, que no detecte las jugadas correctas, en fin, que haga un desm@dre, supongo que tiene que ver algo con la sincronización entre los scripts y el delay que se genera desde el CPU al tratar de renderizar en tiempo real el juego… bueno, sin más preámbulos, les dejo el juego, y el archivo blend empacado, además unas cuantas screenshots:

DESCARGAR ARCHIVO FUENTE .BLEND

DESCARGAR CUBILETE 3D (.ZIP)

Le hace falta muuuuuucha optimización al GameEngine de blender, por cierto, no lo exporté en Fullscreen por un bug de blender que desalinea la pantalla estando en pantalla completa, y tiene otro bug, de blender también, al cerrar el juego SIEMPRE genera un error… not my fault ;-)

Simulación de SMS en Ensamblador 8086

3 comentarios

El semestre pasado cuando lleve la materia de Ensamblador, como programa final nos dejaron hacer un programa que simulara la escritura de un celular, si, como cuando escribes un mensaje y por ejemplo si presionas la tecla 2 te pone la ‘a’, luego si vuelves a presionar la tecla 2, te pone la ‘b’, si presionas otra tecla, te deja la ‘b’ y puedes seguir escribiendo otra letra, también, si estas en la letra ‘b’ y no presionas ninguna tecla por aproximadamente (no recuerdo cuanto le asigne) 3 segundos, te deja la letra en la que está actualmente, aquí se los dejo por si a alguien le sirve, está compilado con el MASM para 8086, el más sencillito antiguo. Aunque en realidad está un poco más complicado por la limitante de los registros.

Por cierto el código fuente contiene un poco mas de 1800 líneas, no está nada optimizado, pues era un programa para 4 horas :S

DESCARGAR

AntiAliasing – Suavizado de primitivas de dibujo en Java

Deja un comentario

AntiAliasing si se busca en wikipedia se encuentra esto:

En el área del procesamiento digital de señales en general, se le llama antialiasing a los procesos que permiten minimizar el aliasing cuando se desea representar una señal de alta resolución en un sustrato de más baja resolución.

En la mayoría de los casos, el antialiasing consiste en la eliminación de la información de frecuencia demasiado elevada para poder ser representada. Cuando tal información es dejada en la señal, se pueden producir artefactos impredecibles.

En el contexto del procesamiento digital de señales, un procedimiento de antialiasing podría ser, por ejemplo, el filtrado de las frecuencias que exceden el criterio de Nyquist, limitando así el ancho de banda en la señal. Sin embargo, el término antialiasing aparece con mayor frecuencia en el contexto de los gráficos por computadora.

Está clarisimo ¿verdad?… en pocas palabras al implementarle Antialiasing a nuestras primitivas de dibujo en Java ya no se verán como salidas de MSPaint si no, un poco más profesionales.

Un ejemplo real con applets:

Applet con el Antialiasing activado

Applet con el Antialiasing activado

Applet con el Antialiasing desactivado

Applet con el Antialiasing desactivado

Esto se hace agregando las siguientes dos lineas de código justo antes de que se quiera dibujar algo dentro del método paint(Graphics g)


Graphics2D g2 = (Graphics2D)g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON );

Así de simple es esto… :D

IntegraMe v1.02

Deja un comentario

En la materia de Matemáticas II tuve que realizar un juego, donde se supone que el estudiante aprendería a integrar, o al menos, practicar los conceptos básicos de las integrales, así que, en vez de hacerlo físicamente, quise desempolvar el Visual Basic, y practicar un poco lo que sé de programación, así que, surgió este juego, para ser honesto, subestimé el algoritmo de un juego de Memoria, pensé que iba a estar más sencillo, y aunque en realidad no son más de 200 líneas de código, me costó algo de trabajo…

Screenshot:

DESCARGAR

Soho Jones (The Game)

2 comentarios

Después de casi 2 años de haber sido creado, y lamentablemente haber perdido todo el código fuente, ( como el de otros programas que me llevaron algo, o mucho de tiempo ) hago el release de este juego Tamagotchi-like llamado Soho Jones, al inicio del juego vienen las instrucciones, haber si alguien lo termina, porque como yo lo hice, no me atrae el jugarlo, jejeje, además de que después de algún tiempo comienza a aburrir, pero bueno, es que nunca he sido fanático de los tamagotchis, este juego más bien fue creado para poner en práctica ciertos técnicas que aprendí y/o desarrollé, como el manejo de archivos, el drag and drop, funciones de los controles, y por sobre todo, un sistema de encriptación que hice para el juego, la encriptación está en el 3er mini juego, donde tienes que escribir las palabras que van apareciendo, todas ellas son randomizadas y leídas desde un plano, llamado palabras.txt dentro de la carpeta de instalación del juego, ( de hecho una versión más actualizada del juego iba a introducir la posibilidad de que el usuario tecleara sus propias palabras, y de hecho la interfaz se creó pero solamente para cuando se estuvo ingresando las palabras por default, aunque nunca se publicó con esta mejora)

DESCARGAR

Known Issues (problemas conocidos):

-El día tiene 25 horas ;-)

-En algunas computadoras no sirve el instalador, no me pregunten porque, yo simplemente desarrollé el juego, el instalador me lo generó un “installer maker”, me imagino que esas computadoras necesitan un control que el instalador requiere o algo así, me han informado de este error dos personas, pero no he visto el error en sí.

Screenshots:

screenshot1 - Soho Jonesscreenshot2 - Soho Jones - Gambling

Las personas que consigan las 6 insignias las publicaré aquí. (Si es que alguien lo descarga y lo intenta jugar)

Edit: Link arreglado, archivo subido a hosting propio, ya funciona! lo instale en windows 7 y se instala a la perfección! ahora si, lleguenle!

Tutorial de introducción de Java (compilación y ejecución)

8 comentarios

Input / Output (Entrada/Salida) en Java: El método más fácil de captura para aplicaciones de consola

Hay dos tipos de programas en Java; los Applet y las Aplicaciones.

Para compilar una aplicación debe hacerse desde la consola, o desde el BlueJ (si no lo tienes consíguelo desde http://www.bluej.org) que es en el que estamos trabajando, pero no se corre como un Applet; La diferencia entre estos dos es que el Applet es una aplicación grafica, muy parecida a las ventanas en Windows que trabaja con la AWT de java y las aplicaciones que son mas parecidas a los programas en C++, por ahora se vera como crear una aplicación:

Para compilarlo desde la consola:

>Ve a la carpeta (desde la consola, si no sabes que es, ve al al glosario al final del articulo, ahi se explica que es y como acceder) donde tienes guardado el archivo .java (que con anterioridad escribiste en un editor de texto y lo guardaste con esta extensión) y escribe:

javac nombreDeLaAplicacion.java

O escribe el código en una nueva clase en BlueJ y clickea sobre el botón que dice “Compile” a extremo superior izquierdo de la ventana de código.

El código que debe tener esta aplicación que haremos es el siguiente (Donde se escribe una cadena y la imprime después):

import java.io.*; // Se importa la librería para las funciones de I/O

 

public class cadena { //declaración de la clase

public static void main( String args[] ) throws IOException { // IOException debe ser usado para poder imprimir/capturar datos

 

BufferedReader nombreDelBuffer = new BufferedReader(new InputStreamReader(System.in)); // Se declara un BufferedReader seguido del nombre del buffer, esto indica que se va a tomar un valor

 

String cadenaACapturar = nombreDelBuffer.readLine(); // Se guarda lo tomado con el método readLine() relacionado con el buffer que en este caso se llama nombreDelBuffer

 

System.out.println(“La cadena que escribiste es: \n”+cadenaACapturar); // Imprime la cadena y la variable cadenaACapturar que es donde guardamos lo capturado desde el teclado

 

}//Fin del método main

}// Fin de la clase

* NOTA: si la clase va a ser pública y la vas a compilar desde la consola (MS DOS) tienes que guardar el archivo con el mismo nombre que pusiste después de
public class si no declaras que es public “puedes” NO guardarlo con el mismo nombre. Solamente que el .class que se generará, si el código esta correcto, de la forma que indicaste después de public class

Para ejecutar una aplicación ya compilada:

>Ingresar (desde la consola) a la carpeta donde se tiene archivado el .class

>Una vez dentro del directorio escribe:

java nombreDeLaAplicacion (sin extension)

>Una vez hecho esto se debería de ejecutar el programa.

 

 

ERRORES MÁS COMUNES:


->Exception in thread
main” java.lang.NoClassDefFoundError: “nombreDeLaAplicacion”

Este error puede ser causado por dos cosas:

1.- Declaraste el método principal main de una forma incorrecta.

2.- La ruta de la variable de entorno no esta bien definida.

Para solución del primer punto se debe revisar que la sintaxis del método es correcta. Habiendo hecho esto y sabiendo que esta correcta, se elimina esta posibilidad y solo queda la segunda.

Para solucionar esto en puedes cambiar la variable de entorno. O, en su defecto algo más sencillo, en vez de escribir lo habitual para ejecutar la aplicación(ya antes explicado):

Escribe en la consola desde el directorio que contiene el archivo .class:

java –classpath . nombreDeLaAplicacion (sin extensión)

Esto debería solucionara tu problema.

->“java” no se reconoce como un comando interno o externo, programa o archivo por lotes ejecutable.

Si recibes este error es por que no tienes definida la variable de entorno PATH, si es así este error te ha de haber aparecido al momento de compilarlo, a menos claro que no lo hayas compilado desde la consola. Para arreglar esto se escribe

PATH = %PATH%;”Ruta_donde_tienes_instalado_el_JDK\bin”

Glosario:

*Consola – (Ventana de comandos) MS DOS en el caso de Windows para acceder a ella en:

Windows XP: inicio > ejecutar > cmd (y pulsar Enter)

Windows ME: inicio > ejecutar> command (y pulsar Enter)

*Directorio – Carpeta

*Browser – Ventana donde se puede acceder a sitios Web. Dentro de este término entran lo que es el InternetExplorer y Mozilla Firefox entre otros.

*Buffer – Termino que se utiliza para decir que es algo que guarda temporalmente datos (llámese buffer a cualquier tipo de carga, aquí en una variable u otro buen ejemplo seria el de cuando se quiere ver un video online desde el Browser y se esta cargando el video pero de mientras podemos empezar a verlo, esto podría llamarse carga; pero en si lo que esta haciendo es que esta cargando los datos de el video en un buffer temporal el cual te mostrara el video.)

*Ruta – Es la dirección de una carpeta / archivo dentro de un dispositivo de almacenamiento.

*OS (SO)Operating System (Sistema operativo), [Windows, Linux, etc].

*Variable de entorno – Se llaman de esta manera a las variables que vienen definidas en el OS, las cuales son y sirven para el funcionamiento de este sistema operativo, estas si deseas puedes modificarlas, lo cual no es muy recomendable si no sabes lo que haces, pues al cambiar alguna variable se podría modificar todo el funcionamiento del sistema; Las variables de entorno en Windows XP se accedan desde: panel de control > sistema > opciones avanzadas > variables de entorno

Hecho por: Daniel Nieto

(Este tutorial fue hecho para mis compañeros del cbtis, pero igual puede servir. Saludos!)

Mi solución al examen de Solares

1 comentario

Existen varias formas de resolver el problema que solares nos sugirió para el examen, esta es la mía, está hecha en c++

#include “stdio.h”
#include “conio.h”

int bis(int x);

int b,f;

main(){

printf(“Ingresa la fecha de nacimiento\n”);

scanf(“%d”,&f);

printf(“\nA los 15 años viviste %d días”, (365*15)+ bis(15));

printf(“\nA los 18 años viviste %d días”, (365*18)+ bis(18));

printf(“\nA los 21 años viviste %d días”, (365*21)+ bis(21));

getch();

}

int bis(int x){

int n1,n2;

n1=f;

n2=n1+x;

b=0;

for(n1;n1<=n2;n1++){

if(n1%4==0){

b++;

}

}

return(b);

}

Necesito aclarar que el profesor se equivocó, ES NECESARIO PEDIR LA FECHA DE NACIMIENTO, a continuación voy a comprobarlo:

0001 0001 0001 0001 0001 0001 0001 0001 0001 0001 0001 0001

Donde los 1′s son los años bisiestos, entonces, tomando el segmento naranja notamos que hay 4 años bisiestos (para 15 años), lo que agregará 4 días a la cuenta final, mientras que el segmento azul, indica que solamente hay 3 años bisiestos, o sea, 3 días más, lo cual, matemáticamente no es igual(4!=3), además pienso que el método que utilizó el profe, el cual no recuerdo, es un poco, inexacto… puesto que sale algo así como xxxx.25 días, como vivimos ese .25 día? El método que ahora propongo se vale del hecho de que al momento de cumplir x cantidad de años has vivido 365(años completos)*x(edad actual) y solamente se le suma el numero de días que generaron los años bisiestos. En el cálculo no debería resultar un numero fraccionario pues por ejemplo mi cumpleaños, nací el 17/06/1989 y al 17/06/2004 son exactamente (365*15) + dias_extras, pero bueno, es mi teoría, si alguien tiene algo de tiempo libre, compile este programa, y tenga a la mano un calendario, sume todos los días que han transcurrido hasta el número de años pedido, y compárelo con el resultado que ha dado el programa…después infórmenos el resultado para confirmar ;-D

Seguir

Get every new post delivered to your Inbox.