Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - JonaLamper

#281
Foro Libre / Re: wallpapers
8 Noviembre 2014, 13:23 PM
En 4chan también hay buenos wallpapers, sobre todo de anime.
#282
Java / Re: Duda Java (para noob)
8 Noviembre 2014, 13:20 PM
Ya que estamos, continuo con este thread. No me gusta que el foro se llene porque sí.

Esta vez es algo más complejo (todo el mundo avanza  ;D). Realmente no sé cómo poner esto, porque yo lo manejo con un proyecto en eclipse, así que intentaré que quede claro.

Como veis, es un 4 en raya. Ahora mismo inserto fichas (solo del color BLANCA para probar) en una matriz, así de simple. El problema que tengo es que no sé porqué me ejecuta dos veces el while. Es como si en la clase Controlador, el comando = in.nextLine(); cogiera el espacio en blanco que hay después de la pregunta "¿Que quieres hacer?" y claro, dice: ¡Comando incorrecto!. Pero después de vuelve a ejecutar ese mismo while, y esta vez sí se para al realizar la pregunta "¿Que quieres hacer?".

Entonces, ¿por qué la primera vez no se para y la segunda vez sí se para?  :(

Estructura:

paquete control:
     - Clase Controlador
paquete logica:
     - Clase Partida
     - Clase Tablero
paquete main:
     - Clase Main

Código:

Código (java) [Seleccionar]
package control;

import logica.Tablero;
import logica.Partida;
import java.util.Scanner;

public class Controlador {
//Método para los saltos de línea
public static String nuevalinea = System.getProperty("line.separator");
//Método para esperar X tiempo
public void esperar () {
try {
//Esperaremos 2 segundos para que el usuario vea qué tipo de instrucciones están ejecutándose
Thread.sleep (1*2000);
} catch (Exception e) {
}
}

private Partida partida;
private Scanner in;
private boolean fin;


public Controlador (Partida partida, Scanner in){
this.partida = partida;
this.in = in;
this.fin = false;
}

public void run(){

while (!fin){
//muestra turno
System.out.println(partida);
System.out.print("¿Que quieres hacer? ");
String comando;
comando = in.nextLine();

if(comando.equalsIgnoreCase("PONER")) {
System.out.print("Introduzca la columna: ");
int c = in.nextInt();
System.out.println(nuevalinea);
boolean mov = this.partida.ejecutaMovimiento(c);
}

/* else if (comando.equalsIgnoreCase("DESHACER")) {

boolean undo = this.partida.undo();
if (undo = false){
System.out.print("¡No es posible deshacer!");
}
}*/

else if (comando.equalsIgnoreCase("REINICIAR")) {
System.out.println("Reseteando el Juego..." + nuevalinea);
esperar();
this.partida.reset();
}

else if (comando.equalsIgnoreCase("SALIR")) {
System.out.println("Saliendo..." + nuevalinea);
fin = true;
}

else {
System.out.println("¡Comando incorrecto!");
}
}
}
}



Código (java) [Seleccionar]
package logica;
import logica.Tablero.FICHA;

public class Partida {
private FICHA turno;
private Tablero tablero;
private boolean terminada;
/* private int[] undo;
private int indexUndo;*/
public final static int FILAS = 6;
public final static int COLUMNAS = 6;


public Partida(){
  this.tablero = new Tablero(FILAS,COLUMNAS);
}


public String toString(){
return this.tablero.toString();
}

public boolean partidaTerminada(){
return false;
}

public boolean ejecutaMovimiento(int c){
if (c <= FILAS) {
//Habría que poner la ficha referente al turno del jugador, he puesto la blanca solo para ver como funcionaría
this.tablero.ponFicha(2,c,FICHA.BLANCA);
//if (this.partida.partidaTerminada()) exit = true;
return true;
} else
return false;
}

public void reset(){
this.tablero = new Tablero(FILAS, COLUMNAS);
}

/* public boolean undo(){

}*/

private void buscarFila(){

}

private void comprobar(){

}
}



Código (java) [Seleccionar]
package logica;
import logica.Partida;

public class Tablero {
public enum FICHA {VACIA, BLANCA, NEGRA};
private int alto; //número de filas del tablero
private int ancho; //número de columnas del tablero
private FICHA[][] tablero;  //array tipo FICHA

public String toString() {
String s = "";
for (int x = Partida.FILAS-1; x >= 0; x--) {
for (int y = 0; y < Partida.COLUMNAS; y++) {
if (this.tablero[x][y] == FICHA.VACIA)  s=s+"O ";
else if (this.tablero[x][y] == FICHA.BLANCA) s=s+"B ";
else s= s + "N ";
}
s=s+System.getProperty("line.separator");
}
return s;
}

public Tablero(int nf, int nc) {
this.tablero = new FICHA[nf][nc];
this.ancho = nc;
this.alto = nf;
for (int x = 0; x < nf; x++) {
for (int y = 0; y < nc; y++) {
this.tablero[x][y] = FICHA.VACIA;
}
}
}


public void ponFicha(int f, int c, FICHA ficha) {
//c-1 se pone porque el array empieza en la columna 0
for (int x = 0; x <= Partida.FILAS; x++) {
//este bucle empieza a buscar la primera posición VACIA (de abajo a arriba) en la columna que hayas seleccionado,
//y coloca la ficha BLANCA en dicha posición
if (this.tablero[x][c-1] == FICHA.VACIA) {
this.tablero[x][c-1] = ficha;
//el break corta la ejecución del bucle
break;
}
}

}

public FICHA colorFicha() {
return FICHA.VACIA;
}

public FICHA getFicha(int f, int c) {
//devuelve la ficha en la posicion (f, c)
return this.tablero[f][c];
}

public boolean completo() {
//devuelve true solo si el tablero esta completo
//contador!!!
return false;
}

}



Código (java) [Seleccionar]
package main;
import java.util.Scanner;

import control.Controlador;
import logica.Partida;


     public class Main {
        private static Scanner in = new Scanner(System.in);

        public static void main(String[] args) {
        Partida partida = new Partida();
        Controlador c = new Controlador(partida,in);
        c.run();
        }
     }



Resultado:


#283
Foro Libre / Re: wallpapers
8 Noviembre 2014, 08:41 AM
#284
Foro Libre / Re: Conoces el nombre de esta melodia?
7 Noviembre 2014, 23:19 PM
No la conocía, bien bonita es.

Qué bueno, en la wiki pone que la compuso el Rey Enrique VIII de Inglaterra para su amante y futura reina Ana Bolena  :o
#285
Foro Libre / Re: ¿qué matrial irradia mas calor?
6 Noviembre 2014, 22:33 PM
Ah, pues ahora me ha entrado la curiosidad, cuál es el material que menos absorbe?
#286
Foro Libre / Re: ¿qué matrial irradia mas calor?
6 Noviembre 2014, 22:00 PM
Es decir, que la plata es el material que menos frecuencia del espectro electromagnético absorbe, no?
#287
Java / Re: Duda Java (para noob)
6 Noviembre 2014, 00:41 AM
NPE?
#288
Java / Re: Duda Java (para noob)
5 Noviembre 2014, 12:26 PM
Lo mismo pero más sencillo. Ahora intento meter en la posición 0,0 del array la palabra "hola" a traves del método setArray para después imprimirlo.

Código (java) [Seleccionar]
package ArrayVACIA;

public class Main {
private String[][] array;
/* private final static int filas = 6;
private final static int columnas = 6;*/

public static void main(String[] args) {
Main ob = new Main();
ob.setArray();
System.out.println(ob.array[0][0]);
}

public void setArray() {
this.array[0][0] = "hola";
}
}


El error:

Exception in thread "main" java.lang.NullPointerException
   at ArrayVACIA.Main.setArray(Main.java:15)
   at ArrayVACIA.Main.main(Main.java:10)

-----------------------------------------------------------------------------------------------------

Me descargué estos dos libros:

- Fundamentos de programación de java, Jorge Martínez Ladrón de Guevara.
- Aprenda java como si estuviera en primero, un puñado de escritores.

Tengo pendiente de leer esto que tiene buena pinta: http://programacion.net/articulo/tutorjava_nivel_basico_97/61

E hice estos ejercicios: http://puntocomnoesunlenguaje.blogspot.com.es/p/ejercicios.html
#289
Java / Re: Duda Java (para noob)
5 Noviembre 2014, 11:19 AM
Lo pongo aquí para no abrir otro hilo:

Quiero hacer un array bidimensional de String e inicializarlo a con el valor "0" a través de su constructora, pero... no me sale :(

Código (java) [Seleccionar]
package ArrayVACIA;

public class Main {
private String[][] array;
private final int filas = 6;
private final int columnas = 6;

public static void main(String[] args) {
Main objeto = new Main();
System.out.println(objeto.array);
}

private Main() {
for (int i=0; i <= this.filas; i++) {
for (int j=0; j <= this.columnas; j++) {
this.array[i][j] = "0";
}
}
}
}



¿Dónde estoy fallando?
#290
Foro Libre / Re: Tierra plana: teoria y práctica
5 Noviembre 2014, 11:15 AM
*Viendo el hilo: Tierra plana: teoria y práctica*


Mensajes similares

- Tarifa plana :(
- 902 a precio de tarifa plana
- Pantalla a piezas plana...
- tarifa plana iphone












:rolleyes: