diff --git a/fuentes/Cinzel-VariableFont_wght.ttf b/fuentes/Cinzel-VariableFont_wght.ttf new file mode 100644 index 000000000..38ae22997 Binary files /dev/null and b/fuentes/Cinzel-VariableFont_wght.ttf differ diff --git a/imagenes/BobiBob.png b/imagenes/BobiBob.png new file mode 100644 index 000000000..d2d0ffdfc Binary files /dev/null and b/imagenes/BobiBob.png differ diff --git a/imagenes/FondoDeInicio.jpg b/imagenes/FondoDeInicio.jpg new file mode 100644 index 000000000..b4c05fc2b Binary files /dev/null and b/imagenes/FondoDeInicio.jpg differ diff --git a/imagenes/gladiadorFondo.png b/imagenes/gladiadorFondo.png new file mode 100644 index 000000000..50eadb6b4 Binary files /dev/null and b/imagenes/gladiadorFondo.png differ diff --git a/imagenes/gladiadorMeme.png b/imagenes/gladiadorMeme.png new file mode 100644 index 000000000..273f8b341 Binary files /dev/null and b/imagenes/gladiadorMeme.png differ diff --git a/imagenes/imagenCamino.png b/imagenes/imagenCamino.png new file mode 100644 index 000000000..2b368957c Binary files /dev/null and b/imagenes/imagenCamino.png differ diff --git a/src/main/java/edu/fiuba/algo3/App.java b/src/main/java/edu/fiuba/algo3/App.java index 643bc82b2..200665f11 100644 --- a/src/main/java/edu/fiuba/algo3/App.java +++ b/src/main/java/edu/fiuba/algo3/App.java @@ -5,16 +5,17 @@ import javafx.scene.Scene; import javafx.scene.control.Label; -import javafx.scene.layout.VBox; -import javafx.scene.layout.HBox; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.layout.*; import javafx.geometry.Pos; +import javafx.scene.text.Font; import javafx.stage.Stage; import javafx.scene.control.Button; - /** * JavaFX App */ @@ -22,12 +23,21 @@ public class App extends Application { @Override public void start(Stage stage) { + StackPane panelPrincipal = new StackPane(); Label imperioRomanoEtiqueta = new Label("Imperio Romano"); Label vamoAJugaEtiqueta = new Label("Vamo' a juga'?"); - Label cantidadDeJugadoresEtiqueta = new Label("Elija el número de jugadores:"); + //Font estiloLetra = Font.loadFont("file:" + System.getProperty("user.dir") + "/FuentesDeLetras/Cinzel-VariableFont_wght.ttf", 35); + + //imperioRomanoEtiqueta.setFont(estiloLetra); + imperioRomanoEtiqueta.setStyle("-fx-text-fill: white"); + vamoAJugaEtiqueta.setFont(new Font("Arial", 20)); + vamoAJugaEtiqueta.setStyle("-fx-text-fill: white"); + cantidadDeJugadoresEtiqueta.setFont(new Font("Arial", 20)); + cantidadDeJugadoresEtiqueta.setStyle("-fx-text-fill: white"); + Button boton2 = new BotonCantidadJugador(stage, "2"); Button boton3 = new BotonCantidadJugador(stage, "3"); Button boton4 = new BotonCantidadJugador(stage, "4"); @@ -44,7 +54,17 @@ public void start(Stage stage) { contenedorPrincipal.setAlignment(Pos.CENTER); contenedorPrincipal.setSpacing(10); - var scene = new Scene(contenedorPrincipal, 640, 480); + //Imagen de Fondo + Image imagenDeFondo = new Image("file:" + System.getProperty("user.dir") + "/imagenes/FondoDeInicio.jpg"); + ImageView viewImagenFondo = new ImageView(imagenDeFondo); + viewImagenFondo.setFitHeight(480); + viewImagenFondo.setFitWidth(640); + + panelPrincipal.getChildren().add(viewImagenFondo); + panelPrincipal.getChildren().add(contenedorPrincipal); + // + + var scene = new Scene(panelPrincipal, 640, 480); stage.setScene(scene); stage.show(); diff --git a/src/main/java/edu/fiuba/algo3/interfaz/controladores/ControladorIngresoJugadores.java b/src/main/java/edu/fiuba/algo3/interfaz/controladores/ControladorIngresoJugadores.java index 012b2a099..3da7933d4 100644 --- a/src/main/java/edu/fiuba/algo3/interfaz/controladores/ControladorIngresoJugadores.java +++ b/src/main/java/edu/fiuba/algo3/interfaz/controladores/ControladorIngresoJugadores.java @@ -2,6 +2,7 @@ import edu.fiuba.algo3.interfaz.vistas.botones.BotonCantidadJugador; import edu.fiuba.algo3.interfaz.vistas.botones.BotonIngresarNombre; +import edu.fiuba.algo3.interfaz.vistas.botones.BotonIniciarPartida; import edu.fiuba.algo3.interfaz.vistas.cuadroTexto.CuadroTextoIngreso; import javafx.event.ActionEvent; import javafx.event.EventHandler; @@ -14,11 +15,11 @@ import javafx.scene.layout.VBox; import javafx.scene.layout.HBox; import javafx.geometry.Pos; +import javafx.scene.paint.Color; +import javafx.geometry.Insets; import javafx.scene.layout.Background; import javafx.scene.layout.BackgroundFill; import javafx.scene.layout.CornerRadii; -import javafx.scene.paint.Color; -import javafx.geometry.Insets; @@ -37,15 +38,17 @@ private Scene crearEscenaIngreso() { int cantidadLimite = this.boton.getCantidadLimite(); Label etiquetaIngreso = new Label("Ingrese un nombre:"); CuadroTextoIngreso cuadroTexto = new CuadroTextoIngreso(); + BotonIniciarPartida botonInciarPartida = new BotonIniciarPartida(this.ventana, "Iniciar Partida"); Label etiquetaAviso = new Label(""); - Button botonIngresarNombre = new BotonIngresarNombre("Ingresar", cuadroTexto, etiquetaAviso, cantidadLimite); + Button botonIngresarNombre = new BotonIngresarNombre("Ingresar", cuadroTexto, etiquetaAviso, cantidadLimite, botonInciarPartida); HBox contenedorIngreso = new HBox(etiquetaIngreso, cuadroTexto, botonIngresarNombre); contenedorIngreso.setAlignment(Pos.CENTER); contenedorIngreso.setSpacing(3); - Button botonInciarPartida = new Button("Iniciar Partida"); + //Button botonInciarPartida = new Button("Iniciar Partida"); +/* // PARTE ASTERIK BackgroundFill normalFill = new BackgroundFill(Color.LIME, CornerRadii.EMPTY, Insets.EMPTY); Background normalBackground = new Background(normalFill); @@ -64,7 +67,7 @@ private Scene crearEscenaIngreso() { botonInciarPartida.setBackground(normalBackground); }); // - +*/ VBox disposicionIngreso = new VBox(contenedorIngreso, etiquetaAviso, botonInciarPartida); disposicionIngreso.setAlignment(Pos.CENTER); disposicionIngreso.setSpacing(8); @@ -74,7 +77,7 @@ private Scene crearEscenaIngreso() { @Override public void handle(ActionEvent evento) { Scene escenaIngresoJugadores = crearEscenaIngreso(); + //Scene escenaIngresoJugadores = new EscenaIngreso(this.boton); this.ventana.setScene(escenaIngresoJugadores); - } } diff --git a/src/main/java/edu/fiuba/algo3/interfaz/controladores/ControladorIngresoNombre.java b/src/main/java/edu/fiuba/algo3/interfaz/controladores/ControladorIngresoNombre.java index 7c14a6bca..9999d75d1 100644 --- a/src/main/java/edu/fiuba/algo3/interfaz/controladores/ControladorIngresoNombre.java +++ b/src/main/java/edu/fiuba/algo3/interfaz/controladores/ControladorIngresoNombre.java @@ -1,5 +1,8 @@ package edu.fiuba.algo3.interfaz.controladores; +import edu.fiuba.algo3.interfaz.vistas.botones.BotonIngresarNombre; +//import edu.fiuba.algo3.interfaz.vistas.escenas.EscenaIngreso; +import edu.fiuba.algo3.interfaz.vistas.botones.BotonIniciarPartida; import javafx.event.ActionEvent; import javafx.event.EventHandler; import edu.fiuba.algo3.interfaz.vistas.cuadroTexto.CuadroTextoIngreso; @@ -13,12 +16,16 @@ public class ControladorIngresoNombre implements EventHandler { private ArrayList nombresJugadores; private Label etiquetaAviso; private int cantidadLimite; + private BotonIngresarNombre botonIngreso; + private BotonIniciarPartida botonIniciarPartida; - public ControladorIngresoNombre(CuadroTextoIngreso cuadroTexto, Label etiquetaAviso, int cantidadLimite) { + public ControladorIngresoNombre(CuadroTextoIngreso cuadroTexto, Label etiquetaAviso, int cantidadLimite, BotonIngresarNombre botonIngreso, BotonIniciarPartida botonIniciarPartida) { this.cuadroTexto = cuadroTexto; this.nombresJugadores = new ArrayList<>(); this.etiquetaAviso = etiquetaAviso; this.cantidadLimite = cantidadLimite; + this.botonIngreso = botonIngreso; + this.botonIniciarPartida = botonIniciarPartida; } @Override @@ -28,11 +35,11 @@ public void handle(ActionEvent evento) { } else if ((this.cantidadLimite - 1) == this.nombresJugadores.size()) { this.etiquetaAviso.setText("Se ha ingresado la cantidad máxima de jugadores. Es hora de jugar!"); this.cuadroTexto.setDisable(true); - //TODO: Sacar el boton "ingresar". - //TODO: agregar boto inicio partida. -> Mostramos otra escena o modificamos la escena actual de alguna manera? + this.botonIngreso.setDisable(true); + this.botonIniciarPartida.setDisable(false); } else { this.nombresJugadores.add(String.valueOf(this.cuadroTexto.getText().trim().equals(""))); - this.etiquetaAviso.setText(""); + this.etiquetaAviso.setText("\"" + this.cuadroTexto.getText() + "\"" + "ingresado con éxito!"); } this.cuadroTexto.clear(); diff --git a/src/main/java/edu/fiuba/algo3/interfaz/controladores/ControladorInicioPartida.java b/src/main/java/edu/fiuba/algo3/interfaz/controladores/ControladorInicioPartida.java new file mode 100644 index 000000000..77ba22cea --- /dev/null +++ b/src/main/java/edu/fiuba/algo3/interfaz/controladores/ControladorInicioPartida.java @@ -0,0 +1,26 @@ +package edu.fiuba.algo3.interfaz.controladores; + +import edu.fiuba.algo3.interfaz.vistas.escenas.VistaTablero; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.scene.Scene; +import javafx.stage.Stage; + +public class ControladorInicioPartida implements EventHandler { + + private Stage ventana; + + public ControladorInicioPartida(Stage ventana) { + this.ventana = ventana; + } + + @Override + public void handle(ActionEvent evento) { + // TODO: Si no llegamos a poner un boceto escribimos: "Tablero en construccion ;)" CON BOB EL CONSTRUCTOR + VistaTablero tablero = new VistaTablero(); + + Scene escenaTablero = new Scene(tablero); + + this.ventana.setScene(escenaTablero); + } +} diff --git a/src/main/java/edu/fiuba/algo3/interfaz/vistas/botones/BotonIngresarNombre.java b/src/main/java/edu/fiuba/algo3/interfaz/vistas/botones/BotonIngresarNombre.java index b3146e3cc..ca1319ec1 100644 --- a/src/main/java/edu/fiuba/algo3/interfaz/vistas/botones/BotonIngresarNombre.java +++ b/src/main/java/edu/fiuba/algo3/interfaz/vistas/botones/BotonIngresarNombre.java @@ -11,7 +11,7 @@ public class BotonIngresarNombre extends Button { - public BotonIngresarNombre(String texto, CuadroTextoIngreso cuadroTexto, Label etiquetaAviso, int cantidadLimite) { + public BotonIngresarNombre(String texto, CuadroTextoIngreso cuadroTexto, Label etiquetaAviso, int cantidadLimite, BotonIniciarPartida botonIniciarPartida) { super.setText(texto); BackgroundFill normalFill = new BackgroundFill(Color.CYAN, CornerRadii.EMPTY, Insets.EMPTY); @@ -31,6 +31,6 @@ public BotonIngresarNombre(String texto, CuadroTextoIngreso cuadroTexto, Label e this.setBackground(normalBackground); }); - super.setOnAction(new ControladorIngresoNombre(cuadroTexto, etiquetaAviso, cantidadLimite)); + super.setOnAction(new ControladorIngresoNombre(cuadroTexto, etiquetaAviso, cantidadLimite, this, botonIniciarPartida)); } } diff --git a/src/main/java/edu/fiuba/algo3/interfaz/vistas/botones/BotonIniciarPartida.java b/src/main/java/edu/fiuba/algo3/interfaz/vistas/botones/BotonIniciarPartida.java new file mode 100644 index 000000000..2b88075cf --- /dev/null +++ b/src/main/java/edu/fiuba/algo3/interfaz/vistas/botones/BotonIniciarPartida.java @@ -0,0 +1,40 @@ +package edu.fiuba.algo3.interfaz.vistas.botones; + +import javafx.scene.control.Button; +import javafx.scene.layout.Background; +import javafx.scene.layout.BackgroundFill; +import javafx.scene.layout.CornerRadii; +import javafx.geometry.Insets; +import javafx.scene.paint.Color; +import edu.fiuba.algo3.interfaz.controladores.ControladorInicioPartida; +import javafx.stage.Stage; + + +public class BotonIniciarPartida extends Button { + + public BotonIniciarPartida(Stage ventana, String texto) { + super.setText(texto); + + // PARTE ASTERIIIIIIKK <3 + BackgroundFill normalFill = new BackgroundFill(Color.LIME, CornerRadii.EMPTY, Insets.EMPTY); + Background normalBackground = new Background(normalFill); + + BackgroundFill hoveredFill = new BackgroundFill(Color.DARKGREEN, CornerRadii.EMPTY, Insets.EMPTY); + Background hoveredBackground = new Background(hoveredFill); + + // Estilo del Boton + this.setBackground(normalBackground); + // Cuando entra el Mouse + this.setOnMouseEntered(event -> { + this.setBackground(hoveredBackground); + }); + // Cuando sale el Mouse + this.setOnMouseExited(event -> { + this.setBackground(normalBackground); + }); + // + + this.setDisable(true); + setOnAction(new ControladorInicioPartida(ventana)); + } +} diff --git a/src/main/java/edu/fiuba/algo3/interfaz/vistas/escenas/VistaTablero.java b/src/main/java/edu/fiuba/algo3/interfaz/vistas/escenas/VistaTablero.java new file mode 100644 index 000000000..89ca6f02b --- /dev/null +++ b/src/main/java/edu/fiuba/algo3/interfaz/vistas/escenas/VistaTablero.java @@ -0,0 +1,41 @@ +package edu.fiuba.algo3.interfaz.vistas.escenas; + +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.layout.GridPane; +import javafx.scene.layout.StackPane; + +public class VistaTablero extends GridPane { + + private static final int TAMANO_CELDA = 50; + + // public VistaTablero(Tablero tablero)? TODO: Pasarle tablero? + public VistaTablero() { + for (int fila = 0; fila < 4; fila++) { + for (int col = 0; col < 7; col++) { + + StackPane panelCelda = this.crearPanelCelda("/imagenes/imagenCamino.png"); + + setConstraints(panelCelda, fila, col); + + super.getChildren().add(panelCelda); + } + } + } + + public StackPane crearPanelCelda(String rutaImagen) { + // "file:" + System.getProperty("user.dir") + "/imagenes/pasto.jpg" --> Ruta para imagen de pasto + // "file:" + System.getProperty("user.dir") + "/imagenes/imagenCamino.png" --> Ruta para imagen de camino + StackPane panelCelda = new StackPane(); + Image imagenCamino = new Image("file:" + System.getProperty("user.dir") + rutaImagen); + + ImageView viewImagenCamino = new ImageView(imagenCamino); + viewImagenCamino.setFitHeight(TAMANO_CELDA); + viewImagenCamino.setFitWidth(TAMANO_CELDA); + + panelCelda.getChildren().add(viewImagenCamino); + + return panelCelda; + } + +}