diff --git a/subjects/java/raids/Jart/README.md b/subjects/java/raids/Jart/README.md new file mode 100644 index 0000000000..b93c0b1063 --- /dev/null +++ b/subjects/java/raids/Jart/README.md @@ -0,0 +1,71 @@ +## 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) diff --git a/subjects/java/raids/Jart/audit/README.md b/subjects/java/raids/Jart/audit/README.md new file mode 100644 index 0000000000..f6d92fa003 --- /dev/null +++ b/subjects/java/raids/Jart/audit/README.md @@ -0,0 +1,27 @@ +#### Functional + +##### Try to run the program + +###### Does the program compile and run without any error or warning? + +###### Does the program produce a png file called image.png? + +##### Can you confirm that the interfaces Displayable and Drawable were created? + +##### Can you confirm that the 'Displayable' interface is implemented in the 'Image' class? + +##### Can you confirm that the 'Drawable' interface is implemented in the lines, circles, rectangles, and triangles classes? + +##### Try to open the image.png + +###### Does the image contain lines, circles, rectangles, and triangles? + +###### Are the shapes drawn with different colors? + +#### Bonus + +###### +Can you draw a pentagon? + +###### +Can you draw a cube? + +###### +Did the student use default interface methods? diff --git a/subjects/java/raids/Jart/example.png b/subjects/java/raids/Jart/example.png new file mode 100644 index 0000000000..242f9fd87b Binary files /dev/null and b/subjects/java/raids/Jart/example.png differ