Untitled
unknown
java
2 years ago
3.0 kB
7
Indexable
import java.awt.*;
import java.awt.event.*;
class ShapeFrame extends Frame {
private Shape[] shapes;
public ShapeFrame(Color color, int xPosition, int yPosition, int size) {
setTitle("Shape Printer");
setSize(400, 400);
setVisible(true);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
dispose();
}
});
shapes = new Shape[]{
new Circle(color, xPosition, yPosition, size),
new Square(color, xPosition, yPosition, size),
new Triangle(color, xPosition, yPosition, size)
};
}
public void paint(Graphics g) {
for (Shape shape : shapes) {
shape.draw(g);
}
}
public static void main(String[] args) {
Color color = Color.RED;
int xPosition = 100;
int yPosition = 100;
int size = 20;
new ShapeFrame(color, xPosition, yPosition, size);
}
}
abstract class Shape {
protected Color[] availableColors = { Color.RED, Color.BLUE, Color.GREEN, Color.YELLOW };
protected int currentColorIndex = 0;
protected Color color;
protected Point position;
protected int size;
public Shape(Color color, int xPosition, int yPosition, int size) {
this.color = color;
this.position = new Point(xPosition, yPosition);
this.size = size;
}
protected void resizeShape(int factor) {
size += factor;
if (size < 1) {
size = 1;
}
}
protected void changeColor() {
currentColorIndex = (currentColorIndex + 1) % availableColors.length;
color = availableColors[currentColorIndex];
}
public abstract void draw(Graphics g);
protected void moveLeft() {
position.x -= 5;
}
protected void moveRight() {
position.x += 5;
}
protected void moveUp() {
position.y -= 5;
}
}
class Circle extends Shape {
public Circle(Color color, int xPosition, int yPosition, int size) {
super(color, xPosition, yPosition, size);
}
public void draw(Graphics g) {
g.setColor(color);
g.fillOval(position.x, position.y, size * 2, size * 2);
}
}
class Square extends Shape {
public Square(Color color, int xPosition, int yPosition, int size) {
super(color, xPosition, yPosition, size);
}
public void draw(Graphics g) {
g.setColor(color);
g.fillRect(position.x, position.y, size * 2, size * 2);
}
}
class Triangle extends Shape {
public Triangle(Color color, int xPosition, int yPosition, int size) {
super(color, xPosition, yPosition, size);
}
public void draw(Graphics g) {
g.setColor(color);
int[] xPoints = { position.x + size, position.x, position.x + 2 * size };
int[] yPoints = { position.y, position.y + 2 * size, position.y + 2 * size };
g.fillPolygon(xPoints, yPoints, 3);
}
}Editor is loading...