Białe Święta – Programistyczna pocztówka www – Rozwiązanie – Kod / omówienie / linki

Szczegółowe omówienie tworzenia programistycznej pocztówki Białe Święta:

Link do powyższego omówienia strony www Białe Święta: https://youtu.be/WrtYgCXxpPY?t=706
Treść
zadania: https://oki.org.pl/biale-swieta-zadanie/
Kod aplikacji – instrukcja pobrania na dole: https://oki.org.pl/wp-content/uploads/2022/12/biale-swieta.html  
Skrócone
omówienie kodu rysującego zieloną choinkę i padające zmieniające się płatki śniegu: https://youtu.be/WrtYgCXxpPY?t=6311

Kolejne etapy tworzenia naszego kodu:
Otwieramy plik biale-swieta.html: https://youtu.be/WrtYgCXxpPY?t=841


Jak się uczyć na podstawie tego zadania? https://youtu.be/QgLyXYmFQeU?t=2019
Pamiętaj by zajrzeć max 1 raz – wtedy się rozwijasz: https://youtu.be/pkLXuuOe_qA?t=3625
Lista zadań z rozwiązaniami: https://oki.org.pl/lista-zadan-materialy.php
Samouczek – przygotowanie do Olimpiad: https://oki.org.pl/tutorial/
Zajęcia: https://oki.org.pl/harmonogram-zajec/
Informacje o zajęciach: https://oki.org.pl/newsletter.php


Jak uruchomić / pobrać programistczną pocztówkę Białe Święta?
Poniżej jest kod wynikowy który utworzyliśmy w trakcie naszych zajęć.
1. Kliknij na poniższy link prawym klawiszem myszy i wybierz “zapisz jako”:
https://oki.org.pl/wp-content/uploads/2022/12/biale-swieta.html
2. Zapisz plik w dowolnym katalogu.
3. Dwukrotnie kliknij na nazwie pliku.
Otworzy się przeglądarka i uruchomi się program który animuje ruch kaktusa.
4. By zmienić kod, wygląd,… -> Kliknij prawym klawiszem na zapisanym pliku i wybierz “Otwórz za pomocą” a następnie wybierze “Notatnik” lub dowolny inny edytor. Rekomenduję użycie Visual Studio Code zamiast notatnika: https://youtu.be/Ck6k19b7FVU?t=994

Alternatywnie
1. Skopiuj cały poniższy kod i umieść w notatniku.
2. Zapisz zwartość notatnika z wklejonym właśnie kodem jako plik biale-swieta.html
Zwróć uwagę by był to plik biale-swieta.html a nie biale-swieta.html.txt lub biale-swieta.html.txt. Wyjaśnienie: https://youtu.be/wrkLDPqZ1Js?t=1532
3. Kliknij dwukrotnie na pliku biale-swieta.html
Powinna otworzyć się domyślna przeglądarka i uruchomić aplikację.

Link do pobrania pliku

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<canvas id="plansza_canvas" width="400px" height="600px">
</canvas>
<script>
let plansza, rysowanie;
plansza = document.getElementById("plansza_canvas");
rysowanie = plansza.getContext("2d");  
//trojkat ktory ma podstawe rownolegla do osi X
function RysujTrojkat(x_lewy, x_prawy, y_dol, y_gora, kolor) {
rysowanie.beginPath();
rysowanie.moveTo(x_lewy, y_dol);
rysowanie.lineTo(x_prawy, y_dol);
rysowanie.lineTo((x_lewy+x_prawy)/2, y_gora);
rysowanie.fillStyle = kolor;
rysowanie.fill();
rysowanie.closePath();
}
function RysujChoinke() {
RysujTrojkat(50, 350, 500, 250, "rgb(0,115,0)");
RysujTrojkat(60, 340, 400, 150, "rgb(0,185,0)");
RysujTrojkat(90, 310, 300, 100, "rgb(0,255,0)");
}
function RysujPlatek(x_srodka, y_srodka, rozmiar, kolor) {
rysowanie.fillStyle = kolor;
rysowanie.beginPath();
rysowanie.arc(x_srodka, y_srodka, rozmiar, 0, 2 * Math.PI);
rysowanie.fill();
rysowanie.closePath();
} 
function LosujPlatek (numer_platka) {
//Math.random() - generuje losowa liczbe od 0 do 1
platki_x[numer_platka] = 400*Math.random(); //losowa od 0 do 400
platki_y[numer_platka] = 100*Math.random(); //losowa od 0 do 100
platki_kolor[numer_platka] = 100*Math.random(); //losowa od 0 do 255
platki_wielkosc[numer_platka] = 2 + 3*Math.random(); // losowa od 2 do 5
platki_predkosc_y[numer_platka] = 0.1 + Math.random(); //od 0.1 do 1.1
platki_predkosc_zmiany_wielkosci[numer_platka] = 0.001; 
platki_predkosc_zmiany_koloru[numer_platka] = 0.5; //szybkosc pojasniania
}
let platki_x=[], platki_y=[], platki_kolor=[], platki_wielkosc=[];
let platki_predkosc_y=[], platki_predkosc_zmiany_koloru=[];
let platki_predkosc_zmiany_wielkosci = [];
let liczba_platkow, i; 
liczba_platkow = 200;
for (i=0; i<liczba_platkow; ++i)
LosujPlatek (i);
function Animacja() {
let kolor; 
rysowanie.fillStyle = "rgb(0,0,60)";
rysowanie.fillRect(0,0, plansza.width,plansza.height); 
RysujChoinke();
for (i=0; i<liczba_platkow; ++i) {
kolor = "rgb(" + platki_kolor[i] + "," + 
platki_kolor[i] + "," + platki_kolor[i] + ")";
RysujPlatek(platki_x[i], platki_y[i], platki_wielkosc[i], kolor);
platki_kolor[i] = platki_kolor[i] + platki_predkosc_zmiany_koloru[i];
if (platki_kolor[i]>255)
platki_kolor[i] = 255;
platki_wielkosc[i] = platki_wielkosc[i] + platki_predkosc_zmiany_wielkosci[i];
if (platki_wielkosc[i]>10)
platki_wielkosc[i] = 10;
platki_y[i] = platki_y[i] + platki_predkosc_y[i];
if (platki_y[i] > plansza.height)
LosujPlatek(i);   
//        platki_x[i] = platki_x[i] + -1.5+3*Math.random();
}
}
setInterval(Animacja, 10); //co 10ms czyli 100 razy na sekunde wywoluj funkcje Animacja()
</script>
</body> 
</html>
Link do pobrania pliku

 

Nie dodano jeszcze komentarza, rozpocznij dyskusję pierwszy.

Dodaj komentarz