added solution of first homework

This commit is contained in:
didier amyot committed 2024-01-04 12:08:33 -05:00
1 parent 0dd3b65a74
commit 1c3ad4fcbf
2 files changed
+203

No files matched your search

+103
View File
@@ -0,0 +1,103 @@
import {drawCircles, populateTable, Circle, Point, randomColor} from "https://cdn.jsdelivr.net/gh/didiercrunch/cours-420-301-ah@tp1.1/modules-examples/mod.js";
const circles = []
function getCircleById(circleId){
for(const circle of circles){
if(circle.getId() === circleId){
return circle;
}
}
}
function onClickUp(circleId){
const circle = getCircleById(circleId);
const center = circle.getCenter();
const newCenter = new Point(center.getX(), center.getY() - 10);
circle.setCenter(newCenter);
renderCircles();
}
function onClickDown(circleId){
const circle = getCircleById(circleId);
const center = circle.getCenter();
const newCenter = new Point(center.getX(), center.getY() + 10);
circle.setCenter(newCenter);
renderCircles();
}
function onClickLeft(circleId){
const circle = getCircleById(circleId);
const center = circle.getCenter();
const newCenter = new Point(center.getX() - 10, center.getY());
circle.setCenter(newCenter);
renderCircles();
}
function onClickRight(circleId){
const circle = getCircleById(circleId);
const center = circle.getCenter();
const newCenter = new Point(center.getX() + 10, center.getY());
circle.setCenter(newCenter);
renderCircles();
}
function onClickPaint(circleId){
const circle = getCircleById(circleId);
circle.setColor(randomColor(Date.now()))
renderCircles();
}
function pointToString(point){
return `(${point.getX()}, ${point.getY()})`;
}
function drawNewCircle(){
const x = parseInt(document.getElementById("cx").value)
const y = parseInt(document.getElementById("cy").value)
const r = parseInt(document.getElementById("cr").value)
const p = new Point(x, y);
const circle = new Circle(p, r, Date.now());
circles.push(circle);
renderCircles();
}
function inverseCircles(){
circles.reverse();
renderCircles();
}
function clearCircles(){
circles.length = 0;
renderCircles();
}
function drawSimpleCircle(){
circles.length = 0;
const circle = new Circle(new Point(250, 250), 50, Date.now());
circles.push(circle);
renderCircles();
}
function renderCircles(){
drawCircles(document.getElementById("canvas"), circles);
populateTable(document.getElementById("table-body"),
circles,
pointToString,
onClickUp,
onClickDown,
onClickLeft,
onClickRight,
onClickPaint);
}
document.getElementById("draw-circle").addEventListener("click", drawNewCircle);
document.getElementById("clear-drawing").addEventListener("click", clearCircles);
document.getElementById("inverse-drawing").addEventListener("click", inverseCircles);
document.getElementById("draw-simple-circle").addEventListener("click", drawSimpleCircle);