sábado, 26 de diciembre de 2009

Programa: Determinar número perfecto.

 

Adaptado de C++, desarrollado en lenguaje D, este programa nos permite determinar si un número introducido por el teclado es perfecto o no. Los números perfectos son aquellos en el que la suma de sus divisores es el mismo número sin incluirse a si mismo, para más detalles sobre el algoritmo/definición visite: http://es.wikipedia.org/wiki/Número_perfecto

Problema: Construir un programa que dado un número x por el usuario determine si es perfecto o no.

Bien partiendo del problema, se quiere saber si un número introducido desde el teclado es perfecto o no.

Declaración del Programa usando Lenguaje D:

Librerías a utilizar:

import std.conv;
import std.cstream;
import std.stdio;

Al igual que C o C++, un programa en D suele comenzar con el método principal main.

void main()
{

 

Declaración de las variables que vamos a utilizar.

int i, sum=0,num, op=1;
string n;

Bucle While, con OP!=0 entrara al programa mientras OP sea diferente de 0

while (op!=0)
    {

 

Pedimos la información al usuario con writef y la procesamos con din.readLine(); en una cadena .

writef("Digite un numero entero: ");
n = din.readLine();

Se realiza la conversión necesaria de la variable recibida usando toTipo_Dato().

num = toInt(n);

Finalmente entramos al ciclo que nos permitirá determinar si el número introducido es perfecto o no.

for (i=1; i<num; i++)
{
  if((num%i)==0)
  {
    sum+=i;
  }
}

Dado la suma y el residuo de debe ser 0 hacemos las comparaciones necesarias y determina si el número es perfecto o no.

if(sum==num)
{
writefln("El numero es perfecto");
}
else
{
writefln("El numero no es perfecto");
}

Finalizamos con un mensaje al usuario si quiere seguir calculando más números o no.

writefln ("Desea continuar: [0] No | [1|] Si");
n=din.readLine();
op=toInt(n);

}

Fin del programa (cerramos con llave).

}

El código fuente es como sigue:

import std.conv;
import std.cstream;
import std.stdio;

void main()
{
    int i, sum=0,num, op=1;
    string n;
    while (op!=0)
    {
    writef("Digite un numero entero: ");
    n = din.readLine();
    num = toInt(n);
    for (i=1; i<num; i++)
    {
      if((num%i)==0)
      {
        sum+=i;
      }
    }
    if(sum==num)
    {
     writefln("El numero es perfecto");
    }
    else
    {
     writefln("El numero no es perfecto");
    }
    writefln ("Desea continuar: [0] No | [1|] Si");
    n=din.readLine();
    op=toInt(n);
    }
}

Programa Funcionando.

image

Recibiendo datos teclado (Lenguaje D)

Entre mis ratos de ociosidad y el no tener nada que hacer (la verdad), me he puesto a aprender un lenguaje de programación más, bueno no precisamente a aprender si no más bien a conocerlo porque tenía la curiosidad desde ya más de un año, empezando ya por lo clásico recibiendo datos e imprimiéndolos en pantalla.

 

/*
Programa: Entrada de Texto.
Programador: Fco Javier.
Lenguaje de Programación: D

Descripción: Un sencillo programa que recibe una secuencia de caracteres (cadena) desde el teclado con el nombre del
             usuario e imprime en pantalla el texto recibido.
Correo y MSN/AIM: fjgm arroba aol punto com punto mx

*/

import std.stdio;
import std.cstream;

void main ()
{

    string entrada;
    writef("Escribe tu nombre: ");
    entrada = din.readLine();
    writefln("Tu nombre es: ",entrada);   
}

Sencillo y funcional para apenas llevar  media hora investigando sobre él.

viernes, 11 de diciembre de 2009

Mortal Life

 

Adaptación  Mía (Remmi)

Mi corazón llorando esta.
Llora por no alcanzar tu eternidad
oh mi vida es mortal yo no se el porque,
tuve que conocer aún ángel como tú.

No esta bien que sienta este amor por ti
más no se vivir sin ti
déjame sentir una caricia de tu corazón
sin tu luz mi vida obscurecerá.

Mi corazón llorando esta... dime como alcanzar la eternidad...
Y mi vida es mortal, yo no se el porque… me enamore de un Ángel como tú
Y mi vida es mortal, yo no se el porque… me enamore de un Ángel como tú.

Y mi vida es mortal, yo no se el porque… me enamore de un Ángel como tú.

Basado en la canción Mortal Life (SnakeSkin Cantatronic 2006)

domingo, 6 de diciembre de 2009

Factores Primos ahora con C++

 

El mismo programa hecho en Java pero ahora en C++

 

Problema: Un usuario desea determinar cuantos factores primos hay hasta el n número que desea, determinar cuantos factores hay utilizando métodos y clases.

Este problema me lo he inventado solo para practicar, así que cualquier parecido con la realidad es otro asunto.

Incluimos las librerías que deseamos utilizar en nuestra aplicación.

#include <conio>
#include <iostream>

Creamos una clase llamada Primos, la cual contendrá el método para obtener los factores primos que el usuario desea conocer.

//Clase para calcular n primos.

class Primos {

    //variables globales.
   int i,j,dv,sum;
   bool pm;

   //método para calcular los primos hasta donde el usuario quiera.
   public:
       void primos(int valores)
      {

          for (i=2; i<valores; i+=1)
         {
             pm=true;

             for (j=2; j<i/2; j+=1)
             {
              if(i%j==0)
              {
               pm = false;
               break;
              }
             }
              if(pm)
              {
              if(i==4) //el 4 no es factor primo
                  {
                  }
              else
              {
                 cout << i <<"-";
              }
            }
         }
      }

};

Una vez que ya tenemos nuestra clase, creamos el programa (aplicación) en Sí, que se resume apenas a 15 líneas de código.

 

void main ()
{
    Primos cprimos;

    int valor, op;

    do
    {
    clrscr();
    cout << "Hasta donde deseas calcular factores primos: "<<endl;
    cin >> valor;

    cprimos.primos(valor);

    cout << "Presione [1] para salir o [2] para continuar usando el programa"<<endl;
    cin >> op;
    }
    while (op!=1);
}

No esta nada mal para el uso de clases en C++, nunca pongan un valor muy alto o podrian llevarse toda la tarde calculando o bastante tiempo y obtendrán algo así

imageLa verdad que horrible y desesperante xD.

Saludos. 

sábado, 5 de diciembre de 2009

Suma y Resta C++ utilizando clases y métodos

 

Ahora experimentando con C++, cabe de señalar que este lenguaje lo desconozco en mucho así que me he puesto a meterle mano a parte de que lo estoy llevando en mi clase de Programación en la Universidad, esta vez se me ha ocurrido hacer una pequeña Resta y Suma utilizando clases solo por diversión el uso es casi similar al de Java (este último una combinación de C y C++) pero con estructura diferente

/*
Programa que suma o resta dos numeros usando clases.
Programador: Fco Javier Guerrero Martínez
mailto: fcojavier05 arroba gmail punto com

*/
#include <conio.h>
#include <iostream.h>

//Clase Aritmetica
class Aritmetica {
//Variables Gloables.
double result ;
//Creamos nuestro método suma de tipo publico
public:
     void suma(double a, double b)
    {
     result = a + b;
     cout << "La Suma es: "<<result<<endl;;
     cout << "Presione una tecla para continuar...."<<endl;
     getch();
    }

//Craemos nuestro método resta de tipo publico
public:
     void resta(double a, double b)
   {
     result = a - b;
     cout << "La resta es: "<<result<<endl;
     cout << "Presione una tecla para continuar...."<<endl;
     getch();
   }

};

void main ()
{
  //Se crea un constructor de la clase que ha de heredar todo los métodos publicos de la misma.
   Aritmetica h;

  //Variables Globales.
  int op;
  double a,b;

    do
   {
    clrscr();
     cout << "[1] Suma "<<endl;
     cout << "[2] Resta "<<endl;
     cout << "[0] Salir "<<endl;
     cout << "Seleccione una opción: "<<endl;
     cin>> op;

     if(op==1)
     {
         cout << "Digite un número: "<<endl;
       cin >> a;
       cout << "Digite otro número: "<<endl;
       cin >> b;

        //Paso de parámetros al método suma
        h.suma(a,b);
     }
     else if (op==2)
     {
       cout << "Digite un número: "<<endl;
       cin >> a;
       cout << "Digite otro número: "<<endl;
       cin >> b;

       //Paso de parámetros al método resta
       h.resta(a,b);
     }
   }
   while (op!=0) ;

}

Calculando Números Primos con Java

Ociosidad, esta pequeña aplicación o programa sencillo muestra como utilizar y generar nuestras propias librerías en Java y reutilizarlas en otros programas.

Concepto.

En ciencias de la computación, una biblioteca (o librero) es un conjunto de subprogramas utilizados para desarrollar software. Las bibliotecas contienen código y datos, que proporcionan servicios a programas independientes, es decir, pasan a formar parte de éstos. Esto permite que el código y los datos se compartan y puedan modificarse de forma modular. Algunos programas ejecutables pueden ser a la vez programas independientes y bibliotecas, pero la mayoría de éstas no son ejecutables. Ejecutables y bibliotecas hacen referencias (llamadas enlaces) entre sí a través de un proceso conocido como enlace, que por lo general es realizado por unsoftware denominado enlazador.

Obtenido de la WikiPedia

El programa. Se desea obtener n cantidad de números primos, el usuario debe de introducir el número final para obtener los números primos.

Por ejemplo: Yo usuario deseo saber cuales son los números primos que hay hasta el número 50.

Herramienta con la que trabajo es NETBEANS.

Primero creare una Librería Java a la cual le he puesto el nombre de aritmetica ahora creare un paquete que le pondré el nombre de metodos en este paquete creare una clase llamada primos.java.

La clase primos.java se encargara de calcular los números primos y devolver el resultado impreso en la pantalla del usuario.

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package metodos;

/**
*
* @author Remmi
*/
public class primos {

    int j, i, dv, sum;
    boolean primo;

    public void primos(int valores) {

        for ( i = 2; i < valores; i += 1) {
            primo = true;

            for ( j = 2; j < i / 2; j += 1) {
                if (i % j == 0) {
                    primo = false;
                    break;
                }
            }
            if (primo) {
                //El 4 no es primo xD.
                if (i == 4) {
                } else {
                    System.out.print(i + " - ");
                }

            }
        }
    }
}

Ya que tenemos nuestra libreria aritmetica.jar con su respectivo paquete llamado métodos y nuestro método para calcular los números primos llamada clase primo.java, pasamos a crear nuestra aplicación.

Para ello pedí un nuevo proyecto “Java Aplication” al cual llame cprimos, yo trabajare en modo consola por razones de tiempo.

 

Nos vamos al proyecto, seleccionamos la carpeta Libraries, damos clic con el botón derecho Agregar JAR/Folder

package cprimos;

import metodos.*;
import java.io.*;

/**
*
* @author Remmi
*/
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws IOException {
        //variables
        int total;

        //Creamos una instanacia de primos
        primos pm = new primos();

        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

        System.out.println("+++ Calculadora de Números Primos +++");
        System.out.println("Hasta donde deseas calcular: ");
        total = Integer.parseInt(bf.readLine());

        //Hacemos el paso de parámetros al método primos de la clase métodos
        pm.primos(total);

    }
}

La salida en pantalla es la siguiente:

image

La ventaja de trabajar con nuestras propias clases y librerías es que podemos reutilizarlas en otras aplicaciones, de esta forma nos ahorraremos el tener que volver a escribir el mismo método para el cálculo de un factor… etc. Este ejemplo es muy pobre, pero podemos crear grandes aplicaciones y librerías bien estructuradas para el uso en aplicaciones potentes. 

viernes, 4 de diciembre de 2009

Nostalgias cuando era niño Windows 95

Hoy me entro la nostalgia por regresar a la edad en que comencé a programar (12 años) cuando existía el mitico Windows 3.11 y su predecesor Windows 95 la maravilla, pues buscando por internet pude hacer de una copia OEM de windows 95 con propositos educativos claro, comencé la instalación de FreeDOS en mi máquina virtual usando VirtualBOX y una vez finalizada la instalación del sistema  base MSDOS me dispuse a instalar el mítico Windows 95

image

Dura nostalgia que regresa a casa, jajajaja lo que era el mejor sistema operativo de Microsoft xD para mi porque fue el primero que conocí (de ahí me enamore de Unix/Linux) , hoy en día maquinas potentes y lo que no fue ya no volverá a ser, solo en el museo de nuestros recuerdos lo podemos encontrar.

Los programadores nuevos desconocen el uso de MSDOS comandos básicos para la supervivencia, ya todo es clic + clic y suprimir, los que crecimos con estos cambios en la informática creo que aún seguimos admirados de lo que podías hacer en ese entonces con 2 gigas de disco duro (el disco que jamás llenarías) y apenas 32 megas de RAM

Y aun lo recuerdo como si fuera ayer, con una suite llamada NETSCAPE GOLD que venía en un cd, con un icq que nadie que pertenezca a la era del Messenger se ha de acordar o con el mítico protocolo Gopher, que tal una conexión por telnet o usar Verónica que tiempos aquellos.

En fin dicen que recordar es volver  a vivir. 

miércoles, 2 de diciembre de 2009

Google México Cambia el diseño.

 

googlemexico

Hacía tiempo que este diseño sencillo estaba en pruebas con el dominio GOOGLE.COM para algunos usuarios, hoy para los que usamos el navegador de GOOGLE (CHROME) tenemos la posibilidad de ver el nuevo sitio de GOOGLE, más sencillo y con solo pasar el puntero del mouse el objetivo es gastar menos ancho de banda .

Solo la versión en ingles es compatible con los otros navegadores (www.google.com )

image

Pero a mi me gusto más este diseño de Google se ve más colorido xD

image

domingo, 22 de noviembre de 2009

Promedio de Grupos (C++ Ejercicio While)

Esta es una adaptación del programa anterior pero usando el ciclo while

#include <conio.h>
#include <iostream.h>

void main ()
{

    //Variables Globales.
    double calf=0,scalf=0, pcalf=0,mcalf=0,pmg=0,cf=0,global=0,x=0;

    //Variables para los for
    int grupo=0, alumnos=0, materias=0, calificaciones=0;

    //While para los grupos
    while (grupo!=2)
    {
      //Sumador de Grupo -- Grupo vale 0+n donde n es un número natural > 0.
      grupo++;

      /*Estas variables se hacen 0 para no arrastrar basura al otro cálculo*/
      x=0;
      pmg=0;

      //While para contar los alumnos
      while (alumnos!=2)
      {
       //Sumador de Alumnos -- Alumnos vale 0+n donde n es un número natural > 0.
       alumnos++;

       /*Estas variables se hacen 0 para no arrastrar basura al otro cálculo*/
       scalf=0;
       mcalf=0;

        while (materias!=2)
        {

         //Sumador de Materias -- materias vale 0+n donde n es un número natural > 0.
         materias++;

          while (calificaciones!=3)
           {
            calificaciones++;

            cout << "Digite la calificación: "<<calificaciones<<" : ";
            cin >> calf;

             //Calcula la suma de calificaciones.
               scalf +=calf;
              pcalf = scalf/3;

           }//Fin While Calificaciones

            calificaciones=0;

        } //Fin While Materias

        /*Hacemos el contador 0 en el primer paso para que este vuelva a entrar al siguiente.
     O sea que materias = 0 + n
     */
        materias=0;

         //Sumador para calcular el pomedio del Alumno
          mcalf += pcalf;
          cf= mcalf/2;
          cout << "La Calificación Promedio del alumno es: "<< alumnos << " : "<< cf <<endl;

               //Sumador para calcular el promedio del Grupo.
               pmg += cf;

      } // Fin While Alumnos

      /*Hacemos el contador 0 en el primer paso para que este vuelva a entrar al siguiente.
     O sea que alumnos = 0 + n
     */
      alumnos=0;

      x = pmg/2;

               cout << "La calificación del Grupo " <<  grupo  << " Es: "<<x<<endl;

             //Sumador para el promedio total de los Grupos
             global+=x;
    } //Fin While Grupos

     /*Hacemos el contador 0 en el primer paso para que este vuelva a entrar al siguiente.
     O sea que grupo = 0 + n
     */

     grupo=0;

     global/=2;
     cout << "El promedio de todos los grupos es: "<< global;

     //Espera que el usuario presione una tecla para continuar (Borland C++ Custom)
     getch();
}

Promedio de Grupos (C++ Ejercicio)

Este es un problema que nos encargaron en la clase de fundamentos de programación, existe la posibilidad de adaptarlo en While, pero ahorita no lo hare xD.

El problema dice:

Se desea obtener el promedio de cinco grupos que están en un mismo año escolar, cada grupo puede tener seis alumnos, cada alumno puede llevar cuatro materias y cada materia se promedian tres calificaciones para el promedio de materias, lo que se desea obtener es el promedio grupal (los cinco) el promedio de cada grupo y el promedio de cada alumno.

El programa es:

#include <conio.h>
#include <iostream.h>

//Declarar inicio del programa
void main ()
{
    //Variables Globales.
    double calf=0,scalf=0, pcalf=0,mcalf=0,pmg=0,cf=0,global=0,x=0;

    //Variables para los for
    int grupo, alumnos, materias, calificaciones;

     //Define inicio del programa

     for (grupo = 1; grupo <= 5 grupo++)
     {
              x=0;
              pmg=0;
         //Define inicio del ciclo de alumnos
         for (alumnos = 1; alumnos<= 6; alumnos++)
         {
                scalf=0;
                mcalf=0;
             //Materias
             for (materias = 1; materias <=4; materias++)
             {

                //Define el for para las calificaciones de materia.
                for (calificaciones=1; calificaciones <= 3; calificaciones++)  //Trabajar con 100+100+90 /3 = 96.66666666666667
                {

                     cout << "Digite la calificación: "<<calificaciones<<" : ";
                     cin >> calf;

                     //Calcula la suma de calificaciones.
                     scalf +=calf;
                     pcalf = scalf/3;

                } //Fin  del ciclo de las calificaciones.

                 //Contador para las materias y sacar el promedio aquí 96*4=384/4

             }  // Fin del Ciclo de Materias

                //Sumador para calcular el pomedio del Alumno
                mcalf += pcalf;

               cf= mcalf/2;
               cout << "La Calificación Promedio del alumno es: "<< alumnos << " : "<< cf <<endl;

               //Sumador para calcular el promedio del Grupo.
               pmg += cf;

         }//Fin ciclo de alumnos

             x = pmg/2;

               cout << "La calificación del Grupo " <<  grupo  << " Es: "<<x<<endl;

             //Sumador para el promedio total de los Grupos
             global+=x;

     }//Fin ciclo de Grupo

     global/=2;
     cout << "El promedio de todos los grupos es: "<< global;
       getch();
}

martes, 17 de noviembre de 2009

Un simple programa que imprime mi nombre en ensamblador.

 

.MODEL SMALL
.STACK
.DATA
nombre  DB 'Francisco Javier Guerrero Martínez $'

.CODE
main proc
;el siguiente código imprime en pantalla lo que esta guardado en el segmento de datos
mov ax,seg nombre
mov ds,ax
mov dx,offset nombre
mov ah,9h
int 21h
MOV   AX, 4C00h             ; salida a DOS
    INT   21h                   ; se genera una interrupción 21h
main endp
end main

sábado, 24 de octubre de 2009

Es interesante leer las malas traducciones.

Yo soy un fanático de los juegos en línea que no incluyan violencia y estén basado en ANIME, hoy estando de ocioso me puse a buscar algo nuevo, Flyff ya me enfade xD, Ragnarok estoy hasta el tope aparte de que soy ADMINISTRADOR de un servidor privado, así que me dedique a buscar y entre la búsqueda encontré

Destiny OnLine que no se que de se trata pero a eso entrare

El cliente para descargar Destiny OnLine esta basado en BitComent pero con una serie de malas traducciones al español.

image

Al agrandar la imagen veras que dice lo siguiente:

BitCometLite es descargado… creo que sería más factible o entendible “Esta descargando”.

Desvargar D: me recuerda a algunos players de Ragnarok.

Guarda el archivo D: digo se entiende pero no tiene coherencia… sería mejor GUARDAR el ARCHIVO.

INTALAR: Dios eso no tiene perdón xD

 

image

NetWork Opcion: SpanEnglish D :…. Se leería mejor opciones de Red.

El colmo xD

Cajita de Network Opcion (sin acento por favor)

Tipo de: [ LAN ] <—?  creo que les falto especificar o el tipo tenía hambre.

Mas descargado: [ No linite] D: ok ok esto xD… que onda Linite x_x Mas descargado ? no se leería mejor Limite de descarga

image

uff, eso demuestra que es importante saber lo que estemos haciendo y como se vera el producto al final

martes, 20 de octubre de 2009

Más incremento al ISR. xD

Comenzaré esta nota sencillamente con la siguiente frase… México en lugar de avanzar sigue a una Recesión

Para comenzar, yo no tengo preferencia partidista, tampoco soy fanático de la política, sin embargo estoy al tanto de como se mueven las cosas en el país. Hoy leyendo el diario Local “Diario de Yucatán” me llamo la atención el siguiente párrafo.

En el marco de una sesión maratónica que inició la medianoche del lunes, se avaló el dictamen que sube la tasa del ISR de su actual 28 por ciento a 30 por ciento, tanto para personas físicas como morales.

Admiro el trabajo que hacen es dificil dirigir un país.

La reforma a la Ley del Impuesto Sobre la Renta (ISR) incrementa de 28 a 30 por ciento este gravamen a las personas físicas que ganen mensualmente más cuatro salarios mínimos, a fin de fortalecer la recaudación fiscal el próximo año.

Esto no lo entiendo muy bien, aparte me cobrarán por recibir mi salario, es decir que si a mi mi jefe me paga semanalmente xD me cobrarán impuestos por mi trabajo.

Tal vez este distorsionado, pero yo aún no comprendo en que se gastan millones de pesos al año, quisiera entender en donde están los “empleos” que el “presidente del empleo” prometió a millones de estudiantes en sus fabulosos discursos a mi me consta porque tuve la “fortuna” de escuchar esos discursos de campañas en mi ciudad cuando aún vivía en Michoacán.

¿Nuestros actores políticos son cada vez más ineptos para los cargos?, quién sabe pero detrás de esto siempre hay intereses… Carlos Salinas de Gortari sigue burlándose el país a sabiendas de todos que este actor político “jodio mucho a México” – para el colmo es tanto el miedo que le tienen que nadie se ha preocupado en reformar esa ley que dice que el presidente después de su gestión durante 5 años es intocable xD – o sea que ninguna demanda puede hacerle nada y lo más gracioso que esas demandas o juicios solo son validas por 5 años, en fin… vivimos en un país controlado por mafias políticas, mafias que solo benefician a algunos, mientras que nuestros ilusos compatriotas son controlados por el poder de esas grandes televisoras mexicanas que se disputan ese Dupolio porque otro nombre no existe, en el cual solo muestran distorcionadas las cosas.

En México… no es que no se pueda prosperar, es que de tanta mafia que existe, al politico conservador… le conviene que JAMÁS esas personas apartadas de las ciudades tengan acceso a otros medios de información, justificando que no hay recursos para mejorar ?_?… no hay tal vez si reducimos la pensión de los presidentes para que se pongan a trabajar como cualquier otro ESTUDIANTE o empleado ahorraremos millones de pesos. Estamos en una situación muy delicada donde en lugar de avanzar entramos a un retroceso. Para mí es admirable a pesar de la “crisis mundial” que se vive a ver leido en un diario el siguiente encabezado.

La crisis, una ocasión para que China desarrolle el sector de la innovación

O este otro

China a un paso de convertirse en la segunda potencia económica mundial
Economistas esperan que el PIB chino crezca 9.5% sobre el de Japón durante el tercer trimestre del año

Es interesante que a pesar de la “crisis mundial” existan países que sepan como afrontarla… mientras que aquí solo hacemos ricos a “algunos”.

 

Francisco Javier
C.O Grupo Halis del Sur

lunes, 19 de octubre de 2009

Google nos ha enseñado…

Como directivo general de la red Halis (http://www.ghalis.net) hemos ido aprendiendo un sin número de nuevas tácticas que a lo largo del desarrollo tecnológico Google ha ido perfeccionando.

La filosofía más eficiente para el desempeño de Google es, hacer algo sencillo pero funcional, el éxito de Google radica en la sencillez de sus herramientas, pero a la vez en el potencial que estas ofrecen.

En la logística manejada por Grupo Halis para su división de Juegos en Line, concretamente para el Servidor Stille-RO se han ido aplicando una serie de técnicas tanto administrativas como tecnológicas a fin de buscar la mejor experiencia para el usuario.

Entre nuestros estudios están, simplemente que el usuario no le interesa en si cuantas cosas raras han sucedido en el servidor, esto será lo último que lea, puesto que el se dedicará a los siguientes puntos críticos: Buscar información del servidor, si le convence donde puede registrarse y donde puede descargar el cliente.

Otro punto critico para que el usuario tienda a quedarse es el no hacerlo esperar tanto tiempo en la descarga, ofrecer miles de opciones por la cual el pueda tener acceso al cliente.

Una vez que has enganchado al usuario, procura que si has diseñado un sistema de quest, este no sea tan enredoso, lo último que el usuario leerá es el texto de la quest, este se enfoca solo en lo que da el arma, si le sirve o no, procurando ofrecer dentro del menú una opción para retornar al menú de armas o salir, algunos usuarios no les gusta estar dándole click al NPC cada vez que termine de ver un arma.

Estudiar el comportamiento del usuario en el juego a base de estadísticas, acceso al foro, y gustos, ayuda a entender como podrían ser las próximas implementaciones. La gran mayoría de los jugadores no tienen tiempo, y si tienes exceso de bots siempre abra la mejor manera de solucionarlo, sin embargo hay que entender esos excesos como un posible fallo en algo si el servidor proporciona acceso quest, tampoco hay que esclavizar al usuario, porque llegará un momento en el que este se fastidiará y dejará el servidor.

Estudia los pasos de Google y te darás cuenta de que la visión de ellos es muy critica respecto a como los usuarios usan sus productos, me sorprende también como Flyff OnLine ha cambiado su diseño en la página, creo que el exceso de dibujos llamativos confundián al usuario, aveces las propuestas menos llamativas son las que más pueden ayudarte a crecer.

 

Flyff –> 3 botones Importantes. –> Comunidad, Registrarse y Bajar el juego

Un botón no muy bien acomodado, puede representar grandes perdidas para una corporación.

 

Saludos.

viernes, 16 de octubre de 2009

IDE’s y Compiladores para C++

t181419-0 Resumidos y por ser más utilizados, se que existen otros.

Visual C++: Un producto de la familia .NET de Microsoft para desarrollar aplicaciones Windows, hay una versión de libre descarga llamada Express Edition que puede ser obtenida desde la siguiente dirección: http://www.microsoft.com/express/vc/

Borland Turbo C++ Explorer Edition: Versión reducida pero funcional del famoso C++ para Windows de la ex-Borland, podemos desarrollar aplicaciones tipo Windows y de Consola, al igual que otra clase de elementos para nuestro programa. Este puede ser descargado de la siguiente dirección: http://www.turboexplorer.com/cpp

Dev-C++: Entorno de Desarrollo de C++ que funciona bajo Windows utilizando el compilador GNU GCC, una de las ventajas es que aprendieras a programar de forma correcta en C++, con este IDE puedes desarrollar programas para Windows (Ventana Tipo) o Consola. Lo puedes descargar desde: http://www.bloodshed.net/index.html

COMPILADORES

GCC: Compilador en linea de comando para entornos UNIX/Linux, se basa en estándares ANSI/ISO así que no esperes encontrar palabras de complemento utilizadas por Turbo C++, este puede ser descargado desde la siguiente dirección:http://gcc.gnu.org/

jueves, 15 de octubre de 2009

Conferencia de HCI

what_hci

Bueno hoy en la UMSA tuvimos una breve  conferencia sobre HCI, aunque fue breve, fue muy interesante, el exponente trato de explicar como funciona esta tecnología y como nos puede ayudar en el mejoramiento del diseño de nuestra interfaz en un programa.

Aquí dejo el archivo, que consiste en una presentación PowerPoint de 121 diapositivas, pesa 8 megas, esta bastante interesante.

Descargar

miércoles, 14 de octubre de 2009

Uso del Ciclo For.

El ciclo for es aquel que nos permite repetir una instrucción dentro de nuestro programa, este ciclo presenta la siguiente característica:

  1. Tiene un inicio: En el cual se define de donde queremos que comience
  2. Tiene un Fin: En el cual se indica hasta donde queremos que llegue.

La manera de representarlo en pseudocódigo o algoritmo es la siguiente:

hacer desde variable hasta variable

instrucciones

fin_del_ciclo

Por ejemplo:

Hacer desde contador = 1 hasta contador <= 15
   Imprime “Hola Mundo”;
fin_hacer_para

La estructura en los lenguajes de programación tales como C++ o Java es la siguiente:

for ( variable; condición de iteración; incremento
{
  sentencias.
}

Explicado de una manera más eficiente

 

Java C++

for (int i=1; i<=15; i++)
{
  System.out.println (“Hola Mundo”);  //Java
}

for (int i=1, i<=15; i++)
{
cout << “Hola Mundo”<<endl;
}

 

Ambas instrucciones nos imprimen 15 veces el mensaje hola mundo en pantalla.

Un ejemplo práctico:

Se desea obtener la suma de 5 números introducidos por el usuario.

Java C++

import java.io.*;

public class suma
{

public static void main (String [] args) throws IOException
{
  int contador, result=0;
  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

for(contador=1; contador <=5; contador++)
{
System.out.println ("Escriba un número: ");
result +=Integer.parseInt(br.readLine());

}
System.out.println ("La suma de los cinco números es:  "+result+"");
}
}

#include <conio.h>
#include <iostream.h>
void main ()
{

int contador, dato, result;

   for (contador = 1; contador <=5; contador++)
   {
     cout << "Escriba un número: ";
     cin >> contador;

     result+=contador;

   }

    cout << "La suma de los cinco números es :"<< result;

   getch();
}


}

 

Algo que hay que notar es que, el ciclo for puede llevar dentro de su sintaxis la declaración de la variable contador o esta puede ser declarada previamente a su uso, es decir que podemos tener esto

for (int contador<1; contador<=5; contador++)

o

int contador;

for (contador <1; contador <=15; contador++)

Será lo mismo para ambos casos, también hay que dejar en claro que la palabra contador es un artilugio manejado por el escritor, en su lugar podemos usar i, conta… cualquier otra palabra que se nos ocurra y nos sirva como contador.

Recuerda que si tienes duda, puedes dejar un post en el foro para que se te responda y tus dudas sean despejadas.

lunes, 12 de octubre de 2009

Modulo para graficar una pendiente

El siguiente modulo fue escrito en Mathematica, es básico pero sirve para graficar una pendiente dada ax+b para utilizarlo primero debemos de definir los valores máximos y después los mínimos, posteriormente debemos de introducir el termino que tenga consigo la “x” por ejemplo

2x+4 –> introducimos 2x y posteriormente 4

Al finalizarla obtendremos la gráfica de la pendiente

image

Para ejecutarlo al final de la línea escribimos pendiente y luego shift + enter

Introducimos por ejemplo 2x+4 y obtenemos su gráfico:

image

Básico pero funcional (y)

sábado, 10 de octubre de 2009

Descargar algunas canciones de Final Fantasy

No he tenido la maravillosa dicha de jugar este juego, me imagino que ha de ser de los mejores con saga jamás programados, pero eso no me ha quitado el disfrutar de las maravillosas melodías que le acompañan.

Soy amante de la música instrumental en cualquier sub-genero en que esta se divida si es que tiene división.

La música de final fantasy me llena de mucha alegría, pero también de mucha tristeza, pues, es muy hermosa.

Navegando por Internet pude dar con todos los discos “originales” de esta maravillosa producción del Game ^0^

En esta página encontraremos de todo un poco http://www.ffdream.com/ D: es muy linda bueno, para mí.

jueves, 8 de octubre de 2009

Post de prueba enlazando Blogspot con Facebook

Prueba prueba prueba

Errores con Borland C++ Builder vcl60.bpl

Hoy decidí aprender un “nuevo” lenguaje de programación, bueno no lenguaje de programación, si no algún otro programa alternativo para solucionar problemas, en este caso me decidí por C++ Builder 6, por no tener dependencias de Frameworks algo que básicamente no me gusta, por eso no me decidí por Delphy, Visual C++ o C# (aunque en este último ya había programado).

 

Bien al hacer pruebas de distribuir una aplicación, mi usuario se encuentra con el siguiente problema.

Error: No se puede encontrar el archivo vcl60.bpl

 

 

Y yo así de joder no puede ser, aunque señalo, apenas comencé a usar este IDE no más de 1 hora, entonces navegando por la internet logre encontrar un buen foro donde pude leer los siguiente pasos para evitar este y otros errores de ejecución.

Pasos

  1. Ir a la barra de menú –> Project –> Options (Shift+ctrl+f11)
  2. En el cuadro de opciones seleccionar la pestaña Linker –> Desmarcar “Use dynamic RTL”.
  3. En el mismo cuadro de opciones seleccionar la pestaña Packages –> Desmarcar la opción “Build With runtime packages”

 

Con esto podremos solucionar los errores de pendencia de nuestra aplicación, aunque los exes tienden a aumentar de tamaño, nos ayuda más no tener que estar distribuyendo los paquetes junto con la aplicación (que al final es lo mismo).

Fuente: http://www.psicofxp.com/forums/programacion.313/244694-error-con-aplicacion.html

sábado, 26 de septiembre de 2009

If anidados y JAVAFX

En este ejemplo se requiere lo siguiente:

Leer dos números si son iguales deben de multiplicarse, si el primero es mayor que el segundo debe de restar el segundo al primero y si no se cumple ninguna de las dos condiciones anteriores deben de sumarse.


Nota: Este ejemplo ha sido desarrollado usando NetBeans 6.7.1 y JavaFX Script.
Primero comenzamos con definir las librerías que vamos a necesitar.


import javafx.scene.Scene;
import javafx.ext.swing.*;
import javax.swing.JOptionPane;
import javafx.stage.AppletStageExtension;
import javafx.stage.Stage;
import javafx.scene.input.MouseEvent;


En segunda instancia definiremos las variables que utilizaremos en nuestro programa, yo las nombre x1 para el número 1 y y1 para el número 2, resultados es la variable que mostrará los resultados.


var x1;
var y1;
var resultados;


Ahora comenzamos a crear nuestros diálogos de Textos para que el usuario pueda escribir los números.


El primero lo llame texto1 y esta definido de la siguiente manera:


var texto1 = SwingTextField
{
columns: 10 //Establece el máximo de texto
editable: true; // Si es editable
translateX: 120; // Coordenada X donde estará ubicado
translateY: 10; // Coordenada Y donde estará ubicado.
}


Como segunda instancia tengo definido texto2 para que el usuario escriba el segundo número.


var texto2 = SwingTextField
{
columns: 10 //Establece el máximo de texto
editable: true; // Si es editable
translateX: 120; // Coordenada x
translateY: 30; // Coordenada Y
}


Por último cree otro campo de texto pero de solo lectura al cual llame resultado donde se ha de mostrar el resultado según lo que procesada del problema.


var resultado = SwingTextField
{
columns: 10; // Establece el máximo de texto
editable: false; // No es editable
translateX: 120; // Coordenada x
translateY: 60; // coordenada Y
}


Finalmente creare un botón el cual ha de contener una función para realizar la comparación que se me esta pidiendo en el problema.


var comparar = SwingButton
{
text: "Comparar"; // Nombre que mostrará el botón (Etiqueta=
translateX: 0; // Coordenada X
translateY: 100; // Coordenada Y
action: function () // El Botón tiene una función.
{
try // Atrapar excepciones producidas por errores
{
x1 = Integer.parseInt(texto1.getJTextField().getText()); // x1 toma el valor de texto1
y1 = Integer.parseInt(texto2.getJTextField().getText()); // y1 toma el valor de texto2
if ( x1 == y1) // Compara si ambas son iguales entonces
{
resultados = x1 * y1; // Multiplica
}
else // si no son iguales entonces
{
if (x1 > y1) // Si x1 es mayor que y1
{
resultados = x1 - y1; // hace una resta
}
else // si no es ninguna de las anteriores
{
resultados = y1 + x1; // suma valores
} // fin si
}// fin si
resultado.getJTextField().setText("{resultados}"); // resultado toma el valor de resultados
}
catch (e) //atrapar excepcion
{
JOptionPane.showMessageDialog(null,"Solo se aceptan valores tipo entero número.", "Error", JOptionPane.ERROR_MESSAGE); //mostrar este mensaje si se ha producido una excepción.
}
}// fin del método del botón.
}// fin de la variable botón

Ahora creare un stage que será mi aplicación en si.
Stage {
title : "Comparación de Números" // Defino el título que tendrá la ventana
width: 250 // Ancho de la ventana
height: 200 // Alto de la ventana
/*Esto de aquí es opcional y sirve para que nuestro Applet pueda ser "sacado"
del navegador */
extensions: AppletStageExtension {
shouldDragStart: function(e: MouseEvent): Boolean {
e.primaryButtonDown;
}
}
//Creamos nuestra escena
scene: Scene {
//Contenido de la escena
content: [
//Inicialización de variables.
texto1,
texto2,
resultado,
comparar,
//Una etiqueta que pide al usuario introducir un número X
SwingLabel {
text: "Escribe un número X:";
translateX: 0;
translateY: 10;
}
//Una etiqueta que pide al usuario introducir un número Y
SwingLabel {
text: "Escribe un número Y: "
translateX: 0;
translateY: 30;
}
//Una etiqueta que muestra el resultado al usuario
SwingLabel
{
text: "Resultado";
translateX: 0;
translateY: 60;
}
] //Fin del contenido de la escena
} //Fin de la escena
} // Fin del Stage.


Realizar aplicaciones JavaFX representa una gran ventaja ya que los Applets desarrollados con esta tecnología ofrecen un grado más de interactividad con el usuario que los Applets comunes.


Este ejemplo fue tomado del curso de Fundamentos de Programación en el cual se maneja el lenguaje C++ para enseñanza de los Alumnos en la Universidad Mesoamericana de San Agustín. Sin embargo esto demuestra que teniendo un algoritmo ya fabricado y entendiendo los diversos paradigmas de programación la adaptación de las aplicaciones puede ser "rápida".

Baila Princesa

 

 

Baila muy lentamente mi amor,
siente como mis labios te besan,
entre las sombras de esta noche estoy,
buscando a la que fue mi princesa.

Muy lejos de ti ahora estoy,
soñando despierto que te vuelvo a ver,
entre tus brazos quiero estar,
sentir tus cálidos besos mi amor.

Baila princesa, baila mi amor,
que entre sueños caricias te doy.

Se que lejos de mi ahora estas,
pero nuestro amor es más fuerte,
di que me amas como yo a  ti amor,
solo en mi mente estas tú.

Baila princesa, baila mi amor,
que en mis sueños te veo yo,
di que me amas…

Baila princesa, baila mi amor,
que esta noche es eterna para los dos,
solo en la muerte podrá separarnos,
ni el tiempo, ni la distancia nuestro amor han borrado.

Baila princesa, baila mi amor,
que la luna brilla para los dos,
reflejando nuestro más puro amor,
y las estrellas cuidan nuestra pasión.

Solo en mi sueños princesas estas,
se que eres real y lejos de mi estas,
ni el tiempo ni la distancia nuestro amor han borrado
y al final el verdadero amor triunfará.

Ven princesa, de mis sueños escapa,
que mi corazón a gritos te llama,
y junto a ti quiere estar,
toda su vida.

Baila princesa, baila mi amor,
que la luna brilla para los dos,
reflejando nuestro más puro amor,
y las estrellas cuidan nuestra pasión.

martes, 8 de septiembre de 2009

Programando en Java de Nuevo

El día de hoy me entro la nostalgia por volver a programar (bueno aclaro que sigo estudiando solo que ahora C++), bien pues me propuse hacer un pequeño traductor usando el api de Google (Translate) y diseñar un Gadgets huy que ahora esta muy de modas logre hacerlo aunque algo rustico solo quería que funcionara ya con más tiempo espero darle o hacerlo más formal, jeje la verdad me gusto el desarrollo de Gadgets tanto para Google como para Hi5

image

Y si que funciona, después de probarlo en google jejeje al escribir la frase Quisiera ser tu sueño me sale la traducción: Je serais votre rêve

image

Ya veré que le puedo agregar y mejorar a este gadget que esta en pañales.

viernes, 10 de julio de 2009

Mechanic Skill Axe Training

Esta skill aumenta el daño y a base stats y los puntos de hit en stats

Por ejemplo

210 + 20 de Str

Por cada nivel de de la skill el jugador gana 5 puntos esto se traduce de la siguiente manera

Str  += (Skill Lvl * 5)

Por lo tanto el factor final queda de la siguiente manera:

Str Skill Lvl Factor Modificator
5 1 5
10 2 5
15 3 5
20 4 5
25 5 5
30 6 5
35 7 5
40 8 5
45 9 5
50 10 5

 

Tomado en Cuenta estas modificaciones nuestro ejemplo al Final quedará:

210 + 70 para Str.

Para el punto final de Hit es lo mismo con la diferencia de que el valor ganado es 3 multiplicado por el nivel de la skill de esta manera.

Hit += Skill Lvl * 3

Lo cual se traduce de la siguiente manera:

Hit Nivel Skill Valor Multiplicador
3 1 3
6 2 3
9 3 3
12 4 3
15 5 3
18 6 3
21 7 3
24 8 3
27 9 3
30 10 3

 

Entonces si un sujeto tiene Hit + 80 tomando en cuenta La skill en nivel 10, esto se traduce Hit + 110.

De forma que gana más Hit de acuerdo a su base.

viernes, 15 de mayo de 2009

Se revelan los primeros prototipos de Stille-RO

Stille-RO es un proyecto al que me han invitado formar parte como un core desarrollador de scripts, debugger y sobre todo la aplicación del conocimiento que tengo sobre los jobs teóricamente y gracias a Gravity Interactive que me ha dejado formar parte del Staff de Desarrollo de Sakray Server de IRO.

El día de hoy a las 05:45 de la tarde se dieron a conocer los primeros prototipos de armas publicadas bajo el archivo comparitva en el cual hacen referencia a dos servidores elementales conocidos:

    1. Rock and Ro
    2. Azteca Ro

En este archivo podemos encontrar las implementaciones que ha realizado el equipo de programación del servidor y los futuros bonos que estos tendrán, la página se actualiza automáticamente cada 5 minutos gracias a la tecnología GWT.

La inversión del tiempo y los lapsos de fechas de entregas aun se desconocen, sin embargo a mi conocer el proyecto arranca a partir del 1 de Julio del presente año, no conozco más información sobre este proyecto sin embargo hasta donde se ha evaluado se tiene un 95% de estabilidad sobre todos los jobs, usando todos los prototipos, diseños e implementaciones que he desarrollado para eAthena, confió en que todo saldrá bien.

martes, 12 de mayo de 2009

Traductor simple (Google Translator API)

Hoy desarrollaremos un traductor simple en consola de Texto, utilizando el API de Google Translator.

El entorno de desarrollo que usare esta ocasión será Blue-J (por tratarse de una aplicación de ejemplo).

Bien para ello pedimos un nuevo proyecto e iniciamos una nueva clase, yo a mi clase le he puesto saludo.java.

Ahora importamos el API del servicio de traducción de Google, para ello nos dirigimos al menú Tool –> Preferences –> dentro de la ventana preferences seleccionamos Libraries –> posteriormente ADD para agregar la librería (tendremos que buscar la ruta donde la hemos guardado).

Para facilitarme la busqueda de API’s lo que yo he hecho es una carpeta en C: con el siguiente nombre C:\JavaAPI\Google donde almaceno las api’s de Google, ya que son varias.

Bien, ahora damos en OK para finalizar la configuración, reiniciamos el IDE y continuamos editando el código.

Para incluir la libería dentro del programa lo hacemos de la siguiente manera.

import com.google.api.translate.Language;
import com.google.api.translate.Translate;

Language, es el lenguaje del texto original antes de ser traducido.
Translate: es el lenguaje al que el texto será traducido.

import com.google.api.translate.Language;
import com.google.api.translate.Translate;
import java.io.*;

public class saludo
{

public static void main (String [] args) throws IOException
{
    // variables de contexto local
    String fraseEsp, fraseFran;

    //Define el Buffer de Entrada de información.
    BufferedReader br = new BufferedReader (new InputStreamReader(System.in));
    System.out.print ("Escribe una frase: ");
    fraseEsp = br.readLine();
     try
    {
        fraseFran = Translate.translate(fraseEsp, Language.SPANISH, Language.FRENCH);
        System.out.println (fraseFran);
    }
    catch (Exception error)
    {
        System.out.println ("No se puede completar la traducción");
    }
}

}

 

Examinando el código podemos notar la siguiente línea: fraseFran = Translate.translate(fraseEsp, Language.SPANISH, Language.FRENCH);

Básicamente lo que estamos haciendo es crear un paso de parámetros a la clase Translate la cual se encargará de traducir del idioma español al idioma francés cualquier frase que escribamos, siempre y cuando esta este correctamente escrita.

Por ejemplo: Mi grupo de música favorito es lacrimosa.

 

Como puedes ver, puedes construir aplicaciones tan sencillas usando las APi’s de Google

miércoles, 6 de mayo de 2009

Ser o no ser que dilema (eAthena element weapon is not elemental)

Bueno, no entraremos en controversias, para comenzar, después de la implementación de los Battle Grounds en el emulador, se decidió cambiar el tipo de ataque que los mobs tendrían, entiéndanse sus atribuciones en las armas dando origen a que las armas ya no fueran neutrales en los mobs si no que estas no tuvieran un elemento… ¿curioso no?, es por eso que los ataques se atribuían a un elemento ¿null?, y no te podías proteger ni por reducción, ni por cartas elementales.

Mi primera teoría: Los mobs habían cambiado el ataque de acuerdo al tipo elemento que era, teóricamente estaba equivocado eso no podía ser, puesto que después de hacer una primera prueba con 110% (una manteu) a todos los elementos aun me seguían pegando.

Entonces ¿qué rayos pasa?, siguiendo con el manteu a 110% y me seguían pegando, hasta que Eureka se me ocurre llamar a un Seyren haciendo que me persiguiera.

image

¿Por qué el Spiral Pirce del Seyren me curaba?, entonces me formule, algo ha de estar cambiado. Obvio no xD… después de 150 muertes aproximadamente.

Empecé a revisar línea a línea cada parte del código del emulador (debido a que el SVN esta caído y se me hace más fácil poder comparar ahí), y Eureka de nuevo, encontré algo que me llamo la atención.

//forced neutral for monsters

 

¿Y que sucede con lo otro?, empecé a trabajar en el archivo battle.c  buscando este pedazo de código.

 

if (!skill_num && tstatus->flee2 && rand()%1000 < tstatus->flee2)
    {    //Check for Lucky Dodge
        wd.type=0x0b;
        wd.dmg_lv=ATK_LUCKY;
        if (wd.div_ < 0) wd.div_*=-1;
        return wd;
    }

    t_class = status_get_class(target);
    s_ele = s_ele_ = skill_get_ele(skill_num, skill_lv);
    if (!skill_num || s_ele == -1) { //Take weapon's element
        s_ele = sstatus->rhw.ele;
        s_ele_ = sstatus->lhw.ele;
        if (flag.arrow && sd && sd->arrow_ele)
            s_ele = sd->arrow_ele;
        if (battle_config.attack_attr_none&src->type)
            nk|=NK_NO_ELEFIX; //Weapon's element is "not elemental"
                } else if (s_ele == -2) { //Use enchantment's element
        s_ele = s_ele_ = status_get_attack_sc_element(src,sc);
    }

Como podemos ver ahí encontramos la atribución a este post //Element is not elemental, o sea que a partir de esas implementación el ataque de las armas en mob no tiene ningún elemento. ¿Pareciera?

Bueno si tu servidor es elemental, con equipo de 4 slots y tus usuarios ya se acostumbraron a “subir de nivel” de esta forma sin que los mobs los maten, editamos la siguiente línea:

  nk|=NK_NO_ELEFIX; //Weapon's element is "not elemental"

De la siguiente manera:

nk &= ~NK_NO_ELEFIX;

 

De tal forma que la nueva versión del código es:

if (!skill_num && tstatus->flee2 && rand()%1000 < tstatus->flee2)
    {    //Check for Lucky Dodge
        wd.type=0x0b;
        wd.dmg_lv=ATK_LUCKY;
        if (wd.div_ < 0) wd.div_*=-1;
        return wd;
    }

    t_class = status_get_class(target);
    s_ele = s_ele_ = skill_get_ele(skill_num, skill_lv);
    if (!skill_num || s_ele == -1) { //Take weapon's element
        s_ele = sstatus->rhw.ele;
        s_ele_ = sstatus->lhw.ele;
        if (flag.arrow && sd && sd->arrow_ele)
            s_ele = sd->arrow_ele;
        if (battle_config.attack_attr_none&src->type)
                 // Remmi Atribution Change
            nk &= ~NK_NO_ELEFIX; // Forced neutral for monster by Remmi Change
    } else if (s_ele == -2) { //Use enchantment's element
        s_ele = s_ele_ = status_get_attack_sc_element(src,sc);
    }

Y ahora todo regresa a la normalidad, con mobs que nos curan si tenemos protección o inhumanidad a un elemento.

image

Recuerda que este es un cambio de eAthena y de Gravity, por favor considera las atribuciones a las modificaciones, una motivación o felicitación no esta de más y no te hagas del derecho del código, y si algún servidor elemental de los que actualmente conozco les dice que fue invención de ellos lo de los mobs con ataque Null no es cierto >.<.

Posdata: Gracias Geraldine por ayudarme a testear el código cambiado ^^

image

martes, 5 de mayo de 2009

Acid Demostration Gadget

 

:) Hoy mostrare el resultado de una pequeña aplicación realizada con Google Web Toolkit y Java.

Se trata de un pequeño gadget hecho para iGoogle el cual si eres jugador de Ragnarok OnLine y tienes un creator te puede servir para calcular el daño que realiazas al enemigo.

Soporta máximo int y vit 999.

El script a continuación permite agregarlo a una página web o blog :)

 

<script src="http://www.gmodules.com/ig/ifr?url=http://hldteam.comli.com/expe/acido/acid.xml&amp;synd=open&amp;w=318&amp;h=124&amp;title=Acid+Demostration+Calculator+%2F+Basica&amp;border=http%3A%2F%2Fwww.gmodules.com%2Fig%2Fimages%2F&amp;output=js"></script>

Añadir a IGoogle Add to Google

Actualmente me encuentro trabajando en mejoras para esta calculadora, si alguien se interesa en ella, o algún servidor quiere la formula customs puedo contribuir para el diseño de la misma :)

Install Fest

tux
tux,
orginalmente cargado por rdiwolf.
Festival de Instalación del Software Libre en la FCA, esto es en Mérida, Yucatán México, el día sábado 16 de mayo de 2009.

Flickr

This is a test post from flickr, a fancy photo sharing thing.

miércoles, 29 de abril de 2009

JetBrains RubyMine 1.0 - un nuevo IDE de Ruby y Rails

  PRAGA, 29 de abril /PRNewswire/ -- JetBrains, los creadores de
herramientas de desarrollo inteligentes para mejorar la productividad, han
anunciado la disponibilidad general de RubyMine 1.0, el nuevo IDE (entorno de
desarrollo integrado) de la compañía para desarrollo productivo de Ruby y
Rails.




Nota Completa

lunes, 20 de abril de 2009

Oracle Compra Sun Microsystem

Me llego la noticia a las 09:00 am centro de México, Oracle ha comprado Sun Microsystem y con ello toda la tecnología desarrollada por esta. La nota completa esta aquí: http://www.ticpymes.es/Noticias/General/200904200037/Oracle-compra-Sun-Microsystems.aspx

Ahora la pregunta es, ¿Las aplicaciones que son de licencia dual de Sun? lo seguirán siendo, ¿qué nos espera con Java?, ¿A donde ira OpenSolaris?.

Esperemos que esta compra sea un visto bueno para todos y se mantengan las  actuales políticas de la empresa de Sun, aunque todos sabemos que no será así, y abra muchos cambios.

Aunque aun falta que se apruebe dicha transacción…

domingo, 19 de abril de 2009

Introducción a Java [Elementos de un programa]

Bien ahora que estamos aprendiendo a programar en Java, necesitaremos conocer como esta constituido un programa.

En esta ocasión trabajare con el IDE BlueJ para tener una mayor comodidad, y evitar el problema de licencias.

Comenzaremos por crear un nuevo proyecto de blueJ para ello ejecutamos el programa y nos dirigimos al menú Project –> New Project.

En mi caso personal le pondré el nombre de practicas, para hacer referencia a las practicas que realizaremos durante nuestra introducción al lenguaje.

Bien ya que tenemos nuestro proyecto llamado practicas, crearemos una nueva clase, el nombre de la clase que usare es el de elementos Yo decidí poner este nombre en referencia a los elementos que veremos hoy.

Teniendo nuestra clase elementos ya lista, daremos clic sobre esta para comenzar a editarla, como notarán tenemos ya un código de ejemplo, lo que nosotros realizaremos es borrar esta parte del código.

// instance variables - replace the example below with your own
  private int x;

  /**
   * Constructor for objects of class elementos
   */
  public elementos()
  {
      // initialise instance variables
      x = 0;
  }

  /**
   * An example of a method - replace this comment with your own
   *
   * @param  y   a sample parameter for a method
   * @return     the sum of x and y
   */
  public int sampleMethod(int y)
  {
      // put your code here
      return x + y;
  }

Para crear uno nuevo método principal de la siguiente forma:

/*
     * Este es el método principal llamado main este método  básicamente esta
     * constituido por un vector cadena el cual devolverá algún parámetro introducido
     * en tiempo de ejecución.
     * Public indica que el método es publico y estatico.
     */
    public static void main (String [] args)

/*
        * System.out.println es un método que se encuentra en el paquete
        * java.io el cual sirve para desplegar en consola cualquier cadena
        * de caracteres que introduzcamos.
        */
       System.out.println ("Bienvenido a Java");

Y este es nuestro programa en sí:

/* El nombre de la clase se llama elementos, por lo tanto el archivo
* que se genere se ha de llamar elementos.java y elementos.class.
* el modificador public indica que la clase es publica y accesible.
*/

public class elementos
{
    /*
     * Este es el método principal llamado main este método  básicamente esta
     * constituido por un vector cadena el cual devolverá algún parámetro introducido
     * en tiempo de ejecución.
     * Public indica que el método es publico y estático.
     */
    public static void main (String [] args)
    {
        /*
         * System.out.println es un método que se encuentra en el paquete
         * java.io el cual sirve para desplegar en consola cualquier cadena
         * de caracteres que introduzcamos.
         */
        System.out.println ("Bienvenido a Java");
    }

}

Hacemos clic en el botón compile, para compilar nuestro programa, para ejecutarlo, solo hace falta ir a la parte principal del programa donde se encuentra la clase

image

Y dar clic en el método void main(String [] args), nos aparecerá un recuadro con unos corchetes, simplemente damos clic en Ok para continuar.

image

Y podemos obtener la salida en pantalla.

Para compilar desde la consola de MS-DOS o Shell en Unix, disponemos de los siguientes comandos javac nombre.java y java nombre para correr el archivo de clase. 

Hasta aquí hemos aprendido como mostrar mensajes en la consola de Java usando BlueJ en entregas posteriores iremos adentrándonos aún más en el lenguaje.