Skip to content

Commit

Permalink
Opciones de tamaño y velocidad de la pelota
Browse files Browse the repository at this point in the history
  • Loading branch information
javierfh03 committed Jan 25, 2023
1 parent e01dcb7 commit b579f73
Show file tree
Hide file tree
Showing 9 changed files with 236 additions and 27 deletions.
11 changes: 8 additions & 3 deletions src/pong/entities/Pelota.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package pong.entities;

import java.awt.Graphics;
import pong.ui.Pista;
import pong.vistas.Pista;

/**
* Esta clase representa la pelota del juego, es movida
Expand All @@ -12,7 +12,7 @@
public class Pelota extends Thread {

private Pista panel;
private int x, y, tamanio, limiteX, limiteY;
private int x, y, tamanio, limiteX, limiteY, velocidad;
private boolean direccionIzquierda, direccionAbajo, moverse;

/**
Expand All @@ -25,6 +25,7 @@ public Pelota(Pista panel) {
this.moverse = true;
this.direccionAbajo = true;
this.direccionIzquierda = true;
this.velocidad = 30;

centrar();
setTamanio(15);
Expand All @@ -36,11 +37,15 @@ public void setTamanio(int tamanio) {
this.limiteX = panel.getWidth() - tamanio;
}

public void setVelocidad(int velocidad) {
this.velocidad = velocidad;
}

@Override
public void run() {
while (moverse) {
try {
sleep(30);
sleep(velocidad);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
Expand Down
2 changes: 1 addition & 1 deletion src/pong/entities/Raqueta.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import java.awt.Graphics;
import pong.ui.EventoTeclado;
import pong.ui.Pista;
import pong.vistas.Pista;

/**
* Esta clase representa las raquetas del juego.
Expand Down
4 changes: 2 additions & 2 deletions src/pong/main/Run.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package pong.main;

import pong.ui.VentanaMenu;
import pong.ui.VentanaInicio;

/**
* Inicializa el programa.
Expand All @@ -9,7 +9,7 @@
*/
public class Run {
public static void main(String[] args) {
VentanaMenu v = new VentanaMenu();
VentanaInicio v = new VentanaInicio();
v.setVisible(true);
}

Expand Down
3 changes: 2 additions & 1 deletion src/pong/ui/EventoTeclado.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package pong.ui;

import pong.vistas.Pista;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

Expand Down Expand Up @@ -39,7 +40,7 @@ public void keyPressed(KeyEvent e) {
}

if (id == KeyEvent.VK_ESCAPE){
VentanaMenu vm = new VentanaMenu();
VentanaInicio vm = new VentanaInicio();
VentanaJuego vj = (VentanaJuego) panel.getParent().getParent()
.getParent().getParent();

Expand Down
40 changes: 40 additions & 0 deletions src/pong/ui/VentanaInicio.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package pong.ui;

import java.awt.CardLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import pong.vistas.Menu;
import pong.vistas.Opciones;

public class VentanaInicio extends JFrame {

private JPanel menu, opciones;
private CardLayout carta;

public VentanaInicio() {
inicializar();
estilos();

add(menu);
add(opciones);
}

private void inicializar() {
this.menu = new Menu();
this.opciones = new Opciones();
}

private void estilos() {
setSize(600, 400);
setTitle("Pong");
setResizable(false);
setUndecorated(true);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(carta = new CardLayout());
}

public void siguiente(){
carta.next(getContentPane());
}
}
14 changes: 9 additions & 5 deletions src/pong/ui/VentanaJuego.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package pong.ui;

import pong.vistas.Pista;
import java.awt.Color;
import javax.swing.JFrame;

Expand All @@ -11,17 +12,16 @@
*/
public class VentanaJuego extends JFrame {

private final static int ALTURA = 600;
private final static int ANCHURA = 400;
private Pista panel;

public VentanaJuego() {
Pista panel = new Pista(ALTURA, ANCHURA);
public VentanaJuego(int altura, int anchura) {
panel = new Pista(altura, anchura);
EventoTeclado ev = new EventoTeclado(panel);

add(panel);
addKeyListener(ev);

setSize(ALTURA, ANCHURA);
setSize(altura, anchura);
setUndecorated(true);
setSize(panel.getWidth(), panel.getHeight());
setResizable(false);
Expand All @@ -30,4 +30,8 @@ public VentanaJuego() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
setBackground(Color.BLACK);
}

public void establecerVelocidad(int velocidad) {
panel.iniciarJuego(velocidad);
}
}
27 changes: 14 additions & 13 deletions src/pong/ui/VentanaMenu.java → src/pong/vistas/Menu.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,24 @@
package pong.ui;
package pong.vistas;

import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import pong.ui.VentanaInicio;

public class VentanaMenu extends JFrame implements MouseListener{
/**
*
* @author javier
*/
public class Menu extends JPanel implements MouseListener {
private JLabel jTitulo, jJuego, jSalir;

public VentanaMenu() {
public Menu() {
inicializar();
estilos();
posicionar();
Expand All @@ -33,12 +40,6 @@ private void inicializar() {
private void estilos() {
setSize(600, 400);
setBackground(Color.BLACK);
setTitle("Pong");
getContentPane().setBackground(Color.BLACK);
setResizable(false);
setUndecorated(true);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);

jTitulo.setFont(new Font("Vintage", Font.BOLD, 60));
jJuego.setFont(new Font("Vintage", Font.BOLD, 25));
Expand All @@ -64,11 +65,11 @@ private void posicionar(){

@Override
public void mouseClicked(MouseEvent e) {
VentanaInicio v = (VentanaInicio) this.getTopLevelAncestor();

if (e.getSource().equals(jJuego)){
VentanaJuego v = new VentanaJuego();
v.siguiente();

setVisible(false);
v.setVisible(true);
}else if (e.getSource().equals(jSalir)){
System.exit(0);
}
Expand Down
154 changes: 154 additions & 0 deletions src/pong/vistas/Opciones.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
package pong.vistas;

import java.awt.Color;
import java.awt.Font;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.*;
import pong.ui.VentanaInicio;
import pong.ui.VentanaJuego;

/**
*
* @author javier
*/
public class Opciones extends JPanel implements MouseListener {
private ButtonGroup grupoPantalla, grupoVelocidad;
private JRadioButton jRadioGrande, jRadioLenta, jRadioModerada, jRadioNormal,
jRadioPeque, jRadioRapida;
private JLabel jTamanio, jVelocidad, jIniciar;

public Opciones() {
inicializar();
estilo();
posicionar();

add(jRadioGrande);
add(jRadioNormal);
add(jRadioPeque);
add(jRadioRapida);
add(jRadioModerada);
add(jRadioLenta);
add(jTamanio);
add(jVelocidad);
add(jIniciar);

jRadioPeque.setSelected(true);
jRadioModerada.setSelected(true);

grupoPantalla.add(jRadioGrande);
grupoPantalla.add(jRadioNormal);
grupoPantalla.add(jRadioPeque);
grupoVelocidad.add(jRadioRapida);
grupoVelocidad.add(jRadioModerada);
grupoVelocidad.add(jRadioLenta);
}

private void inicializar() {
grupoPantalla = new ButtonGroup();
grupoVelocidad = new ButtonGroup();
jRadioGrande = new JRadioButton("1200 x 800");
jRadioNormal = new JRadioButton("900 x 600");
jRadioPeque = new JRadioButton("600 x 400");
jRadioRapida = new JRadioButton("Rapida");
jRadioModerada = new JRadioButton("Normal");
jRadioLenta = new JRadioButton("Lenta");
jTamanio = new JLabel("Tamaño pantalla");
jVelocidad = new JLabel("Velocidad pelota");
jIniciar = new JLabel ("Iniciar");
}

private void estilo() {
setBackground(Color.BLACK);
setSize(600, 400);
setLayout(null);

jRadioGrande.setForeground(new java.awt.Color(255, 255, 255));
jRadioGrande.setBackground(Color.BLACK);

jRadioNormal.setForeground(new java.awt.Color(255, 255, 255));
jRadioNormal.setBackground(Color.BLACK);

jRadioPeque.setForeground(new java.awt.Color(255, 255, 255));
jRadioPeque.setBackground(Color.BLACK);

jRadioRapida.setForeground(new java.awt.Color(255, 255, 255));
jRadioRapida.setBackground(Color.BLACK);

jRadioModerada.setForeground(new java.awt.Color(255, 255, 255));
jRadioModerada.setBackground(Color.BLACK);

jRadioLenta.setForeground(new java.awt.Color(255, 255, 255));
jRadioLenta.setBackground(Color.BLACK);

jTamanio.setFont(new java.awt.Font("Vintage", Font.BOLD, 14));
jTamanio.setForeground(new java.awt.Color(255, 255, 255));

jVelocidad.setFont(new java.awt.Font("Vintage", Font.BOLD, 14));
jVelocidad.setForeground(new java.awt.Color(255, 255, 255));

jIniciar.setFont(new Font("Vintage", Font.BOLD, 20));
jIniciar.setForeground(new java.awt.Color(255, 255, 255));
}

private void posicionar() {
jVelocidad.setBounds(151, 183, 140, 17);
jTamanio.setBounds(151, 100, 140, 17);
jRadioGrande.setBounds(357, 135, 100, 19);
jRadioLenta.setBounds(151, 218, 90, 19);
jRadioModerada.setBounds(254, 218, 95, 19);
jRadioRapida.setBounds(357, 218, 90, 19);
jRadioPeque.setBounds(151, 135, 90, 19);
jRadioNormal.setBounds(254, 135, 90, 19);
jIniciar.setBounds((getWidth() - 100)/2, 250,
100, 100);
jIniciar.addMouseListener(this);
}

@Override
public void mouseClicked(MouseEvent e) {
VentanaJuego vj;
VentanaInicio vi = (VentanaInicio) this.getTopLevelAncestor();

if (e.getSource().equals(jIniciar)) {
if (jRadioNormal.isSelected()) {
vj = new VentanaJuego(900, 600);
} else if (jRadioGrande.isSelected()) {
vj = new VentanaJuego(1200, 800);
} else {
vj = new VentanaJuego(600, 400);
}

if (jRadioModerada.isSelected()) {
vj.establecerVelocidad(30);
} else if (jRadioRapida.isSelected()) {
vj.establecerVelocidad(20);
} else {
vj.establecerVelocidad(40);
}

vj.setVisible(true);
vi.dispose();
}
}

@Override
public void mousePressed(MouseEvent e) { }

@Override
public void mouseReleased(MouseEvent e) { }

@Override
public void mouseEntered(MouseEvent e) {
if (e.getSource().equals(jIniciar)){
jIniciar.setForeground(new Color(219, 219, 219));
}
}

@Override
public void mouseExited(MouseEvent e) {
if (e.getSource().equals(jIniciar)){
jIniciar.setForeground(Color.WHITE);
}
}
}
Loading

0 comments on commit b579f73

Please sign in to comment.