Poznaliśmy już wszystkie instrukcje zaplanowane na ten kurs języka C. Wykorzystamy je dziś do zilustrowania oblężenia zamku. Twoim zadaniem będzie napisanie programu, który będzie symulował ostrzał zamku przez armaty (kule poruszają się wg. wzorów na rzut ukośny).
Program powinien:
animate()
w celu
uzyskania efektu płynnego ruchu kuli – przykład użycia funkcji
animate()
znajdziesz na końcu instrukcji).Spodziewamy się, że wynikiem działania Twojego programu będzie rysunek zbliżony do poniższego:
Funkcja rysująca zamek:
void RysujZamek() {
line(550, 300, 550, 600);
line(550, 300, 600, 300);
line(600, 300, 600, 500);
line(600, 500, 660, 500);
line(660, 500, 660, 400);
line(660, 400, 640, 400);
line(640, 400, 700, 350);
line(700, 350, 760, 400);
line(760, 400, 740, 400);
line(740, 400, 740, 500);
line(740, 500, 800, 500);
}
Funkcja animate()
tak naprawdę jedynie spowalnia
wykonywanie pętli while
tak, aby kółka nie rysowały się
zbyt szybko. Argument funkcji to wartość mówiąca o liczbie wykonań ciała
pętli w ciągu sekundy. Uwaga: wartość zero mówi o wykonaniu ciała pętli
bez opóźnienia.
Przykład jej użycia w naszym programie wygląda następująco:
while(1) { // petla glowna
// wczytaj x0, V0 i kat alpha
while(animate(100)) { // petla animujaca lot kuli
// narysuj zamek i armate
// oblicz nowe wspolrzedne x i y
// narysuj okrag w odpowiednim miejscu
// zwieksz parametr t
// zawrzyj warunek przerwania petli animujacej,
// gdy kula uderza w sciane lub spada na ziemie
}
// zapytaj czy kula trafila w mur i jesli tak
// wyjdz z petli glownej
}