import javax.swing.*; import javax.swing.table.DefaultTableModel; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.util.ArrayList; import java.util.Comparator; import java.util.List; public class SabrinaV { private JFrame frame; private JPanel panelPrincipal; private JPanel panelBotones; private JPanel panelPreguntas; private JPanel panelPuntaje; private JPanel panelClasificaciones; private JButton btnContraseñaSecreta; private JButton btnPreguntas; private JButton btnTogglePuntaje; private JButton btnDificultadFacil; private JButton btnDificultadNormal; private JButton btnDificultadDificil; private JButton btnDificultadVoldemort; private JButton btnJuegoSerpiente; private JButton btnCalificar; private JTextArea areaPuntaje; private JTable tablaClasificaciones; private DefaultTableModel modeloTabla; private boolean puntajeVisible = false; private int puntaje = 0; // Para el juego de la serpiente private SnakePanel snakePanel; // Lista para clasificaciones private List<Clasificacion> clasificaciones; public static void main(String[] args) { EventQueue.invokeLater(() -> { try { SabrinaV window = new SabrinaV(); window.frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } }); } public SabrinaV() { clasificaciones = new ArrayList<>(); frame = new JFrame(); frame.setBounds(100, 100, 1000, 600); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setTitle("SabrinaV"); panelPrincipal = new JPanel(); panelPrincipal.setLayout(new BorderLayout()); frame.getContentPane().add(panelPrincipal, BorderLayout.CENTER); panelBotones = new JPanel(); panelBotones.setLayout(new GridLayout(8, 1)); // Ajuste para 8 botones panelPrincipal.add(panelBotones, BorderLayout.WEST); btnContraseñaSecreta = new JButton("Acceso Completo"); btnContraseñaSecreta.addActionListener(e -> verificarContrasenaSecreta()); panelBotones.add(btnContraseñaSecreta); btnPreguntas = new JButton("Preguntas y Respuestas"); btnPreguntas.addActionListener(e -> mostrarPreguntas()); panelBotones.add(btnPreguntas); btnDificultadFacil = new JButton("Fácil"); btnDificultadFacil.addActionListener(e -> mostrarPreguntas("facil")); panelBotones.add(btnDificultadFacil); btnDificultadNormal = new JButton("Normal"); btnDificultadNormal.addActionListener(e -> mostrarPreguntas("normal")); panelBotones.add(btnDificultadNormal); btnDificultadDificil = new JButton("Difícil"); btnDificultadDificil.addActionListener(e -> mostrarPreguntas("dificil")); panelBotones.add(btnDificultadDificil); btnDificultadVoldemort = new JButton("Voldemort"); btnDificultadVoldemort.addActionListener(e -> mostrarPreguntas("voldemort")); panelBotones.add(btnDificultadVoldemort); btnJuegoSerpiente = new JButton("Jugar Serpiente"); btnJuegoSerpiente.addActionListener(e -> mostrarJuegoSerpiente()); panelBotones.add(btnJuegoSerpiente); btnCalificar = new JButton("Calificar Proyecto"); btnCalificar.addActionListener(e -> calificarProyecto()); panelBotones.add(btnCalificar); panelPreguntas = new JPanel(); panelPreguntas.setLayout(new GridLayout(5, 1)); panelPreguntas.setBackground(Color.BLACK); panelPrincipal.add(panelPreguntas, BorderLayout.CENTER); // Panel para el puntaje panelPuntaje = new JPanel(); panelPuntaje.setLayout(new BorderLayout()); panelPuntaje.setBackground(new Color(39, 27, 12)); // Marrón oscuro panelPrincipal.add(panelPuntaje, BorderLayout.EAST); areaPuntaje = new JTextArea(); areaPuntaje.setEditable(false); areaPuntaje.setForeground(Color.WHITE); areaPuntaje.setBackground(new Color(39, 27, 12)); // Marrón oscuro areaPuntaje.setText("Puntaje: " + puntaje); panelPuntaje.add(areaPuntaje, BorderLayout.CENTER); btnTogglePuntaje = new JButton("▶"); btnTogglePuntaje.addActionListener(e -> togglePuntaje()); panelPuntaje.add(btnTogglePuntaje, BorderLayout.WEST); // Panel para clasificaciones panelClasificaciones = new JPanel(); panelClasificaciones.setLayout(new BorderLayout()); panelClasificaciones.setBackground(Color.GRAY); panelPrincipal.add(panelClasificaciones, BorderLayout.SOUTH); modeloTabla = new DefaultTableModel(); modeloTabla.addColumn("Dificultad"); modeloTabla.addColumn("Puntuación"); modeloTabla.addColumn("Tiempo (s)"); tablaClasificaciones = new JTable(modeloTabla); panelClasificaciones.add(new JScrollPane(tablaClasificaciones), BorderLayout.CENTER); // Cambiar el color del botón según el tema btnContraseñaSecreta.setBackground(Color.RED); btnContraseñaSecreta.setForeground(Color.WHITE); btnPreguntas.setBackground(Color.RED); btnPreguntas.setForeground(Color.WHITE); btnTogglePuntaje.setBackground(Color.RED); btnTogglePuntaje.setForeground(Color.WHITE); btnDificultadFacil.setBackground(Color.RED); btnDificultadFacil.setForeground(Color.WHITE); btnDificultadNormal.setBackground(Color.RED); btnDificultadNormal.setForeground(Color.WHITE); btnDificultadDificil.setBackground(Color.RED); btnDificultadDificil.setForeground(Color.WHITE); btnDificultadVoldemort.setBackground(Color.RED); btnDificultadVoldemort.setForeground(Color.WHITE); btnJuegoSerpiente.setBackground(Color.RED); btnJuegoSerpiente.setForeground(Color.WHITE); btnCalificar.setBackground(Color.RED); btnCalificar.setForeground(Color.WHITE); // Temas changeTheme("negro"); } private void verificarContrasenaSecreta() { // Aquí puedes implementar la lógica para verificar la contraseña secreta JOptionPane.showMessageDialog(frame, "Verificar contraseña secreta"); } private void mostrarPreguntas() { mostrarPreguntas("facil"); } private void mostrarPreguntas(String dificultad) { panelPreguntas.removeAll(); switch (dificultad) { case "facil": panelPreguntas.add(crearPregunta("¿Cuál es el hechizo para iluminar la varita?", "Lumos")); panelPreguntas.add(crearPregunta("¿Quién es el director de Hogwarts en el primer libro?", "Dumbledore")); break; case "normal": panelPreguntas.add(crearPregunta("¿Qué es el hechizo 'Expelliarmus'?", "Desarmar")); panelPreguntas.add(crearPregunta("¿Cuál es el nombre de la mascota de Ron Weasley?", "Scabbers")); break; case "dificil": panelPreguntas.add(crearPregunta("¿Qué significa 'Avada Kedavra'?", "Muerte instantánea")); panelPreguntas.add(crearPregunta("¿Qué objeto permite a Harry ver recuerdos de otras personas?", "Pensieve")); break; case "voldemort": panelPreguntas.add(crearPregunta("¿Cuál es el nombre del objeto que guarda el fragmento del alma de Voldemort?", "Horcrux")); panelPreguntas.add(crearPregunta("¿Qué hechizo se usa para crear un Patronus?", "Expecto Patronum")); break; default: panelPreguntas.add(new JLabel("Dificultad desconocida")); break; } panelPreguntas.revalidate(); panelPreguntas.repaint(); } private JPanel crearPregunta(String pregunta, String respuesta) { JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); JLabel labelPregunta = new JLabel(pregunta); labelPregunta.setForeground(Color.WHITE); panel.add(labelPregunta, BorderLayout.NORTH); JButton btnRespuesta = new JButton(respuesta); panel.add(btnRespuesta, BorderLayout.SOUTH); return panel; } private void togglePuntaje() { puntajeVisible = !puntajeVisible; btnTogglePuntaje.setText(puntajeVisible ? "◀" : "▶"); areaPuntaje.setVisible(puntajeVisible); } private void calificarProyecto() { String puntuacionStr = JOptionPane.showInputDialog(frame, "Ingrese su puntuación (0-10):"); String tiempoStr = JOptionPane.showInputDialog(frame, "Ingrese el tiempo en segundos:"); try { int puntuacion = Integer.parseInt(puntuacionStr); int tiempo = Integer.parseInt(tiempoStr); // Guardar la clasificación clasificaciones.add(new Clasificacion("Facil", puntuacion, tiempo)); // Actualizar la tabla modeloTabla.setRowCount(0); // Limpiar tabla existente clasificaciones.stream() .sorted(Comparator.comparingInt(Clasificacion::getPuntuacion).reversed()) .forEach(c -> modeloTabla.addRow(new Object[]{c.getDificultad(), c.getPuntuacion(), c.getTiempo()})); } catch (NumberFormatException e) { JOptionPane.showMessageDialog(frame, "Error en los datos ingresados. Por favor ingrese números válidos."); } } private void mostrarJuegoSerpiente() { if (snakePanel == null) { snakePanel = new SnakePanel(); } JOptionPane.showMessageDialog(frame, snakePanel, "Juego de la Serpiente", JOptionPane.PLAIN_MESSAGE); } // Clase interna para el juego de la serpiente class SnakePanel extends JPanel { private final int TILE_SIZE = 20; private final int WIDTH = 400; private final int HEIGHT = 400; private final int NUM_TILES_X = WIDTH / TILE_SIZE; private final int NUM_TILES_Y = HEIGHT / TILE_SIZE; private final int INIT_LENGTH = 5; private enum Direction {UP, DOWN, LEFT, RIGHT} private boolean running; private int length; private Direction direction; private int[][] snake; private int[] food; public SnakePanel() { setPreferredSize(new Dimension(WIDTH, HEIGHT)); setBackground(Color.BLACK); setFocusable(true); length = INIT_LENGTH; direction = Direction.RIGHT; snake = new int[WIDTH * HEIGHT / (TILE_SIZE * TILE_SIZE)][2]; for (int i = 0; i < length; i++) { snake[i][0] = INIT_LENGTH - i - 1; snake[i][1] = 0; } generateFood(); addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { switch (e.getKeyCode()) { case KeyEvent.VK_UP: if (direction != Direction.DOWN) direction = Direction.UP; break; case KeyEvent.VK_DOWN: if (direction != Direction.UP) direction = Direction.DOWN; break; case KeyEvent.VK_LEFT: if (direction != Direction.RIGHT) direction = Direction.LEFT; break; case KeyEvent.VK_RIGHT: if (direction != Direction.LEFT) direction = Direction.RIGHT; break; } } }); running = true; new Timer(100, e -> { if (running) { move(); checkCollision(); checkFood(); repaint(); } }).start(); } private void generateFood() { food = new int[]{(int) (Math.random() * NUM_TILES_X), (int) (Math.random() * NUM_TILES_Y)}; } private void move() { for (int i = length - 1; i > 0; i--) { snake[i][0] = snake[i - 1][0]; snake[i][1] = snake[i - 1][1]; } switch (direction) { case UP: snake[0][1]--; break; case DOWN: snake[0][1]++; break; case LEFT: snake[0][0]--; break; case RIGHT: snake[0][0]++; break; } } private void checkCollision() { if (snake[0][0] < 0 || snake[0][0] >= NUM_TILES_X || snake[0][1] < 0 || snake[0][1] >= NUM_TILES_Y) { running = false; JOptionPane.showMessageDialog(this, "Game Over! Puntaje: " + (length - INIT_LENGTH)); } for (int i = 1; i < length; i++) { if (snake[0][0] == snake[i][0] && snake[0][1] == snake[i][1]) { running = false; JOptionPane.showMessageDialog(this, "Game Over! Puntaje: " + (length - INIT_LENGTH)); } } } private void checkFood() { if (snake[0][0] == food[0] && snake[0][1] == food[1]) { length++; generateFood(); } } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.GREEN); for (int i = 0; i < length; i++) { g.fillRect(snake[i][0] * TILE_SIZE, snake[i][1] * TILE_SIZE, TILE_SIZE, TILE_SIZE); } g.setColor(Color.RED); g.fillRect(food[0] * TILE_SIZE, food[1] * TILE_SIZE, TILE_SIZE, TILE_SIZE); } } // Clase para almacenar clasificaciones class Clasificacion { private String dificultad; private int puntuacion; private int tiempo; public Clasificacion(String dificultad, int puntuacion, int tiempo) { this.dificultad = dificultad; this.puntuacion = puntuacion; this.tiempo = tiempo; } public String getDificultad() { return dificultad; } public int getPuntuacion() { return puntuacion; } public int getTiempo() { return tiempo; } } }
fix invalid code:
def add(a, b):
return a - b
```
def add(a, b):
return a + b
```
fix invalid code:
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class SabrinaV {
private JFrame frame;
private JPanel panelPrincipal;
private JPanel panelBotones;
private JPanel panelPreguntas;
private JPanel panelPuntaje;
private JPanel panelClasificaciones;
private JButton btnContraseñaSecreta;
private JButton btnPreguntas;
private JButton btnTogglePuntaje;
private JButton btnDificultadFacil;
private JButton btnDificultadNormal;
private JButton btnDificultadDificil;
private JButton btnDificultadVoldemort;
private JButton btnJuegoSerpiente;
private JButton btnCalificar;
private JTextArea areaPuntaje;
private JTable tablaClasificaciones;
private DefaultTableModel modeloTabla;
private boolean puntajeVisible = false;
private int puntaje = 0;
// Para el juego de la serpiente
private SnakePanel snakePanel;
// Lista para clasificaciones
private List<Clasificacion> clasificaciones;
public static void main(String[] args) {
EventQueue.invokeLater(() -> {
try {
SabrinaV window = new SabrinaV();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
});
}
public SabrinaV() {
clasificaciones = new ArrayList<>();
frame = new JFrame();
frame.setBounds(100, 100, 1000, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("SabrinaV");
panelPrincipal = new JPanel();
panelPrincipal.setLayout(new BorderLayout());
frame.getContentPane().add(panelPrincipal, BorderLayout.CENTER);
panelBotones = new JPanel();
panelBotones.setLayout(new GridLayout(8, 1)); // Ajuste para 8 botones
panelPrincipal.add(panelBotones, BorderLayout.WEST);
btnContraseñaSecreta = new JButton("Acceso Completo");
btnContraseñaSecreta.addActionListener(e -> verificarContrasenaSecreta());
panelBotones.add(btnContraseñaSecreta);
btnPreguntas = new JButton("Preguntas y Respuestas");
btnPreguntas.addActionListener(e -> mostrarPreguntas());
panelBotones.add(btnPreguntas);
btnDificultadFacil = new JButton("Fácil");
btnDificultadFacil.addActionListener(e -> mostrarPreguntas("facil"));
panelBotones.add(btnDificultadFacil);
btnDificultadNormal = new JButton("Normal");
btnDificultadNormal.addActionListener(e -> mostrarPreguntas("normal"));
panelBotones.add(btnDificultadNormal);
btnDificultadDificil = new JButton("Difícil");
btnDificultadDificil.addActionListener(e -> mostrarPreguntas("dificil"));
panelBotones.add(btnDificultadDificil);
btnDificultadVoldemort = new JButton("Voldemort");
btnDificultadVoldemort.addActionListener(e -> mostrarPreguntas("voldemort"));
panelBotones.add(btnDificultadVoldemort);
btnJuegoSerpiente = new JButton("Jugar Serpiente");
btnJuegoSerpiente.addActionListener(e -> mostrarJuegoSerpiente());
panelBotones.add(btnJuegoSerpiente);
btnCalificar = new JButton("Calificar Proyecto");
btnCalificar.addActionListener(e -> calificarProyecto());
panelBotones.add(btnCalificar);
panelPreguntas = new JPanel();
panelPreguntas.setLayout(new GridLayout(5, 1));
panelPreguntas.setBackground(Color.BLACK);
panelPrincipal.add(panelPreguntas, BorderLayout.CENTER);
// Panel para el puntaje
panelPuntaje = new JPanel();
panelPuntaje.setLayout(new BorderLayout());
panelPuntaje.setBackground(new Color(39, 27, 12)); // Marrón oscuro
panelPrincipal.add(panelPuntaje, BorderLayout.EAST);
areaPuntaje = new JTextArea();
areaPuntaje.setEditable(false);
areaPuntaje.setForeground(Color.WHITE);
areaPuntaje.setBackground(new Color(39, 27, 12)); // Marrón oscuro
areaPuntaje.setText("Puntaje: " + puntaje);
panelPuntaje.add(areaPuntaje, BorderLayout.CENTER);
btnTogglePuntaje = new JButton("▶");
btnTogglePuntaje.addActionListener(e -> togglePuntaje());
panelPuntaje.add(btnTogglePuntaje, BorderLayout.WEST);
// Panel para clasificaciones
panelClasificaciones = new JPanel();
panelClasificaciones.setLayout(new BorderLayout());
panelClasificaciones.setBackground(Color.GRAY);
panelPrincipal.add(panelClasificaciones, BorderLayout.SOUTH);
modeloTabla = new DefaultTableModel();
modeloTabla.addColumn("Dificultad");
modeloTabla.addColumn("Puntuación");
modeloTabla.addColumn("Tiempo (s)");
tablaClasificaciones = new JTable(modeloTabla);
panelClasificaciones.add(new JScrollPane(tablaClasificaciones), BorderLayout.CENTER);
// Cambiar el color del botón según el tema
btnContraseñaSecreta.setBackground(Color.RED);
btnContraseñaSecreta.setForeground(Color.WHITE);
btnPreguntas.setBackground(Color.RED);
btnPreguntas.setForeground(Color.WHITE);
btnTogglePuntaje.setBackground(Color.RED);
btnTogglePuntaje.setForeground(Color.WHITE);
btnDificultadFacil.setBackground(Color.RED);
btnDificultadFacil.setForeground(Color.WHITE);
btnDificultadNormal.setBackground(Color.RED);
btnDificultadNormal.setForeground(Color.WHITE);
btnDificultadDificil.setBackground(Color.RED);
btnDificultadDificil.setForeground(Color.WHITE);
btnDificultadVoldemort.setBackground(Color.RED);
btnDificultadVoldemort.setForeground(Color.WHITE);
btnJuegoSerpiente.setBackground(Color.RED);
btnJuegoSerpiente.setForeground(Color.WHITE);
btnCalificar.setBackground(Color.RED);
btnCalificar.setForeground(Color.WHITE);
// Temas
changeTheme("negro");
}
private void verificarContrasenaSecreta() {
// Aquí puedes implementar la lógica para verificar la contraseña secreta
JOptionPane.showMessageDialog(frame, "Verificar contraseña secreta");
}
private void mostrarPreguntas() {
mostrarPreguntas("facil");
}
private void mostrarPreguntas(String dificultad) {
panelPreguntas.removeAll();
switch (dificultad) {
case "facil":
panelPreguntas.add(crearPregunta("¿Cuál es el hechizo para iluminar la varita?", "Lumos"));
panelPreguntas.add(crearPregunta("¿Quién es el director de Hogwarts en el primer libro?", "Dumbledore"));
break;
case "normal":
panelPreguntas.add(crearPregunta("¿Qué es el hechizo 'Expelliarmus'?", "Desarmar"));
panelPreguntas.add(crearPregunta("¿Cuál es el nombre de la mascota de Ron Weasley?", "Scabbers"));
break;
case "dificil":
panelPreguntas.add(crearPregunta("¿Qué significa 'Avada Kedavra'?", "Muerte instantánea"));
panelPreguntas.add(crearPregunta("¿Qué objeto permite a Harry ver recuerdos de otras personas?", "Pensieve"));
break;
case "voldemort":
panelPreguntas.add(crearPregunta("¿Cuál es el nombre del objeto que guarda el fragmento del alma de Voldemort?", "Horcrux"));
panelPreguntas.add(crearPregunta("¿Qué hechizo se usa para crear un Patronus?", "Expecto Patronum"));
break;
default:
panelPreguntas.add(new JLabel("Dificultad desconocida"));
break;
}
panelPreguntas.revalidate();
panelPreguntas.repaint();
}
private JPanel crearPregunta(String pregunta, String respuesta) {
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
JLabel labelPregunta = new JLabel(pregunta);
labelPregunta.setForeground(Color.WHITE);
panel.add(labelPregunta, BorderLayout.NORTH);
JButton btnRespuesta = new JButton(respuesta);
panel.add(btnRespuesta, BorderLayout.SOUTH);
return panel;
}
private void togglePuntaje() {
puntajeVisible = !puntajeVisible;
btnTogglePuntaje.setText(puntajeVisible ? "◀" : "▶");
areaPuntaje.setVisible(puntajeVisible);
}
private void calificarProyecto() {
String puntuacionStr = JOptionPane.showInputDialog(frame, "Ingrese su puntuación (0-10):");
String tiempoStr = JOptionPane.showInputDialog(frame, "Ingrese el tiempo en segundos:");
try {
int puntuacion = Integer.parseInt(puntuacionStr);
int tiempo = Integer.parseInt(tiempoStr);
// Guardar la clasificación
clasificaciones.add(new Clasificacion("Facil", puntuacion, tiempo));
// Actualizar la tabla
modeloTabla.setRowCount(0); // Limpiar tabla existente
clasificaciones.stream()
.sorted(Comparator.comparingInt(Clasificacion::getPuntuacion).reversed())
.forEach(c -> modeloTabla.addRow(new Object[]{c.getDificultad(), c.getPuntuacion(), c.getTiempo()}));
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(frame, "Error en los datos ingresados. Por favor ingrese números válidos.");
}
}
private void mostrarJuegoSerpiente() {
if (snakePanel == null) {
snakePanel = new SnakePanel();
}
JOptionPane.showMessageDialog(frame, snakePanel, "Juego de la Serpiente", JOptionPane.PLAIN_MESSAGE);
}
// Clase interna para el juego de la serpiente
class SnakePanel extends JPanel {
private final int TILE_SIZE = 20;
private final int WIDTH = 400;
private final int HEIGHT = 400;
private final int NUM_TILES_X = WIDTH / TILE_SIZE;
private final int NUM_TILES_Y = HEIGHT / TILE_SIZE;
private final int INIT_LENGTH = 5;
private enum Direction {UP, DOWN, LEFT, RIGHT}
private boolean running;
private int length;
private Direction direction;
private int[][] snake;
private int[] food;
public SnakePanel() {
setPreferredSize(new Dimension(WIDTH, HEIGHT));
setBackground(Color.BLACK);
setFocusable(true);
length = INIT_LENGTH;
direction = Direction.RIGHT;
snake = new int[WIDTH * HEIGHT / (TILE_SIZE * TILE_SIZE)][2];
for (int i = 0; i < length; i++) {
snake[i][0] = INIT_LENGTH - i - 1;
snake[i][1] = 0;
}
generateFood();
addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_UP:
if (direction != Direction.DOWN) direction = Direction.UP;
break;
case KeyEvent.VK_DOWN:
if (direction != Direction.UP) direction = Direction.DOWN;
break;
case KeyEvent.VK_LEFT:
if (direction != Direction.RIGHT) direction = Direction.LEFT;
break;
case KeyEvent.VK_RIGHT:
if (direction != Direction.LEFT) direction = Direction.RIGHT;
break;
}
}
});
running = true;
new Timer(100, e -> {
if (running) {
move();
checkCollision();
checkFood();
repaint();
}
}).start();
}
private void generateFood() {
food = new int[]{(int) (Math.random() * NUM_TILES_X), (int) (Math.random() * NUM_TILES_Y)};
}
private void move() {
for (int i = length - 1; i > 0; i--) {
snake[i][0] = snake[i - 1][0];
snake[i][1] = snake[i - 1][1];
}
switch (direction) {
case UP:
snake[0][1]--;
break;
case DOWN:
snake[0][1]++;
break;
case LEFT:
snake[0][0]--;
break;
case RIGHT:
snake[0][0]++;
break;
}
}
private void checkCollision() {
if (snake[0][0] < 0 || snake[0][0] >= NUM_TILES_X || snake[0][1] < 0 || snake[0][1] >= NUM_TILES_Y) {
running = false;
JOptionPane.showMessageDialog(this, "Game Over! Puntaje: " + (length - INIT_LENGTH));
}
for (int i = 1; i < length; i++) {
if (snake[0][0] == snake[i][0] && snake[0][1] == snake[i][1]) {
running = false;
JOptionPane.showMessageDialog(this, "Game Over! Puntaje: " + (length - INIT_LENGTH));
}
}
}
private void checkFood() {
if (snake[0][0] == food[0] && snake[0][1] == food[1]) {
length++;
generateFood();
}
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.GREEN);
for (int i = 0; i < length; i++) {
g.fillRect(snake[i][0] * TILE_SIZE, snake[i][1] * TILE_SIZE, TILE_SIZE, TILE_SIZE);
}
g.setColor(Color.RED);
g.fillRect(food[0] * TILE_SIZE, food[1] * TILE_SIZE, TILE_SIZE, TILE_SIZE);
}
}
// Clase para almacenar clasificaciones
class Clasificacion {
private String dificultad;
private int puntuacion;
private int tiempo;
public Clasificacion(String dificultad, int puntuacion, int tiempo) {
this.dificultad = dificultad;
this.puntuacion = puntuacion;
this.tiempo = tiempo;
}
public String getDificultad() {
return dificultad;
}
public int getPuntuacion() {
return puntuacion;
}
public int getTiempo() {
return tiempo;
}
}
}
```