Una forma sencilla y rápida de aprender JAVA, observando y deduciendo cómo se comporta el lenguaje a través de ejemplos prácticos.
jueves, 6 de diciembre de 2018
Graficando triángulo de pascal (beta)
Desde Netbeans y en modo diseño se agrega un jFrame con la opción marcada "Grid Layout". Se añade luego un jPanel, que servirá de lienzo para graficar. Algoritmo claramente mejorable de ahí que lo he puesto versión beta.
Código1 (Muro.java):
package triangulopascal_2d;
public class Muro extends javax.swing.JFrame {
public Muro() {
this.setUndecorated(true);
initComponents();
this.setBounds(0, 0, 513, 513);
this.jPanel1.setBounds(0, 0, 512, 512);
this.setLocationRelativeTo(null); // Centrar pantalla
this.repaint();
}
private void initComponents() { ... }
private void formMouseClicked(java.awt.event.MouseEvent evt) {
TrianguloPascal.Dibujar(jPanel1.getGraphics(), this.jPanel1.getWidth());
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Muro().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JPanel jPanel1;
// End of variables declaration
}
Código2 (TrianguloPascal.java):
package triangulopascal_2d;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
public class TrianguloPascal {
public static void Dibujar(Graphics g, float xy) {
Graphics2D g2 = (Graphics2D) g;
// Inicialización variables
int u = (int) xy / 32;
int a = 1, b = 29, c = 29;
int[] d1 = triangulo();
int indice = 118;
// Dibuja pirámide de bloques
while (a <= b) {
for (int i = a; i <= b; i = i + 2) {
g2.setColor(Color.BLUE);
g.fillRect(i * u + 1, c * u + 1, 2 * u - 1, 2 * u - 1);
g2.setColor(Color.WHITE);
if (indice >= 0) {
g.drawString(String.format("%1$5s", d1[indice]), i * u, c * u + 20);
} else {
g.drawString(String.format("%1$5s", d1[0]), i * u, c * u + 20);
}
indice--;
}
a++;
b--;
c = c - 2;
}
}
private static int[] triangulo() {
int[] d1 = new int[119];
int[][] d2 = new int[16][16];
d2[1][1] = 1;
int indice = 0;
for (int j = 2; j < 16; j++) {
for (int i = 1; i < 16; i++) {
d2[j][i] = d2[j - 1][i - 1] + d2[j - 1][i];
if (d2[j][i] != 0) {
d1[indice] = d2[j][i];
indice++;
}
}
}
d1[0] = 1;
return d1;
}
}
Resultado:
Suscribirse a:
Enviar comentarios (Atom)
Con la tecnología de Blogger.
No hay comentarios:
Publicar un comentario