De haber sabido que tenias una grave enfermedad, habríamos de alguna forma devuelto la mano, descanza en paz, dejas un gran legado a futuros programadores, ojala algun dia pueda ser como tú...adios
@@dajuvaja Gracias, que pena para todos los estudiantes de programación, no sabia de su enfermedad, pero fue todo rápido según he visto, tal vez se haya golpeado en su rodilla que le causó la enfermedad, que gran perdida, particularmente no encontré un profesor que explica como él, si tiene algún nombre puede publicar por favor. gracias
Lo que este joven explica es sumamente entendible para cualquier aprendiz, mis felicitaciones. Una tristeza por la noticia, pero ha dejado un gran aporte a muchos programadores. Honraremos su memoria difundiendo este material para que llegue a muchas otras generaciones, la esencia esta ahí presente.
hola yo soy andres también soy programador y es la primera vez que entiendo la explicación de un lenguaje de manera clara y didáctica sigue así felicitaciones desde Colombia a broder
muy buen ejercicio, me hizo pensar por muchas horas pero al final logre llegar al resultado y aprender mucho. Descansa en paz Alejandro, fuiste y sos alto profesor.
ya debes ser muy bueno en el tema, si así es y deseo que así sea, te felicito, los esfuerzos traen sus resultados. si no ps, a veces la vida no es como queremos. Saludos.
Ejercicio 2: Construir un programa que permita dirigir el movimiento de un objeto dentro de un tablero y actualice su posición dentro del mismo. Los movimientos posibles son ARRIBA, ABAJO, IZQUIERDA y DERECHA. Tras cada movimiento el programa mostrará la nueva dirección elegida y las coordenadas de situación del objeto dentro del tablero. **Clase Movimiento** package Ejercicio2Movimiento; public class Movimiento { //Atributos private int x; private int y; //Metodos //Constructor public Movimiento(int x,int y){ this.x=x; this.y=y; } //Movimiento public void arriba(){ if(y!=0){ y-=1; } } public void abajo(){ if(y!=10){ y+=1; } } public void derecha(){ if(x!=0){ x-=1; } } public void izquierda(){ if(x!=10){ x+=1; } } //Getters public int getX(){ return x; } public int getY(){ return y; } } **Clase Main** package Ejercicio2Movimiento; import java.util.Scanner; public class Main { public static void main(String []args){ Scanner lector=new Scanner(System.in); Movimiento coord; int x,y; char tecla; System.out.println("Digita las coordenadas de inicio Digita X: "); x=lector.nextInt(); System.out.println("Digita Y: "); y=lector.nextInt(); coord=new Movimiento(x,y); do{ System.out.println("ARRIBA = W ABAJO = S DERECHA = A IZQUIERDA = D POSICION ACTUAL = V SALIR = X
Digita hacia donde quieres moverte: "); tecla=lector.next().charAt(0); switch(tecla){ case 'W': case 'w': coord.arriba(); System.out.println("ARRIBA"); System.out.println("x= "+coord.getX()+" y= "+coord.getY()+" "); break; case 'S': case 's': coord.abajo(); System.out.println("ABAJO"); System.out.println("x= "+coord.getX()+" y= "+coord.getY()+" "); break; case 'A': case 'a': coord.derecha(); System.out.println("DERECHA"); System.out.println("x= "+coord.getX()+" y= "+coord.getY()+" "); break; case 'D': case 'd': coord.izquierda(); System.out.println("IZQUIERDA"); System.out.println("x= "+coord.getX()+" y= "+coord.getY()+" "); break; case 'V': case 'v': System.out.println("POSICION ACTUAL"); System.out.println("x= "+coord.getX()+" y= "+coord.getY()+" "); break; default: System.out.println("Error: Accion no valida.
Cogí tú ejercicio como idea, llego un momento en que no podía seguir así que por eso lo cogí de ejemplo y le hice algunas modificaciones, pude comprender mejor el ejercicio. Gracias.
Esta fue mi forma de hacerlo, gracias Alejandro por tus clases, aunque ya no te encuentres con vida, nos sigues enseñando demasiado. package Tablero; public class Tablero { private final int Columna,Fila; private int x,y; private boolean bool=false; public Tablero(int Columna, int Fila, int x, int y) { this.Columna = Columna; this.Fila=Fila; this.x=x; this.y=y; } public int getColumna() { return Columna; }
public int getFila() { return Fila; } public int getX() { return x; } public int getY() { return y; }
public void MostrarPosicion(){ System.out.println("Te encuentras en la posición ("+x+","+y+")"); }
public boolean Movimiento(String mov){ switch(mov){ case "W": System.out.println("Te moviste arriba"); y=y-1; if(y==0){ y=Fila; } break; case "S": System.out.println("Te moviste abajo"); y=y+1; if(y==Fila+1){ y=1; } break; case "A": System.out.println("Te moviste a la izquierda"); x=x-1; if(x==0){ x=Columna; } break; case "D": System.out.println("Te moviste a la derecha"); x=x+1; if(x==Columna+1){ x=1; } break; default: System.out.println("Movimiento no reconocido, gracias por jugar"); bool=true; break; } return bool; }
Ejercicio #2 :D Clase 1: package ClasesYObjetos; public class Posicion { //Atributos private int ejeX; private int ejeY; //Metodos //Constructor public Posicion(int ejeX, int ejeY){ this.ejeX = ejeX; this.ejeY = ejeY; } //Mover hacia arriba public void moverArriba(){ ejeY += 1; System.out.println("DIRECCION HACIA ADELANTE"); System.out.println("POSICION: ("+ejeX+","+ejeY+")"); } //Mover hacia abajo public void moverAbajo(){ ejeY -= 1; System.out.println("DIRECCION HACIA ABAJO"); System.out.println("POSICION: ("+ejeX+","+ejeY+")"); } //Mover hacia derecha public void moverDerecha(){ ejeX += 1; System.out.println("DIRECCION HACIA DERECHA"); System.out.println("POSICION: ("+ejeX+","+ejeY+")"); } //Mover hacia arriba public void moverIzquierda(){ ejeX -= 1; System.out.println("DIRECCION HACIA IZQUIERDA"); System.out.println("POSICION: ("+ejeX+","+ejeY+")"); } //Getter posicion X public int getEjeX(){ return ejeX; } //Getter posicion Y public int getEjeY(){ return ejeY; } } Clase main: package ClasesYObjetos; import javax.swing.JOptionPane; public class Main { public static void main(String[] args){ //Variable char proximoMov = '0'; //Crear objeto con cordenadas iniciales x=0, y=0 Posicion objeto = new Posicion(0,0); System.out.println("POSICION INICIAL: ("+objeto.getEjeX()+","+objeto.getEjeY()+")"); while(proximoMov != 'E'){ //Identificar el proximo movimiento do { proximoMov = Character.toUpperCase(JOptionPane.showInputDialog("Ingrese el siguiente movimiento"+" "+"W-Adelante "+"S-Atras "+"A-Izquierda "+"D-Derecha "+"E-Salir ").charAt(0)); } while ((proximoMov !='W')&&(proximoMov !='A')&&(proximoMov !='S')&&(proximoMov !='D')&&(proximoMov !='E')); //Realizar el movimiento switch(proximoMov){ case 'W': objeto.moverArriba(); break; case 'S': objeto.moverAbajo(); break; case 'A': objeto.moverIzquierda(); break; case 'D': objeto.moverDerecha(); break; case 'E': System.out.println("Gracias por jugar!"); break; default: System.out.println("Movimiento no reconocido"); break; } } } }
amigo te felicito , pero no es POR despreciar ni por creerme mas simplemente hay un dicho que escuche del gran maestro Alvaro Felipe de EDteam ,es que si tienes mas de dos veces la misma linea de código significa que es una mala practica un programador , lo que tienes que hacer es simplificar (optimizar) y si eres ingeniero con mucha mas razón , tu programa esta chvr y me guié de tu lógica, lo acorte bastante espero te sirva , ÉXITOS
@@sr_tr un par de cosas, primero, el ejercicio dice que al final de cada movimiento se muestre en que direccion se hizo para guiar al usuario y la posicion actual. La segunda es el tema del codigo amigable, las variables de una sola letra sin ningun comentario que aclare que significan suelen estar mal vistas ya que si hicieras el proyecto con alguien mas, le resultaria imposible entender el codigo con solo verlo, al menos si fuera algo mas grande.
Hasta este día me entero que falleciste, eres un grande! Dios te tenga en la gloria. Descansa en paz. Gracias a tus vídeos estoy interesado cada día mas en la programación, eres una leyenda, nunca seras olvidado!
/* Ejercicio 2: Construir un programa que permita dirigir el movimiento de un objeto dentro de un tablero y actualice su posición dentro del mismo. Los movimientos posibles son ARRIBA, ABAJO, IZQUIERDA y DERECHA. Tras cada movimiento el programa mostrará la nueva dirección elegida y las coordenadas de situación del objeto dentro del tablero. */ package entidades; public class Objeto { private int ordenada; private int abscisa;
public Objeto(){ this.ordenada = 0; this.abscisa = 0; }
public void moverArriba(){ this.ordenada++; } public void moverAbajo(){ this.ordenada--; } public void moverIzquierda(){ this.abscisa--; } public void moverDerecha(){ this.abscisa++; }
@Override public String toString(){ return "Coordenadas actuales: ("+this.abscisa+", "+this.ordenada+")."; }
} package presentacion; import entidades.Objeto; import java.util.Scanner; public class PruebaObjeto { private static Scanner sc = new Scanner(System.in);
public static int menu(){ int op; do{ System.out.println("
MENU DE OPCIONES :D"); System.out.println("1. Ingresar movimiento(Arriba = W)(Abajo = S)(Izquierda = A)(Derecha = D)."); System.out.println("2. Salir"); System.out.print("Ingresar opcion: "); op = sc.nextInt(); }while(op2); return op; }
public static void main(String[] args) { Objeto o1 = new Objeto(); int opcion; char mov; do{ opcion = menu(); switch(opcion){ case 1: System.out.print("Ingresar movimiento: "); sc.nextLine(); mov = sc.nextLine().charAt(0); switch(mov){ case 'w','W': o1.moverArriba(); System.out.println(" Movimiento Ingresado: ARRIBA. "+o1.toString()); break; case 'a','A': o1.moverIzquierda(); System.out.println(" Movimiento Ingresado: IZQUIERDA. "+o1.toString()); break; case 's','S': o1.moverAbajo(); System.out.println(" Movimiento Ingresado: ABAJO. "+o1.toString()); break; case 'd','D': o1.moverDerecha(); System.out.println(" Movimiento Ingresado: DERECHA. "+o1.toString()); break; default: System.out.println(" Movimiento inválido."); } break; case 2: System.out.println(" Saliendo del programa..."); break; } }while(opcion != 2); } }
Excelente legado. Gracias.. Envió mi solución del ejercicio 2, incluye el tablero (matriz 10 x 10 lleno de 0) y el objeto dentro(un 1). Salio un poco extenso por limitar el movimiento dentro del tablero. Espero les sea de utilidad. package ClasesYObjetos; import javax.swing.JOptionPane; public class main2 { public static void main(String[] args) {
char mov='n'; int I=5; int J=5; boolean seguir = true; do { System.out.println("El objeto en el tablero:"); MovimientoTablero objeto = new MovimientoTablero(I,J,mov); I=objeto.gety(); J=objeto.getx(); System.out.println("Coordenadas del objeto: " + "X = "+(J+1)+" ; Y = "+(I+1));
mov=JOptionPane.showInputDialog("Seleccione el movimiento deseado: " + "ARRIBA: W " + "ABAJO: S " + "DERECHA: D " + "IZQUIERDA: A " + "SALIR: E").charAt(0); System.out.println("la tecla seleccionada es: "+mov);
if( mov=='e'|| mov=='E') { seguir= false; } }while(seguir==true ); } } package ClasesYObjetos; public class MovimientoTablero { private int x, y; // Coordenadas posicion private char movimiento; private int tablero[][]=new int[10][10]; // Tablero public MovimientoTablero(int i, int j, char mov) { y = i; x = j; movimiento = mov;
switch(movimiento) { //MODIFICA COORDENADAS SEGUN MOVIMIENTO INDICADO case 'W': case 'w': if (y=9) { break; } else { y++; } break; case 'D': case 'd': if (x>=9) { break; } else { x++; } break; case 'A': case 'a': if (x
Ejercicio 2: Construir un programa que permita dirigir el movimiento de un objeto dentro de un tablero y actualice su posición dentro del mismo. Los movimientos posibles son ARRIBA, ABAJO, IZQUIERDA y DERECHA. Tras cada movimiento el programa mostrará la nueva dirección elegida y las coordenadas de situación del objeto dentro del tablero Clase: public class Tablero {
private int filas=13;
private int columnas=13;
private int X=6;
private int Y=6; private int matriz [][]=new int [filas][columnas]; public void Matriz(){
for (int i = 0; i < filas; i++) { for (int j = 0; j < columnas; j++) {
matriz[i][j]=0;
} }
matriz[X][Y]=1;
for (int i = 0; i < filas; i++) { for (int j = 0; j < columnas; j++) {
GRACIAS SENSEI SEGUIMOS TU LEGADO PARTE LOGICA Construir un programa que permita dirigir el movimiento de un objeto dentro de un tablero y actualice su posición dentro del mismo Los movimientos posibles son ARRIBA, ABAJO, IZQUIERDA y DERECHA. Tras cada movimiento el programa mostrará la nueva dirección elegida y las coordenadas de situación del objeto dentro del tablero. */ public class PersonajeTablero2byme { private int ejeX; private int ejeY; public PersonajeTablero2byme(int ejeX, int ejeY) { this.ejeX = ejeX; this.ejeY = ejeY; } public void getArriba(){ int arriba=ejeY--; } public void abajo(){ int abajo=ejeY++; } public void izquierda(){ int izquierda=ejeX--; } public void derecha(){ int derecha=ejeX++; } public void resultado(){ System.out.println("personaje movido ahora tiene POSICION X:"+ejeX+ " POSICION Y: "+ejeY); } } CLASE MAIN public class MainPersonajeTablero2byme { public static void main(String[] args) { Scanner sc=new Scanner(System.in); PersonajeTablero2byme personaje = new PersonajeTablero2byme(0,0); //mitad del tablero String dondeMoverPersonaje; while(true){ System.out.println("escribe arriba, abajo, izq, derecha para mover el personaje o salir "); dondeMoverPersonaje=sc.nextLine().toLowerCase(); switch(dondeMoverPersonaje){ case "arriba": personaje.getArriba(); break; case "abajo": personaje.abajo(); break; case "izquierda": personaje.izquierda(); break; case "derecha": personaje.derecha(); break; case "salir": System.out.println("saliendo del programa...."); return; default: System.out.println("direccion no valida intentelo de nuevo"); } personaje.resultado(); } } }
Gente me rindo, estuve como una hora haciendo el ejercicio, funciona bien en movimientos, pero no se que falla en el while, bueno aqui lo dejo: METODO PRINCIPAL public class OK2 { public static void main(String[] args) { Scanner entrada=new Scanner(System.in); OK c1=new OK(); char posicion; System.out.print("Ingresa una letra: "); posicion=entrada.next().charAt(0); while(posicion=='w' || posicion=='a' || posicion=='s' || posicion=='d'){ switch(posicion){ case 'w':c1.arriba();break; case 's':c1.abajo();break; case 'a':c1.izquierda();break; case 'd':c1.derecha();break; default:System.out.println("No es correcto");break; } c1.mostrar(); System.out.print("Ingresa una letra: "); posicion=entrada.next().charAt(0); } } } AQUI LOS METODOS NORMALES public class OK { int x=0,y=0; public void derecha(){ x+=1; } public void izquierda(){ x-=1; } public void arriba(){ y+=1; } public void abajo(){ y-=1; }
public void mostrar(){ System.out.println("["+x+"] ["+y+"]"); }
Podrías haber explicado qué fallo le ves al while. A mi me va bien tu código. En todo caso en default no se necesita un break, pero funciona igual con él como sin él. Pues nada, que sepas que funciona bien, o al menos yo no le veo el fallo.
/* Construir un programa que permita dirigir el movimiento de un objeto dentro de un tablero y actualice su posicion dentro del mismo. Los movimientos posibles son ARRIBA, ABAJO, IZQUIERDA y DERECHA. Tras cada movimiento el programa mostrara la nueva direccion elegida y las coordenadas de situacion del objeto dentro del tablero. */ package pruebas;
import java.util.Scanner; import javax.swing.JOptionPane; public class Ejercicio { //atributos public int ejeX; public int ejeY;
//metodo constructor public Ejercicio(int ejeX, int ejeY) { this.ejeX = ejeX; this.ejeY = ejeY; }
public void moverArriba(){ ejeY+=1; System.out.println("DIRECCION: hacia adelante."); System.out.println("POSICION: ("+ejeX+";"+ejeY+")"); System.out.print(" Ingrese el siguiente movimiento: ");
}
public void moverAbajo(){ ejeY-=1; System.out.println("DIRECCION: hacia atras."); System.out.println("POSICION: ("+ejeX+";"+ejeY+")"); System.out.print(" Ingrese el siguiente movimiento: "); }
public void moverDerecha(){ ejeX+=1; System.out.println("DIRECCION: hacia la derecha."); System.out.println("POSICION: ("+ejeX+";"+ejeY+")"); System.out.print(" Ingrese el siguiente movimiento: "); }
public void moverIzquierda(){ ejeX-=1; System.out.println("DIRECCION: hacia la izquierda."); System.out.println("POSICION: ("+ejeX+";"+ejeY+")"); System.out.print(" Ingrese el siguiente movimiento: "); } //Getter posicion X public int getEjeX() { return ejeX; } //Getter posicion Y public int getEjeY() { return ejeY; }
} MAIN /* */ package pruebas; import java.util.Scanner; import javax.swing.JOptionPane; public class Pruebas {
public static void main(String[] args) { Scanner SC = new Scanner(System.in);
char movimiento=0; Ejercicio mov = new Ejercicio(0,0);
System.out.print("Ingrese el movimiento: ");
while(movimiento!='E'){ movimiento = SC.next().charAt(0); switch(movimiento){ case 'W': mov.moverArriba(); break; case 'S': mov.moverAbajo(); break; case 'D': mov.moverDerecha(); break; case 'A': mov.moverIzquierda(); break; case 'E': movimiento = 'E' ; break; default: System.out.println("Movimiento no reconocido"); System.out.print(" Ingrese el siguiente movimiento: ");
Ejercicio 2: HICE EL TABLERO CON UNA MATRIZ :) ////////////////////////CLASE OBJETO public class Objeto { private int x; private int y; private String desplazamiento;
public Objeto(int x, int y) { this.x = x; this.y = y; } public int arriba(){ y = y - 1; return y; }
public int abajo(){ y = y + 1; return y; }
public int derecha(){ x = x + 1; return x; }
public int izquierda(){ x = x - 1; return x; } public int getX() { return x; } public int getY() { return y; } public String getDesplazamiento() { return desplazamiento; } public void setDesplazamiento(String desplazamiento) { this.desplazamiento = desplazamiento; }
public void mostrarPosicion(){ System.out.println("Posición: Fila " + (y) + ", Columna: " + (x)); } } ///////////////////////CLASE PRINCIPAL import javax.swing.JOptionPane; public class Principal {
public static void main(String[] args) { int tablero[][] = new int[5][5];
//Definición de la posición incial int posy = Integer.parseInt(JOptionPane.showInputDialog("Digite la fila donde esta el objeto")); int posx = Integer.parseInt(JOptionPane.showInputDialog("Digite la columna donde esta el objeto")); Objeto obj1 = new Objeto(posx, posy);
mi hermano me harías un grande favor si abarcas los temas de los principios S.O.L.I.D, es algo que en mi curso en la universidad no vi y ahora lo estoy necesitando, no logro entenderlo muy bien. te agradecería mucho.
Aqui esta mi ejercicio, si no les funciona me avisan para que les explique como funciona package Ejercicio2; public class Movimiento { //atributos private int fila; private int columna; private int matriz[][];
//Metodos
//Metodo constructor
public Movimiento(int fila, int columna, int[][] matriz) { this.fila = fila; this.columna = columna; this.matriz = matriz; } public void PosActual(int a,int b) { for(int i=0;i
Ejercicio 2: package Ejercicio2; import javax.swing.*; public class Main { public static void main(String[] args) { //Matriz(tabla) de objetos por donde se desplazará Movimiento objeto[][] = new Movimiento[6][6]; //Variables de posición inicial del objeto int fila =2, col = 2; //Objeto a mover objeto[fila][col] = new Movimiento(fila, col); //Imprime la coordada inicial del objeto System.out.println("Coordenada inicial: [" + fila + "][" + col + "]"); //Menú de opciones para desplazarse, el ciclo finaliza hasta detectar el caracter 'Q' char a; do { a = JOptionPane.showInputDialog("Movimientos: W = Arriba S = Abajo A = Izquierda D = Derecha Q = Salir").charAt(0); a = Character.toUpperCase(a); //fil_aux y col_aux recordaran la última posición del objeto para borrarlo cuando cambie la posición int fil_aux = fila, col_aux = col; switch (a) { case 'W': fila = objeto[fila][col].arriba(); break; case 'S': fila = objeto[fila][col].abajo(); break; case 'A': col = objeto[fila][col].izquuierda(); break; case 'D': col = objeto[fila][col].derecha(); break; case 'Q': break; default: JOptionPane.showMessageDialog(null, "Opción no válida"); } //El objeto en la nuava posicón será igual al objeto antes del movimiento objeto[fila][col] = objeto[fil_aux][col_aux]; //Se comprueba que no se borre el objeto cuando llegue a los límites de la matriz para evitar que se pierdan los datos y genere un error if (fila != fil_aux || col != col_aux) objeto[fil_aux][col_aux] = null; }while (a!='Q'); } } package Ejercicio2; public class Movimiento { private int fila, col; public Movimiento(int fila, int col) { this.fila = fila; this.col = col; } public int arriba() { if (fila != 0) { fila--; } mensaje("ARRIBA"); return fila; } public int abajo() { if(fila != 5) { fila++; } mensaje("ABAJO"); return fila; } public int izquuierda() { if (col != 0) { col--; } mensaje("IZQUIERDA"); return col; } public int derecha() { if (col != 5) { col++; } mensaje("DERECHA"); return col; } //Imprime mensaje con las coordenadas actuales del objeto public void mensaje(String msj) { System.out.println(msj + ", coordenadas: [" + fila + "][" + col + "]"); } }
*PROBLEMA 2 DE FORMA SENCILLA* *CLASE1:* package paquete; import javax.swing.JOptionPane; public class Clase1 { private int x, y; private String decision = ""; private int bandera = 0; public Clase1(int x, int y) { this.x = x; this.y = y; } public void menu() { decision = JOptionPane.showInputDialog(null, "W. Para moverse arriba" + " S. Para moverse abajo" + " D. Para moverse a la derecha" + " A. Para moverse a la izquierda" + " X. Para salir"); } public void Operaciones() { if (decision.equals("W") || decision.equals("w")) { y = y + 1; } else if (decision.equals("S") || decision.equals("s")) { y = y - 1; } else if (decision.equals("D") || decision.equals("d")) { x = x + 1; } else if (decision.equals("A") || decision.equals("a")) { x = x - 1; } else if (decision.equals("X") || decision.equals("x")) { bandera = 1; } else { System.out.println("Opcion no disponible, vuelva a intentarlo"); } } public void mostrarResultados() { System.out.println("Se encuentra en x: " + x); System.out.println("Se encuentra en y: " + y); System.out.println(""); } public int getBandera() { return bandera; } } *CLASE MAIN:* package paquete; import javax.swing.JOptionPane; public class Main { public static void main(String[] args) { int x = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese la coordenada x en la que se encuentra")); int y = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese la coordenada y en la que se encuentra")); Clase1 ob1 = new Clase1(x, y); while (ob1.getBandera() == 0) { ob1.menu(); ob1.Operaciones(); ob1.mostrarResultados(); } } }
/* Ejercicio 2: Construir un programa que permita dirigir el movimiento de un objeto dentro de un tablero y actualice su posición dentro del mismo. Los movimientos posibles son ARRIBA, ABAJO, IZQUIERDA y DERECHA. Tras cada movimiento el programa mostrará la nueva dirección elegida y las coordenadas de situación del objeto dentro del tablero. */ package Ejercicio2; import javax.swing.JOptionPane; public class Movimiento { //Atributos
private static int x=0; private static int y=0;
//Metdodo
public Movimiento(int mov){
}
public int arriba(){ y++; return y; } public int abajo(){ y--; return y; } public int derecha(){ x++; return x; } public int izquierda(){ x--; return x;
}
public void nuevoMov(){ System.out.println("Ubicacion(x,y) = ("+x+":"+y+")");
}
} //EN UNA CLASE LO DE ARRIBA Y LO DE ABAJO EN OTRA package Ejercicio2; import javax.swing.JOptionPane; public class Principal { public static void main(String [] args){ int mov;
do{ mov = Integer.parseInt(JOptionPane.showInputDialog("Dijite un movimiento: " +" 1. Subir" +" 2. Bajar" +" 3. Derecha" +" 4. Izquierda" +" 5. Salir")); Movimiento auto = new Movimiento(mov);
switch(mov){ case 1: auto.arriba(); auto.nuevoMov(); break; case 2: auto.abajo(); auto.nuevoMov(); break; case 3: auto.derecha(); auto.nuevoMov(); break; case 4: auto.izquierda(); auto.nuevoMov(); break; default: System.out.println("Error no existe esa opcion"); }
Hay mas videos todavia sobre este curso aparte de los 105 publicados aca en you tube , los cursos que hay si funcionan y explicam completamente las bases de java ?
/* Construir un programa que permita dirigir el movimiento de un obvjeto dentro de un tablero y actualice su posicion dentro del mismo. Los movimientos posibles son ARRIBA, ABAJO, ISQUIERDA, y DERECHA. Tras cada movimiento el pograma mostrara la nueva direccion elegida y las coordenadas de situacion del objeto dentro del tablero. */ package ej2poo; import java.util.Scanner; import javax.swing.JOptionPane; public class Ej2POO { public static void main(String[] args) { auxiliar alfito=new auxiliar(0,0); Scanner ob=new Scanner(System.in); System.out.println("La posicion inicial del objeto es: "+"("+alfito.getEjeX()+")"+"("+alfito.getEjeY()+")"); int eleccion; String xd; do { System.out.print(" Hacia donde quiere mover el objeto? 1.-Arriba 2.-Abajo 3.-Izquierda 4.-Derecha "); eleccion = ob.nextInt(); switch (eleccion) { case 1: alfito.moverArriba(); break; case 2: alfito.moverAbajo(); break; case 3: alfito.moverIzquierda(); break; case 4: alfito.moverDerecha(); break; default: System.out.println("Movimiento no reconocido"); break; } xd = JOptionPane.showInputDialog("Desea hacer otro movimiento? s/n"); //Funciona con JOption, pero la ventana no aparece sino en el escritorio. //System.out.println("Desea hacer otro movimiento? s/n"); --- Aparentemente no funciona al capturar y se pasa directamente a finalizar el programa. //xd=ob.nextLine(); --- Parece que es debido a un problema con el Scanner, habr[ia que inevstigar mas. }while(xd.equalsIgnoreCase("s")); System.out.println("La posicion final del objeto es: "+"("+alfito.getEjeX()+")"+"("+alfito.getEjeY()+")"); }//Cierra el main }//Cierra la clase package ej2poo; public class auxiliar { private int ejeX; private int ejeY; public auxiliar(int ejeX, int ejeY) { this.ejeX = ejeX; this.ejeY = ejeY; }//Cierra el constructor public int getEjeX() { return ejeX; }//Cierra getterX public int getEjeY() { return ejeY; }//Cierra getterY public void moverArriba() { ejeY += 1; System.out.println("("+ejeX+")"+"("+ejeY+")"); }//Cierra metodo moverArriba public void moverAbajo() { ejeY -= 1; System.out.println("("+ejeX+")"+"("+ejeY+")"); }//Cierra metodo moverAbajo public void moverIzquierda() { ejeX -= 1; System.out.println("("+ejeX+")"+"("+ejeY+")"); }//Cierra metodo moverIzquierda public void moverDerecha() { ejeX += 1; System.out.println("("+ejeX+")"+"("+ejeY+")"); }//Cierra metodo moverDerecha }//Cierra la clase
//Para movernos abajo public void ABAJO(){ if(posY < columnas){ posY -= 1; } Coordenadas(); //imprimir coordenadas actuales } //Para movernos a la izquierda
public void IZQUIERDA(){ if(posX < filas){ posX -=1; } Coordenadas(); //imprimir coordenadas actuales } //Para movernos a la dereccha public void DERECHA(){ if(posX < filas){ posX = posX + 1; } Coordenadas(); //imprimir coordenadas actuales } //utilizamos este metodo para mostrar las coordenadas actuales de X y Y. public void Coordenadas(){ System.out.println("Las coodernadas son: "+(posX)+","+(posY)); }
} import java.util.Scanner; public class TableroMain { public static void main(String[] args) { Scanner sc = new Scanner(System.in);
int filas, columnas;
String direccion;
System.out.println("Digite la cantidad de filas(X): "); filas = sc.nextInt(); System.out.println("Digite la cantidad de columnas(Y): "); columnas = sc.nextInt();
//mandamos los argumentos para rellenar el metodo constructor de la clase Tablero tab = new Tablero(filas,columnas);
while(true) //Creamos un bucle infinito usando la condicion True dentro del bucle While { System.out.println("Digite la direccion el que se quiere mover: Arriba, Abajo, Izquierda, Derecha: " + "o Introd SALIR, para cerrar el programa. "); direccion = sc.next().toString();
///dentro del Switch ejecutamos los metodos de la clase Tablero usando El objeto tab switch(direccion){ case "Arriba": tab.ARRIBA(); break; case "Abajo": tab.ABAJO(); break; case "Izquierda": tab.IZQUIERDA(); break; case "Derecha": tab.DERECHA(); break; case "Salir": System.exit(0); break; default: System.out.println("Direccion no encontrada."); break; } } } }
Gracias Alejandro. Estes donde estes. Aqui la solucion que propongo. package Movimiento; import javax.swing.JOptionPane; public class Movimiento { private float posX; private float posY; public Movimiento(float posX, float posY) { this.posX = posX; this.posY = posY; } public float Arriba (float mov){ float nuepos = posY + mov; posY = nuepos; return nuepos; } public float Abajo (float mov){ float nuepos = posY - mov; posY = nuepos; return nuepos; } public float Derecha (float mov){ float nuepos = posX + mov; posX = nuepos; return nuepos; } public float Izquierda (float mov){ float nuepos = posX - mov; posX = nuepos; return nuepos; } public void Mostrarpos (){ JOptionPane.showMessageDialog(null, "La posicion actual es: "+posX+" , "+posY); } } //Clase Main import javax.swing.JOptionPane; public class Main { public static void main (String [] args){ float posX, posY, mov; char dir; posX = Float.parseFloat(JOptionPane.showInputDialog("Ingrese la posicion incial del objeto en la posicion X")); posY = Float.parseFloat(JOptionPane.showInputDialog("Ingrese la posicion incial del objeto en la posicion Y")); Movimiento ob1 = new Movimiento(posX, posY); ob1.Mostrarpos(); dir = JOptionPane.showInputDialog("En que direccion se quiere mover. -Arriba presione W -Abajo presione S -Derecha presiode D -Izquierda presione A -Salir presione F").charAt(0); while (dir!='F' && dir!='f'){ switch (dir){ case 'W': case 'w': mov = Float.parseFloat(JOptionPane.showInputDialog("Cuantas posiciones se va a mover hacia arriba")); ob1.Arriba(mov); ob1.Mostrarpos(); dir = JOptionPane.showInputDialog("En que direccion se quiere mover. -Arriba presione W -Abajo presione S -Derecha presiode D -Izquierda presione A -Salir presione F").charAt(0); break; case 'S': case 's': mov = Float.parseFloat(JOptionPane.showInputDialog("Cuantas posiciones se va a mover hacia abajo")); ob1.Abajo(mov); ob1.Mostrarpos(); dir = JOptionPane.showInputDialog("En que direccion se quiere mover. -Arriba presione W -Abajo presione S -Derecha presiode D -Izquierda presione A -Salir presione F").charAt(0); break; case 'D': case 'd': mov = Float.parseFloat(JOptionPane.showInputDialog("Cuantas posiciones se va a mover hacia la derecha")); ob1.Derecha(mov); ob1.Mostrarpos(); dir = JOptionPane.showInputDialog("En que direccion se quiere mover. -Arriba presione W -Abajo presione S -Derecha presiode D -Izquierda presione A -Salir presione F").charAt(0); break; case 'A': case 'a': mov = Float.parseFloat(JOptionPane.showInputDialog("Cuantas posiciones se va a mover hacia la Izquierda")); ob1.Izquierda(mov); ob1.Mostrarpos(); dir = JOptionPane.showInputDialog("En que direccion se quiere mover. -Arriba presione W -Abajo presione S -Derecha presiode D -Izquierda presione A -Salir presione F").charAt(0); break; default: JOptionPane.showMessageDialog(null,"Ha escrito una letra invalida"); ob1.Mostrarpos(); dir = JOptionPane.showInputDialog("En que direccion se quiere mover. -Arriba presione W -Abajo presione S -Derecha presiode D -Izquierda presione A -Salir presione F").charAt(0); } } JOptionPane.showMessageDialog(null,"Ha salido del programa"); } }
Aqui el ejercicio 2, pidiendole al usuario las coordenadas iniciales y el maximo que pueden alcanzar. /* Ejercicio 2: Construir un programa que permita dirigir el movimiento de un objeto dentro de un tablero y actualice su posición dentro del mismo. Los movimientos posibles son ARRIBA, ABAJO, IZQUIERDA y DERECHA. Tras cada movimiento el programa mostrará la nueva dirección elegida y las coordenadas de situación del objeto dentro del tablero.*/ ** CLASS MOVER ** package Mover; /** * * @author Miguel Paredes */ public class Mover { //Atributos
private int x; private int y;
//Atributos que me sirven para controlar hasta donde puede llegar las coordenadas private int maxx; private int maxy;
//Getters public int getX() { return x; } public int getY() { return y; }
} ** CLASS MAIN ** /* * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template */ package Mover; import java.util.Scanner; import javax.swing.JOptionPane; /** * * @author Miguel Paredes */ public class Main { public static void main(String[] args) { int x,y,maxx,maxy; char tecla; Scanner input = new Scanner (System.in); maxx=Integer.parseInt(JOptionPane.showInputDialog("Digite el valor maximo de la coordenada x: ")); maxy=Integer.parseInt(JOptionPane.showInputDialog("Digite el valor maximo de la coordenada y: "));
x=Integer.parseInt(JOptionPane.showInputDialog("Digite el valor inicial de la coordenada x: ")); y=Integer.parseInt(JOptionPane.showInputDialog("Digite el valor inicial de la coordenada y: "));
Mover movil1 = new Mover(x,y,maxx,maxy);
do{ System.out.println("W para moverse arriba, S para moverse abajo, A para moverse" + " a la izquierda" + ", D para moverse a la derecha. Presione 'e' para salir" ); tecla=input.next().charAt(0);
switch(tecla){ case 'w': movil1.up(); break;
case 's': movil1.down(); break; case 'a': movil1.left(); break; case 'd': movil1.right(); break; } System.out.println("Coordenada actual ( "+movil1.getX()+" , "+movil1.getY()+" )"); } while(tecla!='e'); } }
Ejercicio No. 2: Clase 1: package ejercicio2; public class Tablero { //Atributos: private static int coordX = 0; private static int coordY = 0; private String mov; public Tablero(String mov) { this.mov = mov; } public int getCoordY() { if (mov.equalsIgnoreCase("w")) { coordY++; } else if (mov.equalsIgnoreCase("s")) { coordY--; } return coordY; } public int getCoordX() { if (mov.equalsIgnoreCase("a")) { coordX--; } else if (mov.equalsIgnoreCase("d")) { coordX++; } return coordX; } public void setCoord(String mov) { this.mov = mov; } } Clase 2: package ejercicio2; import javax.swing.JOptionPane; public class Main { public static void main(String[] args) {
char des;
do { String movimiento = JOptionPane.showInputDialog("Ingrese el tipo de movimiento que desea" + " realizar: W ==> Arriba S ==> Abajo A ==> Izquierda D ==> Derecha"); if(movimiento.equalsIgnoreCase("w") || movimiento.equalsIgnoreCase("s") || movimiento.equalsIgnoreCase("a") || movimiento.equalsIgnoreCase("d")){ System.out.println("Selección correcta."); } else { System.out.println("La selección es incorrecta."); }
Tablero t1 = new Tablero(movimiento); System.out.println("Coordenadas X: " + t1.getCoordX()); System.out.println("Coordenadas Y: " + t1.getCoordY()+" "); do{ des = JOptionPane.showInputDialog("¿Desea realizar un nuevo movimiento en " + "el tablero? V. si. F no.").charAt(0); if (des != 'v' && des != 'V' && des != 'f' && des != 'F') { JOptionPane.showMessageDialog(null, "Error, la opción ingresada es incorrecta"); } } while(des != 'v' && des != 'V' && des != 'f' && des != 'F');
} while (des == 'v' || des == 'V'); System.out.println("Saliendo..."); } }
public class Movimiento { private int x=1; private int y=1; public void arriba() { if(x==1) { System.out.println("Esta en el limite superior, no podra moverse hacia arriba"); }else { x-=1; System.out.println("Se ha movido hacia arriba"); System.out.println("Su posicion es: ["+x+"]["+y+"]"); } } public void abajo() { if(x==5) { System.out.println("Esta en el limite inferior, no podra moverse hacia abajo"); }else { x+=1; System.out.println("Se ha movido hacia abajo"); System.out.println("Su posicion es: ["+x+"]["+y+"]"); } } public void derecha() { if(y==5) { System.out.println("Esta en el borde derecho, pruebe otra direccion"); }else { y+=1; System.out.println("Se ha movido hacia la derecha"); System.out.println("Su posicion es: ["+x+"]["+y+"]"); } } public void izquierda() { if(y==1) { System.out.println("Esta en el borde izquierdo, pruebe otra direccion"); }else { y-=1; System.out.println("Se ha movido hacia la izquierda"); System.out.println("Su posicion es: ["+x+"]["+y+"]"); } } public static void main(String[] args) { Movimiento ob = new Movimiento(); char opcion; boolean fin = false; JOptionPane.showMessageDialog(null, "En una tabla de 5x5, usted se encuentra en la posicion [1][1] Intente moverse"); while(fin == false) { opcion = JOptionPane.showInputDialog("Digite una opcion w. Mover arriba " + "s. Mover abajo " + "d. Mover derecha " + "a. Mover izquierda " + "e. Salir del programa").charAt(0); switch(opcion) { case 'w': ob.arriba(); break; case 's': ob.abajo(); break; case 'd': ob.derecha(); break; case 'a': ob.izquierda(); break; case 'e': fin = true; break; default: System.out.println("La opcion es erronea"); } } } }
public void m_arriba() { y = y + num; } public void m_abajo() { y = y - num; } public void m_izquierdo() { x = x - num; } public void m_derecha() { x = x + num; } public void posición() { System.out.printf(" %10s " + "%10s%5d " + "%10s%5d
", "Posición Actual", "Posicion eje X : ", x, "Posición eje Y : ", y); } } package POO; import java.util.Scanner; public class Ejercicio002A { public static void main(String[] args) { int posX, posY, resp; int num; Scanner tecla = new Scanner(System.in); System.out.printf("%30s
", "-------Mapa Cartesiano--------"); System.out.printf("%25s " + "%10s", "Posición Inicial ", "Eje X : "); posX = Integer.valueOf(tecla.nextLine()); System.out.printf("%10s", "Ejer Y: "); posY = Integer.valueOf(tecla.nextLine()); Ejercicio002 E2 = new Ejercicio002(posX, posY); Ejercicio002 E2A; // Movimiento y cambios do { do { System.out.printf(" %30s
" + "%10s " + "%10s " + "%10s " + "%10s " + "%10s " + "%10s " + "%10s", "-----------Movimientos---------- ", "1.- Arriba", "2.- Abajo", "3.- Izquierda", "4.- Derecha", "5.- Mostrar posición", "6.- Salir", "Elegir una opcion (1-6): "); resp = Integer.valueOf(tecla.nextLine()); if (resp = 7) { System.out.println("ERROR : Escoger una opción (1-6).................."); } } while (resp = 7); switch (resp) { case 1: System.out.printf("%10s", "Cuantas posiciones: "); num = Integer.valueOf(tecla.nextLine()); E2A = new Ejercicio002(num); E2.m_arriba(); break; case 2: System.out.printf("%10s", "Cuantas posiciones: "); num = Integer.valueOf(tecla.nextLine()); E2A = new Ejercicio002(num); E2.m_abajo(); break; case 3: System.out.printf("%10s", "Cuantas posiciones: "); num = Integer.valueOf(tecla.nextLine()); E2A = new Ejercicio002(num); E2.m_izquierdo(); break; case 4: System.out.printf("%10s", "Cuantas posiciones: "); num = Integer.valueOf(tecla.nextLine()); E2A = new Ejercicio002(num); E2.m_derecha(); break; case 5: E2.posición(); break; case 6: E2.posición(); break; } } while (resp != 6); } } // MI APORTE
Hola Alejandro. Muchas gracias por tus vídeos. Dónde puedo encontrar la solución del segundo ejercicio (el del tablero) para poder compararlo con mi código? Muchas gracias de nuevo :)
get Perimetro(){ return 2*(lado1 + lado2); } get Area(){ return (lado1 * lado2); } } let lado1 = parseFloat(prompt("Ingrese lado 1 : ")); let lado2 = parseFloat(prompt("Ingrese lado 2 : ")); if (lado1 == lado2) { mostrar = new Cuadrilatero(lado1); } else { mostrar = new Cuadrilatero(lado1,lado2); } console.log("El perímetro es : " + mostrar.Perimetro + " y el área es : " + mostrar.Area);
Por si les sirve, el resultado de mi Ejercicio 2: /* Construir un programa que permita dirigir el movimiento de un objeto dentro de un tablero y actualice su posición dentro del mismo. Los movimientos posibles son ARRIBA, ABAJO, IZQUIERDA y DERECHA. Tras cada movimiento el programa mostrará la nueva dirección elegida y las coordenadas de situación del objeto dentro del tablero. */ package paquete1; import javax.swing.JOptionPane; public class Tablero { // Atributos private int ejeX; private int ejeY;
// Método Constructor public Tablero(int x, int y){ this.ejeX = ejeX; this.ejeY = ejeY; }
// Métodos public void arriba(){ ejeX += 1; System.out.println("Movimiento hacia arriba."); }
public void abajo(){ ejeX -= 1; System.out.println("Movimiento hacia abajo."); }
public void der(){ ejeY += 1; System.out.println("Movimiento hacia la dereccha."); }
public void izq(){ ejeX -= 1; System.out.println("Movimiento hacia la izquierda."); } public int getEjeX() { return ejeX; } public int getEjeY() { return ejeY; }
} public class Main { public static void main(String[] args){ Tablero move = new Tablero(0, 0);
int ventana = 0; do{ String[] botones = {"ARRIBA", "ABAJO", "DERECHA", "IZQUIERDA", "SALIR"}; ventana = JOptionPane.showOptionDialog(null, "Elige un movimiento:", "Bienvenido", JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null, botones, botones[0]); switch(ventana){ case 0: move.arriba(); System.out.println("La posición actual es: ["+move.getEjeX()+"]["+move.getEjeY()+"]."); break; case 1: move.abajo(); System.out.println("La posición actual es: ["+move.getEjeX()+"]["+move.getEjeY()+"]."); break; case 2: move.der(); System.out.println("La posición actual es: ["+move.getEjeX()+"]["+move.getEjeY()+"]."); break; case 3: move.izq(); System.out.println("La posición actual es: ["+move.getEjeX()+"]["+move.getEjeY()+"]."); break; default: break; } }while(ventana
Hola tu programa esta bien solo te equivocaste al poner las direcciones de movimiento en los ejes: arriba ejeY += 1; abajo ejeY -= 1; derecha ejeX += 1; izquierda ejeX -= 1;
Vi varios con el problema resuelto pero no eran comprensibles y no indicaban la posición ,así que hice el mio aprendiendo de los demás. public class Posicion { //atributos private int x; private int y;
no quiero parecer ignorante... pero como le hace en el minuto 10:36 del video para que le aparesca lo que tiene que hacer en el c1=new Cuadrilatero()...?
Ejercicio: //Atributos private int x; private int y; //Constructor
public Tablero(int inicioX, int inicioY) { x = inicioX; y = inicioY; }
//Metodos
public void moverArriba() { y++; }
public void moverAbajo() { y--; }
public void moverIzquierda() { x--; }
public void moverDerecha() { x++; }
public void moverDerechaDoble() { x += 2; // Mueve dos posiciones a la derecha }
public void mostrarPosicion() { System.out.println("Posicion actual: ("+ x + ", "+ y + ")"); } //main (desde otra clase)******** public class TableroMain { public static void main(String[] args) {
Tablero tablero = new Tablero(0, 0);//posicion inicial en x=0 -- y=0
tablero.moverDerecha(); System.out.println("Movimiento a la derecha:"); tablero.mostrarPosicion(); System.out.println();
tablero.moverArriba(); System.out.println("Movimiento hacia arriba:"); tablero.mostrarPosicion(); System.out.println(); tablero.moverIzquierda(); System.out.println("Movimiento a la izquierda:"); tablero.mostrarPosicion(); System.out.println(); tablero.moverAbajo(); System.out.println("Movimiento hacia abajo:"); tablero.mostrarPosicion();
amigo me piden el area y perimetro del traingulo....con metodo constructor,modificadores,consultor.....lo logre hacer pero resulta que lo quiere con un solo parametro, y yo lo habia hecho con 3(lado,base,altura)....no se como hacerlo con un solo parametro ayuda:(
package ejercicio2; public class Tablero { private int x=0; private int y=0; public Tablero(int x, int y) { this.x = x; this.y = y; } public int getX() { return x; } public void setDerecha() { x++; this.x = x; } public void setIzquierda() { x--; this.x = x; } public int getY() { return y; } public void setAbajo() { y--; this.y = y; } public void setArriba() { y++; this.y = y; } } en la otra solapa Main package ejercicio2; /** Ejercicio2: Construir un programa que permita dirigir el movimiento de un objeto dentro de un tablero y actualice su posicion dentro del mismo. Los movimientos posibles son ARRIBA, ABAJO, IZQUIERDA y DERECHA. Tras cada movimiento el programa mostrara la nueva direccion elegida y las coordenadas de situacion del objeto dentro del tablero. */ import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner entrada =new Scanner(System.in); Tablero objeto=new Tablero(0,0); int movimiento = 0; while (movimiento !=5) { System.out.print("Ingrese el movimento a realizar, ARRIBA = 1, ABAJO = 2, DERECHA = 3, IZQUIERDA= 4, SALIR 5: "); movimiento = entrada.nextInt(); switch (movimiento){ case 1 : objeto.setArriba(); System.out.println("Arriba"); break; case 2: objeto.setAbajo(); System.out.println("Abajo"); break; case 3: objeto.setDerecha(); System.out.println("Derecha"); break; case 4: objeto.setIzquierda(); System.out.println("Izquierda"); break; case 5: System.out.println("Salir"); break; default: System.out.println("Numero incorrecto"); break; } System.out.println("La posicion el objeto es X: "+objeto.getX()+", Y: "+objeto.getY()); } } } comenten que le pareció , Saludos
Mi solución del ejercicio 2: //Primera clase. package tablero; public class Tablero {
private int ejeX; private int ejeY;
public Tablero(int ejeX, int ejeY){ this.ejeX = ejeX; this.ejeY = ejeY; } public void moverArriba(){ System.out.println(" Su pieza estaba en la posición: "+ejeX+" del eje X."); System.out.println("Su pieza estaba en la posición: "+ejeY+" del eje Y."); this.ejeY -= 1; System.out.println(" Su pieza está en la posición: "+ejeX+" del eje X."); System.out.println("Su pieza está en la posición: "+ejeY+" del eje Y."); }
public void moverAbajo(){ System.out.println(" Su pieza estaba en la posición: "+ejeX+" del eje X."); System.out.println("Su pieza estaba en la posición: "+ejeY+" del eje Y."); this.ejeY += 1; System.out.println(" Su pieza está en la posición: "+ejeX+" del eje X."); System.out.println("Su pieza está en la posición: "+ejeY+" del eje Y."); }
public void moverIzquierda(){ System.out.println(" Su pieza estaba en la posición: "+ejeX+" del eje X."); System.out.println("Su pieza estaba en la posición: "+ejeY+" del eje Y."); this.ejeX -= 1; System.out.println(" Su pieza está en la posición: "+ejeX+" del eje X."); System.out.println("Su pieza está en la posición: "+ejeY+" del eje Y."); } public void moverDerecha(){ System.out.println(" Su pieza estaba en la posición: "+ejeX+" del eje X."); System.out.println("Su pieza estaba en la posición: "+ejeY+" del eje Y."); this.ejeX += 1; System.out.println(" Su pieza está en la posición: "+ejeX+" del eje X."); System.out.println("Su pieza está en la posición: "+ejeY+" del eje Y."); }
} //Segunda clase (main). package tablero; import java.util.Scanner; public class Main {
public static void main(String[] args) {
Scanner leer = new Scanner(System.in);
int posicion; Tablero posicionPieza = new Tablero(4,4);
for (int movimientos = 0; movimientos < 999; movimientos++) {
do{ System.out.print(" Digite el número que indica la posición en que quiere moverse. ARRIBA -> 1 | ABAJO -> 2 | IZQUIERDA -> 3 | DERECHA ->4 Opción: "); posicion = leer.nextInt(); }while(posicion > 4 && posicion < 1);
como sabes decidir cual será public y cual private? y otra cosa. siempre es necesario para pedir datos del usuario ese chorote gigante de parseoptionPane??? A mi luego no me reconoce ese caracter*( como le llama java)
package Ejercicio2; public class Posicion { //Atributos private int X; private int Y; //Metodos //Constructor public Posicion(int X, int Y){ this.X = X; this.Y = Y; } //Mover hacia arriba public void moverArriba(){ Y += 1; System.out.println("Direccion Arriba (" + X +","+ Y +")"); } //Mover hacia abajo public void moverAbajo(){ Y -= 1; System.out.println("Direccion Abajo ("+ X +","+ Y +")"); } //Mover hacia derecha public void moverDerecha(){ X += 1; System.out.println("Direccion Derecha ("+ X +","+ Y +")"); } //Mover hacia arriba public void moverIzquierda(){ X -= 1; System.out.println("Direccion Izquierda ("+ X +","+ Y +")"); } //Getter posicion X public int getEjeX(){ return X; } //Getter posicion Y public int getEjeY(){ return Y; } } ------------------------------------------------------------- en el Main ------------------------------------------------------------- package Ejercicio2; import javax.swing.JOptionPane; public class NewMain { public static void main(String[] args) {
//Variable char proximoMov = '0'; //Crear objeto con cordenadas iniciales x=0, y=0 Posicion objeto = new Posicion(0,0); System.out.println("Posicion Inicial: ("+objeto.getEjeX()+","+objeto.getEjeY()+")"); while(proximoMov != 'E'){ //Identificar el proximo movimiento do { proximoMov = Character.toUpperCase(JOptionPane.showInputDialog("Ingrese el siguiente movimiento"+" "+"W-Adelante "+"S-Atras "+"A-Izquierda "+"D-Derecha "+"E-Salir ").charAt(0)); } while ((proximoMov !='W')&&(proximoMov !='A')&&(proximoMov !='S')&&(proximoMov !='D')&&(proximoMov !='E')); //Realizar el movimiento switch(proximoMov){ case 'W': objeto.moverArriba(); break; case 'S': objeto.moverAbajo(); break; case 'A': objeto.moverIzquierda(); break; case 'D': objeto.moverDerecha(); break; case 'E': System.out.println("Gracias por jugar!"); break; default: System.out.println("Movimiento no reconocido"); break; } } } }
Muy bueno los videos, estoy siguiendolo para complementar mis estudios. Ahora una consulta referente a este ejercicio. Pasa que cuando arranco el programa, en la parte de ambos métodos no me resuelve la multiplicación. Es decir, el método de perímetro 2*(lado1+lado2), me hace solamente la suma (2.4) y en el método área (lado1*lado2) no hace nada y queda en 0.0, lo q se deduce a simple vista es q se salta la multiplicación. Alguien sabe ¿por qué?
fijate que en el metodo constructor 2, tengas igualado this.lado1 = this.lado2 = lado1 porque sino solo te va a tomar el lado 1 el constructor, y en realidad tiene que tomar los dos como uno
Ejercicio 2: CLASE MAIN package bloquepoo2; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner data = new Scanner(System.in); int n,m,n2,m2; String movimiento; System.out.println("CREAR TABLERO."); System.out.print("Digite la cantidad de filas del tablero: "); n=data.nextInt(); System.out.print("Digite la cantidad de columnas del tablero: "); m=data.nextInt();
Tablero tablero = new Tablero(n,m);
System.out.println(" EL TABLERO ES:"); tablero.crearTablero(); tablero.mostrarTableroInicial();
System.out.println(" INSERTAR FICHA EN EL TABLERO."); System.out.print("Digite la fila donde desea insertar la ficha: "); n2=data.nextInt(); tablero.setN2(n2); System.out.print("Digite la columna donde desea insertar la ficha: "); m2=data.nextInt(); tablero.setM2(m2);
System.out.println(" TABLERO CON FICHA."); tablero.insertarFicha();
System.out.println(" REALIZAR MOVIMIENTO. (presione 0 para salir)"); data.nextLine(); do{ System.out.print("Digite el movimiento que desea que la ficha realice: "); movimiento=data.nextLine(); if(movimiento.equals("0")){ System.out.println(" Usted ha salido exitosamente del programa."); break; }else{ System.out.println(""); tablero.realizarMovimiento(movimiento); System.out.println(" (presione 0 para salir)"); } }while(!movimiento.equals("0"));
data.close(); System.out.println("");
}
} Ejercicio 2: CLASE TABLERO (donde estan los métodos y los atributos) package bloquepoo2; public class Tablero {
//Atributos private int tablero[][]; private int n,m,n2,m2; //Tamaño tablero & posicionInicial private String movimiento; private int direccion; private int posicionPosterior;
package paquete1; /** * * @author User */ public class Ejercicio2 { int movX; int movY; public Ejercicio2(int movX, int movY) { this.movX = movX; this.movY = movY; } } package paquete1; import javax.swing.JOptionPane; /** * * @author User */ public class Principal { public static void main(String[] args) { Ejercicio2 Objeto1; int accion; int posiX=0, posiY=0; do { accion = Integer.parseInt(JOptionPane.showInputDialog("Elija uno de los siguientes movimientos: " +"1.Arriba "+"2.Abajo "+"3.Derecha "+"4.Izquierda "+"5.Detenerse")); switch(accion) { case 1: Objeto1=new Ejercicio2(0,1); posiY+=Objeto1.movY; break; case 2: Objeto1=new Ejercicio2(0,1); posiY-=Objeto1.movY; break; case 3: Objeto1=new Ejercicio2(1,0); posiX+=Objeto1.movX; break; case 4: Objeto1=new Ejercicio2(1,0); posiX-=Objeto1.movX; break; case 5: break; default: JOptionPane.showMessageDialog(null, "Opción inválida, escoja un movimiento válido"); break; } JOptionPane.showMessageDialog(null, "La posición actual es: ("+posiX+", "+posiY+")"); } while(accion!=5); } }
Clase Tablero public class Tablero { private Casilla[][] tab1; private int dim = 8;
//Constructor public Tablero() { tab1 = new Casilla[dim][dim];
for(int i = 0; i < dim; i++) { for(int j = 0; j < dim; j++) { tab1[i][j] = new Casilla(false); } } }
//Getters public boolean getCasilla(int x, int y) { return tab1[x][y].getEstado(); }
public int getDimension() { return dim; }
//Setters public void setCasilla(int x, int y, boolean estado) { tab1[x][y].setEstado(estado);//Invocación de Setters de Casilla }
public void setDimesion(int dimension) { dim = dimension; } } Clase Casilla public class Casilla { private boolean estado;
//Constructor public Casilla(boolean estado) { this.estado = estado; }
//Getters public boolean getEstado() { return estado; }
//Setters public void setEstado(boolean estado) { this.estado = estado; } } Clase Jugador import javax.swing.JOptionPane; public class Jugador { private int[] posicion = new int[2];
//Constructores public Jugador(int x, int y) { posicion[0] = x;//Representa la fila en la que se encuentra el jugador posicion[1] = y;//Representa la columna en la que se encuentra el jugador }
//Getters public int getX() { return posicion[0]; }
public int getY() { return posicion[1]; }
//Setters public void setX(int x) { posicion[0] = x; }
public void setY(int y) { posicion[1] = y; }
public void setPosicion(int x, int y) { posicion[0] = x; posicion[1] = y; }
//Movilidad del jugador public boolean moveUp() { if(posicion[0] == 0) { JOptionPane.showMessageDialog(null,"Imposible subir más en el tablero!");//En caso de que el jugador ya se encuentre en la primera fila return false; } else { posicion[0]--;//Sube al jugador una fila return true; } }
public boolean moveDown(int max) { if(posicion[0] == max-1) { JOptionPane.showMessageDialog(null,"Imposible bajar más en el tablero!");//En caso de que el jugador ya se encuentre en la última fila return false; } else { posicion[0]++;//Baja al jugador una fila return true; } }
public boolean moveLeft() { if(posicion[1] == 0) { JOptionPane.showMessageDialog(null,"Imposible retroceder más en el tablero!");//En caso de que el jugador ya se encuentre en la primera columna return false; } else { posicion[1]--;//Regresa al jugador una columna return true; } }
public boolean moveRight(int max) { if(posicion[1] == max-1) { JOptionPane.showMessageDialog(null,"Imposible avanzar más en el tablero!");//En caso de que el jugador ya se encuentre en la última columna return false; } else { posicion[1]++;//Avanza al jugador una columna return true; } } } Clase App import javax.swing.JOptionPane; public class App { public static void main(String args[]) { Tablero tablero = new Tablero(); Jugador player = new Jugador(0,0);
tablero.setCasilla(player.getX(), player.getY(), true);//Inicializando la posición del jugador en el tablero
char menu;//Menu opcional
for(int i = 0; i < tablero.getDimension(); i++) {//Impresión del tablero, Maraca con un 0 las casillas vacías y con un 1 la casilla ocupada por el jugador for(int j = 0; j < tablero.getDimension(); j++) { if(tablero.getCasilla(i, j))System.out.print("1 "); else { System.out.print("0 "); } } System.out.println(); }
JOptionPane.showMessageDialog(null, "Bienvenido"); do { menu = JOptionPane.showInputDialog("Controles: 'w': Arriba 'a': Izquierda 's': Abajo 'd': Derecha 'e': Salir").charAt(0);//Solicitud de instrucción
switch(menu) { case 'w': if(player.moveUp()) {//En caso de que el jugador quiera moverse hacía arriba tablero.setCasilla(player.getX()+1, player.getY(), false);//Desactivando la casilla que el jugador abandonó tablero.setCasilla(player.getX(), player.getY(), true);//Activando la casilla a la que llegó el jugador } break;
case 'a': if(player.moveLeft()) {//En caso de que jugador quiera moverse hacia la Izquierda tablero.setCasilla(player.getX(), player.getY()+1, false);//Desactivando la casilla que el jugador abandonó tablero.setCasilla(player.getX(), player.getY(), true);//Activando la casilla a la que llegó el jugador } break;
case 's'://En caso de que el jugador quiera moverse hacía abajo if(player.moveDown(tablero.getDimension())) { tablero.setCasilla(player.getX()-1, player.getY(), false);//Desactivando la casilla que el jugador abandonó tablero.setCasilla(player.getX(), player.getY(), true);//Activando la casilla a la que llegó el jugador } break;
case 'd'://En caso de que el jugador quiera moverse hacia la derecha if(player.moveRight(tablero.getDimension())) { tablero.setCasilla(player.getX(), player.getY()-1, false);//Desactivando la casilla que el jugador abandonó tablero.setCasilla(player.getX(), player.getY(), true);//Activando la casilla a la que llegó el jugador } break; }
/*Ejercicio 2: Construir un programa que permita dirigir el movimiento de un objeto dentro de un tablero y actualice su posición dentro del mismo. Los movimientos posibles son ARRIBA, ABAJO, IZQUIERDA y DERECHA. Tras cada movimiento el programa mostrará la nueva dirección elegida y las coordenadas de situación del objeto dentro del tablero.*/ package POOEjercicios; /** * @author CarlosAVG */ public class Ejercicio02 { //Atributos private int f; private int c; //Metodos public Ejercicio02(int f, int c) { this.f = f; this.c = c; } //Movimientos public void setArriba() { this.f += -1; } public void setAbajo() { this.f += 1; } public void setIzquierda() { this.c += -1; } public void setDerecha() { this.c += 1; } public int getFila() { return this.f; } public int getColumna() { return this.c; } } ----------------------------------------------------------------------------------------- package POOEjercicios; import javax.swing.*; /** * @author CarlosAVG */ public class Main02 { public static void main(String[] args) { final int tablero[][] = new int[10][10]; Ejercicio02 ob1 = new Ejercicio02(0, 0); int op; //Llenado de la Matriz for (int f = 0; f < tablero.length; f++) { for (int c = 0; c < tablero.length; c++) { tablero[f][c] = 0; } } //Mostrar la matriz inciial System.out.println("Tablero sin ningun movimiento, inicias en la esquina superior izqueirda."); System.out.println(""); for (int f = 0; f < tablero.length; f++) { for (int c = 0; c < tablero.length; c++) { System.out.print(tablero[f][c] + " - "); } System.out.println(""); } //Movimientos do { op = Integer.parseInt(JOptionPane.showInputDialog(".: Bienvenido :. Opciones: 1. Arriba 2. Abajo 3. Izquierda 4. Derecha 5. Salida")); switch (op) { case 1: if (ob1.getFila() >= 0 && ob1.getFila() = 0 && ob1.getFila() = 0 && ob1.getColumna() = 0 && ob1.getColumna()
Esta es mi solución, que muestra la dirección tomada (ARRIBA, ABAJO, IZQUIERDA, DERECHA) y las coordenadas (x,y), utilizo libreria Scanner y los numeros 8,2,4,6, como flechas de direccion. package tablero; public class logo { private String direccion; private int x=0,y=0;
public void setDireccion(int direccion){ if (direccion == 8){ this.direccion = "Arriba"; } if (direccion == 2){ this.direccion = "Abajo"; } if (direccion == 4){ this.direccion = "Izquierda"; } if (direccion == 6){ this.direccion = "Derecha"; } } public int getsubirobajar(int ordenada){ y+=ordenada; return y; }
public int getizquierdaoderecha(int abcisa){ x+=abcisa; return x; }
public void posicionydireccion(){ System.out.println("La direccion es: " + direccion + " y las coordenadas son: " + "[ " + x + " ]" + "[ " + y + " ]");
} } package tablero; import java.util.Scanner; public class Logomain2 {
public static void main(String[] args) {
logo objeto = new logo();
Scanner teclado = new Scanner(System.in); int direccion, ordenada, abcisa;
do{
System.out.println("A donde quiere moverse: "); direccion = teclado.nextInt();
if(direccion==8){ //direccion hacia arriba objeto.setDireccion(direccion); ordenada = 1; objeto.getsubirobajar(ordenada); objeto.posicionydireccion(); } else if(direccion==2){ //direccion hacia abajo objeto.setDireccion(direccion); ordenada=-1; objeto.getsubirobajar(ordenada); objeto.posicionydireccion(); } else if(direccion==4){ //direccion hacia la izquierda objeto.setDireccion(direccion); abcisa=-1; objeto.getizquierdaoderecha(abcisa); objeto.posicionydireccion(); } else if(direccion==6){ //direccion hacia la derecha objeto.setDireccion(direccion); abcisa=1; objeto.getizquierdaoderecha(abcisa); objeto.posicionydireccion(); } else{ // si presiona una tecla distinta de las indicadas , le dice que el movimiento no es posible y vuelve a preguntar a donde quiere moverse? System.out.println("El movimiento no es posible"); } }while((direccion>0&&direccion
//EJERCICIO #2 package pootablero; public class Tablero { private int ejex; private int ejey; public Tablero(int x, int y) { this.ejex = ejex; this.ejey = ejey; } public void haciaArriba(){ ejey=ejey+1; System.out.println("movimiento hacia arriba "); System.out.println("POSICION ACTUAL("+ejex+","+ejey+")"); } public void haciaAabajo(){ ejey-=1; System.out.println("movimiento hacia abajo "); System.out.println("POSICION ACTUAL ("+ejex+","+ejey+")"); } public void haciaIzquierda(){ ejex=ejex-1; System.out.println("movimiento hacia la Isquierda "); System.out.println("POSICION ACTUAL ("+ejex+","+ejey+")"); } public void haciaDerecha(){ ejex=ejex+1; System.out.println("movimiento hacia la derecha "); System.out.println("POSICION ACTUAL ("+ejex+","+ejey+")"); } public int getEjex() { return ejex; } public int getEjey() { return ejey; }
} import java.util.Scanner; public class principal { public static void main(String[] args) { Scanner entrada=new Scanner(System.in); int movimiento =0;
Tablero objeto=new Tablero(0,0); System.out.println("Posicion actual "+objeto.getEjex()+","+objeto.getEjex());
case 8: objeto.haciaArriba();break; case 2: objeto.haciaAabajo();break; case 4:objeto.haciaIzquierda();break; case 6:objeto.haciaDerecha();break; case 1:return ;
He visto algunos ejemplos dados en este chat y hay una cosa que no entiendo... ¿No es un tablero un espacio delimitado? Todos los ejemplos que veo pueden mover el objeto toda la distancia que deseen, sin límite, es como si estuviera en un espacio infinito donde sólo puedes moverte en dos direcciones. Ni idea...
Para lo que hemos aprendido hasta ahora, creo que eso estaria bien. Ahora si tu puedes hacerlo en un tablero real, pues estas ya en nivel un poco mas elevado. Yo lo intentare a mi manera
*Clase objeto* package Ejercicio2; public class Objeto { //Atributos private int posx; private int posy;
//Metodos public void MoverDerecha() { posx +=1; }
public void MoverIzquierda(){ posx -=1; } public int getPosx() { return posx; }
public void MoverArriba(){ posy +=1; } public void MoverAbajo(){ posy -=1; } public int getPosy() { return posy; }
} *Clase principal* package Ejercicio2; import javax.swing.JOptionPane; public class Main { public static void main(String []args){ Objeto objeto1 = new Objeto(); int opcion = 0;
do { opcion = Integer.parseInt(JOptionPane.showInputDialog("Mueva el objeto: " + "1.-Mover arriba " + "2.-Mover abajo " + "3.-Mover a la izquierda " + "4.-Mover a la derecha " + "5.-Salir")); switch(opcion){ case 1: objeto1.MoverArriba(); System.out.println("Movimiento: Arriba"); System.out.println("La nueva posicion es: ("+objeto1.getPosx()+" , "+objeto1.getPosy()+")"); break; case 2: objeto1.MoverAbajo(); System.out.println("Movimiento: Abajo"); System.out.println("La nueva posicion es: ("+objeto1.getPosx()+" , "+objeto1.getPosy()+")"); break; case 3: objeto1.MoverIzquierda(); System.out.println("Movimiento: Izquierda"); System.out.println("La nueva posicion es: ("+objeto1.getPosx()+" , "+objeto1.getPosy()+")"); break; case 4: objeto1.MoverDerecha(); System.out.println("Movimiento: Derecha"); System.out.println("La nueva posicion es: ("+objeto1.getPosx()+" , "+objeto1.getPosy()+")"); break; case 5: break; default: System.out.println("Opcion no valida"); } } while (opcion != 5);
Me gustó mucho tu codigo. Solo quería añadir una pequeña corrección en el while(tecla!=0) -> sería while(tecla!='o'), ya que tecla esta inicializada como char. así puedes salir del menu.
package ejercicio2_Objetos; import java.util.Scanner; public class Ajedrez { // ATRIBUTOS private static int tablero[][];//HAGO EL TABLERO STATICO PARA QUE PUEDAS CREAR OTRA //FICHA Y PONERLO DENTRO DEL MISMO TABLERO private int tamañoTablero; final int pieza = 1; private int posicion_x; private int posicion_y; public Ajedrez() { // CONTRUCTOR PARA QUE EL USUARIO NOS DIGA DE QUE TAMAÑO QUIERE EL TABLERO Y NOS // DIGA EN QUE POSICION QUIERE LA PIEZA PARA EMPEZAR Scanner entrada = new Scanner(System.in); System.out.println("Tamaño del tablero....."); // SI EL NUMERO ES MEJOR QUE 2 NO PUEDE SER UN TABLERO Y HAGO QUE LO INTRODUZCA // OTRA VEZ do { System.out.print("Introduce el tamaño que quieres el tablero(debe ser mayor a 1): "); tamañoTablero = entrada.nextInt(); } while (tamañoTablero < 2); // LE DOY EL TAMAÑO AL TABLERO CON EL NUMERO INTRODUCIDO tablero = new int[tamañoTablero][tamañoTablero]; System.out.println("Ahora introduce una posiscion inicial para tu pieza..."); // SI LA POSICION SE SALE DE LAS MARGENES DE LA TABLA LE DIGO QUE LO VUELVA A // INTRODUCIR do { System.out.print("Introduce la coordenada 'x'"); posicion_x = entrada.nextInt(); } while (posicion_x < 0 || posicion_x > tamañoTablero - 1); // SI LA POSICION SE SALE DE LAS MARGENES DE LA TABLA LE DIGO QUE LO VUELVA A // INTRODUCIR do { System.out.print("Introduce la coordenada 'y'"); posicion_y = entrada.nextInt(); } while (posicion_y < 0 || posicion_y > tamañoTablero - 1); // IGUALO LA POSICION DE LA TABLA A LA PIEZA INTERPRETANDO QUE 1 ES LA PIEZA tablero[posicion_x][posicion_y] = pieza; entrada.close(); } public void arriba() { // SI LA PIEZA YA ESTA EN LA LINEA 0 NO PUEDE SUBIR MAS PORQUE SE SALDRIA DEL // ARREGLO if (posicion_x == 0) { System.out.println(""); System.out.println("No se puede ir mas arriba te vas a salir del tablero vaquero"); } else { tablero[posicion_x][posicion_y] = 0;// IGUALO LA POSICION ACTUAL DE LA PIEZA A 0 PARA QUE SE BORRE LA PIEZA // DE DONDE ESTABA posicion_x = posicion_x - 1; tablero[posicion_x][posicion_y] = pieza;// Y AHORA LA COLOCO EN SU NUEVA POSICION System.out.println(""); // LLAMO AL METODO QUE CREE MAS ABAJO PARA QUE AL MOVER LA PIEZA ME DE LAS // COORDENADAS Y ME ENSEÑE EL TABLERO getCoordenadas(); } } public void abajo() { // SI LA PIEZA YA ESTA EN LA ULTIMA LINEA NO PUEDE BAJAR MAS if (posicion_x == tamañoTablero - 1) { System.out.println(""); System.out.println("No se puede ir mas abajo te vas a salir del tablero vaquero"); } else { tablero[posicion_x][posicion_y] = 0;// IGUALO LA POSICION ACTUAL DE LA PIEZA A 0 PARA QUE SE BORRE LA PIEZA // DE DONDE ESTABA posicion_x = posicion_x + 1; tablero[posicion_x][posicion_y] = pieza;// Y AHORA LA COLOCO EN SU NUEVA POSICION System.out.println(""); // LLAMO AL METODO QUE CREE MAS ABAJO PARA QUE AL MOVER LA PIEZA ME DE LAS // COORDENADAS Y ME ENSEÑE EL TABLERO getCoordenadas(); } } public void derecha() { // SI LA PIEZA YA ESTA EN LA ULTIMA COLUMNA NO PUEDE IR MAS A LA DERECHA if (posicion_y == tamañoTablero - 1) { System.out.println(""); System.out.println("No se puede ir mas a la derecha, te vas a salir del tablero vaquero"); } else { tablero[posicion_x][posicion_y] = 0;// IGUALO LA POSICION ACTUAL DE LA PIEZA A 0 PARA QUE SE BORRE LA PIEZA // DE DONDE ESTABA posicion_y = posicion_y + 1; tablero[posicion_x][posicion_y] = pieza;// Y AHORA LA COLOCO EN SU NUEVA POSICION System.out.println(""); // LLAMO AL METODO QUE CREE MAS ABAJO PARA QUE AL MOVER LA PIEZA ME DE LAS // COORDENADAS Y ME ENSEÑE EL TABLERO getCoordenadas(); } } public void izquierda() { // SI LA PIEZA YA ESTA EN LA PRIMERA COLUMNA NO PUEDE IR MAS A LA IZQUIERDA O SE // SALDRIA DE LA TABLA if (posicion_y == 0) { System.out.println(""); System.out.println("No se puede ir mas a la izquierda, te vas a salir del tablero vaquero"); } else { tablero[posicion_x][posicion_y] = 0;// IGUALO LA POSICION ACTUAL DE LA PIEZA A 0 PARA QUE SE BORRE LA PIEZA // DE DONDE ESTABA posicion_y = posicion_y - 1; tablero[posicion_x][posicion_y] = pieza;// Y AHORA LA COLOCO EN SU NUEVA POSICION System.out.println(""); // LLAMO AL METODO QUE CREE MAS ABAJO PARA QUE AL MOVER LA PIEZA ME DE LAS // COORDENADAS Y ME ENSEÑE EL TABLERO getCoordenadas(); } } public void getCoordenadas() { // AQUI SOLO SACO EL MENSAJE CON LAS COORDENADAS Y IMPRIMO EL TABLERO(EL ARRAY) System.out.println("Estas es la coordenada x: " + posicion_x + " y esta la coordenada y: " + posicion_y); for (int i = 0; i < tamañoTablero; i++) { for (int j = 0; j < tamañoTablero; j++) { System.out.print(tablero[i][j]); } System.out.println(""); } } }
He leido varios ejemplos despues de hacerlo y nadie crea un arry bidimensional para usarlo como tabla, en mi opnion creo que habria que crearlo para tener un tablero donde poder mover la pieza, si no hay tablero solo estas moviendo la pieza de un lado para otro sin sentido.Agradeceria que alguien pudiera corregir el mio y darme su opinion, muchas gracias.
//Esta es la prueba bastante sencilla, creo el objeto y llamo a los metodos para moverlo package ejercicio2_Objetos; public class PruebaAjedrez { public static void main(String [] args) { Ajedrez ficha1=new Ajedrez(); ficha1.arriba(); ficha1.derecha(); ficha1.abajo(); ficha1.izquierda(); ficha1.izquierda(); } }
Y si ese if que esta en el Main lo pongo dentro del constructor y desde ahi comparo si los lados son iguales entonces: if (lado1 == lado2) { this.lado1 = this.lado2 = lado1; } else { this.lado1 = lado1; this.lado2 = lado2; } ESTARÁ BIEN HACERLO ASI PORFAVOR ALGUIEN SAQUEME DE LA DUDA!
Mi solución al Ejercicio 2 package Paquete1; public class Tablero {
//Atributo Constantes private final char Arriba = 'w'; private final char Abajo = 's'; private final char Izquierda = 'a'; private final char Derecha= 'd';
private final char Arriba2 = 'W'; private final char Abajo2 = 'S'; private final char Izquierda2 = 'A'; private final char Derecha2 = 'D';
private final char Salir = 'Q'; private final char Salir2 = 'q';
public char getArriba() { return Arriba; } public char getAbajo() { return Abajo; } public char getIzquierda() { return Izquierda; } public char getDerecha() { return Derecha; } public char getArriba2() { return Arriba2; } public char getAbajo2() { return Abajo2; } public char getIzquierda2() { return Izquierda2; } public char getDerecha2() { return Derecha2; } public char getSalir() { return Salir; }
public char getSalir2() { return Salir2; } } package Paquete1; import javax.swing.JOptionPane; public class Main { public static void main (String[] arg){ Tablero op = new Tablero (); op.getAbajo(); op.getAbajo2(); op.getArriba(); op.getArriba2(); op.getDerecha(); op.getDerecha2(); op.getIzquierda(); op.getIzquierda2(); op.getSalir(); op.getSalir2();
int x=0; int y=0;
boolean salir = false;
do{ char posición = JOptionPane.showInputDialog("Seleccione la alguna de las siguientes teclas W = Subir S = Bajar A = Izquierda D = Derecha Q = Salir").charAt(0); if (posición == op.getAbajo() || posición == op.getAbajo2()){ y--; System.out.println("La posición cambio a: ["+x+"]"+"["+y+"]"); }else if (posición == op.getArriba() || posición == op.getArriba2()){ y++; System.out.println("La posición cambio a: ["+x+"]"+"["+y+"]"); }else if (posición == op.getIzquierda() || posición == op.getIzquierda2()){ x--; System.out.println("La posición cambio a: ["+x+"]"+"["+y+"]"); }else if (posición == op.getDerecha() || posición == op.getDerecha()){ x++; System.out.println("La posición cambio a: ["+x+"]"+"["+y+"]"); }else if (posición == op.getSalir() || posición == op.getSalir2()){ salir = true; }else { System.out.println("Bro, esa tecla no esta en el menu"); }
/* Ejercicio 2: Construir un programa que permita dirigir el movimiento de un objeto dentro de un tablero y actualice su posición dentro del mismo. Los movimientos posibles son ARRIBA, ABAJO, IZQUIERDA y DERECHA. Tras cada movimiento el programa mostrará la nueva dirección elegida y las coordenadas de situación del objeto dentro del tablero. */ package paquete1; import javax.swing.JOptionPane; public class Clase {
// Atributos
int x=0; int y=0; char mov;
// Metodos
public int getXDerecha(){ int Derecha = x++; return Derecha; } public int getXIzquierda(){ int Izquierda = x--; return Izquierda; } public int getYArriba(){ int Arriba = y++; return Arriba; } public int getXAbajo(){ int Abajo = y--; return Abajo; }
public void MostrarPosicion( char mov){
switch (mov) { case 'A': JOptionPane.showMessageDialog(null, "Se Desplazó hacia Arriba! Su nueva posicion es:: ("+x+" , "+y+")"); break; case 'B': JOptionPane.showMessageDialog(null, "Se Desplazó hacia Abajo! Su nueva posicion es:: ("+x+" , "+y+")"); break; case 'C': JOptionPane.showMessageDialog(null, "Se Desplazó hacia Izquierda! Su nueva posicion es:: ("+x+" , "+y+")"); break; case 'D': JOptionPane.showMessageDialog(null, "Se Desplazó hacia Derecha! Su nueva posicion es:: ("+x+" , "+y+")"); break; default: break; }
}
public static void main( String [] args){
Clase auto1 = new Clase();
char movimiento;
do{
movimiento = JOptionPane.showInputDialog("¿ Hacia donde desea desplazarse ?" +" A = Arriba" +" B = ABajo" +" C = Izquierda" +" D = Derecha" +" E = Salir").charAt(0);
switch(movimiento){
case 'A': auto1.getYArriba(); auto1.MostrarPosicion(movimiento); break;
case 'B': auto1.getXAbajo(); auto1.MostrarPosicion(movimiento);break;
case 'C': auto1.getXIzquierda(); auto1.MostrarPosicion(movimiento); break;
case 'D': auto1.getXDerecha(); auto1.MostrarPosicion(movimiento);break;
case 'E': JOptionPane.showMessageDialog(null, "ADIOS!!");;break; default: JOptionPane.showMessageDialog(null, "Opcion incorrecta!!");
Con su respectivo tablero o eso creo xD package clasesej2; public class Tablero {
int x,y; public Tablero(int x, int y) { this.x = x; this.y = y;} public void arriba() { y++; System.out.println("Posición: "+x+","+y);} public void abajo() { y--; System.out.println("Posición: "+x+","+y);}
public void derecha() { x++; System.out.println("Posición: "+x+","+y);} public void izquierda() { x--; System.out.println("Posición: "+x+","+y);} Clase principal Scanner teclado=new Scanner(System.in); char d; int x=0,y=0; Tablero peon=new Tablero(0,0);
System.out.println("Empezemos a jugar"); System.out.println("Presiona O para salir del juego"); System.out.println("Presiona W para ir arriba Presiona S para ir abajo " + "Presiona A para ir a la izquierda Presiona D para ir a la derecha"); System.out.println("Comienzas en la posición 0,0");
do{d=teclado.next().charAt(0); switch(d){
case 'W': case 'w':if(y>=0 && y0 && y0 && x=0 && x
Te recomiendo colocar como ejercicios propuestos temas de matemáticas discretas. Ejemplo: Un programa que imprima por pantalla el día de la semana a partir de la fecha ingresada. Pista: puedes usar la congruencia de Zeller para resolver.
Así fue como lo hice :v veo el de los demás y creo que me compliqué demasiado XD ///ClaseTablero package ejercicio_dos; import javax.swing.JOptionPane; public class Tablero { private final String nomObjeto = "Shiva"; private final String carObjeto = "Destructor"; private int dañoObj = 10; private int coordenadaX, coordenadaY; String tablero[][]=new String[4][4]; public Tablero(int coordenadaX, int coordenadaY) { this.coordenadaX = coordenadaX; this.coordenadaY = coordenadaY; tablero[coordenadaX][coordenadaY] = getObjeto(); } public void setDaño(int dañoObj) { this.dañoObj = dañoObj; } public void leftCoordenadaX(){ if (coordenadaY!=0) { coordenadaY--; tablero[coordenadaX][coordenadaY]=getObjeto(); } else { JOptionPane.showMessageDialog(null, "El objeto se ha encontrado con una pared."); } }
public void rigthCoordenadaX(){ if (coordenadaY==(tablero.length-1)) { JOptionPane.showMessageDialog(null, "El objeto se ha encontrado con una pared."); } else { coordenadaY++; tablero[coordenadaX][coordenadaY]=getObjeto(); } }
public void upCoordenadaY(){ if (coordenadaX!=0) { coordenadaX--; tablero[coordenadaX][coordenadaY]=getObjeto(); } else { JOptionPane.showMessageDialog(null, "El objeto se ha encontrado con una pared."); } }
public void downCoordenadaY(){ if (coordenadaX==(tablero.length-1)) { JOptionPane.showMessageDialog(null, "El objeto se ha encontrado con una pared."); } else { coordenadaX++; tablero[coordenadaX][coordenadaY]=getObjeto(); } } public String getObjeto() { return nomObjeto + ' ' + "Tipo: " + carObjeto + ' ' +"Daño: "+ dañoObj+" pts"; }
public String toString(){ return "Personaje: " + getObjeto() + " Se encuentra en las coordenadas: "+ "["+(coordenadaX+1)+"]"+ "["+(coordenadaY+1)+"]"; } } /////Clase Main package ejercicio_dos; import javax.swing.JOptionPane; public class main { public static void main(String[] args) { int coordenadaX, coordenadaY, dañoObj; String opciones[] = {"Izquierda", "Arriba", "Abajo", "Derecha", "Salir"}; coordenadaX = Integer.parseInt(JOptionPane.showInputDialog("Ingresa la posición en X de tu héroe en un tablero de 4x4")); coordenadaY = Integer.parseInt(JOptionPane.showInputDialog("Ingresa la posición en Y de tu héroe en un tablero de 4x4")); coordenadaX--; coordenadaY--; Tablero obj = new Tablero(coordenadaX, coordenadaY); do { int seleccion = JOptionPane.showOptionDialog(null, "Mover hacia", "Mover", JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null, opciones, opciones[0]); switch (seleccion) { case 0: obj.leftCoordenadaX(); JOptionPane.showMessageDialog(null, obj.toString()); break; case 1: obj.upCoordenadaY(); JOptionPane.showMessageDialog(null, obj.toString()); break; case 2: obj.downCoordenadaY(); JOptionPane.showMessageDialog(null, obj.toString()); break; case 3: obj.rigthCoordenadaX(); JOptionPane.showMessageDialog(null, obj.toString()); break; default: System.exit(0); break; } } while (true); } }
Ejercicio #2 ( Me tomó unas horas de darme cuenta que soy un gil, pero lo logré y estoy feliz de mover un puto circulo) así lo interpreté yo : *Clase Tablero* package paquete1; public class Tablero {
public int y; public int x; public int posiciony; public int posicionx;
} *Clase Pantalla* ( la main ) package paquete1; import javax.swing.JOptionPane; public class Pantalla { public static void main(String[] args){ char[][] tabla = new char[5][5]; Tablero t1 = new Tablero(); char mover;
t1.rellenarTabla(tabla);
t1.mostrarTabla(tabla);
System.out.println(""); do{ mover = JOptionPane.showInputDialog("Hacia donde se quiere mover? Arriba(w) Abajo(s) Izquierda(a) Derecha(d) Reiniciar(r)
Si desa salir, escriba (x)").charAt(0); switch(mover){ case 'w': t1.arriba(tabla);break; case 'a': t1.izquierda(tabla);break; case 's': t1.abajo(tabla);break; case 'd': t1.derecha(tabla);break; case 'r': t1.rellenarTabla(tabla);break; } t1.mostrarTabla(tabla);
Ejercicio #2 Lo hice de manera en la que el tablero pudiera ser visto graficamente con una matriz /////////////////// Clase Main /////////////////// package paquete1; import javax.swing.JOptionPane; public class Main { public static void main(String [] args){ //Declaraciones int tablero[][] = new int[9][9];
//Ir hacia la derecha } else if ((opcion == 'd') || (opcion == 'D')) { tablero[t1.getVer()][t1.getHor()] = 0; t1.derecha(); tablero[t1.getVer()][t1.getHor()] = 1; ulmov = "Hacia la derecha"; }
//Ir a la izquierda else if ((opcion == 'a') || (opcion == 'A')) { tablero[t1.getVer()][t1.getHor()] = 0; t1.izquierda(); tablero[t1.getVer()][t1.getHor()] = 1; ulmov = "Hacia la izquierda"; }
for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { System.out.print(tablero[i][j]+" "); } System.out.println(""); } System.out.println(" ");
} while ((opcion != 'x') && (opcion != 'X'));
} } /////////////////// Clase Tablero /////////////////// package paquete1; public class Tablero extends Main{ //atributos
private int ver = 0,hor = 0;
//metodos public Tablero() { }
//Mover hacia arriba public int arriba(){ if (ver - 18) { System.out.println(" No es posible ir hacia abajo "); } else { ver = ver + 1; }
return ver; }
//Mover a la izquierda public int izquierda(){ if (hor-18) { System.out.println("No se puede ir a la derecha"); } else { hor = hor + 1; } return hor; } //Getters public int getHor() { return hor; } public int getVer() { return ver; }
Hola amigo! Me encanta tus videos y sigo todos tus ejercicio! eres increíble dando clases mas por tu forma motivadora de enseñar. Una pregunta, cual es la diferencia de usar el metodo public floar getArea .. a usar un metrodo vacio como public void Area e imprimir el resultado en el mismo metodo ? Es mas profecionar usar el return ?
Despues de mucho pensar que no podia, les adjunto mi ejercicio 2 :D //MAIN /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package Main; import java.util.*; /** * * @author Stuart */ public class Main { //Metodo main public static void main(String[] args) { boolean Salida=false; int x,y,numero; String Movimiento; Scanner Leer = new Scanner(System.in);
System.out.println("Este programa permitira dirigir el movimiento de un objeto dentro de un tablero"); System.out.println(" Actualizara su posicion dentro del mismo"); System.out.println(" Ingrese las coordenadas en x:"); x=Leer.nextInt(); System.out.println(" Ingrese las coordenas en y:"); y=Leer.nextInt(); System.out.println(" Los movimientos posibles son: "); System.out.println(" Arriba W"); System.out.println(" Abajo S"); System.out.println(" Izquierda A"); System.out.println(" Derecha D"); System.out.println(" Salir"); System.out.println("Ingrese su movimiento"); Movimiento=Leer.nextLine(); Tablero movimientos=new Tablero(x,y); do{ switch(Movimiento){ case "W": System.out.println("Cuantos espacios desea moverse arriba: "); numero=Leer.nextInt(); movimientos.moverArriba(numero); break; case "A": System.out.println("Cuantos espacios desea moverse abajo: "); numero=Leer.nextInt(); movimientos.moverAbajo(numero); break; case "S": System.out.println("Cuantos espacios desea moverse izquierda: "); numero=Leer.nextInt(); movimientos.moverIzquierda(numero); break; case "D": System.out.println("Cuantos espacios desea moverse derecha: "); numero=Leer.nextInt(); movimientos.moverDerecha(numero); break; default: System.out.println("No elegiste un movimiento valido"); break; } System.out.println("La posicion en (x/y) es: ("+movimientos.getX()+","+movimientos.getY()+")"); System.out.println(" Los movimientos posibles son: "); System.out.println(" Arriba W"); System.out.println(" Abajo S"); System.out.println(" Izquierda A"); System.out.println(" Derecha D"); System.out.println(" Salir"); System.out.println("Ingrese su movimiento"); Movimiento=Leer.nextLine(); if(Movimiento=="E"){ Salida=true; } }while(!Salida); }
} Clase tablero /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package Main; /** * * @author Stuart */ public class Tablero { private int x; private int y; public Tablero(int x, int y) { this.x = x; this.y = y; } public int getX() { return x; } public void moverArriba(int n) { this.y += n; } public void moverAbajo(int n) { this.y -= n; } public void moverIzquierda(int n) { this.x += n; } public void moverDerecha(int n) { this.x -= n; } public int getY() { return this.y; }
Bueno luego de 8 meses vuelvo al curso de POO pero solo a resolver los problemas public class principal{ private int x; private int y; //bueno asi lo entendi xD la verdad public Principal(int x, int y) { this.x = x; this.y = y; } public void moverArriba() { y++; } public void moverAbajo() { y--; } public void moverDerecha() { x++; } public void moverIzquierda() { x--; } public int getX() { return x; } public int getY() { return y; } static Scanner s = new Scanner(System.in); public static void main(String[] args) { System.out.println("Digite numero 1 o EJE X"); int n1 = s.nextInt(); System.out.println("Digite numero 2 o EJE Y"); int n2 = s.nextInt(); System.out.println("Arriba (W)"); System.out.println("Abajo (S)"); System.out.println("Derecha (D)"); System.out.println("Izquierda es (A)"); System.out.println("CANCELAR (C)"); System.out.println(" (" + n1 + " , " + n2 + ")"); Menu(n1, n2); } public static void Menu(int n1, int n2) { tablero tabla = new tablero(n1, n2); while (true) { System.out.println("Digite Opcion"); String opcion = s.next(); if (opcion.equalsIgnoreCase("W")) { tabla.moverArriba(); } else if (opcion.equalsIgnoreCase("S")) { tabla.moverAbajo(); } else if (opcion.equalsIgnoreCase("D")) { tabla.moverDerecha(); } else if (opcion.equalsIgnoreCase("A")) { tabla.moverIzquierda(); } else { break; } System.out.println("(" + tabla.getX() + "), " + "(" + tabla.getY() + ")"); } }
De haber sabido que tenias una grave enfermedad, habríamos de alguna forma devuelto la mano, descanza en paz, dejas un gran legado a futuros programadores, ojala algun dia pueda ser como tú...adios
Buenos días Javiera P, quien falleció, no quiero creer o ojalá que me equivoque
@@justogonzalez5300 El muchacho del canal falleció ya hace varios meses.
@@dajuvaja Gracias, que pena para todos los estudiantes de programación, no sabia de su enfermedad, pero fue todo rápido según he visto, tal vez se haya golpeado en su rodilla que le causó la enfermedad, que gran perdida, particularmente no encontré un profesor que explica como él, si tiene algún nombre puede publicar por favor. gracias
@@justogonzalez5300 si queres ver alternativas a su canal en mi opinión pildoras informaticas es una buena opción
@@justogonzalez5300 Su nombre "es" Alejandro Taboada
Lo que este joven explica es sumamente entendible para cualquier aprendiz, mis felicitaciones. Una tristeza por la noticia, pero ha dejado un gran aporte a muchos programadores. Honraremos su memoria difundiendo este material para que llegue a muchas otras generaciones, la esencia esta ahí presente.
hola yo soy andres también soy programador y es la primera vez que entiendo la explicación de un lenguaje de manera clara y didáctica sigue así felicitaciones desde Colombia a broder
muy buen ejercicio, me hizo pensar por muchas horas pero al final logre llegar al resultado y aprender mucho. Descansa en paz Alejandro, fuiste y sos alto profesor.
ya debes ser muy bueno en el tema, si así es y deseo que así sea, te felicito, los esfuerzos traen sus resultados. si no ps, a veces la vida no es como queremos. Saludos.
jaja yo me quede como, no manches andamos viendo perimetros bien tranqui :c
Yo lo supe hace unos meses el ya me había ayudado con C++, y no he conocido a nadie q explique mejor
Ejercicio 2: Construir un programa que permita dirigir el movimiento de un objeto dentro de un tablero y actualice su posición dentro del mismo. Los movimientos posibles son ARRIBA, ABAJO, IZQUIERDA y DERECHA. Tras cada movimiento el programa mostrará la nueva dirección elegida y las coordenadas de situación del objeto dentro del tablero.
**Clase Movimiento**
package Ejercicio2Movimiento;
public class Movimiento {
//Atributos
private int x;
private int y;
//Metodos
//Constructor
public Movimiento(int x,int y){
this.x=x;
this.y=y;
}
//Movimiento
public void arriba(){
if(y!=0){
y-=1;
}
}
public void abajo(){
if(y!=10){
y+=1;
}
}
public void derecha(){
if(x!=0){
x-=1;
}
}
public void izquierda(){
if(x!=10){
x+=1;
}
}
//Getters
public int getX(){
return x;
}
public int getY(){
return y;
}
}
**Clase Main**
package Ejercicio2Movimiento;
import java.util.Scanner;
public class Main {
public static void main(String []args){
Scanner lector=new Scanner(System.in);
Movimiento coord;
int x,y;
char tecla;
System.out.println("Digita las coordenadas de inicio
Digita X: ");
x=lector.nextInt();
System.out.println("Digita Y: ");
y=lector.nextInt();
coord=new Movimiento(x,y);
do{
System.out.println("ARRIBA = W
ABAJO = S
DERECHA = A
IZQUIERDA = D
POSICION ACTUAL = V
SALIR = X
Digita hacia donde quieres moverte: ");
tecla=lector.next().charAt(0);
switch(tecla){
case 'W':
case 'w':
coord.arriba();
System.out.println("ARRIBA");
System.out.println("x= "+coord.getX()+" y= "+coord.getY()+"
");
break;
case 'S':
case 's':
coord.abajo();
System.out.println("ABAJO");
System.out.println("x= "+coord.getX()+" y= "+coord.getY()+"
");
break;
case 'A':
case 'a':
coord.derecha();
System.out.println("DERECHA");
System.out.println("x= "+coord.getX()+" y= "+coord.getY()+"
");
break;
case 'D':
case 'd':
coord.izquierda();
System.out.println("IZQUIERDA");
System.out.println("x= "+coord.getX()+" y= "+coord.getY()+"
");
break;
case 'V':
case 'v':
System.out.println("POSICION ACTUAL");
System.out.println("x= "+coord.getX()+" y= "+coord.getY()+"
");
break;
default:
System.out.println("Error: Accion no valida.
");
}
}while(tecla!='x');
}
}
Cogí tú ejercicio como idea, llego un momento en que no podía seguir así que por eso lo cogí de ejemplo y le hice algunas modificaciones, pude comprender mejor el ejercicio. Gracias.
gracias amigo
Me salen errores, no sirve.
gracias a tu ejercicio, pude mejorar un poco mas mi codigo
Chamo lo hiciste al reves XD al darle arriba baja en el eje x, y al darle abajo sube por otro lado, pero me funciono excelente trabajo!!!
Felicidades por los 50k subs Alejandro, ahora por los 100k
Muchas gracias Alberto :)
Esta fue mi forma de hacerlo, gracias Alejandro por tus clases, aunque ya no te encuentres con vida, nos sigues enseñando demasiado.
package Tablero;
public class Tablero {
private final int Columna,Fila;
private int x,y;
private boolean bool=false;
public Tablero(int Columna, int Fila, int x, int y) {
this.Columna = Columna;
this.Fila=Fila;
this.x=x;
this.y=y;
}
public int getColumna() {
return Columna;
}
public int getFila() {
return Fila;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public void MostrarPosicion(){
System.out.println("Te encuentras en la posición ("+x+","+y+")");
}
public boolean Movimiento(String mov){
switch(mov){
case "W":
System.out.println("Te moviste arriba");
y=y-1;
if(y==0){
y=Fila;
}
break;
case "S":
System.out.println("Te moviste abajo");
y=y+1;
if(y==Fila+1){
y=1;
}
break;
case "A":
System.out.println("Te moviste a la izquierda");
x=x-1;
if(x==0){
x=Columna;
}
break;
case "D":
System.out.println("Te moviste a la derecha");
x=x+1;
if(x==Columna+1){
x=1;
}
break;
default:
System.out.println("Movimiento no reconocido, gracias por jugar");
bool=true;
break;
}
return bool;
}
public void imprimirTablero(){
for(int i=1;i
Rezare por ti Alejandro, por tu apoyo incondicional a todos nosotros. Dios te tenga en su gloria y descansa en Paz, amigo y maestro Alejandro.
Ejercicio #2 :D
Clase 1:
package ClasesYObjetos;
public class Posicion {
//Atributos
private int ejeX;
private int ejeY;
//Metodos
//Constructor
public Posicion(int ejeX, int ejeY){
this.ejeX = ejeX;
this.ejeY = ejeY;
}
//Mover hacia arriba
public void moverArriba(){
ejeY += 1;
System.out.println("DIRECCION HACIA ADELANTE");
System.out.println("POSICION: ("+ejeX+","+ejeY+")");
}
//Mover hacia abajo
public void moverAbajo(){
ejeY -= 1;
System.out.println("DIRECCION HACIA ABAJO");
System.out.println("POSICION: ("+ejeX+","+ejeY+")");
}
//Mover hacia derecha
public void moverDerecha(){
ejeX += 1;
System.out.println("DIRECCION HACIA DERECHA");
System.out.println("POSICION: ("+ejeX+","+ejeY+")");
}
//Mover hacia arriba
public void moverIzquierda(){
ejeX -= 1;
System.out.println("DIRECCION HACIA IZQUIERDA");
System.out.println("POSICION: ("+ejeX+","+ejeY+")");
}
//Getter posicion X
public int getEjeX(){
return ejeX;
}
//Getter posicion Y
public int getEjeY(){
return ejeY;
}
}
Clase main:
package ClasesYObjetos;
import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args){
//Variable
char proximoMov = '0';
//Crear objeto con cordenadas iniciales x=0, y=0
Posicion objeto = new Posicion(0,0);
System.out.println("POSICION INICIAL: ("+objeto.getEjeX()+","+objeto.getEjeY()+")");
while(proximoMov != 'E'){
//Identificar el proximo movimiento
do {
proximoMov = Character.toUpperCase(JOptionPane.showInputDialog("Ingrese el siguiente movimiento"+"
"+"W-Adelante
"+"S-Atras
"+"A-Izquierda
"+"D-Derecha
"+"E-Salir
").charAt(0));
} while ((proximoMov !='W')&&(proximoMov !='A')&&(proximoMov !='S')&&(proximoMov !='D')&&(proximoMov !='E'));
//Realizar el movimiento
switch(proximoMov){
case 'W':
objeto.moverArriba();
break;
case 'S':
objeto.moverAbajo();
break;
case 'A':
objeto.moverIzquierda();
break;
case 'D':
objeto.moverDerecha();
break;
case 'E':
System.out.println("Gracias por jugar!");
break;
default:
System.out.println("Movimiento no reconocido");
break;
}
}
}
}
Funciona muy bien!!!
oye lo pusiste felicitaciones
amigo te felicito , pero no es POR despreciar ni por creerme mas simplemente hay un dicho que escuche del gran maestro Alvaro Felipe de EDteam ,es que si tienes mas de dos veces la misma linea de código significa que es una mala practica un programador , lo que tienes que hacer es simplificar (optimizar) y si eres ingeniero con mucha mas razón , tu programa esta chvr y me guié de tu lógica, lo acorte bastante espero te sirva , ÉXITOS
Main :
public static void main(String[] args) {
Scanner entrada=new Scanner(System.in);
boolean x=false;
do {
System.out.print("Introduzca una accion : ");
String d=entrada.nextLine();
Posicion op=new Posicion(d.toUpperCase());
op.ImprimirPos();
if(op.saliendo()==true) {
x=true;
break;
}
}while(x==false);
System.out.println("Fin");
}
Posicion:
private static int ejex;
private static int ejey;
private String p;
private boolean s=false;
//constructor
public Posicion(String p) {
this.p=p;
}
public void ImprimirPos() {
switch (p) {
case "W":
ejey++;
break;
case "S" :
ejey--;
break;
case "A":
ejex--;
break;
case "D":
ejex++;
break;
default:
System.out.println("saliendo");
s=true;
break;
}
System.out.println("La posicion final es : "+ejex+","+ejey);
}
public boolean saliendo() {
return s;
}
@@sr_tr un par de cosas, primero, el ejercicio dice que al final de cada movimiento se muestre en que direccion se hizo para guiar al usuario y la posicion actual. La segunda es el tema del codigo amigable, las variables de una sola letra sin ningun comentario que aclare que significan suelen estar mal vistas ya que si hicieras el proyecto con alguien mas, le resultaria imposible entender el codigo con solo verlo, al menos si fuera algo mas grande.
estoy por javascript pero ya estoy dispuesto a seguirte por tu manera de explicar
Hasta este día me entero que falleciste, eres un grande! Dios te tenga en la gloria. Descansa en paz. Gracias a tus vídeos estoy interesado cada día mas en la programación, eres una leyenda, nunca seras olvidado!
Eres un super talento como pedagogo. Grande hermano
Aún en la muerte me sigues ayudando
DE LEJOS.... UN CRACK!! 👏👏👏👏👏👏
tengo parcial este sábado dame tu bendición :'v
aún veo tus videos, gracias por tanto crack justo lo que necesitaba
/*
Ejercicio 2: Construir un programa que permita dirigir el movimiento de un objeto dentro de un tablero
y actualice su posición dentro del mismo. Los movimientos posibles son ARRIBA, ABAJO, IZQUIERDA y DERECHA.
Tras cada movimiento el programa mostrará la nueva dirección elegida y las coordenadas de situación del objeto dentro del tablero.
*/
package entidades;
public class Objeto {
private int ordenada;
private int abscisa;
public Objeto(){
this.ordenada = 0;
this.abscisa = 0;
}
public void moverArriba(){
this.ordenada++;
}
public void moverAbajo(){
this.ordenada--;
}
public void moverIzquierda(){
this.abscisa--;
}
public void moverDerecha(){
this.abscisa++;
}
@Override
public String toString(){
return "Coordenadas actuales: ("+this.abscisa+", "+this.ordenada+").";
}
}
package presentacion;
import entidades.Objeto;
import java.util.Scanner;
public class PruebaObjeto {
private static Scanner sc = new Scanner(System.in);
public static int menu(){
int op;
do{
System.out.println("
MENU DE OPCIONES :D");
System.out.println("1. Ingresar movimiento(Arriba = W)(Abajo = S)(Izquierda = A)(Derecha = D).");
System.out.println("2. Salir");
System.out.print("Ingresar opcion: ");
op = sc.nextInt();
}while(op2);
return op;
}
public static void main(String[] args) {
Objeto o1 = new Objeto();
int opcion;
char mov;
do{
opcion = menu();
switch(opcion){
case 1:
System.out.print("Ingresar movimiento: ");
sc.nextLine();
mov = sc.nextLine().charAt(0);
switch(mov){
case 'w','W':
o1.moverArriba();
System.out.println("
Movimiento Ingresado: ARRIBA.
"+o1.toString());
break;
case 'a','A':
o1.moverIzquierda();
System.out.println("
Movimiento Ingresado: IZQUIERDA.
"+o1.toString());
break;
case 's','S':
o1.moverAbajo();
System.out.println("
Movimiento Ingresado: ABAJO.
"+o1.toString());
break;
case 'd','D':
o1.moverDerecha();
System.out.println("
Movimiento Ingresado: DERECHA.
"+o1.toString());
break;
default:
System.out.println("
Movimiento inválido.");
}
break;
case 2:
System.out.println("
Saliendo del programa..."); break;
}
}while(opcion != 2);
}
}
Esta persona a contribuido al mundo
Excelente legado. Gracias.. Envió mi solución del ejercicio 2, incluye el tablero (matriz 10 x 10 lleno de 0) y el objeto dentro(un 1). Salio un poco extenso por limitar el movimiento dentro del tablero. Espero les sea de utilidad.
package ClasesYObjetos;
import javax.swing.JOptionPane;
public class main2 {
public static void main(String[] args) {
char mov='n';
int I=5;
int J=5;
boolean seguir = true;
do {
System.out.println("El objeto en el tablero:");
MovimientoTablero objeto = new MovimientoTablero(I,J,mov);
I=objeto.gety();
J=objeto.getx();
System.out.println("Coordenadas del objeto:
"
+ "X = "+(J+1)+" ; Y = "+(I+1));
mov=JOptionPane.showInputDialog("Seleccione el movimiento deseado:
"
+ "ARRIBA: W
"
+ "ABAJO: S
"
+ "DERECHA: D
"
+ "IZQUIERDA: A
"
+ "SALIR: E").charAt(0);
System.out.println("la tecla seleccionada es: "+mov);
if( mov=='e'|| mov=='E') {
seguir= false;
}
}while(seguir==true );
}
}
package ClasesYObjetos;
public class MovimientoTablero {
private int x, y; // Coordenadas posicion
private char movimiento;
private int tablero[][]=new int[10][10]; // Tablero
public MovimientoTablero(int i, int j, char mov) {
y = i;
x = j;
movimiento = mov;
switch(movimiento) { //MODIFICA COORDENADAS SEGUN MOVIMIENTO INDICADO
case 'W':
case 'w': if (y=9) {
break;
}
else {
y++;
}
break;
case 'D':
case 'd': if (x>=9) {
break;
}
else {
x++;
}
break;
case 'A':
case 'a': if (x
Holaaa soy tu fann, genial como explicas ^--^
Hola :) Muchas gracias, Un saludo desde Perú
Siempre serás nuestro profe
educando al pueblo, gracias
Ejercicio 2: Construir un programa que permita dirigir el movimiento de un objeto dentro de un tablero y actualice su posición dentro del mismo. Los movimientos posibles son ARRIBA, ABAJO, IZQUIERDA y DERECHA. Tras cada movimiento el programa mostrará la nueva dirección elegida y las coordenadas de situación del objeto dentro del tablero
Clase:
public class Tablero {
private int filas=13;
private int columnas=13;
private int X=6;
private int Y=6;
private int matriz [][]=new int [filas][columnas];
public void Matriz(){
for (int i = 0; i < filas; i++) {
for (int j = 0; j < columnas; j++) {
matriz[i][j]=0;
}
}
matriz[X][Y]=1;
for (int i = 0; i < filas; i++) {
for (int j = 0; j < columnas; j++) {
System.out.print(matriz[i][j]+" ");
}
System.out.println();
}
}
public void Arriba(){
if(X>0){
matriz[X][Y]=0;
matriz[--X][Y]=1;
Imprimir();
}else {
System.out.println("Has llegado al borde superior");
}
}
public void Abajo(){
if(X {
Matriz.Arriba();
}
case "S","s" -> {
Matriz.Abajo();
}
case "A","a" -> {
Matriz.Izquierdad();
}
case "D","d"-> {
Matriz.Derecha();
}
case "F","f"-> {
palanca=false;
System.out.println("salindo......");
}
default->{System.out.println("Opcion no validad");}
}
}
}
}
Genial tu curso¡ Me gustaría ver un vídeo más pero sobre UML, sus conexiones etc. Es difícil encontrar uno con tu forma de desarrollar el contenido
GRACIAS SENSEI SEGUIMOS TU LEGADO
PARTE LOGICA
Construir un programa que permita dirigir el movimiento de un objeto dentro de un tablero y actualice su posición dentro del mismo
Los movimientos posibles son ARRIBA, ABAJO, IZQUIERDA y DERECHA.
Tras cada movimiento el programa mostrará la nueva dirección elegida y
las coordenadas de situación del objeto dentro del tablero.
*/
public class PersonajeTablero2byme {
private int ejeX;
private int ejeY;
public PersonajeTablero2byme(int ejeX, int ejeY) {
this.ejeX = ejeX;
this.ejeY = ejeY;
}
public void getArriba(){
int arriba=ejeY--;
}
public void abajo(){
int abajo=ejeY++;
}
public void izquierda(){
int izquierda=ejeX--;
}
public void derecha(){
int derecha=ejeX++;
}
public void resultado(){
System.out.println("personaje movido ahora tiene POSICION X:"+ejeX+ " POSICION Y: "+ejeY);
}
}
CLASE MAIN
public class MainPersonajeTablero2byme {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
PersonajeTablero2byme personaje = new PersonajeTablero2byme(0,0); //mitad del tablero
String dondeMoverPersonaje;
while(true){
System.out.println("escribe arriba, abajo, izq, derecha para mover el personaje o salir ");
dondeMoverPersonaje=sc.nextLine().toLowerCase();
switch(dondeMoverPersonaje){
case "arriba":
personaje.getArriba();
break;
case "abajo":
personaje.abajo();
break;
case "izquierda":
personaje.izquierda();
break;
case "derecha":
personaje.derecha();
break;
case "salir":
System.out.println("saliendo del programa....");
return;
default:
System.out.println("direccion no valida intentelo de nuevo");
}
personaje.resultado();
}
}
}
Gente me rindo, estuve como una hora haciendo el ejercicio, funciona bien en movimientos, pero no se que falla en el while, bueno aqui lo dejo:
METODO PRINCIPAL
public class OK2 {
public static void main(String[] args) {
Scanner entrada=new Scanner(System.in);
OK c1=new OK();
char posicion;
System.out.print("Ingresa una letra: ");
posicion=entrada.next().charAt(0);
while(posicion=='w' || posicion=='a' || posicion=='s' || posicion=='d'){
switch(posicion){
case 'w':c1.arriba();break;
case 's':c1.abajo();break;
case 'a':c1.izquierda();break;
case 'd':c1.derecha();break;
default:System.out.println("No es correcto");break;
}
c1.mostrar();
System.out.print("Ingresa una letra: ");
posicion=entrada.next().charAt(0);
}
}
}
AQUI LOS METODOS NORMALES
public class OK {
int x=0,y=0;
public void derecha(){
x+=1;
}
public void izquierda(){
x-=1;
}
public void arriba(){
y+=1;
}
public void abajo(){
y-=1;
}
public void mostrar(){
System.out.println("["+x+"] ["+y+"]");
}
}
Podrías haber explicado qué fallo le ves al while. A mi me va bien tu código. En todo caso en default no se necesita un break, pero funciona igual con él como sin él. Pues nada, que sepas que funciona bien, o al menos yo no le veo el fallo.
/*
Construir un programa que permita dirigir el movimiento de un objeto dentro de un
tablero y actualice su posicion dentro del mismo. Los movimientos posibles son
ARRIBA, ABAJO, IZQUIERDA y DERECHA. Tras cada movimiento el programa mostrara la
nueva direccion elegida y las coordenadas de situacion del objeto dentro del
tablero.
*/
package pruebas;
import java.util.Scanner;
import javax.swing.JOptionPane;
public class Ejercicio {
//atributos
public int ejeX;
public int ejeY;
//metodo constructor
public Ejercicio(int ejeX, int ejeY) {
this.ejeX = ejeX;
this.ejeY = ejeY;
}
public void moverArriba(){
ejeY+=1;
System.out.println("DIRECCION: hacia adelante.");
System.out.println("POSICION: ("+ejeX+";"+ejeY+")");
System.out.print("
Ingrese el siguiente movimiento: ");
}
public void moverAbajo(){
ejeY-=1;
System.out.println("DIRECCION: hacia atras.");
System.out.println("POSICION: ("+ejeX+";"+ejeY+")");
System.out.print("
Ingrese el siguiente movimiento: ");
}
public void moverDerecha(){
ejeX+=1;
System.out.println("DIRECCION: hacia la derecha.");
System.out.println("POSICION: ("+ejeX+";"+ejeY+")");
System.out.print("
Ingrese el siguiente movimiento: ");
}
public void moverIzquierda(){
ejeX-=1;
System.out.println("DIRECCION: hacia la izquierda.");
System.out.println("POSICION: ("+ejeX+";"+ejeY+")");
System.out.print("
Ingrese el siguiente movimiento: ");
}
//Getter posicion X
public int getEjeX() {
return ejeX;
}
//Getter posicion Y
public int getEjeY() {
return ejeY;
}
}
MAIN
/*
*/
package pruebas;
import java.util.Scanner;
import javax.swing.JOptionPane;
public class Pruebas {
public static void main(String[] args) {
Scanner SC = new Scanner(System.in);
char movimiento=0;
Ejercicio mov = new Ejercicio(0,0);
System.out.print("Ingrese el movimiento: ");
while(movimiento!='E'){
movimiento = SC.next().charAt(0);
switch(movimiento){
case 'W':
mov.moverArriba();
break;
case 'S':
mov.moverAbajo();
break;
case 'D':
mov.moverDerecha();
break;
case 'A':
mov.moverIzquierda();
break;
case 'E':
movimiento = 'E' ;
break;
default:
System.out.println("Movimiento no reconocido");
System.out.print("
Ingrese el siguiente movimiento: ");
}
}
System.out.println("
Vuelva pronto");
}
}
excelente bro
gracias Alejandro
Después de tirarme un buen tiempo tratando de realizar el ejercicio nº 2, esta fue la forma en la que pude hacerlo:
================================================================
Calse Tablero:
================================================================
package Ejercicio02;
public class Tablero {
// Atributos.
int matriz[][];
int nFilas, nColumnas, posicion;
// Métodos.
public void tamañoMatriz(int nFilas, int nColumnas) {
this.nFilas = nFilas;
this.nColumnas = nColumnas;
matriz = new int[nFilas][nColumnas];
}
public void llenadoMatriz() {
System.out.println("
La matriz es: ");
int k = 0;
for (int i = 0; i < nFilas; i++) {
for (int j = 0; j < nColumnas; j++) {
matriz[i][j] = k + 2;
k += 2;
}
}
}
public void mostrarMatriz() {
for (int i = 0; i < nFilas; i++) {
for (int j = 0; j < nColumnas; j++) {
System.out.print("[" + matriz[i][j] + "]");
}
System.out.println("");
}
}
public void posicionDireccion(int posicion) {
this.posicion = posicion;
}
public void elementoMovido(int sCase) {
System.out.println("posición es igual a: " + posicion);
int mov = 0;
switch (sCase) {
case 1:
// Mover hacia arriba
System.out.println("
A elegido la opción 1 (mover hacia arriba).");
int k = 1;
for (int i = 0; i < nFilas; i++) {
for (int j = 0; j < nColumnas; j++) {
if (k == posicion) {
mov = matriz[i - 1][j];
matriz[i - 1][j] = matriz[i][j];
matriz[i][j] = mov;
//System.out.println("\"k\" es igual a: "+ k);
k++;
break;
} else {
k++;
}
}
}
break;
case 2:
// Mover hacia abajo
System.out.println("
A elegido la opción 2 (mover hacia abajo).");
System.out.println("Scase equivale a: " + sCase);
k = 1;
for (int i = 0; i < nFilas; i++) {
for (int j = 0; j < nColumnas; j++) {
if (k == posicion) {
mov = matriz[i + 1][j];
matriz[i + 1][j] = matriz[i][j];
matriz[i][j] = mov;
k++;
break;
} else {
k++;
}
}
}
break;
case 3:
// Mover hacia la izquierda
System.out.println("
A elegido la opción 3 (mover hacia la izquierda).");
k = 1;
for (int i = 0; i < nFilas; i++) {
for (int j = 0; j < nColumnas; j++) {
if (k == posicion) {
mov = matriz[i][j - 1];
matriz[i][j - 1] = matriz[i][j];
matriz[i][j] = mov;
k++;
break;
} else {
k++;
}
}
}
break;
case 4:
// Mover hacia la derecha
System.out.println("
A elegido la opción 4.");
k = 1;
for (int i = 0; i < nFilas; i++) {
for (int j = 0; j < nColumnas; j++) {
if (k == posicion) {
mov = matriz[i][j + 1];
matriz[i][j + 1] = matriz[i][j];
matriz[i][j] = mov;
k++;
break;
} else {
k++;
}
}
}
break;
default:
System.out.println("\"" + sCase + "\", no es una opción válida.");
System.out.println("");
}
}
public void nuevaMatriz() {
System.out.println("La nueva matriz es:");
for (int i = 0; i < nFilas; i++) {
for (int j = 0; j < nColumnas; j++) {
System.out.print("[" + matriz[i][j] + "]");
}
System.out.println("");
}
}
}
================================================================
Clase Main:
================================================================
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
int nFil, nCol, posicion, sCase;
System.out.println("Estableciendo el tamaño de la matriz: ");
System.out.print("Digite el nº de filas: ");
nFil = entrada.nextInt();
System.out.print("Digite el nº de columnas: ");
nCol = entrada.nextInt();
Tablero tb = new Tablero();
tb.tamañoMatriz(nFil, nCol);
tb.llenadoMatriz();
tb.mostrarMatriz();
System.out.println("
Digite el nº de la casilla del objeto que quiere mover: ");
posicion = entrada.nextInt();
System.out.println("
Hacia dónde lo quiere mover:
1. Arriba.
2. Abajo
3. Izquierda.
4. Derecha.");
sCase = entrada.nextInt();
tb.posicionDireccion(posicion);
tb.elementoMovido(sCase);
if ((sCase == 1)|| (sCase == 2)||(sCase == 3)||(sCase == 4)) {
tb.nuevaMatriz();
}
}
Ejercicio 2:
HICE EL TABLERO CON UNA MATRIZ :)
////////////////////////CLASE OBJETO
public class Objeto {
private int x;
private int y;
private String desplazamiento;
public Objeto(int x, int y) {
this.x = x;
this.y = y;
}
public int arriba(){
y = y - 1;
return y;
}
public int abajo(){
y = y + 1;
return y;
}
public int derecha(){
x = x + 1;
return x;
}
public int izquierda(){
x = x - 1;
return x;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public String getDesplazamiento() {
return desplazamiento;
}
public void setDesplazamiento(String desplazamiento) {
this.desplazamiento = desplazamiento;
}
public void mostrarPosicion(){
System.out.println("Posición: Fila " + (y) + ", Columna: " + (x));
}
}
///////////////////////CLASE PRINCIPAL
import javax.swing.JOptionPane;
public class Principal {
public static void main(String[] args) {
int tablero[][] = new int[5][5];
//Definición de la posición incial
int posy = Integer.parseInt(JOptionPane.showInputDialog("Digite la fila donde esta el objeto"));
int posx = Integer.parseInt(JOptionPane.showInputDialog("Digite la columna donde esta el objeto"));
Objeto obj1 = new Objeto(posx, posy);
for(int j = 0; j < 5; j++){
for(int k = 0; k < 5; k++){
if((j + 1) == obj1.getY() && (k + 1) == obj1.getX()){
tablero[j][k] = 1;
}
}
}
for(int j = 0; j < 5; j++){//Impresión del tablero con el objeto
for(int k = 0; k < 5; k++){
System.out.print(" " + tablero[j][k] + " ");
}
System.out.println("");
}
obj1.mostrarPosicion();
System.out.println("");
for(int i = 0; i < 5; i++){//Reinicio de tablero
for(int j = 0; j < 5; j++){
tablero[i][j] = 0;
}
}
for(int i = 0; i < 5; i++){
String movimiento = JOptionPane.showInputDialog("Movimiento N°" + (i + 1));
switch (movimiento){
case "arriba":
obj1.arriba();
obj1.setDesplazamiento("arriba");
break;
case "abajo":
obj1.abajo();
obj1.setDesplazamiento("abajo");
break;
case "derecha":
obj1.derecha();
obj1.setDesplazamiento("derecha");
break;
case "izquierda":
obj1.izquierda();
obj1.setDesplazamiento("izquierda");
break;
}
for(int j = 0; j < 5; j++){//Definiendo nueva posición del objeto
for(int k = 0; k < 5; k++){
if((j + 1) == obj1.getY() && (k + 1) == obj1.getX()){
tablero[j][k] = 1;
}
}
}
for(int j = 0; j < 5; j++){//Impresión de la nueva posición
for(int k = 0; k < 5; k++){
System.out.print(" " + tablero[j][k] + " ");
}
System.out.println("");
}
System.out.println("El objeto se desplazó hacia: " + obj1.getDesplazamiento());
obj1.mostrarPosicion();
System.out.println("");
for(int j = 0; j < 5; j++){//Reinicio de tablero
for(int k = 0; k < 5; k++){
tablero[j][k] = 0;
}
}
}
}
}
Para el ejercicio 2:
public class Movimiento {
//atributos
protected int x, y;
//metodos constructores
public Movimiento() {
x = 0;
y = 0;
}
public Movimiento(int x, int y) {
this.x = x;
this.y = y;
}
//metodos
public int moverArriba(){
y++;
return x;
}
public int moverAbajo(){
y--;
return y;
}
public int moverDerecha(){
x++;
return x;
}
public int moverIzquierda(){
x--;
return x;
}
public String toString(){
return "Las coordenadas son: (" + x + ", " + y + ")";
}
}
//archivo main
import static javax.swing.JOptionPane.showMessageDialog;
public class Main {
public static void main(String args[]){
Movimiento m = new Movimiento();
m.moverArriba();
m.moverDerecha();
m.moverAbajo();
m.moverIzquierda();
showMessageDialog(null, m.toString());
}//main
}//class
mi hermano me harías un grande favor si abarcas los temas de los principios S.O.L.I.D, es algo que en mi curso en la universidad no vi y ahora lo estoy necesitando, no logro entenderlo muy bien. te agradecería mucho.
Aqui esta mi ejercicio, si no les funciona me avisan para que les explique como funciona
package Ejercicio2;
public class Movimiento {
//atributos
private int fila;
private int columna;
private int matriz[][];
//Metodos
//Metodo constructor
public Movimiento(int fila, int columna, int[][] matriz) {
this.fila = fila;
this.columna = columna;
this.matriz = matriz;
}
public void PosActual(int a,int b) {
for(int i=0;i
Muy ingenioso hacer el tablero. Algo pequeño, pero al menos hay un tablero y se ve el movimiento. No me lo había planteado.
@@joseph1978vlc gracias por la respuesta, se me ocurrió al pensar en uno de esos juegos 2D
Primeroooo! Gracias por los vídeos , son de mucha ayuda^^
Ejercicio 2:
package Ejercicio2;
import javax.swing.*;
public class Main
{
public static void main(String[] args)
{
//Matriz(tabla) de objetos por donde se desplazará
Movimiento objeto[][] = new Movimiento[6][6];
//Variables de posición inicial del objeto
int fila =2, col = 2;
//Objeto a mover
objeto[fila][col] = new Movimiento(fila, col);
//Imprime la coordada inicial del objeto
System.out.println("Coordenada inicial: [" + fila + "][" + col + "]");
//Menú de opciones para desplazarse, el ciclo finaliza hasta detectar el caracter 'Q'
char a;
do
{
a = JOptionPane.showInputDialog("Movimientos:
W = Arriba
S = Abajo
A = Izquierda
D = Derecha
Q = Salir").charAt(0);
a = Character.toUpperCase(a);
//fil_aux y col_aux recordaran la última posición del objeto para borrarlo cuando cambie la posición
int fil_aux = fila, col_aux = col;
switch (a)
{
case 'W':
fila = objeto[fila][col].arriba();
break;
case 'S':
fila = objeto[fila][col].abajo();
break;
case 'A':
col = objeto[fila][col].izquuierda();
break;
case 'D':
col = objeto[fila][col].derecha();
break;
case 'Q':
break;
default:
JOptionPane.showMessageDialog(null, "Opción no válida");
}
//El objeto en la nuava posicón será igual al objeto antes del movimiento
objeto[fila][col] = objeto[fil_aux][col_aux];
//Se comprueba que no se borre el objeto cuando llegue a los límites de la matriz para evitar que se pierdan los datos y genere un error
if (fila != fil_aux || col != col_aux)
objeto[fil_aux][col_aux] = null;
}while (a!='Q');
}
}
package Ejercicio2;
public class Movimiento
{
private int fila, col;
public Movimiento(int fila, int col) {
this.fila = fila;
this.col = col;
}
public int arriba()
{
if (fila != 0)
{
fila--;
}
mensaje("ARRIBA");
return fila;
}
public int abajo()
{
if(fila != 5)
{
fila++;
}
mensaje("ABAJO");
return fila;
}
public int izquuierda()
{
if (col != 0)
{
col--;
}
mensaje("IZQUIERDA");
return col;
}
public int derecha()
{
if (col != 5)
{
col++;
}
mensaje("DERECHA");
return col;
}
//Imprime mensaje con las coordenadas actuales del objeto
public void mensaje(String msj)
{
System.out.println(msj + ", coordenadas: [" + fila + "][" + col + "]");
}
}
*PROBLEMA 2 DE FORMA SENCILLA*
*CLASE1:*
package paquete;
import javax.swing.JOptionPane;
public class Clase1 {
private int x, y;
private String decision = "";
private int bandera = 0;
public Clase1(int x, int y) {
this.x = x;
this.y = y;
}
public void menu() {
decision = JOptionPane.showInputDialog(null, "W. Para moverse arriba"
+ "
S. Para moverse abajo"
+ "
D. Para moverse a la derecha"
+ "
A. Para moverse a la izquierda"
+ "
X. Para salir");
}
public void Operaciones() {
if (decision.equals("W") || decision.equals("w")) {
y = y + 1;
} else if (decision.equals("S") || decision.equals("s")) {
y = y - 1;
} else if (decision.equals("D") || decision.equals("d")) {
x = x + 1;
} else if (decision.equals("A") || decision.equals("a")) {
x = x - 1;
} else if (decision.equals("X") || decision.equals("x")) {
bandera = 1;
} else {
System.out.println("Opcion no disponible, vuelva a intentarlo");
}
}
public void mostrarResultados() {
System.out.println("Se encuentra en x: " + x);
System.out.println("Se encuentra en y: " + y);
System.out.println("");
}
public int getBandera() {
return bandera;
}
}
*CLASE MAIN:*
package paquete;
import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args) {
int x = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese la coordenada x en la que se encuentra"));
int y = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese la coordenada y en la que se encuentra"));
Clase1 ob1 = new Clase1(x, y);
while (ob1.getBandera() == 0) {
ob1.menu();
ob1.Operaciones();
ob1.mostrarResultados();
}
}
}
Genial. (Bueno, apuntar que estrictamente por "cuadrilátero" aquí deberíamos entender 'paralelogramo'.)
Bien profe (y)
/*
Ejercicio 2: Construir un programa que permita dirigir el movimiento de un
objeto dentro de un tablero y actualice su posición dentro del mismo.
Los movimientos posibles son ARRIBA, ABAJO, IZQUIERDA y DERECHA.
Tras cada movimiento el programa mostrará la nueva dirección elegida y las
coordenadas de situación del objeto dentro del tablero.
*/
package Ejercicio2;
import javax.swing.JOptionPane;
public class Movimiento {
//Atributos
private static int x=0;
private static int y=0;
//Metdodo
public Movimiento(int mov){
}
public int arriba(){
y++;
return y;
}
public int abajo(){
y--;
return y;
}
public int derecha(){
x++;
return x;
}
public int izquierda(){
x--;
return x;
}
public void nuevoMov(){
System.out.println("Ubicacion(x,y) = ("+x+":"+y+")");
}
}
//EN UNA CLASE LO DE ARRIBA Y LO DE ABAJO EN OTRA
package Ejercicio2;
import javax.swing.JOptionPane;
public class Principal {
public static void main(String [] args){
int mov;
do{
mov = Integer.parseInt(JOptionPane.showInputDialog("Dijite un movimiento: "
+"
1. Subir"
+"
2. Bajar"
+"
3. Derecha"
+"
4. Izquierda"
+"
5. Salir"));
Movimiento auto = new Movimiento(mov);
switch(mov){
case 1: auto.arriba();
auto.nuevoMov();
break;
case 2: auto.abajo();
auto.nuevoMov();
break;
case 3: auto.derecha();
auto.nuevoMov();
break;
case 4: auto.izquierda();
auto.nuevoMov();
break;
default: System.out.println("Error no existe esa opcion");
}
}while(mov !=5);
System.out.println("Gracis por participar");
}
}
Hay mas videos todavia sobre este curso aparte de los 105 publicados aca en you tube , los cursos que hay si funcionan y explicam completamente las bases de java ?
creo que si, en udemy
siempre deja el link de su curso en la descripción
Un grande
/*
Construir un programa que permita dirigir el
movimiento de un obvjeto dentro de un tablero
y actualice su posicion dentro del mismo. Los
movimientos posibles son ARRIBA, ABAJO, ISQUIERDA,
y DERECHA. Tras cada movimiento el pograma mostrara
la nueva direccion elegida y las coordenadas
de situacion del objeto dentro del tablero.
*/
package ej2poo;
import java.util.Scanner;
import javax.swing.JOptionPane;
public class Ej2POO
{
public static void main(String[] args)
{
auxiliar alfito=new auxiliar(0,0);
Scanner ob=new Scanner(System.in);
System.out.println("La posicion inicial del objeto es: "+"("+alfito.getEjeX()+")"+"("+alfito.getEjeY()+")");
int eleccion;
String xd;
do
{
System.out.print("
Hacia donde quiere mover el objeto?
1.-Arriba
2.-Abajo
3.-Izquierda
4.-Derecha
");
eleccion = ob.nextInt();
switch (eleccion)
{
case 1: alfito.moverArriba();
break;
case 2: alfito.moverAbajo();
break;
case 3: alfito.moverIzquierda();
break;
case 4: alfito.moverDerecha();
break;
default: System.out.println("Movimiento no reconocido");
break;
}
xd = JOptionPane.showInputDialog("Desea hacer otro movimiento? s/n"); //Funciona con JOption, pero la ventana no aparece sino en el escritorio.
//System.out.println("Desea hacer otro movimiento? s/n"); --- Aparentemente no funciona al capturar y se pasa directamente a finalizar el programa.
//xd=ob.nextLine(); --- Parece que es debido a un problema con el Scanner, habr[ia que inevstigar mas.
}while(xd.equalsIgnoreCase("s"));
System.out.println("La posicion final del objeto es: "+"("+alfito.getEjeX()+")"+"("+alfito.getEjeY()+")");
}//Cierra el main
}//Cierra la clase
package ej2poo;
public class auxiliar
{
private int ejeX;
private int ejeY;
public auxiliar(int ejeX, int ejeY)
{
this.ejeX = ejeX;
this.ejeY = ejeY;
}//Cierra el constructor
public int getEjeX()
{
return ejeX;
}//Cierra getterX
public int getEjeY()
{
return ejeY;
}//Cierra getterY
public void moverArriba()
{
ejeY += 1;
System.out.println("("+ejeX+")"+"("+ejeY+")");
}//Cierra metodo moverArriba
public void moverAbajo()
{
ejeY -= 1;
System.out.println("("+ejeX+")"+"("+ejeY+")");
}//Cierra metodo moverAbajo
public void moverIzquierda()
{
ejeX -= 1;
System.out.println("("+ejeX+")"+"("+ejeY+")");
}//Cierra metodo moverIzquierda
public void moverDerecha()
{
ejeX += 1;
System.out.println("("+ejeX+")"+"("+ejeY+")");
}//Cierra metodo moverDerecha
}//Cierra la clase
Ejercicio 2:
public class Tablero {
//Atributos
private int filas; //numero de filas
private int columnas; //Numero de columnas
private int posX;
private int posY;
//metodo constructor para las dimensiones del tablero
public Tablero(int filas, int columnas) {
this.filas = filas;
this.columnas = columnas;
this.posX = 0;
this.posY = 0;
}
//Para movernos arriba metodo
public void ARRIBA(){
if(posY < columnas){
posY += 1;
}
Coordenadas(); //imprimir coordenadas actuales
}
//Para movernos abajo
public void ABAJO(){
if(posY < columnas){
posY -= 1;
}
Coordenadas(); //imprimir coordenadas actuales
}
//Para movernos a la izquierda
public void IZQUIERDA(){
if(posX < filas){
posX -=1;
}
Coordenadas(); //imprimir coordenadas actuales
}
//Para movernos a la dereccha
public void DERECHA(){
if(posX < filas){
posX = posX + 1;
}
Coordenadas(); //imprimir coordenadas actuales
}
//utilizamos este metodo para mostrar las coordenadas actuales de X y Y.
public void Coordenadas(){
System.out.println("Las coodernadas son: "+(posX)+","+(posY));
}
}
import java.util.Scanner;
public class TableroMain {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int filas, columnas;
String direccion;
System.out.println("Digite la cantidad de filas(X): ");
filas = sc.nextInt();
System.out.println("Digite la cantidad de columnas(Y): ");
columnas = sc.nextInt();
//mandamos los argumentos para rellenar el metodo constructor de la clase
Tablero tab = new Tablero(filas,columnas);
while(true) //Creamos un bucle infinito usando la condicion True dentro del bucle While
{
System.out.println("Digite la direccion el que se quiere mover: Arriba, Abajo, Izquierda, Derecha: "
+ "o Introd SALIR, para cerrar el programa. ");
direccion = sc.next().toString();
///dentro del Switch ejecutamos los metodos de la clase Tablero usando El objeto tab
switch(direccion){
case "Arriba": tab.ARRIBA();
break;
case "Abajo": tab.ABAJO();
break;
case "Izquierda": tab.IZQUIERDA();
break;
case "Derecha": tab.DERECHA();
break;
case "Salir": System.exit(0);
break;
default: System.out.println("Direccion no encontrada.");
break;
}
}
}
}
Gracias Alejandro. Estes donde estes.
Aqui la solucion que propongo.
package Movimiento;
import javax.swing.JOptionPane;
public class Movimiento {
private float posX;
private float posY;
public Movimiento(float posX, float posY) {
this.posX = posX;
this.posY = posY;
}
public float Arriba (float mov){
float nuepos = posY + mov;
posY = nuepos;
return nuepos;
}
public float Abajo (float mov){
float nuepos = posY - mov;
posY = nuepos;
return nuepos;
}
public float Derecha (float mov){
float nuepos = posX + mov;
posX = nuepos;
return nuepos;
}
public float Izquierda (float mov){
float nuepos = posX - mov;
posX = nuepos;
return nuepos;
}
public void Mostrarpos (){
JOptionPane.showMessageDialog(null, "La posicion actual es: "+posX+" , "+posY);
}
}
//Clase Main
import javax.swing.JOptionPane;
public class Main {
public static void main (String [] args){
float posX, posY, mov;
char dir;
posX = Float.parseFloat(JOptionPane.showInputDialog("Ingrese la posicion incial del objeto en la posicion X"));
posY = Float.parseFloat(JOptionPane.showInputDialog("Ingrese la posicion incial del objeto en la posicion Y"));
Movimiento ob1 = new Movimiento(posX, posY);
ob1.Mostrarpos();
dir = JOptionPane.showInputDialog("En que direccion se quiere mover.
-Arriba presione W
-Abajo presione S
-Derecha presiode D
-Izquierda presione A
-Salir presione F").charAt(0);
while (dir!='F' && dir!='f'){
switch (dir){
case 'W':
case 'w': mov = Float.parseFloat(JOptionPane.showInputDialog("Cuantas posiciones se va a mover hacia arriba"));
ob1.Arriba(mov);
ob1.Mostrarpos();
dir = JOptionPane.showInputDialog("En que direccion se quiere mover.
-Arriba presione W
-Abajo presione S
-Derecha presiode D
-Izquierda presione A
-Salir presione F").charAt(0);
break;
case 'S':
case 's': mov = Float.parseFloat(JOptionPane.showInputDialog("Cuantas posiciones se va a mover hacia abajo"));
ob1.Abajo(mov);
ob1.Mostrarpos();
dir = JOptionPane.showInputDialog("En que direccion se quiere mover.
-Arriba presione W
-Abajo presione S
-Derecha presiode D
-Izquierda presione A
-Salir presione F").charAt(0);
break;
case 'D':
case 'd': mov = Float.parseFloat(JOptionPane.showInputDialog("Cuantas posiciones se va a mover hacia la derecha"));
ob1.Derecha(mov);
ob1.Mostrarpos();
dir = JOptionPane.showInputDialog("En que direccion se quiere mover.
-Arriba presione W
-Abajo presione S
-Derecha presiode D
-Izquierda presione A
-Salir presione F").charAt(0);
break;
case 'A':
case 'a': mov = Float.parseFloat(JOptionPane.showInputDialog("Cuantas posiciones se va a mover hacia la Izquierda"));
ob1.Izquierda(mov);
ob1.Mostrarpos();
dir = JOptionPane.showInputDialog("En que direccion se quiere mover.
-Arriba presione W
-Abajo presione S
-Derecha presiode D
-Izquierda presione A
-Salir presione F").charAt(0);
break;
default: JOptionPane.showMessageDialog(null,"Ha escrito una letra invalida");
ob1.Mostrarpos();
dir = JOptionPane.showInputDialog("En que direccion se quiere mover.
-Arriba presione W
-Abajo presione S
-Derecha presiode D
-Izquierda presione A
-Salir presione F").charAt(0);
}
}
JOptionPane.showMessageDialog(null,"Ha salido del programa");
}
}
Aqui el ejercicio 2, pidiendole al usuario las coordenadas iniciales y el maximo que pueden alcanzar.
/*
Ejercicio 2: Construir un programa que permita dirigir el movimiento de un objeto
dentro de un tablero y actualice su posición dentro del mismo.
Los movimientos posibles son ARRIBA, ABAJO, IZQUIERDA y DERECHA.
Tras cada movimiento el programa mostrará la nueva dirección elegida y
las coordenadas de situación del objeto dentro del tablero.*/
** CLASS MOVER **
package Mover;
/**
*
* @author Miguel Paredes
*/
public class Mover {
//Atributos
private int x;
private int y;
//Atributos que me sirven para controlar hasta donde puede llegar las coordenadas
private int maxx;
private int maxy;
//Metodo constructor coordenadas inicio;
public Mover(int x,int y,int maxx,int maxy){
this.x = x;
this.y = y;
this.maxx=maxx;
this.maxy=maxy;
}
//Metodo arriba
public void up(){
y--;
if(ymaxy){
y=0;
}
}
//Metodo izquierda
public void left(){
x--;
if(xmaxx){
x=0;
}
}
//Getters
public int getX() {
return x;
}
public int getY() {
return y;
}
}
** CLASS MAIN **
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package Mover;
import java.util.Scanner;
import javax.swing.JOptionPane;
/**
*
* @author Miguel Paredes
*/
public class Main {
public static void main(String[] args) {
int x,y,maxx,maxy;
char tecla;
Scanner input = new Scanner (System.in);
maxx=Integer.parseInt(JOptionPane.showInputDialog("Digite el valor maximo de la coordenada x: "));
maxy=Integer.parseInt(JOptionPane.showInputDialog("Digite el valor maximo de la coordenada y: "));
x=Integer.parseInt(JOptionPane.showInputDialog("Digite el valor inicial de la coordenada x: "));
y=Integer.parseInt(JOptionPane.showInputDialog("Digite el valor inicial de la coordenada y: "));
Mover movil1 = new Mover(x,y,maxx,maxy);
do{
System.out.println("W para moverse arriba, S para moverse abajo, A para moverse"
+ " a la izquierda"
+ ", D para moverse a la derecha. Presione 'e' para salir" );
tecla=input.next().charAt(0);
switch(tecla){
case 'w':
movil1.up();
break;
case 's':
movil1.down();
break;
case 'a':
movil1.left();
break;
case 'd':
movil1.right();
break;
}
System.out.println("Coordenada actual ( "+movil1.getX()+" , "+movil1.getY()+" )");
} while(tecla!='e');
}
}
Ese programa no se puede realizar tambíen poniendo los métodos de acceso Setters al principio en la clase de Cuadrilatero?
Ejercicio No. 2:
Clase 1:
package ejercicio2;
public class Tablero {
//Atributos:
private static int coordX = 0;
private static int coordY = 0;
private String mov;
public Tablero(String mov) {
this.mov = mov;
}
public int getCoordY() {
if (mov.equalsIgnoreCase("w")) {
coordY++;
} else if (mov.equalsIgnoreCase("s")) {
coordY--;
}
return coordY;
}
public int getCoordX() {
if (mov.equalsIgnoreCase("a")) {
coordX--;
} else if (mov.equalsIgnoreCase("d")) {
coordX++;
}
return coordX;
}
public void setCoord(String mov) {
this.mov = mov;
}
}
Clase 2:
package ejercicio2;
import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args) {
char des;
do {
String movimiento = JOptionPane.showInputDialog("Ingrese el tipo de movimiento que desea"
+ " realizar:
W ==> Arriba S ==> Abajo
A ==> Izquierda D ==> Derecha");
if(movimiento.equalsIgnoreCase("w") || movimiento.equalsIgnoreCase("s") ||
movimiento.equalsIgnoreCase("a") || movimiento.equalsIgnoreCase("d")){
System.out.println("Selección correcta.");
} else {
System.out.println("La selección es incorrecta.");
}
Tablero t1 = new Tablero(movimiento);
System.out.println("Coordenadas X: " + t1.getCoordX());
System.out.println("Coordenadas Y: " + t1.getCoordY()+"
");
do{
des = JOptionPane.showInputDialog("¿Desea realizar un nuevo movimiento en "
+ "el tablero?
V. si. F no.").charAt(0);
if (des != 'v' && des != 'V' && des != 'f' && des != 'F') {
JOptionPane.showMessageDialog(null, "Error, la opción ingresada es incorrecta");
}
} while(des != 'v' && des != 'V' && des != 'f' && des != 'F');
} while (des == 'v' || des == 'V');
System.out.println("Saliendo...");
}
}
public class Movimiento {
private int x=1;
private int y=1;
public void arriba() {
if(x==1) {
System.out.println("Esta en el limite superior, no podra moverse hacia arriba");
}else {
x-=1;
System.out.println("Se ha movido hacia arriba");
System.out.println("Su posicion es: ["+x+"]["+y+"]");
}
}
public void abajo() {
if(x==5) {
System.out.println("Esta en el limite inferior, no podra moverse hacia abajo");
}else {
x+=1;
System.out.println("Se ha movido hacia abajo");
System.out.println("Su posicion es: ["+x+"]["+y+"]");
}
}
public void derecha() {
if(y==5) {
System.out.println("Esta en el borde derecho, pruebe otra direccion");
}else {
y+=1;
System.out.println("Se ha movido hacia la derecha");
System.out.println("Su posicion es: ["+x+"]["+y+"]");
}
}
public void izquierda() {
if(y==1) {
System.out.println("Esta en el borde izquierdo, pruebe otra direccion");
}else {
y-=1;
System.out.println("Se ha movido hacia la izquierda");
System.out.println("Su posicion es: ["+x+"]["+y+"]");
}
}
public static void main(String[] args) {
Movimiento ob = new Movimiento();
char opcion;
boolean fin = false;
JOptionPane.showMessageDialog(null, "En una tabla de 5x5, usted se encuentra en la posicion [1][1]
Intente moverse");
while(fin == false) {
opcion = JOptionPane.showInputDialog("Digite una opcion
w. Mover arriba
"
+ "s. Mover abajo
"
+ "d. Mover derecha
"
+ "a. Mover izquierda
"
+ "e. Salir del programa").charAt(0);
switch(opcion) {
case 'w':
ob.arriba();
break;
case 's':
ob.abajo();
break;
case 'd':
ob.derecha();
break;
case 'a':
ob.izquierda();
break;
case 'e':
fin = true;
break;
default:
System.out.println("La opcion es erronea");
}
}
}
}
// EJERCICIO #2 :) :)
package POO;
public class Ejercicio002 {
private int x, y, num;
// Constructor 1
public Ejercicio002(int x, int y) {
this.x = x;
this.y = y;
}
// Constructor 2
public Ejercicio002(int num) {
this.num = num;
}
public void m_arriba() {
y = y + num;
}
public void m_abajo() {
y = y - num;
}
public void m_izquierdo() {
x = x - num;
}
public void m_derecha() {
x = x + num;
}
public void posición() {
System.out.printf("
%10s
"
+ "%10s%5d
"
+ "%10s%5d
",
"Posición Actual",
"Posicion eje X : ", x,
"Posición eje Y : ", y);
}
}
package POO;
import java.util.Scanner;
public class Ejercicio002A {
public static void main(String[] args) {
int posX, posY, resp;
int num;
Scanner tecla = new Scanner(System.in);
System.out.printf("%30s
", "-------Mapa Cartesiano--------");
System.out.printf("%25s
"
+ "%10s",
"Posición Inicial ", "Eje X : ");
posX = Integer.valueOf(tecla.nextLine());
System.out.printf("%10s", "Ejer Y: ");
posY = Integer.valueOf(tecla.nextLine());
Ejercicio002 E2 = new Ejercicio002(posX, posY);
Ejercicio002 E2A;
// Movimiento y cambios
do {
do {
System.out.printf("
%30s
"
+ "%10s
"
+ "%10s
"
+ "%10s
"
+ "%10s
"
+ "%10s
"
+ "%10s
"
+ "%10s",
"-----------Movimientos---------- ",
"1.- Arriba",
"2.- Abajo",
"3.- Izquierda",
"4.- Derecha",
"5.- Mostrar posición",
"6.- Salir",
"Elegir una opcion (1-6): ");
resp = Integer.valueOf(tecla.nextLine());
if (resp = 7) {
System.out.println("ERROR : Escoger una opción (1-6)..................");
}
} while (resp = 7);
switch (resp) {
case 1:
System.out.printf("%10s",
"Cuantas posiciones: ");
num = Integer.valueOf(tecla.nextLine());
E2A = new Ejercicio002(num);
E2.m_arriba();
break;
case 2:
System.out.printf("%10s",
"Cuantas posiciones: ");
num = Integer.valueOf(tecla.nextLine());
E2A = new Ejercicio002(num);
E2.m_abajo();
break;
case 3:
System.out.printf("%10s",
"Cuantas posiciones: ");
num = Integer.valueOf(tecla.nextLine());
E2A = new Ejercicio002(num);
E2.m_izquierdo();
break;
case 4:
System.out.printf("%10s",
"Cuantas posiciones: ");
num = Integer.valueOf(tecla.nextLine());
E2A = new Ejercicio002(num);
E2.m_derecha();
break;
case 5:
E2.posición();
break;
case 6:
E2.posición();
break;
}
} while (resp != 6);
}
}
// MI APORTE
Ejercicio 2 (JavaScript) :
class Movimiento {
constructor(x,y,tablero){
this.x = x;
this.y = y;
this.tablero = tablero;
}
Arriba = () => {
if ((this.y >= 0 ) && (this.y < this.tablero)) {
this.y+=1;
}
}
Abajo = () => {
if ((this.y > 0 ) && (this.y {
if ((this.x >= 0 ) && (this.x < this.tablero)) {
this.x+=1;
}
}
Izquierda = () => {
if ((this.x > 0 ) && (this.x
Hola Alejandro. Muchas gracias por tus vídeos. Dónde puedo encontrar la solución del segundo ejercicio (el del tablero) para poder compararlo con mi código? Muchas gracias de nuevo :)
Ejercicio 1 (JavaScript) :
class Cuadrilatero {
constructor(lado1,lado2){
this.lado1 = lado1;
this.lado2 = lado2;
}
get Perimetro(){
return 2*(lado1 + lado2);
}
get Area(){
return (lado1 * lado2);
}
}
let lado1 = parseFloat(prompt("Ingrese lado 1 : "));
let lado2 = parseFloat(prompt("Ingrese lado 2 : "));
if (lado1 == lado2) {
mostrar = new Cuadrilatero(lado1);
} else {
mostrar = new Cuadrilatero(lado1,lado2);
}
console.log("El perímetro es : " + mostrar.Perimetro + " y el área es : " + mostrar.Area);
Para el ejercicio #2 no realizaste la solucion ?
Por si les sirve, el resultado de mi Ejercicio 2:
/*
Construir un programa que permita dirigir el movimiento de un objeto
dentro de un tablero y actualice su posición dentro del mismo. Los
movimientos posibles son ARRIBA, ABAJO, IZQUIERDA y DERECHA. Tras cada
movimiento el programa mostrará la nueva dirección elegida y las
coordenadas de situación del objeto dentro del tablero.
*/
package paquete1;
import javax.swing.JOptionPane;
public class Tablero {
// Atributos
private int ejeX;
private int ejeY;
// Método Constructor
public Tablero(int x, int y){
this.ejeX = ejeX;
this.ejeY = ejeY;
}
// Métodos
public void arriba(){
ejeX += 1;
System.out.println("Movimiento hacia arriba.");
}
public void abajo(){
ejeX -= 1;
System.out.println("Movimiento hacia abajo.");
}
public void der(){
ejeY += 1;
System.out.println("Movimiento hacia la dereccha.");
}
public void izq(){
ejeX -= 1;
System.out.println("Movimiento hacia la izquierda.");
}
public int getEjeX() {
return ejeX;
}
public int getEjeY() {
return ejeY;
}
}
public class Main {
public static void main(String[] args){
Tablero move = new Tablero(0, 0);
int ventana = 0;
do{
String[] botones = {"ARRIBA", "ABAJO", "DERECHA", "IZQUIERDA", "SALIR"};
ventana = JOptionPane.showOptionDialog(null, "Elige un movimiento:",
"Bienvenido", JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE,
null, botones, botones[0]);
switch(ventana){
case 0:
move.arriba();
System.out.println("La posición actual es: ["+move.getEjeX()+"]["+move.getEjeY()+"].");
break;
case 1:
move.abajo();
System.out.println("La posición actual es: ["+move.getEjeX()+"]["+move.getEjeY()+"].");
break;
case 2:
move.der();
System.out.println("La posición actual es: ["+move.getEjeX()+"]["+move.getEjeY()+"].");
break;
case 3:
move.izq();
System.out.println("La posición actual es: ["+move.getEjeX()+"]["+move.getEjeY()+"].");
break;
default:
break;
}
}while(ventana
Hola tu programa esta bien solo te equivocaste al poner las direcciones de movimiento en los ejes:
arriba ejeY += 1;
abajo ejeY -= 1;
derecha ejeX += 1;
izquierda ejeX -= 1;
Vi varios con el problema resuelto pero no eran comprensibles y no indicaban la posición ,así que hice el mio aprendiendo de los demás.
public class Posicion {
//atributos
private int x;
private int y;
public Posicion(int x,int y) {
this.x = x;
this.y = y;
}
//Movr arriba
public void Up() {
y+=1;
System.out.println("Movio hacía arriba");
System.out.println("Posición: (X ["+x+"],["+y+"] Y)");
}
//mover abajo
public void down() {
y-=1;
System.out.println("Posición: (X ["+x+"],["+y+"] Y)");
}
//mover derecha
public void right() {
x+=1;
System.out.println("Movio a la derecha");
System.out.println("Posición: (X ["+x+"],["+y+"] Y)");
}
//mover izquierda
public void left() {
x-=1;
System.out.println("Movio a la izquierda");
System.out.println("Posición: (X ["+x+"],["+y+"] Y)");
}
public int getY() {
return y;
}
public int getX() {
return x;
}
}
// clase main
Posicion ob = new Posicion(0,0);
char mov;
do {
mov = Character.toUpperCase(JOptionPane.showInputDialog("Ingrese posición:
[W].Arriba
[S].Abajo
[D].Derecha
[A].Izquierda
[E].Salir
").charAt(0));
switch(mov) {
case 'W':
ob.Up();
System.out.println("Adelante");
break;
case 'S':
ob.down();
System.out.println("Atras");
break;
case 'D':
ob.right();
System.out.println("Derecha");
break;
case 'A':
ob.left();
System.out.println("Izquierda");
case 'E':
System.out.println("Fin programa");
break;
default:
System.out.println("Comando no comprendido");
break;
}
}while(mov!='E');
}
}
yo no entendi nada :c, o sea yo al principio intentaba hacerlo tipo mostrar su punto pero no sabia como ya al final tambien hice como el tuyo
no quiero parecer ignorante... pero como le hace en el minuto 10:36 del video para que le aparesca lo que tiene que hacer en el c1=new Cuadrilatero()...?
no te entiendo 🤨🤨
Ejercicio:
//Atributos
private int x;
private int y;
//Constructor
public Tablero(int inicioX, int inicioY) {
x = inicioX;
y = inicioY;
}
//Metodos
public void moverArriba() {
y++;
}
public void moverAbajo() {
y--;
}
public void moverIzquierda() {
x--;
}
public void moverDerecha() {
x++;
}
public void moverDerechaDoble() {
x += 2; // Mueve dos posiciones a la derecha
}
public void mostrarPosicion() {
System.out.println("Posicion actual: ("+ x + ", "+ y + ")");
}
//main (desde otra clase)********
public class TableroMain {
public static void main(String[] args) {
Tablero tablero = new Tablero(0, 0);//posicion inicial en x=0 -- y=0
System.out.println("Posicion inicial: " );
tablero.mostrarPosicion();
System.out.println();
tablero.moverDerecha();
System.out.println("Movimiento a la derecha:");
tablero.mostrarPosicion();
System.out.println();
tablero.moverArriba();
System.out.println("Movimiento hacia arriba:");
tablero.mostrarPosicion();
System.out.println();
tablero.moverIzquierda();
System.out.println("Movimiento a la izquierda:");
tablero.mostrarPosicion();
System.out.println();
tablero.moverAbajo();
System.out.println("Movimiento hacia abajo:");
tablero.mostrarPosicion();
}
}
amigo me piden el area y perimetro del traingulo....con metodo constructor,modificadores,consultor.....lo logre hacer pero resulta que lo quiere con un solo parametro, y yo lo habia hecho con 3(lado,base,altura)....no se como hacerlo con un solo parametro ayuda:(
Descance en paz grán heroe informático...
package ejercicio2;
public class Tablero {
private int x=0;
private int y=0;
public Tablero(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public void setDerecha() {
x++;
this.x = x;
}
public void setIzquierda() {
x--;
this.x = x;
}
public int getY() {
return y;
}
public void setAbajo() {
y--;
this.y = y;
}
public void setArriba() {
y++;
this.y = y;
}
}
en la otra solapa Main
package ejercicio2;
/**
Ejercicio2: Construir un programa que permita dirigir el movimiento de un objeto dentro de un
tablero y actualice su posicion dentro del mismo. Los movimientos posibles son
ARRIBA, ABAJO, IZQUIERDA y DERECHA. Tras cada movimiento el programa mostrara la
nueva direccion elegida y las coordenadas de situacion del objeto dentro del
tablero.
*/
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner entrada =new Scanner(System.in);
Tablero objeto=new Tablero(0,0);
int movimiento = 0;
while (movimiento !=5) {
System.out.print("Ingrese el movimento a realizar, ARRIBA = 1, ABAJO = 2, DERECHA = 3, IZQUIERDA= 4, SALIR 5: ");
movimiento = entrada.nextInt();
switch (movimiento){
case 1 :
objeto.setArriba();
System.out.println("Arriba");
break;
case 2:
objeto.setAbajo();
System.out.println("Abajo");
break;
case 3:
objeto.setDerecha();
System.out.println("Derecha");
break;
case 4:
objeto.setIzquierda();
System.out.println("Izquierda");
break;
case 5:
System.out.println("Salir");
break;
default:
System.out.println("Numero incorrecto");
break;
}
System.out.println("La posicion el objeto es X: "+objeto.getX()+", Y: "+objeto.getY());
}
}
}
comenten que le pareció , Saludos
buen video jaja lollolololooloo
Mi solución del ejercicio 2:
//Primera clase.
package tablero;
public class Tablero {
private int ejeX;
private int ejeY;
public Tablero(int ejeX, int ejeY){
this.ejeX = ejeX;
this.ejeY = ejeY;
}
public void moverArriba(){
System.out.println("
Su pieza estaba en la posición: "+ejeX+" del eje X.");
System.out.println("Su pieza estaba en la posición: "+ejeY+" del eje Y.");
this.ejeY -= 1;
System.out.println("
Su pieza está en la posición: "+ejeX+" del eje X.");
System.out.println("Su pieza está en la posición: "+ejeY+" del eje Y.");
}
public void moverAbajo(){
System.out.println("
Su pieza estaba en la posición: "+ejeX+" del eje X.");
System.out.println("Su pieza estaba en la posición: "+ejeY+" del eje Y.");
this.ejeY += 1;
System.out.println("
Su pieza está en la posición: "+ejeX+" del eje X.");
System.out.println("Su pieza está en la posición: "+ejeY+" del eje Y.");
}
public void moverIzquierda(){
System.out.println("
Su pieza estaba en la posición: "+ejeX+" del eje X.");
System.out.println("Su pieza estaba en la posición: "+ejeY+" del eje Y.");
this.ejeX -= 1;
System.out.println("
Su pieza está en la posición: "+ejeX+" del eje X.");
System.out.println("Su pieza está en la posición: "+ejeY+" del eje Y.");
}
public void moverDerecha(){
System.out.println("
Su pieza estaba en la posición: "+ejeX+" del eje X.");
System.out.println("Su pieza estaba en la posición: "+ejeY+" del eje Y.");
this.ejeX += 1;
System.out.println("
Su pieza está en la posición: "+ejeX+" del eje X.");
System.out.println("Su pieza está en la posición: "+ejeY+" del eje Y.");
}
}
//Segunda clase (main).
package tablero;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner leer = new Scanner(System.in);
int posicion;
Tablero posicionPieza = new Tablero(4,4);
for (int movimientos = 0; movimientos < 999; movimientos++) {
do{
System.out.print("
Digite el número que indica la posición en que quiere moverse.
ARRIBA -> 1 | ABAJO -> 2 | IZQUIERDA -> 3 | DERECHA ->4
Opción: ");
posicion = leer.nextInt();
}while(posicion > 4 && posicion < 1);
if (posicion == 4)
posicionPieza.moverDerecha();
else if(posicion == 3)
posicionPieza.moverIzquierda();
else if(posicion == 1)
posicionPieza.moverArriba();
else if(posicion == 2)
posicionPieza.moverAbajo();
}
}
}
como sabes decidir cual será public y cual private? y otra cosa. siempre es necesario para pedir datos del usuario ese chorote gigante de parseoptionPane??? A mi luego no me reconoce ese caracter*( como le llama java)
Puedes pedir los datos con:
Scanner leer=new Scanner (System.in);
System.out.println("Ingrese el valor");
int valor=leer.nextInt();
package Ejercicio2;
public class Posicion {
//Atributos
private int X;
private int Y;
//Metodos
//Constructor
public Posicion(int X, int Y){
this.X = X;
this.Y = Y;
}
//Mover hacia arriba
public void moverArriba(){
Y += 1;
System.out.println("Direccion Arriba (" + X +","+ Y +")");
}
//Mover hacia abajo
public void moverAbajo(){
Y -= 1;
System.out.println("Direccion Abajo ("+ X +","+ Y +")");
}
//Mover hacia derecha
public void moverDerecha(){
X += 1;
System.out.println("Direccion Derecha ("+ X +","+ Y +")");
}
//Mover hacia arriba
public void moverIzquierda(){
X -= 1;
System.out.println("Direccion Izquierda ("+ X +","+ Y +")");
}
//Getter posicion X
public int getEjeX(){
return X;
}
//Getter posicion Y
public int getEjeY(){
return Y;
}
}
-------------------------------------------------------------
en el Main
-------------------------------------------------------------
package Ejercicio2;
import javax.swing.JOptionPane;
public class NewMain {
public static void main(String[] args) {
//Variable
char proximoMov = '0';
//Crear objeto con cordenadas iniciales x=0, y=0
Posicion objeto = new Posicion(0,0);
System.out.println("Posicion Inicial: ("+objeto.getEjeX()+","+objeto.getEjeY()+")");
while(proximoMov != 'E'){
//Identificar el proximo movimiento
do {
proximoMov = Character.toUpperCase(JOptionPane.showInputDialog("Ingrese el siguiente movimiento"+"
"+"W-Adelante
"+"S-Atras
"+"A-Izquierda
"+"D-Derecha
"+"E-Salir
").charAt(0));
} while ((proximoMov !='W')&&(proximoMov !='A')&&(proximoMov !='S')&&(proximoMov !='D')&&(proximoMov !='E'));
//Realizar el movimiento
switch(proximoMov){
case 'W':
objeto.moverArriba();
break;
case 'S':
objeto.moverAbajo();
break;
case 'A':
objeto.moverIzquierda();
break;
case 'D':
objeto.moverDerecha();
break;
case 'E':
System.out.println("Gracias por jugar!");
break;
default:
System.out.println("Movimiento no reconocido");
break;
}
}
}
}
Si puedes imaginarlo puedes programarlo :D
Muy bueno los videos, estoy siguiendolo para complementar mis estudios. Ahora una consulta referente a este ejercicio. Pasa que cuando arranco el programa, en la parte de ambos métodos no me resuelve la multiplicación. Es decir, el método de perímetro 2*(lado1+lado2), me hace solamente la suma (2.4) y en el método área (lado1*lado2) no hace nada y queda en 0.0, lo q se deduce a simple vista es q se salta la multiplicación. Alguien sabe ¿por qué?
fijate que en el metodo constructor 2, tengas igualado this.lado1 = this.lado2 = lado1 porque sino solo te va a tomar el lado 1 el constructor, y en realidad tiene que tomar los dos como uno
Ejercicio 2: CLASE MAIN
package bloquepoo2;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner data = new Scanner(System.in);
int n,m,n2,m2;
String movimiento;
System.out.println("CREAR TABLERO.");
System.out.print("Digite la cantidad de filas del tablero: ");
n=data.nextInt();
System.out.print("Digite la cantidad de columnas del tablero: ");
m=data.nextInt();
Tablero tablero = new Tablero(n,m);
System.out.println("
EL TABLERO ES:");
tablero.crearTablero();
tablero.mostrarTableroInicial();
System.out.println("
INSERTAR FICHA EN EL TABLERO.");
System.out.print("Digite la fila donde desea insertar la ficha: ");
n2=data.nextInt();
tablero.setN2(n2);
System.out.print("Digite la columna donde desea insertar la ficha: ");
m2=data.nextInt();
tablero.setM2(m2);
System.out.println("
TABLERO CON FICHA.");
tablero.insertarFicha();
System.out.println("
REALIZAR MOVIMIENTO. (presione 0 para salir)");
data.nextLine();
do{
System.out.print("Digite el movimiento que desea que la ficha realice: ");
movimiento=data.nextLine();
if(movimiento.equals("0")){
System.out.println("
Usted ha salido exitosamente del programa.");
break;
}else{
System.out.println("");
tablero.realizarMovimiento(movimiento);
System.out.println("
(presione 0 para salir)");
}
}while(!movimiento.equals("0"));
data.close();
System.out.println("");
}
}
Ejercicio 2: CLASE TABLERO (donde estan los métodos y los atributos)
package bloquepoo2;
public class Tablero {
//Atributos
private int tablero[][];
private int n,m,n2,m2; //Tamaño tablero & posicionInicial
private String movimiento;
private int direccion;
private int posicionPosterior;
//Método constructor 1: (Posicion inicial)
public Tablero(int n,int m){
this.n=n;
this.m=m;
}
//Método constructor 2: (Movimiento del objeto)
public Tablero(String movimiento){
this.movimiento=movimiento;
}
//Métodos accesores : Setters & Getters
public int getN2() {
return n2;
}
public void setN2(int n2) {
this.n2 = n2;
}
public int getM2() {
return m2;
}
public void setM2(int m2) {
this.m2 = m2;
}
//Métodos normales
public void crearTablero(){
tablero = new int[n][m];
for(int i=0;i
package paquete1;
/**
*
* @author User
*/
public class Ejercicio2 {
int movX;
int movY;
public Ejercicio2(int movX, int movY)
{
this.movX = movX;
this.movY = movY;
}
}
package paquete1;
import javax.swing.JOptionPane;
/**
*
* @author User
*/
public class Principal {
public static void main(String[] args) {
Ejercicio2 Objeto1;
int accion;
int posiX=0, posiY=0;
do
{
accion = Integer.parseInt(JOptionPane.showInputDialog("Elija uno de los siguientes movimientos:
"
+"1.Arriba
"+"2.Abajo
"+"3.Derecha
"+"4.Izquierda
"+"5.Detenerse"));
switch(accion)
{
case 1: Objeto1=new Ejercicio2(0,1);
posiY+=Objeto1.movY;
break;
case 2: Objeto1=new Ejercicio2(0,1);
posiY-=Objeto1.movY;
break;
case 3: Objeto1=new Ejercicio2(1,0);
posiX+=Objeto1.movX;
break;
case 4: Objeto1=new Ejercicio2(1,0);
posiX-=Objeto1.movX;
break;
case 5: break;
default: JOptionPane.showMessageDialog(null, "Opción inválida, escoja un movimiento válido");
break;
}
JOptionPane.showMessageDialog(null, "La posición actual es: ("+posiX+", "+posiY+")");
} while(accion!=5);
}
}
Ejercicio 2 (Java) :
// Ejercio 2 :
// Atributos
private int x;
private int y;
private int tablero;
//Construtores
public pooEjercicios(int x, int y, int tablero) {
this.x = x;
this.y = y;
this.tablero = tablero;
}
//Métodos sin tipo de retorno
public void getArriba(){
if (y>=0 && y0 && y=0 && x0 && x
PARECE como estas muxo mejor en UML que en java jajajajajajaj por que no nos haces un curso DE UML PORFAVOR!!!!!
Que tecla oprime para que aparezcan los constructores y escoger el que uno desea?
control + espacio
Aqui dejo mi aporte, clase Tablero:
package ejercicio_71b;
import java.util.Scanner;
public class Tablero {
Scanner entrada = new Scanner(System.in);
int lado=0;
int array [][];
int ejeX, ejeY;
String mueve;
public Tablero() {
}
public void creaTablero() {
System.out.print("Cuantas casillas quieres que tenga el tablero?: ");
lado = entrada.nextInt();
array = new int[lado][lado];
for (int i=0;i
un saludo a mi maestra montoya que me dejo esto de tarea jaja xdxdxdxxdx
Clase Tablero
public class Tablero {
private Casilla[][] tab1;
private int dim = 8;
//Constructor
public Tablero() {
tab1 = new Casilla[dim][dim];
for(int i = 0; i < dim; i++) {
for(int j = 0; j < dim; j++) {
tab1[i][j] = new Casilla(false);
}
}
}
//Getters
public boolean getCasilla(int x, int y) {
return tab1[x][y].getEstado();
}
public int getDimension() {
return dim;
}
//Setters
public void setCasilla(int x, int y, boolean estado) {
tab1[x][y].setEstado(estado);//Invocación de Setters de Casilla
}
public void setDimesion(int dimension) {
dim = dimension;
}
}
Clase Casilla
public class Casilla {
private boolean estado;
//Constructor
public Casilla(boolean estado) {
this.estado = estado;
}
//Getters
public boolean getEstado() {
return estado;
}
//Setters
public void setEstado(boolean estado) {
this.estado = estado;
}
}
Clase Jugador
import javax.swing.JOptionPane;
public class Jugador {
private int[] posicion = new int[2];
//Constructores
public Jugador(int x, int y) {
posicion[0] = x;//Representa la fila en la que se encuentra el jugador
posicion[1] = y;//Representa la columna en la que se encuentra el jugador
}
//Getters
public int getX() {
return posicion[0];
}
public int getY() {
return posicion[1];
}
//Setters
public void setX(int x) {
posicion[0] = x;
}
public void setY(int y) {
posicion[1] = y;
}
public void setPosicion(int x, int y) {
posicion[0] = x;
posicion[1] = y;
}
//Movilidad del jugador
public boolean moveUp() {
if(posicion[0] == 0) {
JOptionPane.showMessageDialog(null,"Imposible subir más en el tablero!");//En caso de que el jugador ya se encuentre en la primera fila
return false;
}
else {
posicion[0]--;//Sube al jugador una fila
return true;
}
}
public boolean moveDown(int max) {
if(posicion[0] == max-1) {
JOptionPane.showMessageDialog(null,"Imposible bajar más en el tablero!");//En caso de que el jugador ya se encuentre en la última fila
return false;
}
else {
posicion[0]++;//Baja al jugador una fila
return true;
}
}
public boolean moveLeft() {
if(posicion[1] == 0) {
JOptionPane.showMessageDialog(null,"Imposible retroceder más en el tablero!");//En caso de que el jugador ya se encuentre en la primera columna
return false;
}
else {
posicion[1]--;//Regresa al jugador una columna
return true;
}
}
public boolean moveRight(int max) {
if(posicion[1] == max-1) {
JOptionPane.showMessageDialog(null,"Imposible avanzar más en el tablero!");//En caso de que el jugador ya se encuentre en la última columna
return false;
}
else {
posicion[1]++;//Avanza al jugador una columna
return true;
}
}
}
Clase App
import javax.swing.JOptionPane;
public class App {
public static void main(String args[]) {
Tablero tablero = new Tablero();
Jugador player = new Jugador(0,0);
tablero.setCasilla(player.getX(), player.getY(), true);//Inicializando la posición del jugador en el tablero
char menu;//Menu opcional
for(int i = 0; i < tablero.getDimension(); i++) {//Impresión del tablero, Maraca con un 0 las casillas vacías y con un 1 la casilla ocupada por el jugador
for(int j = 0; j < tablero.getDimension(); j++) {
if(tablero.getCasilla(i, j))System.out.print("1 ");
else {
System.out.print("0 ");
}
}
System.out.println();
}
JOptionPane.showMessageDialog(null, "Bienvenido");
do {
menu = JOptionPane.showInputDialog("Controles:
'w': Arriba
'a': Izquierda
's': Abajo
'd': Derecha
'e': Salir").charAt(0);//Solicitud de instrucción
switch(menu) {
case 'w':
if(player.moveUp()) {//En caso de que el jugador quiera moverse hacía arriba
tablero.setCasilla(player.getX()+1, player.getY(), false);//Desactivando la casilla que el jugador abandonó
tablero.setCasilla(player.getX(), player.getY(), true);//Activando la casilla a la que llegó el jugador
}
break;
case 'a':
if(player.moveLeft()) {//En caso de que jugador quiera moverse hacia la Izquierda
tablero.setCasilla(player.getX(), player.getY()+1, false);//Desactivando la casilla que el jugador abandonó
tablero.setCasilla(player.getX(), player.getY(), true);//Activando la casilla a la que llegó el jugador
}
break;
case 's'://En caso de que el jugador quiera moverse hacía abajo
if(player.moveDown(tablero.getDimension())) {
tablero.setCasilla(player.getX()-1, player.getY(), false);//Desactivando la casilla que el jugador abandonó
tablero.setCasilla(player.getX(), player.getY(), true);//Activando la casilla a la que llegó el jugador
}
break;
case 'd'://En caso de que el jugador quiera moverse hacia la derecha
if(player.moveRight(tablero.getDimension())) {
tablero.setCasilla(player.getX(), player.getY()-1, false);//Desactivando la casilla que el jugador abandonó
tablero.setCasilla(player.getX(), player.getY(), true);//Activando la casilla a la que llegó el jugador
}
break;
}
System.out.println("
");//Impresión del tablero
for(int i = 0; i < tablero.getDimension(); i++) {
for(int j = 0; j < tablero.getDimension(); j++) {
if(tablero.getCasilla(i, j))System.out.print("1 ");
else {
System.out.print("0 ");
}
}
System.out.println();
}
}while(menu != 'e');
}
}
/*Ejercicio 2: Construir un programa que permita dirigir el movimiento de un
objeto dentro de un tablero y actualice su posición dentro del mismo.
Los movimientos posibles son ARRIBA, ABAJO, IZQUIERDA y DERECHA.
Tras cada movimiento el programa mostrará la nueva dirección elegida y las
coordenadas de situación del objeto dentro del tablero.*/
package POOEjercicios;
/**
* @author CarlosAVG
*/
public class Ejercicio02 {
//Atributos
private int f;
private int c;
//Metodos
public Ejercicio02(int f, int c) {
this.f = f;
this.c = c;
}
//Movimientos
public void setArriba() {
this.f += -1;
}
public void setAbajo() {
this.f += 1;
}
public void setIzquierda() {
this.c += -1;
}
public void setDerecha() {
this.c += 1;
}
public int getFila() {
return this.f;
}
public int getColumna() {
return this.c;
}
}
-----------------------------------------------------------------------------------------
package POOEjercicios;
import javax.swing.*;
/**
* @author CarlosAVG
*/
public class Main02 {
public static void main(String[] args) {
final int tablero[][] = new int[10][10];
Ejercicio02 ob1 = new Ejercicio02(0, 0);
int op;
//Llenado de la Matriz
for (int f = 0; f < tablero.length; f++) {
for (int c = 0; c < tablero.length; c++) {
tablero[f][c] = 0;
}
}
//Mostrar la matriz inciial
System.out.println("Tablero sin ningun movimiento, inicias en la esquina superior izqueirda.");
System.out.println("");
for (int f = 0; f < tablero.length; f++) {
for (int c = 0; c < tablero.length; c++) {
System.out.print(tablero[f][c] + " - ");
}
System.out.println("");
}
//Movimientos
do {
op = Integer.parseInt(JOptionPane.showInputDialog(".: Bienvenido :.
Opciones:
1. Arriba
2. Abajo
3. Izquierda
4. Derecha
5. Salida"));
switch (op) {
case 1:
if (ob1.getFila() >= 0 && ob1.getFila() = 0 && ob1.getFila() = 0 && ob1.getColumna() = 0 && ob1.getColumna()
Esta es mi solución, que muestra la dirección tomada (ARRIBA, ABAJO, IZQUIERDA, DERECHA) y las coordenadas (x,y), utilizo libreria Scanner y los numeros 8,2,4,6, como flechas de direccion.
package tablero;
public class logo {
private String direccion;
private int x=0,y=0;
public void setDireccion(int direccion){
if (direccion == 8){
this.direccion = "Arriba";
}
if (direccion == 2){
this.direccion = "Abajo";
}
if (direccion == 4){
this.direccion = "Izquierda";
}
if (direccion == 6){
this.direccion = "Derecha";
}
}
public int getsubirobajar(int ordenada){
y+=ordenada;
return y;
}
public int getizquierdaoderecha(int abcisa){
x+=abcisa;
return x;
}
public void posicionydireccion(){
System.out.println("La direccion es: " + direccion + " y las coordenadas son: " + "[ " + x + " ]" + "[ " + y + " ]");
}
}
package tablero;
import java.util.Scanner;
public class Logomain2 {
public static void main(String[] args) {
logo objeto = new logo();
Scanner teclado = new Scanner(System.in);
int direccion, ordenada, abcisa;
do{
System.out.println("A donde quiere moverse: ");
direccion = teclado.nextInt();
if(direccion==8){
//direccion hacia arriba
objeto.setDireccion(direccion);
ordenada = 1;
objeto.getsubirobajar(ordenada);
objeto.posicionydireccion();
} else if(direccion==2){
//direccion hacia abajo
objeto.setDireccion(direccion);
ordenada=-1;
objeto.getsubirobajar(ordenada);
objeto.posicionydireccion();
} else if(direccion==4){
//direccion hacia la izquierda
objeto.setDireccion(direccion);
abcisa=-1;
objeto.getizquierdaoderecha(abcisa);
objeto.posicionydireccion();
} else if(direccion==6){
//direccion hacia la derecha
objeto.setDireccion(direccion);
abcisa=1;
objeto.getizquierdaoderecha(abcisa);
objeto.posicionydireccion();
} else{
// si presiona una tecla distinta de las indicadas , le dice que el movimiento no es posible y vuelve a preguntar a donde quiere moverse?
System.out.println("El movimiento no es posible");
}
}while((direccion>0&&direccion
Ejercicio2
package EjerciciosATS;
import javax.swing.JOptionPane;
/**
*
* @author Lenny
*/
// P1 = X , P2 = Y ;
public class Ejercicio2 {
private int p1;
private int p2;
public Ejercicio2(int p1, int p2) {
this.p1 = p1;
this.p2 = p2;
}
public void getMovimientos(int movimientos) {
while(movimientos!=0){
int mov = Integer.parseInt(JOptionPane.showInputDialog("A dónde desea moverse? Arriba = 1, Abajo = 2, Izquierda = 3, Derecha = 4"));
if(mov == 1)
p2 += 1;
if(mov == 2)
p2 -= 1;
if(mov == 3)
p1 -= 1;
if(mov == 4)
p1 += 1;
movimientos--;
}
}
public void mostrarResultados() {
System.out.println("Coordenadas finales: ("+p1+","+p2+")");
}
public static void main(String [] args){
int p1 = Integer.parseInt(JOptionPane.showInputDialog("Valor de la coordenada inicial x: "));
int p2 = Integer.parseInt(JOptionPane.showInputDialog("Valor de la coordenada inicial y: "));
Ejercicio2 x = new Ejercicio2(p1,p2);
int movimientos = Integer.parseInt(JOptionPane.showInputDialog("Cantidad de movimientos: "));
x.getMovimientos(movimientos);
x.mostrarResultados();
}
}
//EJERCICIO #2
package pootablero;
public class Tablero {
private int ejex;
private int ejey;
public Tablero(int x, int y) {
this.ejex = ejex;
this.ejey = ejey;
}
public void haciaArriba(){
ejey=ejey+1;
System.out.println("movimiento hacia arriba ");
System.out.println("POSICION ACTUAL("+ejex+","+ejey+")");
}
public void haciaAabajo(){
ejey-=1;
System.out.println("movimiento hacia abajo ");
System.out.println("POSICION ACTUAL ("+ejex+","+ejey+")");
}
public void haciaIzquierda(){
ejex=ejex-1;
System.out.println("movimiento hacia la Isquierda ");
System.out.println("POSICION ACTUAL ("+ejex+","+ejey+")");
}
public void haciaDerecha(){
ejex=ejex+1;
System.out.println("movimiento hacia la derecha ");
System.out.println("POSICION ACTUAL ("+ejex+","+ejey+")");
}
public int getEjex() {
return ejex;
}
public int getEjey() {
return ejey;
}
}
import java.util.Scanner;
public class principal {
public static void main(String[] args) {
Scanner entrada=new Scanner(System.in);
int movimiento =0;
Tablero objeto=new Tablero(0,0);
System.out.println("Posicion actual "+objeto.getEjex()+","+objeto.getEjex());
do{
System.out.println("Movimiento
8-Arriba
2-Abajo
4-Isquierda
6-Derecha
1-Salir");
movimiento=entrada.nextInt();
switch(movimiento){
case 8: objeto.haciaArriba();break;
case 2: objeto.haciaAabajo();break;
case 4:objeto.haciaIzquierda();break;
case 6:objeto.haciaDerecha();break;
case 1:return ;
}
}while(movimiento==8 || movimiento==2 || movimiento==4 ||movimiento==6||movimiento==1);
}
}
He visto algunos ejemplos dados en este chat y hay una cosa que no entiendo... ¿No es un tablero un espacio delimitado?
Todos los ejemplos que veo pueden mover el objeto toda la distancia que deseen, sin límite, es como si estuviera en un espacio infinito donde sólo puedes moverte en dos direcciones. Ni idea...
Para lo que hemos aprendido hasta ahora, creo que eso estaria bien. Ahora si tu puedes hacerlo en un tablero real, pues estas ya en nivel un poco mas elevado. Yo lo intentare a mi manera
Lo intenté, pero acabé resignandome a hacerlo sin tablero limitado, tal y como lo hicieron los demás compañeros.
Lo has intentado hacer con una matriz?
Si, pero creo que debía hacerlo con un array de objetos.
*Clase objeto*
package Ejercicio2;
public class Objeto {
//Atributos
private int posx;
private int posy;
//Metodos
public void MoverDerecha() {
posx +=1;
}
public void MoverIzquierda(){
posx -=1;
}
public int getPosx() {
return posx;
}
public void MoverArriba(){
posy +=1;
}
public void MoverAbajo(){
posy -=1;
}
public int getPosy() {
return posy;
}
}
*Clase principal*
package Ejercicio2;
import javax.swing.JOptionPane;
public class Main {
public static void main(String []args){
Objeto objeto1 = new Objeto();
int opcion = 0;
do {
opcion = Integer.parseInt(JOptionPane.showInputDialog("Mueva el objeto:
"
+ "1.-Mover arriba
"
+ "2.-Mover abajo
"
+ "3.-Mover a la izquierda
"
+ "4.-Mover a la derecha
"
+ "5.-Salir"));
switch(opcion){
case 1: objeto1.MoverArriba();
System.out.println("Movimiento: Arriba");
System.out.println("La nueva posicion es: ("+objeto1.getPosx()+" , "+objeto1.getPosy()+")");
break;
case 2: objeto1.MoverAbajo();
System.out.println("Movimiento: Abajo");
System.out.println("La nueva posicion es: ("+objeto1.getPosx()+" , "+objeto1.getPosy()+")");
break;
case 3: objeto1.MoverIzquierda();
System.out.println("Movimiento: Izquierda");
System.out.println("La nueva posicion es: ("+objeto1.getPosx()+" , "+objeto1.getPosy()+")");
break;
case 4: objeto1.MoverDerecha();
System.out.println("Movimiento: Derecha");
System.out.println("La nueva posicion es: ("+objeto1.getPosx()+" , "+objeto1.getPosy()+")");
break;
case 5: break;
default: System.out.println("Opcion no valida");
}
} while (opcion != 5);
}
}
EJERCICIO 2 - Solucion Simple (Usando POO)
public class Objeto {
private int posicionX,posicionY;
public Objeto(int posicionX, int posicionY) {
this.posicionX = posicionX;
this.posicionY = posicionY;
}
public int getPosicionX() {
return posicionX;
}
public int getPosicionY() {
return posicionY;
}
public void mover(char tecla)
{
switch(tecla)
{
case 'w': posicionY++;break;
case 's': posicionY--;break;
case 'a': posicionX--;break;
case 'd': posicionX++;break;
default : System.out.println("
Elija un movimiento!");
}
}
}
--------------------------------------------------------Clase Principal(main)-----------------------------------------------------------------
import java.util.Scanner;
public class PrincipalMovimientoObjeto {
public static void main(String [] args){
char tecla;
Objeto o = new Objeto(0, 0);
Scanner cin = new Scanner(System.in);
System.out.println("
***********Movimiento en Tablero - Salir(0)***********
");
System.out.println("Mover arriba(w)
Mover Izquierda(a)
Mover derecha(d)
Mover abajo(s)");
System.out.print("
Ingrese Movimiento: ");
tecla = cin.next().charAt(0);
while(tecla!=0)
{
o.mover(tecla);
if(tecla=='w')System.out.println("
Movimiemto hacia arriba");
if(tecla=='s')System.out.println("
Movimiemto hacia abajo");
if(tecla=='a')System.out.println("
Movimiemto hacia izquierda");
if(tecla=='d')System.out.println("
Movimiemto hacia derecha");
System.out.println("La posicion actual es: Objeto1("+o.getPosicionX()+","+o.getPosicionY()+")");
System.out.print("
Ingrese Movimiento: ");
tecla = cin.next().charAt(0);
}
}
}
Me gustó mucho tu codigo. Solo quería añadir una pequeña corrección en el while(tecla!=0) -> sería while(tecla!='o'), ya que tecla esta inicializada como char. así puedes salir del menu.
package ejercicio2_Objetos;
import java.util.Scanner;
public class Ajedrez {
// ATRIBUTOS
private static int tablero[][];//HAGO EL TABLERO STATICO PARA QUE PUEDAS CREAR OTRA //FICHA Y PONERLO DENTRO DEL MISMO TABLERO
private int tamañoTablero;
final int pieza = 1;
private int posicion_x;
private int posicion_y;
public Ajedrez() {
// CONTRUCTOR PARA QUE EL USUARIO NOS DIGA DE QUE TAMAÑO QUIERE EL TABLERO Y NOS
// DIGA EN QUE POSICION QUIERE LA PIEZA PARA EMPEZAR
Scanner entrada = new Scanner(System.in);
System.out.println("Tamaño del tablero.....");
// SI EL NUMERO ES MEJOR QUE 2 NO PUEDE SER UN TABLERO Y HAGO QUE LO INTRODUZCA
// OTRA VEZ
do {
System.out.print("Introduce el tamaño que quieres el tablero(debe ser mayor a 1): ");
tamañoTablero = entrada.nextInt();
} while (tamañoTablero < 2);
// LE DOY EL TAMAÑO AL TABLERO CON EL NUMERO INTRODUCIDO
tablero = new int[tamañoTablero][tamañoTablero];
System.out.println("Ahora introduce una posiscion inicial para tu pieza...");
// SI LA POSICION SE SALE DE LAS MARGENES DE LA TABLA LE DIGO QUE LO VUELVA A
// INTRODUCIR
do {
System.out.print("Introduce la coordenada 'x'");
posicion_x = entrada.nextInt();
} while (posicion_x < 0 || posicion_x > tamañoTablero - 1);
// SI LA POSICION SE SALE DE LAS MARGENES DE LA TABLA LE DIGO QUE LO VUELVA A
// INTRODUCIR
do {
System.out.print("Introduce la coordenada 'y'");
posicion_y = entrada.nextInt();
} while (posicion_y < 0 || posicion_y > tamañoTablero - 1);
// IGUALO LA POSICION DE LA TABLA A LA PIEZA INTERPRETANDO QUE 1 ES LA PIEZA
tablero[posicion_x][posicion_y] = pieza;
entrada.close();
}
public void arriba() {
// SI LA PIEZA YA ESTA EN LA LINEA 0 NO PUEDE SUBIR MAS PORQUE SE SALDRIA DEL
// ARREGLO
if (posicion_x == 0) {
System.out.println("");
System.out.println("No se puede ir mas arriba te vas a salir del tablero vaquero");
} else {
tablero[posicion_x][posicion_y] = 0;// IGUALO LA POSICION ACTUAL DE LA PIEZA A 0 PARA QUE SE BORRE LA PIEZA
// DE DONDE ESTABA
posicion_x = posicion_x - 1;
tablero[posicion_x][posicion_y] = pieza;// Y AHORA LA COLOCO EN SU NUEVA POSICION
System.out.println("");
// LLAMO AL METODO QUE CREE MAS ABAJO PARA QUE AL MOVER LA PIEZA ME DE LAS
// COORDENADAS Y ME ENSEÑE EL TABLERO
getCoordenadas();
}
}
public void abajo() {
// SI LA PIEZA YA ESTA EN LA ULTIMA LINEA NO PUEDE BAJAR MAS
if (posicion_x == tamañoTablero - 1) {
System.out.println("");
System.out.println("No se puede ir mas abajo te vas a salir del tablero vaquero");
} else {
tablero[posicion_x][posicion_y] = 0;// IGUALO LA POSICION ACTUAL DE LA PIEZA A 0 PARA QUE SE BORRE LA PIEZA
// DE DONDE ESTABA
posicion_x = posicion_x + 1;
tablero[posicion_x][posicion_y] = pieza;// Y AHORA LA COLOCO EN SU NUEVA POSICION
System.out.println("");
// LLAMO AL METODO QUE CREE MAS ABAJO PARA QUE AL MOVER LA PIEZA ME DE LAS
// COORDENADAS Y ME ENSEÑE EL TABLERO
getCoordenadas();
}
}
public void derecha() {
// SI LA PIEZA YA ESTA EN LA ULTIMA COLUMNA NO PUEDE IR MAS A LA DERECHA
if (posicion_y == tamañoTablero - 1) {
System.out.println("");
System.out.println("No se puede ir mas a la derecha, te vas a salir del tablero vaquero");
} else {
tablero[posicion_x][posicion_y] = 0;// IGUALO LA POSICION ACTUAL DE LA PIEZA A 0 PARA QUE SE BORRE LA PIEZA
// DE DONDE ESTABA
posicion_y = posicion_y + 1;
tablero[posicion_x][posicion_y] = pieza;// Y AHORA LA COLOCO EN SU NUEVA POSICION
System.out.println("");
// LLAMO AL METODO QUE CREE MAS ABAJO PARA QUE AL MOVER LA PIEZA ME DE LAS
// COORDENADAS Y ME ENSEÑE EL TABLERO
getCoordenadas();
}
}
public void izquierda() {
// SI LA PIEZA YA ESTA EN LA PRIMERA COLUMNA NO PUEDE IR MAS A LA IZQUIERDA O SE
// SALDRIA DE LA TABLA
if (posicion_y == 0) {
System.out.println("");
System.out.println("No se puede ir mas a la izquierda, te vas a salir del tablero vaquero");
} else {
tablero[posicion_x][posicion_y] = 0;// IGUALO LA POSICION ACTUAL DE LA PIEZA A 0 PARA QUE SE BORRE LA PIEZA
// DE DONDE ESTABA
posicion_y = posicion_y - 1;
tablero[posicion_x][posicion_y] = pieza;// Y AHORA LA COLOCO EN SU NUEVA POSICION
System.out.println("");
// LLAMO AL METODO QUE CREE MAS ABAJO PARA QUE AL MOVER LA PIEZA ME DE LAS
// COORDENADAS Y ME ENSEÑE EL TABLERO
getCoordenadas();
}
}
public void getCoordenadas() {
// AQUI SOLO SACO EL MENSAJE CON LAS COORDENADAS Y IMPRIMO EL TABLERO(EL ARRAY)
System.out.println("Estas es la coordenada x: " + posicion_x + " y esta la coordenada y: " + posicion_y);
for (int i = 0; i < tamañoTablero; i++) {
for (int j = 0; j < tamañoTablero; j++) {
System.out.print(tablero[i][j]);
}
System.out.println("");
}
}
}
He leido varios ejemplos despues de hacerlo y nadie crea un arry bidimensional para usarlo como tabla, en mi opnion creo que habria que crearlo para tener un tablero donde poder mover la pieza, si no hay tablero solo estas moviendo la pieza de un lado para otro sin sentido.Agradeceria que alguien pudiera corregir el mio y darme su opinion, muchas gracias.
//Esta es la prueba bastante sencilla, creo el objeto y llamo a los metodos para moverlo
package ejercicio2_Objetos;
public class PruebaAjedrez {
public static void main(String [] args) {
Ajedrez ficha1=new Ajedrez();
ficha1.arriba();
ficha1.derecha();
ficha1.abajo();
ficha1.izquierda();
ficha1.izquierda();
}
}
Y si ese if que esta en el Main lo pongo dentro del constructor y desde ahi comparo si los lados son iguales entonces:
if (lado1 == lado2) {
this.lado1 = this.lado2 = lado1;
} else {
this.lado1 = lado1;
this.lado2 = lado2;
}
ESTARÁ BIEN HACERLO ASI PORFAVOR ALGUIEN SAQUEME DE LA DUDA!
De enserio ya no está?? Yo hoy conocí su canal, y me salvó de un trabajo...., solo quería decirte gracias
Disculpa el curso esta en dolares verdad?
Ejercicio 2.
public class Tablero {
private int x;
private int y;
public Tablero(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() { return x; }
public void setX(int x) { this.x = x; }
public int getY() { return y; }
public void setY(int y) { this.y = y; }
public int arriba(int y) { return this.y += y; }
public int abajo(int y) { return this.y -= y; }
public int izquierda(int x) { return this.x -= x; }
public int derecha(int x) { return this.x += x; }
}
Main
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
out.print("Ingresa x: ");
int x = sc.nextInt();
out.print("Ingresa y: ");
int y = sc.nextInt();
Tablero tablero = new Tablero(x, y);
boolean condicion = true;
int movimiento = 0;
bucle:
do {
out.println("""
*** Menú ***
1. Mover arriba
2. Mover abajo
3. Mover derecha
4. Mover izquierda
5. Salir
""");
out.print("Selecciona una opción ---> ");
int opcion = sc.nextInt();
switch (opcion) {
case 1,2,3,4 -> {
out.print("Ingresa la cantidad de espacios a moverse: ");
movimiento = sc.nextInt();
}
case 5 -> { break bucle; }
}
switch (opcion) {
case 1 -> tablero.arriba(movimiento);
case 2 -> tablero.abajo(movimiento);
case 3 -> tablero.derecha(movimiento);
case 4 -> tablero.izquierda(movimiento);
}
out.println("Posición actual: x = " + tablero.getX() + ", y = " + tablero.getY());
} while (condicion);
}
Mi solución al Ejercicio 2
package Paquete1;
public class Tablero {
//Atributo Constantes
private final char Arriba = 'w';
private final char Abajo = 's';
private final char Izquierda = 'a';
private final char Derecha= 'd';
private final char Arriba2 = 'W';
private final char Abajo2 = 'S';
private final char Izquierda2 = 'A';
private final char Derecha2 = 'D';
private final char Salir = 'Q';
private final char Salir2 = 'q';
public char getArriba() {
return Arriba;
}
public char getAbajo() {
return Abajo;
}
public char getIzquierda() {
return Izquierda;
}
public char getDerecha() {
return Derecha;
}
public char getArriba2() {
return Arriba2;
}
public char getAbajo2() {
return Abajo2;
}
public char getIzquierda2() {
return Izquierda2;
}
public char getDerecha2() {
return Derecha2;
}
public char getSalir() {
return Salir;
}
public char getSalir2() {
return Salir2;
}
}
package Paquete1;
import javax.swing.JOptionPane;
public class Main {
public static void main (String[] arg){
Tablero op = new Tablero ();
op.getAbajo();
op.getAbajo2();
op.getArriba();
op.getArriba2();
op.getDerecha();
op.getDerecha2();
op.getIzquierda();
op.getIzquierda2();
op.getSalir();
op.getSalir2();
int x=0;
int y=0;
boolean salir = false;
do{
char posición = JOptionPane.showInputDialog("Seleccione la alguna de las siguientes teclas
W = Subir
S = Bajar
A = Izquierda
D = Derecha
Q = Salir").charAt(0);
if (posición == op.getAbajo() || posición == op.getAbajo2()){
y--;
System.out.println("La posición cambio a: ["+x+"]"+"["+y+"]");
}else if (posición == op.getArriba() || posición == op.getArriba2()){
y++;
System.out.println("La posición cambio a: ["+x+"]"+"["+y+"]");
}else if (posición == op.getIzquierda() || posición == op.getIzquierda2()){
x--;
System.out.println("La posición cambio a: ["+x+"]"+"["+y+"]");
}else if (posición == op.getDerecha() || posición == op.getDerecha()){
x++;
System.out.println("La posición cambio a: ["+x+"]"+"["+y+"]");
}else if (posición == op.getSalir() || posición == op.getSalir2()){
salir = true;
}else {
System.out.println("Bro, esa tecla no esta en el menu");
}
} while (salir == false);
}
}
el programa que usa donde lo consigo
el IDE es Netbeans :)
lo tines que descargar de oracle, ahi te descragas el Netbeans y el JDK
El IDE incorpora el JDK, no ?
/*
Ejercicio 2: Construir un programa que permita dirigir el movimiento de un objeto dentro de un tablero y actualice
su posición dentro del mismo. Los movimientos posibles son ARRIBA, ABAJO, IZQUIERDA y DERECHA.
Tras cada movimiento el programa mostrará la nueva dirección elegida y las coordenadas de situación del objeto dentro del tablero.
*/
package paquete1;
import javax.swing.JOptionPane;
public class Clase {
// Atributos
int x=0;
int y=0;
char mov;
// Metodos
public int getXDerecha(){
int Derecha = x++;
return Derecha;
}
public int getXIzquierda(){
int Izquierda = x--;
return Izquierda;
}
public int getYArriba(){
int Arriba = y++;
return Arriba;
}
public int getXAbajo(){
int Abajo = y--;
return Abajo;
}
public void MostrarPosicion( char mov){
switch (mov) {
case 'A':
JOptionPane.showMessageDialog(null, "Se Desplazó hacia Arriba!
Su nueva posicion es:: ("+x+" , "+y+")");
break;
case 'B':
JOptionPane.showMessageDialog(null, "Se Desplazó hacia Abajo!
Su nueva posicion es:: ("+x+" , "+y+")");
break;
case 'C':
JOptionPane.showMessageDialog(null, "Se Desplazó hacia Izquierda!
Su nueva posicion es:: ("+x+" , "+y+")");
break;
case 'D':
JOptionPane.showMessageDialog(null, "Se Desplazó hacia Derecha!
Su nueva posicion es:: ("+x+" , "+y+")");
break;
default:
break;
}
}
public static void main( String [] args){
Clase auto1 = new Clase();
char movimiento;
do{
movimiento = JOptionPane.showInputDialog("¿ Hacia donde desea desplazarse ?"
+"
A = Arriba"
+"
B = ABajo"
+"
C = Izquierda"
+"
D = Derecha"
+"
E = Salir").charAt(0);
switch(movimiento){
case 'A': auto1.getYArriba(); auto1.MostrarPosicion(movimiento); break;
case 'B': auto1.getXAbajo(); auto1.MostrarPosicion(movimiento);break;
case 'C': auto1.getXIzquierda(); auto1.MostrarPosicion(movimiento); break;
case 'D': auto1.getXDerecha(); auto1.MostrarPosicion(movimiento);break;
case 'E': JOptionPane.showMessageDialog(null, "ADIOS!!");;break;
default: JOptionPane.showMessageDialog(null, "Opcion incorrecta!!");
}
}while(movimiento != 'E');
}
}
Con su respectivo tablero o eso creo xD
package clasesej2;
public class Tablero {
int x,y;
public Tablero(int x, int y) {
this.x = x;
this.y = y;}
public void arriba() {
y++;
System.out.println("Posición: "+x+","+y);}
public void abajo() {
y--;
System.out.println("Posición: "+x+","+y);}
public void derecha() {
x++;
System.out.println("Posición: "+x+","+y);}
public void izquierda() {
x--;
System.out.println("Posición: "+x+","+y);}
Clase principal
Scanner teclado=new Scanner(System.in);
char d;
int x=0,y=0;
Tablero peon=new Tablero(0,0);
System.out.println("Empezemos a jugar");
System.out.println("Presiona O para salir del juego");
System.out.println("Presiona W para ir arriba
Presiona S para ir abajo
"
+ "Presiona A para ir a la izquierda
Presiona D para ir a la derecha");
System.out.println("Comienzas en la posición 0,0");
do{d=teclado.next().charAt(0);
switch(d){
case 'W':
case 'w':if(y>=0 && y0 && y0 && x=0 && x
Te recomiendo colocar como ejercicios propuestos temas de matemáticas discretas.
Ejemplo: Un programa que imprima por pantalla el día de la semana a partir de la fecha ingresada.
Pista: puedes usar la congruencia de Zeller para resolver.
Así fue como lo hice :v veo el de los demás y creo que me compliqué demasiado XD
///ClaseTablero
package ejercicio_dos;
import javax.swing.JOptionPane;
public class Tablero {
private final String nomObjeto = "Shiva";
private final String carObjeto = "Destructor";
private int dañoObj = 10;
private int coordenadaX, coordenadaY;
String tablero[][]=new String[4][4];
public Tablero(int coordenadaX, int coordenadaY) {
this.coordenadaX = coordenadaX;
this.coordenadaY = coordenadaY;
tablero[coordenadaX][coordenadaY] = getObjeto();
}
public void setDaño(int dañoObj) {
this.dañoObj = dañoObj;
}
public void leftCoordenadaX(){
if (coordenadaY!=0) {
coordenadaY--;
tablero[coordenadaX][coordenadaY]=getObjeto();
} else {
JOptionPane.showMessageDialog(null, "El objeto se ha encontrado con una pared.");
}
}
public void rigthCoordenadaX(){
if (coordenadaY==(tablero.length-1)) {
JOptionPane.showMessageDialog(null, "El objeto se ha encontrado con una pared.");
} else {
coordenadaY++;
tablero[coordenadaX][coordenadaY]=getObjeto();
}
}
public void upCoordenadaY(){
if (coordenadaX!=0) {
coordenadaX--;
tablero[coordenadaX][coordenadaY]=getObjeto();
} else {
JOptionPane.showMessageDialog(null, "El objeto se ha encontrado con una pared.");
}
}
public void downCoordenadaY(){
if (coordenadaX==(tablero.length-1)) {
JOptionPane.showMessageDialog(null, "El objeto se ha encontrado con una pared.");
} else {
coordenadaX++;
tablero[coordenadaX][coordenadaY]=getObjeto();
}
}
public String getObjeto() {
return nomObjeto + '
' + "Tipo: " + carObjeto + '
' +"Daño: "+ dañoObj+" pts";
}
public String toString(){
return "Personaje: " + getObjeto() + "
Se encuentra en las coordenadas:
"+ "["+(coordenadaX+1)+"]"+ "["+(coordenadaY+1)+"]";
}
}
/////Clase Main
package ejercicio_dos;
import javax.swing.JOptionPane;
public class main {
public static void main(String[] args) {
int coordenadaX, coordenadaY, dañoObj;
String opciones[] = {"Izquierda", "Arriba", "Abajo", "Derecha", "Salir"};
coordenadaX = Integer.parseInt(JOptionPane.showInputDialog("Ingresa la posición en X de tu héroe en un tablero de 4x4"));
coordenadaY = Integer.parseInt(JOptionPane.showInputDialog("Ingresa la posición en Y de tu héroe en un tablero de 4x4"));
coordenadaX--;
coordenadaY--;
Tablero obj = new Tablero(coordenadaX, coordenadaY);
do {
int seleccion = JOptionPane.showOptionDialog(null, "Mover hacia", "Mover", JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null, opciones, opciones[0]);
switch (seleccion) {
case 0:
obj.leftCoordenadaX();
JOptionPane.showMessageDialog(null, obj.toString());
break;
case 1:
obj.upCoordenadaY();
JOptionPane.showMessageDialog(null, obj.toString());
break;
case 2:
obj.downCoordenadaY();
JOptionPane.showMessageDialog(null, obj.toString());
break;
case 3:
obj.rigthCoordenadaX();
JOptionPane.showMessageDialog(null, obj.toString());
break;
default:
System.exit(0);
break;
}
} while (true);
}
}
jajaj q riko bideo
Ejercicio #2 ( Me tomó unas horas de darme cuenta que soy un gil, pero lo logré y estoy feliz de mover un puto circulo) así lo interpreté yo :
*Clase Tablero*
package paquete1;
public class Tablero {
public int y;
public int x;
public int posiciony;
public int posicionx;
//MAPA ORIGINAL.
public void rellenarTabla(char[][] tabla){
for(x = 0 ; x < tabla.length ; x++){
for(y = 0 ; y < tabla[x].length ; y++){
if(x == 2 && y == 2){
tabla[x][y] = 'o';
posiciony = y;
posicionx = x;
}
else{
tabla[x][y] = '-';
}
}
}
}
//MOVIMIENTOS.
public void arriba(char[][] tabla){
tabla[posicionx-1][posiciony]=tabla[posicionx][posiciony];
tabla[posicionx][posiciony] = '-';
posicionx-=1;
}
public void abajo(char[][] tabla){
tabla[posicionx+1][posiciony]=tabla[posicionx][posiciony];
tabla[posicionx][posiciony] = '-';
posicionx+=1;
}
public void izquierda(char[][] tabla){
tabla[posicionx][posiciony-1]=tabla[posicionx][posiciony];
tabla[posicionx][posiciony] = '-';
posiciony-=1;
}
public void derecha(char[][] tabla){
tabla[posicionx][posiciony+1]=tabla[posicionx][posiciony];
tabla[posicionx][posiciony] = '-';
posiciony+=1;
}
//MOSTRAR TABLA.
public void mostrarTabla(char[][] tabla){
for(int i = 0 ; i < tabla.length ; i++){
for(int j = 0 ; j < tabla[i].length ; j++){
System.out.print(tabla[i][j]+" ");
}
System.out.println("");
}
}
}
*Clase Pantalla* ( la main )
package paquete1;
import javax.swing.JOptionPane;
public class Pantalla {
public static void main(String[] args){
char[][] tabla = new char[5][5];
Tablero t1 = new Tablero();
char mover;
t1.rellenarTabla(tabla);
t1.mostrarTabla(tabla);
System.out.println("");
do{
mover = JOptionPane.showInputDialog("Hacia donde se quiere mover?
Arriba(w)
Abajo(s)
Izquierda(a)
Derecha(d)
Reiniciar(r)
Si desa salir, escriba (x)").charAt(0);
switch(mover){
case 'w': t1.arriba(tabla);break;
case 'a': t1.izquierda(tabla);break;
case 's': t1.abajo(tabla);break;
case 'd': t1.derecha(tabla);break;
case 'r': t1.rellenarTabla(tabla);break;
}
t1.mostrarTabla(tabla);
System.out.println("");
}while(mover != 'x');
}
}
Ejercicio #2
Lo hice de manera en la que el tablero pudiera ser visto graficamente con una matriz
///////////////////
Clase Main
///////////////////
package paquete1;
import javax.swing.JOptionPane;
public class Main {
public static void main(String [] args){
//Declaraciones
int tablero[][] = new int[9][9];
Tablero t1 = new Tablero();
char opcion;
String ulmov = "";
//Ejecucion
tablero[t1.getVer()][t1.getHor()] = 1;
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
System.out.print(tablero[i][j]+" ");
}
System.out.println("");
} System.out.println("");
do {
opcion = JOptionPane.showInputDialog("Posicion actual: ["+t1.getVer()+"]["+t1.getHor()+"]
Ultimo movimiento: "+ulmov+"
Elija alguna de las opciones:
W = mover arriba
S = mover abajo
A = mover a la izquierda
D = Mover a la derecha
X = Salir").charAt(0);
//Ir hacia arriba
if ((opcion == 'w') || (opcion == 'W')) {
tablero[t1.getVer()][t1.getHor()] = 0;
t1.arriba();
tablero[t1.getVer()][t1.getHor()] = 1;
ulmov = "Hacia arriba";
//Ir hacia abajo
} else if ((opcion == 's') || (opcion == 'S')) {
tablero[t1.getVer()][t1.getHor()] = 0;
t1.abajo();
tablero[t1.getVer()][t1.getHor()] = 1;
ulmov = "Hacia abajo";
//Ir hacia la derecha
} else if ((opcion == 'd') || (opcion == 'D')) {
tablero[t1.getVer()][t1.getHor()] = 0;
t1.derecha();
tablero[t1.getVer()][t1.getHor()] = 1;
ulmov = "Hacia la derecha";
}
//Ir a la izquierda
else if ((opcion == 'a') || (opcion == 'A')) {
tablero[t1.getVer()][t1.getHor()] = 0;
t1.izquierda();
tablero[t1.getVer()][t1.getHor()] = 1;
ulmov = "Hacia la izquierda";
}
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
System.out.print(tablero[i][j]+" ");
}
System.out.println("");
} System.out.println("
");
} while ((opcion != 'x') && (opcion != 'X'));
}
}
///////////////////
Clase Tablero
///////////////////
package paquete1;
public class Tablero extends Main{
//atributos
private int ver = 0,hor = 0;
//metodos
public Tablero() {
}
//Mover hacia arriba
public int arriba(){
if (ver - 18) {
System.out.println("
No es posible ir hacia abajo
");
} else {
ver = ver + 1;
}
return ver;
}
//Mover a la izquierda
public int izquierda(){
if (hor-18) {
System.out.println("No se puede ir a la derecha");
} else {
hor = hor + 1;
}
return hor;
}
//Getters
public int getHor() {
return hor;
}
public int getVer() {
return ver;
}
}
Hola amigo! Me encanta tus videos y sigo todos tus ejercicio! eres increíble dando clases mas por tu forma motivadora de enseñar. Una pregunta, cual es la diferencia de usar el metodo public floar getArea .. a usar un metrodo vacio como public void Area e imprimir el resultado en el mismo metodo ? Es mas profecionar usar el return ?
Despues de mucho pensar que no podia, les adjunto mi ejercicio 2 :D
//MAIN
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package Main;
import java.util.*;
/**
*
* @author Stuart
*/
public class Main {
//Metodo main
public static void main(String[] args) {
boolean Salida=false;
int x,y,numero;
String Movimiento;
Scanner Leer = new Scanner(System.in);
System.out.println("Este programa permitira dirigir el movimiento de un objeto dentro de un tablero");
System.out.println("
Actualizara su posicion dentro del mismo");
System.out.println("
Ingrese las coordenadas en x:");
x=Leer.nextInt();
System.out.println("
Ingrese las coordenas en y:");
y=Leer.nextInt();
System.out.println("
Los movimientos posibles son: ");
System.out.println("
Arriba W");
System.out.println("
Abajo S");
System.out.println("
Izquierda A");
System.out.println("
Derecha D");
System.out.println("
Salir");
System.out.println("Ingrese su movimiento");
Movimiento=Leer.nextLine();
Tablero movimientos=new Tablero(x,y);
do{
switch(Movimiento){
case "W":
System.out.println("Cuantos espacios desea moverse arriba: ");
numero=Leer.nextInt();
movimientos.moverArriba(numero);
break;
case "A":
System.out.println("Cuantos espacios desea moverse abajo: ");
numero=Leer.nextInt();
movimientos.moverAbajo(numero);
break;
case "S":
System.out.println("Cuantos espacios desea moverse izquierda: ");
numero=Leer.nextInt();
movimientos.moverIzquierda(numero);
break;
case "D":
System.out.println("Cuantos espacios desea moverse derecha: ");
numero=Leer.nextInt();
movimientos.moverDerecha(numero);
break;
default:
System.out.println("No elegiste un movimiento valido");
break;
}
System.out.println("La posicion en (x/y) es: ("+movimientos.getX()+","+movimientos.getY()+")");
System.out.println("
Los movimientos posibles son: ");
System.out.println("
Arriba W");
System.out.println("
Abajo S");
System.out.println("
Izquierda A");
System.out.println("
Derecha D");
System.out.println("
Salir");
System.out.println("Ingrese su movimiento");
Movimiento=Leer.nextLine();
if(Movimiento=="E"){
Salida=true;
}
}while(!Salida); }
}
Clase tablero
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package Main;
/**
*
* @author Stuart
*/
public class Tablero {
private int x;
private int y;
public Tablero(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public void moverArriba(int n) {
this.y += n;
}
public void moverAbajo(int n) {
this.y -= n;
}
public void moverIzquierda(int n) {
this.x += n;
}
public void moverDerecha(int n) {
this.x -= n;
}
public int getY() {
return this.y;
}
}
Bueno luego de 8 meses vuelvo al curso de POO pero solo a resolver los problemas
public class principal{
private int x;
private int y;
//bueno asi lo entendi xD la verdad
public Principal(int x, int y) {
this.x = x;
this.y = y;
}
public void moverArriba() {
y++;
}
public void moverAbajo() {
y--;
}
public void moverDerecha() {
x++;
}
public void moverIzquierda() {
x--;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
static Scanner s = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("Digite numero 1 o EJE X");
int n1 = s.nextInt();
System.out.println("Digite numero 2 o EJE Y");
int n2 = s.nextInt();
System.out.println("Arriba (W)");
System.out.println("Abajo (S)");
System.out.println("Derecha (D)");
System.out.println("Izquierda es (A)");
System.out.println("CANCELAR (C)");
System.out.println("
(" + n1 + " , " + n2 + ")");
Menu(n1, n2);
}
public static void Menu(int n1, int n2) {
tablero tabla = new tablero(n1, n2);
while (true) {
System.out.println("Digite Opcion");
String opcion = s.next();
if (opcion.equalsIgnoreCase("W")) {
tabla.moverArriba();
} else if (opcion.equalsIgnoreCase("S")) {
tabla.moverAbajo();
} else if (opcion.equalsIgnoreCase("D")) {
tabla.moverDerecha();
} else if (opcion.equalsIgnoreCase("A")) {
tabla.moverIzquierda();
} else {
break;
}
System.out.println("(" + tabla.getX() + "), " + "(" + tabla.getY() + ")");
}
}
Hice esto:
para la clase:
package Movimiento;
public class Ejercicio2 {
private char movimiento ;
public Ejercicio2(char movimiento) {
this.movimiento = movimiento;
}
public void getDireccion(){
if(movimiento == 'a'){
System.out.println("DERECHA");
} else if (movimiento == 'd'){
System.out.println("IZQUIERDA");
}else if (movimiento == 's'){
System.out.println("ABAJO");
} else if (movimiento == 'd'){
System.out.println("ARRIBA");
}
}
}
el main:
package Movimiento;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner entrada = new Scanner(System.in);
Ejercicio2 m1;
int x = 0, y = 0;
char key;
boolean game = false;
System.out.println("Ingrese una direccion: ");
key = entrada.next().charAt(0);
if(key == 'a'){
m1 = new Ejercicio2(key);
m1.getDireccion();
x++;
System.out.println("las nueva coordenada es:" +x+ ","+y);
}else if(key =='d'){
m1 = new Ejercicio2(key);
m1.getDireccion();
if(x == 0){
System.out.println("no se puede mover para la izquierda");
}else{
x--;
System.out.println("las nuevas coordenada es:" +x+ ","+y);
}
}
}
}