mirror of https://github.com/01-edu/public.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.3 KiB
72 lines
2.3 KiB
1 year ago
|
## Jart
|
||
|
|
||
|
### Instructions
|
||
|
The purpose of this exercise is to create an image like the example below:
|
||
|
|
||
|
![example](example.png)
|
||
|
|
||
|
|
||
|
You will need to do the following:
|
||
|
|
||
|
- Copy the code in the [usage](#usage) to your `Main.java`
|
||
|
|
||
|
You'll define the logic for creating and working with shapes in the geometrical_shapes package. Create the following interfaces:
|
||
|
|
||
|
- Drawable which contains the methods draw and getColor.
|
||
|
|
||
|
- Displayable which contains the methods display and save.
|
||
|
|
||
|
Define them according to the way they are called in the Main.java function.
|
||
|
|
||
|
In order to compile and run `Main.java`, you'll need to define some classes. You are free to implement all the shapes with whatever internal structure you see fit, but you must provide a constructor for all the shapes, which will be described below:
|
||
|
|
||
|
- `Point`: a new point should be created from two int values.
|
||
|
- `Line`: a new line should be created from references to two different points.
|
||
|
- `Triangle`: a new triangle should be created from references to three different points.
|
||
|
- `Rectangle`: a new rectangle should be created from references to two different points.
|
||
|
- `Circle`: a new circle should be created from a reference to a point representing the center, and an int value representing the circle's radius.
|
||
|
|
||
|
|
||
|
You'll also need to create the `random` method for `Line`, `Point`, and `Circle`. You should derive their signatures from the usage.
|
||
|
|
||
|
### Bonus
|
||
|
You may optionally implement the following shapes, including the classes and interfaces needed to draw them:
|
||
|
|
||
|
- Pentagon
|
||
|
- Cube
|
||
|
|
||
|
### Usage
|
||
|
|
||
|
```java
|
||
|
interface Displayable {
|
||
|
void display(int x, int y, Color color);
|
||
|
void save(String string);
|
||
|
}
|
||
|
|
||
|
interface Drawable {
|
||
|
void draw(Displayable displayable);
|
||
|
Color getColor();
|
||
|
}
|
||
|
|
||
|
public class Main {
|
||
|
public static void main(String[] args) {
|
||
|
Image image = new Image(1000, 1000);
|
||
|
Rectangle rectangle = new Rectangle(new Point(50, 50), new Point(300, 200));
|
||
|
rectangle.draw(image);
|
||
|
Triangle triangle = new Triangle(new Point(100, 100), new Point(900, 900), new Point(100, 900));
|
||
|
triangle.draw(image);
|
||
|
|
||
|
for (int i = 0; i < 50; i++) {
|
||
|
Circle circle = Circle.random(image.getWidth(), image.getHeight());
|
||
|
circle.draw(image);
|
||
|
}
|
||
|
image.save("image.png");
|
||
|
}
|
||
|
}
|
||
|
```
|
||
|
|
||
|
|
||
|
### Notions
|
||
|
|
||
|
- [java.awt](https://www.javatpoint.com/java-awt)
|