mirror of https://github.com/01-edu/public.git
1 changed files with 384 additions and 0 deletions
@ -0,0 +1,384 @@ |
|||||||
|
## Robots Harmony |
||||||
|
|
||||||
|
> AI Synergy Mode |
||||||
|
|
||||||
|
## Context |
||||||
|
|
||||||
|
Welcome to your final milestone! After each of you has brought your unique robot to life, it's time to reunite them together. |
||||||
|
|
||||||
|
Now, all those incredible robots need to be displayed in perfect harmony in our interactive and visually stunning Robots `Gallery`. |
||||||
|
|
||||||
|
As a team, your task is to combine your individual creations into a cohesive display. |
||||||
|
|
||||||
|
This gallery won't just be functional, it will be a fun and visually appealing experience that highlights the creativity and collaboration behind your robots. |
||||||
|
|
||||||
|
> You'll be working in this mission as a team, so effective communication and mutual support are key to bringing your robots together. |
||||||
|
|
||||||
|
> Separate tasks equally, it will make the results better! |
||||||
|
|
||||||
|
> Remember what you learned in asking AI for the precise explanation of concepts, while your team apply those concepts and do the actual fun work! |
||||||
|
|
||||||
|
Go ahead, and let the world see the amazing robots you've created together! |
||||||
|
|
||||||
|
## Setups: |
||||||
|
|
||||||
|
**1- Code Editor:** |
||||||
|
|
||||||
|
First , remember that you will not be using the platform's code editor. Instead, you can use this online [tool](https://jsfiddle.net/) to create and modify your code. |
||||||
|
|
||||||
|
> Feel free to play with the settings and familiarize yourself with the environment! |
||||||
|
|
||||||
|
**2- How to submit your code:** |
||||||
|
|
||||||
|
------->Louis |
||||||
|
|
||||||
|
**3- Expected files:** |
||||||
|
|
||||||
|
You need to submit the following files: |
||||||
|
|
||||||
|
- `robots-harmony.html` |
||||||
|
- `robots-harmony.css` |
||||||
|
- `robots-harmony.js` |
||||||
|
|
||||||
|
## Instructions |
||||||
|
|
||||||
|
Theses tasks are representing the mandatory part for this raid to be passed successfully. Bonus part is optional but highly encouraged for more fun! |
||||||
|
|
||||||
|
### Task 1: Set Up the Gallery Structure |
||||||
|
|
||||||
|
#### 1- Create a New HTML File: |
||||||
|
|
||||||
|
Start by creating a new HTML file called `robot-harmony.html`. |
||||||
|
|
||||||
|
Set up the basic structure of the HTML document with a `<head>` and `<body>` inside an `<html>` tag. |
||||||
|
|
||||||
|
#### 2- Create a Container for the Robots: |
||||||
|
|
||||||
|
Inside the `<body>`, create a div element with the ID gallery. |
||||||
|
|
||||||
|
This div will serve as the container for all the robot portraits. |
||||||
|
|
||||||
|
```html |
||||||
|
<div id="gallery"></div> |
||||||
|
``` |
||||||
|
|
||||||
|
#### 3- Include a title and each Robot: |
||||||
|
|
||||||
|
- Inside your gallery `<div>`, create an `<h1>` tag inside a `<div>` with an `id` of `title`. Then put the name of your gallery inside it ! |
||||||
|
|
||||||
|
```HTML |
||||||
|
<div id="idname"> |
||||||
|
<h1>your favorite gallery name</h1> |
||||||
|
</div> |
||||||
|
``` |
||||||
|
|
||||||
|
- Each team member should copy their robot's HTML structure (the one you provided in the `first-move.html` exercise) and paste it inside the `gallery` div. |
||||||
|
|
||||||
|
- Ensure each robot is placed inside its own div with the class `name-portrait`, for example: |
||||||
|
|
||||||
|
```html |
||||||
|
<div class="john-robot"> |
||||||
|
<!-- Paste your robot's HTML structure here --> |
||||||
|
</div> |
||||||
|
<div class="sarah-robot"> |
||||||
|
<!-- Paste your robot's HTML structure here --> |
||||||
|
</div> |
||||||
|
<div class="bob-robot"> |
||||||
|
<!-- Paste your robot's HTML structure here --> |
||||||
|
</div> |
||||||
|
``` |
||||||
|
|
||||||
|
#### 4- Add Robot Information: |
||||||
|
|
||||||
|
Under each robot's `</section>`, add an `<h3>` element for the robot's name and a `<p>` element for a short description of its power. |
||||||
|
|
||||||
|
```html |
||||||
|
<h3>Your robot's name</h3> |
||||||
|
<p>Your robot's description</p> |
||||||
|
``` |
||||||
|
|
||||||
|
### Task 2: Style the Gallery |
||||||
|
|
||||||
|
#### 1- Update the CSS File: |
||||||
|
|
||||||
|
- In your `robots-harmony.css` file, add these styles: |
||||||
|
|
||||||
|
```css |
||||||
|
* { |
||||||
|
margin: 0; |
||||||
|
box-sizing: border-box; |
||||||
|
opacity: 0.85; |
||||||
|
} |
||||||
|
|
||||||
|
body { |
||||||
|
height: 100vh; |
||||||
|
} |
||||||
|
|
||||||
|
section { |
||||||
|
padding: 20px; |
||||||
|
width: 100%; |
||||||
|
height: auto; |
||||||
|
display: flex; |
||||||
|
justify-content: center; |
||||||
|
} |
||||||
|
|
||||||
|
div, |
||||||
|
p { |
||||||
|
border: solid 1px black; |
||||||
|
padding: 10px; |
||||||
|
margin: 0; |
||||||
|
border-radius: 30px; |
||||||
|
} |
||||||
|
|
||||||
|
#face { |
||||||
|
align-items: center; |
||||||
|
margin-bottom: 20px; |
||||||
|
} |
||||||
|
|
||||||
|
#eyes { |
||||||
|
display: flex; |
||||||
|
background-color: yellow; |
||||||
|
justify-content: space-between; |
||||||
|
align-items: center; |
||||||
|
border-radius: 50px; |
||||||
|
width: 200px; |
||||||
|
} |
||||||
|
|
||||||
|
#torso { |
||||||
|
width: 150px; |
||||||
|
height: 90%; |
||||||
|
background-color: violet; |
||||||
|
} |
||||||
|
|
||||||
|
.eye { |
||||||
|
width: 60px; |
||||||
|
height: 60px; |
||||||
|
background-color: red; |
||||||
|
border-radius: 50%; |
||||||
|
} |
||||||
|
|
||||||
|
.arm { |
||||||
|
background-color: aquamarine; |
||||||
|
width: 50px; |
||||||
|
height: 100px; |
||||||
|
margin: 20px; |
||||||
|
} |
||||||
|
|
||||||
|
.leg { |
||||||
|
background-color: dodgerblue; |
||||||
|
width: 50px; |
||||||
|
height: 100px; |
||||||
|
margin: 20px; |
||||||
|
} |
||||||
|
|
||||||
|
.body-member { |
||||||
|
width: 50px; |
||||||
|
margin: 30px; |
||||||
|
} |
||||||
|
|
||||||
|
h3 { |
||||||
|
margin-bottom: 10px; |
||||||
|
} |
||||||
|
``` |
||||||
|
|
||||||
|
- Then add this gallery style block, and change the `background-color` of it based on your team's favorite color: |
||||||
|
|
||||||
|
```css |
||||||
|
#gallery { |
||||||
|
display: flex; |
||||||
|
flex-wrap: wrap; |
||||||
|
justify-content: center; |
||||||
|
gap: 100px; |
||||||
|
padding: 100px; |
||||||
|
/* Change this color to reflect the color of your gallery */ |
||||||
|
background-color: #383086; |
||||||
|
} |
||||||
|
``` |
||||||
|
|
||||||
|
- Add the following block of style to all you class's of `name-robot`. To do so, we follow the rule: |
||||||
|
|
||||||
|
```css |
||||||
|
.class-one, |
||||||
|
.class-two, |
||||||
|
.class-three { |
||||||
|
/* block of style */ |
||||||
|
} |
||||||
|
``` |
||||||
|
|
||||||
|
- Name it with your `name-robot` for each member of the team, and put inside the block the following styles: |
||||||
|
|
||||||
|
```css |
||||||
|
{ |
||||||
|
border: 2px solid #333; |
||||||
|
padding: 20px; |
||||||
|
text-align: center; |
||||||
|
background-color: #fff; |
||||||
|
border-radius: 15px; |
||||||
|
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); |
||||||
|
transition: transform 0.3s, box-shadow 0.3s; |
||||||
|
display: flex; |
||||||
|
flex-direction: column; |
||||||
|
justify-content: space-between; |
||||||
|
min-height: 400px; |
||||||
|
} |
||||||
|
``` |
||||||
|
|
||||||
|
#### 2- Add Animations: |
||||||
|
|
||||||
|
- Add a subtle `hover` animation to the robot portraits to make the gallery more dynamic and engaging. |
||||||
|
|
||||||
|
```css |
||||||
|
.class-one:hover, |
||||||
|
.class-two:hover, |
||||||
|
.class-three:hover { |
||||||
|
transform: scale(1.05); |
||||||
|
box-shadow: 0 6px 10px rgba(0, 0, 0, 0.15); |
||||||
|
} |
||||||
|
``` |
||||||
|
|
||||||
|
> Experiment by changing the colors of the box-shadow and the scale value! Be creative. |
||||||
|
|
||||||
|
- In your `#gallery` CSS rule, add some animated gradient color to the background! You can achieve it by combining CSS properties: `background`, `background-size`, `animation`, `box-shadow`. |
||||||
|
|
||||||
|
_For Example:_ |
||||||
|
|
||||||
|
```css |
||||||
|
background: linear-gradient( |
||||||
|
45deg, |
||||||
|
/* Starting angle of the gradient */ #color1, |
||||||
|
/* First color in the gradient */ #color2, |
||||||
|
/* Second color in the gradient */ #color3 |
||||||
|
); /* Optional third color in the gradient */ |
||||||
|
background-size: 300% 300%; /* Increases the background size for smooth animation or effects */ |
||||||
|
animation: gradientBackground 5s ease infinite; /* Animates the background to create a dynamic effect. */ |
||||||
|
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2); /* Adds a shadow around the element. Adjust the offsets, blur radius, and opacity as needed */ |
||||||
|
``` |
||||||
|
|
||||||
|
- Let's make it more exciting, by actually making the colors move! We can do that with `keyframes`! Under the `#gallery` css rule, put the `keyframes`` block and see the magic ! |
||||||
|
|
||||||
|
_For Example:_ |
||||||
|
|
||||||
|
```css |
||||||
|
@keyframes gradientBackground { |
||||||
|
0% { |
||||||
|
background-position: 0% 50%; |
||||||
|
} |
||||||
|
50% { |
||||||
|
background-position: 100% 50%; |
||||||
|
} |
||||||
|
100% { |
||||||
|
background-position: 0% 50%; |
||||||
|
} |
||||||
|
} |
||||||
|
``` |
||||||
|
|
||||||
|
> Play with the values and colors to get the best effect for your gallery! |
||||||
|
|
||||||
|
**`Prompt Example:`** |
||||||
|
|
||||||
|
- "How do I create a smooth gradient background with multiple colors in CSS?" |
||||||
|
|
||||||
|
- "Explain to me as a beginner these CSS properties: `background`, `background-size`, `animation`, `box-shadow`." |
||||||
|
|
||||||
|
### Task 3: Add Interactivity with JavaScript: |
||||||
|
|
||||||
|
#### 1- Create a New JavaScript File: |
||||||
|
|
||||||
|
Create a new JavaScript file called `robots-harmony.js`. |
||||||
|
|
||||||
|
Link this file to your `robots-harmony.html` file. |
||||||
|
|
||||||
|
#### 2- Add Color Change on Key Press: |
||||||
|
|
||||||
|
You will write JavaScript functions to change the colors of different parts of your robots when specific keys are pressed. |
||||||
|
|
||||||
|
In your `robots-harmony.js`, follow the following steps: |
||||||
|
|
||||||
|
- **Function to Change Arm Colors**: |
||||||
|
|
||||||
|
- Create a function named `changeArmColor`. |
||||||
|
- This function should accept a parameter `robotClass` to identify which robot to modify. |
||||||
|
- Inside the function, generate a random color using JavaScript. |
||||||
|
|
||||||
|
```js |
||||||
|
const randomColor = `#${Math.floor(Math.random() * 16777215).toString(16)}`; |
||||||
|
``` |
||||||
|
|
||||||
|
- Use `document.querySelector` to select the `left` and ```right` arm elements of the robot. |
||||||
|
- Apply the random color to both arm elements using style.backgroundColor. |
||||||
|
- Here is an example, do the same for right arm: |
||||||
|
|
||||||
|
```js |
||||||
|
document.querySelector(`.${robotClass} #arm-left`).style.backgroundColor = |
||||||
|
randomColor; |
||||||
|
``` |
||||||
|
|
||||||
|
- **Function to Change Legs Colors**: |
||||||
|
|
||||||
|
- Create a function named `changeLegColor`. |
||||||
|
- Follow the same steps as the `changeArmColor` function but target the `legs`. |
||||||
|
|
||||||
|
- **Function to Change Eye Colors**: |
||||||
|
|
||||||
|
- Create a function named `changeEyeColor`. |
||||||
|
- Follow the same steps as the `changeArmColor` function but target the `eye`. |
||||||
|
|
||||||
|
- **Function to Change Face Colors**: |
||||||
|
|
||||||
|
- Create a function named `changeFaceColor`. |
||||||
|
- Follow the same steps as the `changeArmColor` function but target the `face`. |
||||||
|
|
||||||
|
#### 3- Adding Event Listeners for Keyboard Input: |
||||||
|
|
||||||
|
Next, you need to detect when specific keys are pressed and trigger the corresponding function. |
||||||
|
|
||||||
|
- Use `document.addEventListener` to listen for `keydown` events. |
||||||
|
- Inside the event listener, use multiple if statements to check which key was pressed. |
||||||
|
- Depending on the key pressed, call the appropriate function and pass the robot's class as an argument. |
||||||
|
|
||||||
|
Code example: |
||||||
|
|
||||||
|
```js |
||||||
|
document.addEventListener("keydown", function (event) { |
||||||
|
if (event.key === "1") { |
||||||
|
changeArmColor("sarah-robot"); |
||||||
|
} |
||||||
|
if (event.key === "2") { |
||||||
|
changeLegColor("sarah-robot"); |
||||||
|
} |
||||||
|
if (event.key === "Q" || event.key === "q") { |
||||||
|
changeEyeColor("sarah-robot"); |
||||||
|
} |
||||||
|
if (event.key === "A" || event.key === "a") { |
||||||
|
changeFaceColor("sarah-robot"); |
||||||
|
} |
||||||
|
|
||||||
|
// Add similar conditions for other robots choosing what keys will change the colors! |
||||||
|
|
||||||
|
//...Here |
||||||
|
}); |
||||||
|
``` |
||||||
|
|
||||||
|
#### 4- Task 5: Final Touches and Presentation |
||||||
|
|
||||||
|
- Test Everything: |
||||||
|
|
||||||
|
Ensure that all robots are displayed correctly in the gallery. |
||||||
|
|
||||||
|
Make sure all files (robot-gallery.html, robots-harmony.css, gallery-script.js, and any media files) are in the same folder. |
||||||
|
|
||||||
|
Double-check the code to ensure everything is clean and well-organized. |
||||||
|
|
||||||
|
### Expected Output |
||||||
|
|
||||||
|
Your project needs to check all the previous tasks, it will look something close to [this](The link of the demo). |
||||||
|
|
||||||
|
### Bonus part |
||||||
|
|
||||||
|
If you would like to make your project even more creative, you can add more features to your gallery on top of the mandatory ones! |
||||||
|
|
||||||
|
It could be music to the background, pop-out information window or anything that makes your project different! |
||||||
|
|
||||||
|
> Remember to ensure that the mandatory part is working perfectly before adding more effects. |
||||||
|
|
||||||
|
Good luck, and have fun bringing your robots to life in this dynamic gallery! |
Loading…
Reference in new issue