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; } } } ```