commit b32b8d71e7c175b077f54353b0836a46b204a56b
Author: Alexander <zs22016132@estudiantes.uv.mx>
Date:   Sun Feb 16 22:03:26 2025 -0600

    Juego esquivar obstaculos v1.0

diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..f02e4c7
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.mycompany</groupId>
+    <artifactId>JuegoAscii</artifactId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.compiler.source>20</maven.compiler.source>
+        <maven.compiler.target>20</maven.compiler.target>
+        <exec.mainClass>com.mycompany.juegoascii.JuegoAscii</exec.mainClass>
+    </properties>
+</project>
\ No newline at end of file
diff --git a/src/main/java/com/mycompany/juegoascii/JuegoAscii.java b/src/main/java/com/mycompany/juegoascii/JuegoAscii.java
new file mode 100644
index 0000000..c87e796
--- /dev/null
+++ b/src/main/java/com/mycompany/juegoascii/JuegoAscii.java
@@ -0,0 +1,111 @@
+ package com.mycompany.juegoascii;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import java.util.Random;
+
+public class JuegoAscii extends JPanel {
+    private static final int ROAD_WIDTH = 10;
+    private static final int ROAD_HEIGHT = 15;
+    private static final char PLAYER_CAR = '^';
+    private static final char OBSTACLE = '#';
+    private static final char EMPTY = ' ';
+    private int playerPosition = ROAD_WIDTH / 2;
+    private char[][] road = new char[ROAD_HEIGHT][ROAD_WIDTH];
+    private boolean gameRunning = true;
+    private Random random = new Random();
+    private int score = 0;
+
+    public JuegoAscii() {
+        setPreferredSize(new Dimension(300, 450));
+        setBackground(Color.BLACK);
+        initializeRoad();
+
+        Timer timer = new Timer(300, e -> {
+            updateRoad();
+            checkCollision();
+            score++;
+            repaint();
+        });
+        timer.start();
+
+        setFocusable(true);
+        addKeyListener(new KeyAdapter() {
+            @Override
+            public void keyPressed(KeyEvent e) {
+                if (e.getKeyCode() == KeyEvent.VK_LEFT) {
+                    movePlayer(-1);
+                } else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
+                    movePlayer(1);
+                }
+            }
+        });
+    }
+
+    private void initializeRoad() {
+        for (int i = 0; i < ROAD_HEIGHT; i++) {
+            for (int j = 0; j < ROAD_WIDTH; j++) {
+                road[i][j] = EMPTY;
+            }
+        }
+    }
+
+    private void updateRoad() {
+        for (int i = ROAD_HEIGHT - 1; i > 0; i--) {
+            System.arraycopy(road[i - 1], 0, road[i], 0, ROAD_WIDTH);
+        }
+        for (int j = 0; j < ROAD_WIDTH; j++) {
+            road[0][j] = (random.nextInt(10) < 2) ? OBSTACLE : EMPTY;
+        }
+    }
+
+    private void movePlayer(int direction) {
+        int newPosition = playerPosition + direction;
+        if (newPosition >= 0 && newPosition < ROAD_WIDTH) {
+            playerPosition = newPosition;
+        }
+    }
+
+    private void checkCollision() {
+        if (road[ROAD_HEIGHT - 1][playerPosition] == OBSTACLE) {
+            gameRunning = false;
+            JOptionPane.showMessageDialog(this, "¡Juego terminado!\nPuntaje: " + score, "Game Over", JOptionPane.ERROR_MESSAGE);
+            System.exit(0);
+        }
+    }
+
+    @Override
+    protected void paintComponent(Graphics g) {
+        super.paintComponent(g);
+        g.setColor(Color.WHITE);
+        g.setFont(new Font("Monospaced", Font.PLAIN, 14));
+        Graphics2D g2d = (Graphics2D) g;
+        int y = 20;
+        
+        for (int i = 0; i < ROAD_HEIGHT; i++) {
+            StringBuilder line = new StringBuilder("|");
+            for (int j = 0; j < ROAD_WIDTH; j++) {
+                if (i == ROAD_HEIGHT - 1 && j == playerPosition) {
+                    line.append(PLAYER_CAR);
+                } else {
+                    line.append(road[i][j]);
+                }
+            }
+            line.append("|");
+            g2d.drawString(line.toString(), 20, y);
+            y += 16;
+        }
+        g2d.drawString("Puntaje: " + score, 20, y + 20);
+    }
+
+    public static void main(String[] args) {
+        JFrame frame = new JFrame("ASCII Car Game");
+        JuegoAscii game = new JuegoAscii();
+        frame.add(game);
+        frame.pack();
+        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        frame.setVisible(true);
+    }
+}