Laboratorium wyścigowe żółwi

Liczby losowe

Zanim rozpoczniemy pisanie kodu w tym laboratorium, musimy zapoznać się z jeszcze jednym modułem języka Python. Moduł random pozwala na generowanie liczb losowych. Jest łatwy w użyciu:




(lab01_1)

Funkcja randrange wywołana w powyższym przykładzie generuje całkowite liczby losowe z przedziału od 1 do 9, chociaż jako górną granicę zakresu (ang. range) wpisano liczbę 10; określanie wartości granicznych działa tu podobnie jak w funkcji range. Teraz, po kilkukrotnym uruchomieniu programu zobaczysz, że prawie za każdym razem generowana jest inna liczba losowa (czasami kolejne wyniki mogą się powtórzyć, ale nie da się przewidzieć, jaka będzie kolejna wygenerowana wartość). Generowanie liczb losowych jest podstawą wielu rodzajów ciekawych programów, które możemy napisać, a funkcja randrange jest jedną z wielu dostępnych w module random.

Wyścigi żółwi

W tym laboratorium zajmiemy się szczegółowo zagadnieniem ścigających się żółwi. Pomysł polega na tym, aby stworzyć dwa lub więcej żółwi i kazać im ścigać się od lewej do prawej strony ekranu. Żółw, który dojdzie najdalej, zwycięża.

There are several different, and equally plausible, solutions to this problem. Let’s look at what needs to be done, and then look at some of the options for the solution. To start, let’s think about a solution to the simplest form of the problem, a race between two turtles. We’ll look at more complex races later.

Można pokazać kilka różnych, acz równorzędnych rozwiązań tak zdefiniowanego zagadnienia. Rozważmy, co trzeba zrobić oraz zastanówmy się nad różnymi możliwymi rozwiązaniami. Na początek zajmijmy się najprostszym przypadkiem – wyścigiem dwóch żółwi. Bardziej skomplikowane przypadki zostawmy na później.

Oto możliwa sekwencja kroków w celu ukończenia zadania:

  1. Zaimportować potrzebne moduły
  2. Stworzyć ekran
  3. Stworzyć 2 żółwie
  4. Ustawić żółwie w pozycji startowej
  5. Przeprowadzić wyścig żółwi po ekranie

Poniżej przedstawiono kod Pythona dla pierwszych 4 kroków (numeracja jak powyżej):




(lab01_2)

Istnieje wiele rozwiązań punktu 5. Przedstawimy tu jedynie kilka możliwości. Spróbuj zaprogramować każdą z nich, aby przekonać się, jak działa.

  • Przesuń każdego żółwia do przodu o pojedyńczą losową wartość.
  • Utwórz pętlę for, używając pewnej liczby losowej jako drogi przebywanej przez żółwie. Wewnątrz pętli przesuwaj każdego żółwia do przodu o wylosowaną w ten sposób wartość.
  • Utwórz pojedynczą pętlę for, ustalając zakres ruchu każdego żółwia np. na 150 lub 200. Wewnątrz pętli przemieszczaj każdego żółwia o losową wartość z ustalonego zakresu.

Który z tych programów jest najlepszy? Który jest najbardziej prawidłowy? Są to doskonałe pytania. Pierwszy program jest na pewno najprostszy, ale niezbyt atrakcyjny z punktu widzenia emocji wyścigowych. Po prostu każdy żółw przemieszcza się o pewną odległość podczas swojego ruchu. Taki wyścig na pewno nikogo nie zadowoli. Drugi program daje po uruchomieniu bardzo podobny efekt do pierwszego. Trzeci program prawdopodobnie najbardziej realistycznie oddaje prawdziwy wyścig, o tyle, o ile realizm jest ważny w wyścigu wirtualnych żółwi.

You may be thinking why can’t each turtle just move forward until they cross some artificial finish line? Good question! We’ll get to the answer to this, and look at the program in a later lesson when we learn about something called the while loop.

Możesz pomyśleć, dlaczego po prostu każdy z żółwi nie mógłby się przemieszczać do przodu dopóki nie przekroczy wirtualnej linii mety? Bardzo dobre pytanie! Dojdziemy do odpowiedzi na to pytanie w kolejnej lekcji poznając coś, co nazywa się pętlą while.

Następna część - Rysowanie okręgu