Compare commits
No commits in common. "master" and "main" have entirely different histories.
147
PeceraGUI.java
147
PeceraGUI.java
|
@ -1,147 +0,0 @@
|
||||||
import javax.swing.*;
|
|
||||||
import java.awt.*;
|
|
||||||
import java.util.Random;
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @author car20
|
|
||||||
*/
|
|
||||||
public class PeceraGUI extends JPanel {
|
|
||||||
|
|
||||||
private static final int ANCHO = 60;
|
|
||||||
private static final int ALTO = 20;
|
|
||||||
|
|
||||||
private static final String[][] PECES = {
|
|
||||||
{
|
|
||||||
" ,-",
|
|
||||||
" ,/.( __",
|
|
||||||
" ,-' `!._/ /",
|
|
||||||
" > @ )<| _ <",
|
|
||||||
" `-....,,;' \\\\_"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
" ,-",
|
|
||||||
" ,/.( __",
|
|
||||||
" ,-' `!._/ /",
|
|
||||||
" > @ )<| _ <",
|
|
||||||
" `-....,,;' \\\\_"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"|\\ \\\\__ o",
|
|
||||||
"| \\_/ o \\ o",
|
|
||||||
"> _ (( <_ oo",
|
|
||||||
"| / \\__+___/",
|
|
||||||
"|/ |/"
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
private static final String[] ALGAS = {
|
|
||||||
"⠀ ⠀⠀⠀⠀⠀⠀⣴⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
|
||||||
"⠀ ⠀⠀⠀⠀⣸⠛⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡏⢠⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣧⡈⢿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
|
||||||
"⠀⠀⠀⠀⢸⣶⡀⠀⠀⠀⠀⠙⣷⣄⠙⣦⡀⠀⠀⠀⠀⠀⠀⠀",
|
|
||||||
"⠀⠀⠀⠀⠀⣿⠿⣄⠀⠀⠀⠀⢸⣿⡆⢸⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
|
||||||
"⠀⠀⠀⠀⢀⡇⢰⣿⠂⠀⠀⠀⣸⣿⠃⣸⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
|
||||||
"⠀⠀⠀⠀⣿⠁⣼⠁⠀⠀⠀⣰⡿⠁⣴⡿⠁⠀⠀⠀⠀",
|
|
||||||
"⠀⠀⠀⠀⣿⠀⣿⣆⠀⠀⢠⣿⠇⢸⣿⠃⠀⠀⠀⠀",
|
|
||||||
"⠀⠀⠀⠀⢹⣇⠘⣿⡄⠀⠘⣿⠀⣾⣿⡀⠀⠀",
|
|
||||||
"⠀⠀⠀⠀⣸⣿⠀⣿⡇⠀⣤⠙⠀⢸⣿⣧⡀⠀⠀",
|
|
||||||
"⠀⠀⠀⣰⣿⠏⢠⣿⡇⠀⢹⣷⣤⠈⢿⠁",
|
|
||||||
"⠀⠀⠠⡿⠃⣰⣿⠟⠀⠀",
|
|
||||||
"⠀⠀⠀⠀⠊⠉⠀⠀⠀⠀⠀"
|
|
||||||
};
|
|
||||||
|
|
||||||
private static int[] pecesX = new int[PECES.length];
|
|
||||||
private static int[] pecesY = new int[PECES.length];
|
|
||||||
private static int[] direccionesX = new int[PECES.length];
|
|
||||||
|
|
||||||
private static final Random random = new Random();
|
|
||||||
|
|
||||||
private int[] burbujasX = new int[10];
|
|
||||||
private int[] burbujasY = new int[10];
|
|
||||||
|
|
||||||
public PeceraGUI() {
|
|
||||||
setPreferredSize(new Dimension(ANCHO * 10, ALTO * 20));
|
|
||||||
setBackground(Color.BLACK);
|
|
||||||
setForeground(Color.WHITE);
|
|
||||||
setFont(new Font("Monospaced", Font.PLAIN, 12));
|
|
||||||
|
|
||||||
for (int i = 0; i < PECES.length; i++) {
|
|
||||||
pecesX[i] = random.nextInt(ANCHO - 10) + 1;
|
|
||||||
pecesY[i] = random.nextInt(ALTO - 5) + 1;
|
|
||||||
direccionesX[i] = random.nextBoolean() ? 1 : -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Inicializar burbujas
|
|
||||||
for (int i = 0; i < burbujasX.length; i++) {
|
|
||||||
burbujasX[i] = random.nextInt(ANCHO - 2) + 1;
|
|
||||||
burbujasY[i] = random.nextInt(ALTO - 2) + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
Timer timer = new Timer(200, e -> {
|
|
||||||
moverPeces();
|
|
||||||
moverBurbujas();
|
|
||||||
repaint();
|
|
||||||
});
|
|
||||||
timer.start();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void paintComponent(Graphics g) {
|
|
||||||
super.paintComponent(g);
|
|
||||||
dibujarMar(g);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void dibujarMar(Graphics g) {
|
|
||||||
g.setColor(Color.WHITE);
|
|
||||||
|
|
||||||
// Dibujar burbujas
|
|
||||||
for (int i = 0; i < burbujasX.length; i++) {
|
|
||||||
g.drawString("o", burbujasX[i] * 10, burbujasY[i] * 20);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Dibujar peces
|
|
||||||
for (int i = 0; i < PECES.length; i++) {
|
|
||||||
for (int j = 0; j < PECES[i].length; j++) {
|
|
||||||
g.drawString(PECES[i][j], pecesX[i] * 10, (pecesY[i] + j) * 20);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Dibujar algas al fondo
|
|
||||||
for (int i = 0; i < ALGAS.length; i++) {
|
|
||||||
g.drawString(ALGAS[i], 5, (ALTO * 20) - (ALGAS.length - i) * 15);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void moverPeces() {
|
|
||||||
for (int i = 0; i < PECES.length; i++) {
|
|
||||||
pecesX[i] += direccionesX[i];
|
|
||||||
|
|
||||||
if (pecesX[i] + 10 >= ANCHO || pecesX[i] <= 0) {
|
|
||||||
direccionesX[i] *= -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void moverBurbujas() {
|
|
||||||
for (int i = 0; i < burbujasY.length; i++) {
|
|
||||||
if (i % 2 == 0) {
|
|
||||||
burbujasY[i] -= 1; // Mover más lento
|
|
||||||
}
|
|
||||||
|
|
||||||
if (burbujasY[i] <= 0) {
|
|
||||||
burbujasY[i] = ALTO - 2;
|
|
||||||
burbujasX[i] = random.nextInt(ANCHO - 2) + 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
JFrame frame = new JFrame("Pecera ASCII");
|
|
||||||
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
|
||||||
frame.add(new PeceraGUI());
|
|
||||||
frame.pack();
|
|
||||||
frame.setLocationRelativeTo(null);
|
|
||||||
frame.setVisible(true);
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue