domingo, 27 de diciembre de 2015

Esquemas Algorítmicos y Problemas

¿Qué algoritmo debemos emplear para la resolución de un problema?

Atendiendo a la naturaleza del problema las posibilidades son muchas y muy variadas, de echo casi todos los problemas se pueden resolver con cualquier esquema algorítmico pero no todos son igual de eficientes a la hora de resolverlo, por eso vamos a hacer una pequeña guía de los esquemas algorítmicos básicos y los problemas que se pueden resolver con ellos.

Los esquemas algorítmicos más comunes son los siguientes:







Y con cada uno de ellos podemos resolver infinidad de problemas pero los más comunes a resolver con cada tipo son los siguientes:


Algoritmos Voraces: 

-Encontrar árboles de recubrimiento mínimo (algoritmo de Prim y algoritmo de Kruskal)
-Encontrar camino de coste mínimo (algoritmo de Dijkstra)
-Problemas de minimización de tiempo en un sistema
-Planificar con plazos
-Almacenamiento óptimo en soportes secuenciales
-El típico problema de la mochila con objetos fraccionables
-Mantener la conectividad en una red, en un sistema, etc
-Problema de mensajería
-Robot desplazándose por un circuito
-Sistema de asistencia


Divide y Vencerás:

-Ordenación por fusión (Mergesort)
-Problema del puzzle Tromino
-Ordenación rápida (Quicksort)
-Cálculo del elemento mayoritario de un vector
-Organizar liga de equipos
-Calcular Skyline de una ciudad


Programación Dinámica:

-Cálculo de coeficientes binomiales
-Problemas de devolución de cambio
-Viaje por el río
-La mochila
-Multiplicación Asociativa de Matrices
-Calcular el camino de coste mínimo entre nodos en un grafo dirigido
-Problemas de distancia de edición


Vuelta Atrás:

-Coloreado de grafos
-Ciclos Hamiltonianos
-Subconjuntos de una suma dada
-Reparto equitativo
-Robot en busca de un tornillo
-Asignación de cursos en una escuela


Ramificación y Poda:

-Asignación de tareas
-Viaje de comercio
-Selección de tareas
-Distancia de edición


martes, 15 de diciembre de 2015

Vuelve Dragon Valley

Hoy mismo se ha lanzado el DLC Legacy Operations para Battlefield 4 que incluye el mítico escenario Dragon Valley

Para aquellas personas que no sepan que es Dragon Valley les puedo decir que es un mapa, un escenario del juego Battlefield donde se desarrolla toda la "acción" del juego.

Todos aquellos usuarios de Battlefield 4 podrán conseguirlo gratuitamente y podrán

miércoles, 9 de diciembre de 2015

Tabla Hash

Una tabla hash es una estructura de datos muy eficiente para realizar búsquedas.

Las tablas hash también son conocidas cómo hash map, mapa hash, tabla de dispersión, etc y su principal característica es que nos permiten almacenar datos del tipo llave valor. Es una estructura de datos muy eficiente a la hora de realizar búsquedas.

Un ejemplo de tabla hash sería un listado con el nombre y número de teléfono de muchas personas, el funcionamiento es muy sencillo. Toda tabla hash para poder almacenar los datos que le demos tiene una función hash, esa función se encarga de traducir la llave a una posición, número entero que se corresponde con el índice de la tabla donde almacenaremos el valor. Paso por paso (en el ejemplo de agenda de teléfonos) sería así:

-Introducimos el nombre (que sería la llave)
-La función hash de acuerdo a las funciones y algoritmos que le hayamos puesto previamente calculará que posición en la tabla debe ocupar el valor de esa llave, es decir, traduce el nombre a un número que será la posición donde almacenaremos el número
-Introducir el número de teléfono (que sería el valor)

Una vez hechos estos pasos ya tendremos el par llave valor almacenado en nuestra tabla y para poder recuperarlo bastaría con introducir la llave o clave para conseguir el valor de la siguiente forma:

-Introducimos la llave (que en el ejemplo sería el nombre)
-La función hash, al igual que a la hora de introducir el par llave valor, calcula que posición en la tabla le corresponde a esa llave y así obtiene el valor de una forma muy eficiente

Un ejemplo gráfico sería el siguiente:

ejemplo de funcionamiento de una tabla hash
Funcionamiento de una tabla hash


Este tipo de tablas resulta muy eficiente para realizar búsquedas si tenemos muchos elementos almacenados ya que no tenemos que recorrer la tabla completa para realizar la búsqueda sino que nos bastaría con conocer la clave para poder encontrar el valor, ahorrándonos así el tiempo que se necesita en recorrer toda la tabla.

Cualquier duda o cosa que queráis preguntar ponerla por los comentarios, da igual si es algo bueno, malo, un chiste o lo que sea, vosotr@s ponerlo jajaj


domingo, 6 de diciembre de 2015

Baterías de grafeno

Las baterías de grafeno probablemente serán la mayor revolución tecnológica de los últimos años.

Todavía están en desarrollo, aunque muy pronto empezaremos a verlas en nuestra vida diaria. Estamos hablando de baterías que en estos primeros años aumentarían entre 5-10 veces la capacidad de las baterías actuales y que reducirían el tiempo de carga entre 15-20 veces, también dicen que los ciclos de carga que soportaran serán 5 veces mayor que las actuales. A medida que esta tecnología avance esas cifras serán incluso mejores por lo que el uso de estas baterías marcará un antes y un después en infinidad de dispositivos que usamos en nuestra vida diaria.

¿Que supone este tipo de baterías para el usuario normal? Pues supone casi un cambio de vida (a mejor) por ejemplo, nuestros smartphones quedarán cargados completamente en apenas 5 o 10 minutos y la batería les durará, sin problemas, una semana o más y no cómo ahora que hay que estar cargándolos cada día y algunos incluso varias veces al día, además al soportar muchos más ciclos de carga que las anteriores baterías, la batería de grafeno nos durará mucho más que las actuales que suelen durar un año y poco más. En general todos los dispositivos que lleven batería se verán afectados por la inclusión de está gran tecnológica mejorando así sus tiempos de carga de manera asombrosa así cómo su duración, estaríamos hablando de portátiles, tablets, smartwatchs, etc.

Otro de los grandes cambios que puede introducir las baterías de grafeno a nuestra vida diaría y quizás el más importante es su inclusión en los automóviles pues con estas baterías podríamos estar hablando ya de coches con autonomías de entre 1000 y 2000km, con unos tiempos de carga mínimos y un mantenimiento casi nulo. Esto supondría poder empezar a eliminar la dependencia del uso de combustibles fósiles y empezar a usar vehículos totalmente respetuosos con el medio ambiente, que es muy necesario conforme están los niveles de contaminación en todo el planeta.

Cómo veis estas baterías pueden mejorarnos la vida de manera muy significativa, así que habrá que estar atentos a 2016 donde empezaremos a verlas en algunos dispositivos, aquí sólo hemos hablado un poquito de cómo nos afectaría el uso de estas baterías en nuestros automóviles o smartphones, pero este tipo de baterías y el material del que están hechas (grafeno) se puede usar en muchos campos de la vida por no decir en todos y en poco tiempo empezaremos a ver cómo se usa en medicina, construcción, materiales, aeronáutica, etc


miércoles, 2 de diciembre de 2015

JComboBox en Java

Un JComboBox es una caja de opciones que podemos añadir a nuestras aplicaciones para que el usuario final pueda elegir lo que mas le guste o interese.

En una pequeña introducción a JComboBox vamos a crear una ventana y dentro vamos a poner el JComboBox. 

El JComboBox de este primer post es bastante sencillo, sin ninguna opción ni nada para que veáis cómo es, en post sucesivos iremos viendo lo fácil que es añadirle más opciones, que cada opción haga lo que queramos, etc.

Os dejo primero una captura de pantalla para que veáis que aspecto tiene y seguidamente os dejo el código fuente para que lo uséis y podáis experimentar y así aprender y asimilar mejor cómo se usa JComboBox. En la imagen el JComboBox está desplegado, he hecho clic en la flecha y se ha abierto, no tiene ninguna opción ni nada porque es un JComboBox básico.

JComboBox en Java
JComboBox en una ventana en Java

Ahora os dejo el código fuente listo para que lo copiéis y podáis usar sin ningún problema:



import javax.swing.UIManager.LookAndFeelInfo;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
import javax.swing.border.Border;
import javax.swing.*;


public class GUI_project extends JFrame {


private JComboBox combobox1;

//Constructor 
public GUI_project(){

this.setTitle("JuegoSoftware.com");
this.setSize(500,400);

//pane with null layout
JPanel contentPane = new JPanel(null);
contentPane.setPreferredSize(new Dimension(500,400));
contentPane.setBackground(new Color(192,192,192));


combobox1 = new JComboBox();
combobox1.setBounds(79,81,120,40);
combobox1.setBackground(new Color(214,217,223));
combobox1.setForeground(new Color(0,0,0));
combobox1.setEnabled(true);
combobox1.setFont(new Font("sansserif",0,12));
combobox1.setVisible(true);

//adding components to contentPane panel
contentPane.add(combobox1);

//adding panel to JFrame and seting of window position and close operation
this.add(contentPane);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.pack();
this.setVisible(true);
}

public static void main(String[] args){
System.setProperty("swing.defaultlaf", "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
new GUI_project();
}
});
}

}



Cualquier cosa podéis ponerla en los comentarios (buena, mala, buenísima, malísima, etc jajajaj)

martes, 24 de noviembre de 2015

Cosas que necesitamos para crear un Juego en Java

Crear un juego en Java es más fácil de lo que creemos, en este post vamos a ver las cosas que necesitamos antes de empezar a hacerlo.

Vamos a hacerlo cómo con una lista para que lo entendamos mejor:

1º- Necesitamos una idea, saber lo que queremos hacer, quizás lo más difícil de todo. A la hora de pensar cómo será nuestro juego, que tendrá, de que forma, etc, es donde podemos tener los problemas mas grandes.

2º- Una vez que ya sabemos que queremos hacer lo que nos hace falta es el sitio donde hacerlo, nos hace falta un IDE que no es ni más ni menos que un sitio para programar. Para Java yo siempre recomiendo Bluej que es muy sencillo y nos sirve para poder aprender, si ya somos usuarios más avanzados y queremos algo más completo recomiendo usar Eclipse

3º- Una vez que ya sabemos que tenemos que hacer y donde lo vamos a hacer lo que tenemos que hacer es cómo un diseño del juego, diferenciar la parte lógica de la parte gráfica del juego. En Bluej es bastante sencillo, tendríamos que crear unas clases que se encargarían de los personajes, escenario, etc y luego otra que se encargaría de la parte gráfica, de crear la ventana, poner las imágenes etc.

4º- Programar todo lo que hemos pensado en la parte anterior, sería el momento de crear el código, que si sabemos programar es lo mas sencillo, pero si no sabemos basta con ir siguiendo está página y muchos post anteriores donde vamos haciendo muchas cosas que nos pueden servir para crear un juego.

5º- Probar que todo funcione bien y listo, ya tenemos nuestro juego!!


Siguiendo estos pequeños consejos veréis cómo es muy sencillo crear un juego en Java, muy pronto espero poder hacer uno sencillo y ponerlo aquí en la página con todo su código fuente para que lo podáis ver, analizar, modificar, etc, ya que viendo ejemplos es cómo mejor se aprenden y entienden las cosas.

Cualquier pregunta, comentario, crítica, chiste o lo que sea jajaja, no dudéis en ponerlo en los comentarios.


jueves, 19 de noviembre de 2015

Pseudocódigo

En programación podemos definir pseudocódigo cómo "una forma de escribir código, pero sin ser código realmente". 

El pseudocódigo sería cómo código escrito con lenguaje de andar por casa para facilitar su lectura y poder ver mejor estructuras, funciones, métodos, etc para posteriormente pasarlo a código real en el lenguaje que queramos. 

Esa es una de las grandes ventajas que tiene utilizar pseudocódigos a la hora de realizar un gran proyecto, un programa escrito en pseudocódigo debe ser fácilmente traducible a un lenguaje de programación por personas que sepan esos lenguajes.

Por todo ello, un ingeniero de software puede "crear", por así decirlo, el proyecto y luego son los programadores los que lo traducen al lenguaje necesario.


Un ejemplo de pseudocódigo sería el siguiente:

fun RecProfundidad (v: nodo, visitado: Vector)
     var
          w:nodo
     fvar
     
     visitado[v]<--cierto

     para cada w adyacente a v hacer
          si no visitado [w] entonces
                      RecProfundidad(w, visitado)
          fsi
     fpara
ffun


Cómo vemos es una función que se puede utilizar para recorrer grafos, matrices, vectores, etc, pero que no está en ningún lenguaje específico de programación, cómo he dicho antes está cómo en lenguaje de andar por casa para que se entienda fácilmente y así podamos traducirlo al lenguaje que queramos.

Si tenéis alguna duda o queréis profundizar más sobre pseudocódigo no dudéis en ponerlo en los comentarios.


miércoles, 4 de noviembre de 2015

Cuadro de Texto con JTextArea en Java

Vamos a ver lo fácil que es añadir a nuestras ventanas un cuadro de texto utilizando para ello JTextArea.

Para comenzar, lo primero que tenemos que hacer es tener la ventana en la que queremos poner nuestro cuadro de texto. Aunque abajo tenéis el código fuente completo de la ventana ya con el cuadro de texto sería recomendable que mirarais Crear una Ventana en Java con Bluej, una vez que tengáis claro cómo se hace la ventana y cómo se le pueden añadir elementos basta con añadir unas pocas líneas de código para insertarle el cuadro de texto.

En concreto las líneas que nos van a permitir crear y dar características a nuestro cuadro de texto son las siguientes:

Para crearlo:

private JTextArea textarea1;


Para modificar sus características a nuestro antojo:

textarea1 = new JTextArea();
textarea1.setBounds(81,66,150,100);
textarea1.setBackground(new Color(255,255,255));
textarea1.setForeground(new Color(0,0,0));
textarea1.setEnabled(true);
textarea1.setFont(new Font("sansserif",0,12));
textarea1.setText("JuegoSoftware.com");
textarea1.setBorder(BorderFactory.createBevelBorder(1));
textarea1.setVisible(true);


Y finalmente para añadirlo al panel que contiene la ventana:

contentPane.add(textarea1);


Cómo veis sólo son 11 líneas de código las que nos costará añadir un cuadro de texto a nuestra aplicación. 

Os dejo una captura de pantalla para que veáis cómo queda y debajo ya os pongo el código completo de la ventana con el cuadro de texto:

JTextArea en Bluej
Cuadro de Texto con JTextArea

Código Fuente:

import javax.swing.UIManager.LookAndFeelInfo;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
import javax.swing.border.Border;
import javax.swing.*;


public class GUI_project extends JFrame {

private JTextArea textarea1;

//Constructor 
public GUI_project(){

this.setTitle("GUI_project");
this.setSize(500,400);

//pane with null layout
JPanel contentPane = new JPanel(null);
contentPane.setPreferredSize(new Dimension(500,400));
contentPane.setBackground(new Color(192,192,192));


textarea1 = new JTextArea();
textarea1.setBounds(81,66,150,100);
textarea1.setBackground(new Color(255,255,255));
textarea1.setForeground(new Color(0,0,0));
textarea1.setEnabled(true);
textarea1.setFont(new Font("sansserif",0,12));
textarea1.setText("JuegoSoftware.com");
textarea1.setBorder(BorderFactory.createBevelBorder(1));
textarea1.setVisible(true);

//adding components to contentPane panel
contentPane.add(textarea1);

//adding panel to JFrame and seting of window position and close operation
this.add(contentPane);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.pack();
this.setVisible(true);
}

public static void main(String[] args){
System.setProperty("swing.defaultlaf", "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
new GUI_project();
}
});
}

}



Cualquier cosa ya sabéis, a los comentarios sin dudarlo ;)

domingo, 1 de noviembre de 2015

Poner una etiqueta en Java con JLabel

En este post vamos a poner una etiqueta en una ventana usando JLabel.

Las etiquetas sirven para poner comentarios, identificar ciertos elementos, poner la versión en una esquina, o para cualquier otra cosa que se nos ocurra.

Aquí vamos a poner el código completo de una ventana con una etiqueta usando JLabel. Es muy sencillo y una vez que tenemos la ventana (Crear una Ventana en Java con Bluej) basta con añadir las siguientes líneas de código:

Para crear nuestra etiqueta de nombre label1:

private JLabel label1;  



Para inicializar la etiqueta y otorgarle sus características (que podemos modificar a nuestro gusto):


label1 = new JLabel();
label1.setBounds(150,82,90,35);
label1.setBackground(new Color(214,217,223));
label1.setForeground(new Color(0,0,0));
label1.setEnabled(true);
label1.setFont(new Font("sansserif",0,12));
label1.setText("Etiqueta");
label1.setVisible(true);



Para añadirla al panel (en este caso es un panel, pero se puede añadir a muchísimos objetos más):

contentPane.add(label1);


Con estas líneas ya tenemos lista nuestra etiqueta para poder usarla, os pongo una imagen para que veáis cómo queda con esas características que le hemos puesto:

JLabel con Bluej
Etiqueta en Java con JLabel

Y finalmente aquí os dejo el código completo. Está suficientemente comentado pero cualquier cosa no dudéis en ponerla en los comentarios.




Código Fuente:



import javax.swing.UIManager.LookAndFeelInfo;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
import javax.swing.border.Border;
import javax.swing.*;


public class GUI_project extends JFrame {

private JLabel label1;

//Constructor 
public GUI_project(){

this.setTitle("JuegoSoftware.com");
this.setSize(500,400);
//pane with null layout
JPanel contentPane = new JPanel(null);
contentPane.setPreferredSize(new Dimension(500,400));
contentPane.setBackground(new Color(192,192,192));


label1 = new JLabel();
label1.setBounds(150,82,90,35);
label1.setBackground(new Color(214,217,223));
label1.setForeground(new Color(0,0,0));
label1.setEnabled(true);
label1.setFont(new Font("sansserif",0,12));
label1.setText("Etiqueta");
label1.setVisible(true);

//adding components to contentPane panel
contentPane.add(label1);

//adding panel to JFrame and seting of window position and close operation
this.add(contentPane);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.pack();
this.setVisible(true);
}

public static void main(String[] args){
System.setProperty("swing.defaultlaf", "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
new GUI_project();
}
});
}

}




viernes, 30 de octubre de 2015

Poner un botón en una ventana en Java

En esta entrada os traigo el código para que podamos poner un botón o todos los que queramos en nuestras ventanas.

En este primer post vamos a crear la ventana usando lo que ya vimos en Crear una Ventana y veremos lo fácil que es, con unas pocas líneas de código, añadirle un botón. 

Vamos a añadir el botón en una posición determinada y de una forma determinada pero todavía no le vamos a añadir ninguna función, es decir, haremos clic sobre él pero no pasará nada. En post sucesivos iremos viendo como añadirle funciones y mas aspectos de personalización.

Primero os dejo una captura de pantalla de cómo queda la ventana con el botón:

ventana con botón en java con bluej
Botón en Java con Bluej


Cómo vemos es un botón normal de nombre Button1, pero cómo veremos en posteriores post lo podremos poner en 3D, cambiar de color, nombre, tamaño, forma, añadir funciones, tipo de letra del nombre, etc.

Ahora os dejo el código de la ventana y el botón conforme están en la imagen anterior:


Código Fuente:

import javax.swing.UIManager.LookAndFeelInfo;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
import javax.swing.border.Border;
import javax.swing.*;


public class GUI_project extends JFrame {

private JButton button1;

//Constructor 
public GUI_project(){

this.setTitle("JuegoSoftware.com");
this.setSize(500,400);
//pane with null layout
JPanel contentPane = new JPanel(null);
contentPane.setPreferredSize(new Dimension(500,400));
contentPane.setBackground(new Color(192,192,192));


button1 = new JButton();
button1.setBounds(33,41,314,188);
button1.setBackground(new Color(214,217,223));
button1.setForeground(new Color(0,0,0));
button1.setEnabled(true);
button1.setFont(new Font("sansserif",0,12));
button1.setText("Button1");
button1.setVisible(true);

//adding components to contentPane panel
contentPane.add(button1);

//adding panel to JFrame and seting of window position and close operation
this.add(contentPane);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.pack();
this.setVisible(true);
}

public static void main(String[] args){
System.setProperty("swing.defaultlaf", "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
new GUI_project();
}
});
}

}




El código está suficientemente comentado pero si tenéis alguna duda o no sabéis para que se usa alguna cosa no dudéis en ponerlo en los comentarios.

Saludos a tod@s!!


domingo, 25 de octubre de 2015

Entrenamiento de Series en Suunto Ambit3

El Suunto Ambit3 permite la creación de Apps para poder "modificarlo" y "personalizarlo" a nuestros gustos.

Aquí os traigo el código fuente para que podáis crear una app de un entrenamiento de series, un interval training. En concreto se trata de un entrenamiento que consiste en lo siguiente:

1km+1000x4/0'5km+1km

Es 1km de calentamiento, 4 series de 1km con 0'5km de descanso entre ellas y finalizar con 1km de vuelta a la calma.

Lo único que tenéis que hacer es entrar en movescount, app designer y pegar el código fuente que os pongo aquí abajo. Una vez hecho eso ya tendréis vuestra app lista para usar en cualquier modo de deporte que queráis.

Si queréis alguna modificación cómo poner más series, más descanso entre ellas, más calentamiento etc, decirlo en los comentarios y con mucho gusto os pondré el código. Si tenéis alguna duda de cómo funciona decirlo también y os lo explicaré con mucho gusto.

Saludos a tod@s!!


Código de la App:

/* Duration App */
/* Series 1000 */

/* Initialize variables */
if (SUUNTO_DURATION == 0) {
  RESULT = 0;
}

/* Lap 1 is step type WarmUp with duration type Distance */
if (SUUNTO_LAP_NUMBER == 1) {
  prefix = "wu";
  postfix = "m";
  RESULT = 1000 - (SUUNTO_LAP_DISTANCE * 1000);
}

/* Lap 2, 4, 6, 8 is step type Interval with duration type Distance */
if (SUUNTO_LAP_NUMBER == 2 || SUUNTO_LAP_NUMBER == 4 || SUUNTO_LAP_NUMBER == 6 || SUUNTO_LAP_NUMBER == 8) {
  prefix = "int";
  postfix = "m";
  RESULT = 1000 - (SUUNTO_LAP_DISTANCE * 1000);
}

/* Lap 3, 5, 7, 9 is step type Recovery with duration type Distance */
if (SUUNTO_LAP_NUMBER == 3 || SUUNTO_LAP_NUMBER == 5 || SUUNTO_LAP_NUMBER == 7 || SUUNTO_LAP_NUMBER == 9) {
  prefix = "rec";
  postfix = "m";
  RESULT = 500 - (SUUNTO_LAP_DISTANCE * 1000);
}

/* Lap 10 is step type CoolDown with duration type Distance */
if (SUUNTO_LAP_NUMBER == 10) {
  prefix = "cd";
  postfix = "m";
  RESULT = 1000 - (SUUNTO_LAP_DISTANCE * 1000);
}

/* Check if duration is reached */
if (RESULT < 0) {
  RESULT = 0;
  /* Alert that duration is reached */
  Suunto.alarmBeep();
}


lunes, 21 de septiembre de 2015

Cambiar el color de fondo de una ventana en Java

Vamos a ver cómo podemos cambiar el color a una ventana JFrame o a un panel JPanel en Java por un color predeterminado que nosotros queramos.

En publicaciones anteriores vimos lo fácil que era Crear una Ventana y también lo sencillo que era, una vez que teníamos la ventana, Poner una Imagen de Fondo. Hoy lo que vamos a hacer es cambiar el color de fondo por

jueves, 10 de septiembre de 2015

Instalar Extensiones en Bluej

Por su facilidad de uso y por su carácter académico Bluej es uno de mis IDEs favoritos para programar en Java. Hoy vamos a ver cómo podemos aumentar sus posibilidades al instalarle extensiones.

Una extensión es, cómo su propio nombre indica, una manera de extender y añadir más opciones a nuestro IDE.

Bluej al igual que otros IDEs también tiene la posibilidad de instalar extensiones de una manera muy sencilla. Lo único que tenemos que hacer es descargarlas y copiarlas en la carpeta extensions de donde tenemos instalado el Bluej. Una vez hecho esto ya podremos usar nuestra extensión igual que si fuera una parte más del propio Bluej.

Una de las extensiones que más éxito tiene es Simple GUI Extension que la podemos descargar desde la propia página de Bluej y que nos permite realizar interfaces gráficas de una forma bastante sencilla y sin muchas complicaciones, añadiendo así un toque gráfico a nuestros trabajos  de una manera más rápida y cómoda que si tuviéramos que escribir todo el código.

gui designer bluej
GUI designer to Bluej

Cómo veis en la captura de pantalla tiene un aspecto muy bueno y es muy fácil de usar dándole así a nuestro Bluej más posibilidades.

Por si fuera poco, además de ofrecernos la posibilidad de instalar extensiones cómo hemos visto, Bluej también nos permite la posibilidad de crear nuestras propias extensiones, pero eso ya lo dejaremos para más adelante.

Cualquier duda que tengáis no dudéis en ponerla en los comentarios.


miércoles, 9 de septiembre de 2015

Android Studio

Si estáis buscando un IDE para programar en Android, al igual que en otros lenguajes, tenemos infinidad de posibilidades a la hora de elegir cómo por ejemplo eclipse, visualStudio, etc. Hoy vamos a hablar aquí de Android Studio el IDE oficial de Android.

android studio logo
Android Studio Logo
Android Studio es el IDE desarrollado por Google para trabajar con Android, fue presentado el 16 de mayo de 2013 y desde entonces sustituye a Eclipse cómo IDE oficial de Android y ha ido evolucionando desde entonces para ofrecernos cada vez más posibilidades.

Las características que lo definen son las siguientes:

Posee renderización en tiempo real, tiene consola de desarrollador (estadísticas, consejos, ayuda, etc.), tiene refactorización especifica de Android y puede hacer arreglos rápidos, cuenta con plantillas para crear diseños comunes de Android y otros componentes, emulador perfecto que nos permite probar nuestras aplicaciones en cualquier tamaño o dispositivo, soporte para programar aplicaciones para Android Wear, etc.

Cómo vemos, cuenta con infinidad de herramientas que nos permitirán realizar nuestras aplicaciones Android sin ninguna limitación, el límite lo pondremos nosotros.

Otro punto muy a favor del uso de este IDE es que es compatible con todas las plataformas, lo podemos instalar en Windows, Mac, Linux, en máquinas de 32 bits, de 64, etc. Logrando así una grandísima versatilidad y comodidad de poder utilizarlo donde mejor nos convenga.

Además de todo esto cuenta con el respaldo de Google que con cada actualización le va añadiendo funciones y mejorando su rendimiento lo que le da un plus extra que otros IDEs no tienen.

Por todo ello si queréis empezar a programar en Android o si sois ya programadores avanzados no lo dudéis y probar Android Studio, no os arrepentiréis.