Strona główna » Poradniki » Logomocja » Python i Żółw » Kliknięty Żółw
 

Kliknięty Żółw

Wstęp

Żółw nie tylko umie wykonywać określony zestaw zadań, ale może również reagować między innymi na kliknięcie myszy. To pozwala na wprowadzenie w programie prostą interaktywność pomiędzy żółwiem, a użytkownikiem.

Na kliknięcie

Kliknięcie myszą

W celu dodanie zdarzenia do żółwia należy użyć metody onclick, która przyjmuje trzy argumenty. Są to kolejno funkcja do wywołania, przycisk na który ma reagować żółw oraz czy to zdarzenie ma zostać dodane jako następne. Rozpocznijmy od najprostszego przypadku, gdy po kliknięciu żółwia przesunie się on do przodu o 100:

  1. import turtle
  2. żółw = turtle.Turtle()
  3. def rusz(x, y):
  4.   żółw.fd(100)
  5. żółw.onclick(rusz)

Funkcja, która odbiera zdarzenie wywołane przez kliknięcie przyjmuje dwa argumenty x oraz y. Wiedząc już jak można napisać reagowanie na lewy przycisk myszy rozbudujmy bardziej interakcję z użytkownikiem.

Pozostałe przyciski

Jako drugi argument dla funkcji onclick można przekazać numer przycisku myszy na które ma zostać wywołane zdarzenie. Domyślnie jest to wartość 1 co oznacza lewy przycisk myszy. Z kolei środkowy ma numer 2, a prawy 3. Bardzo łatwo to zapamiętać, bo wystarczy policzyć którym przyciskiem jest przycisk licząc od lewej strony. Żółw może rozróżniać wiele zdarzeń równocześnie, ale należy pamiętać, aby ustawić ostatni argument na prawdę, ponieważ inaczej nadpisze się poprzednio ustawione zdarzenia. Oto przykładowy kod:

  1. import turtle
  2. żółw = turtle.Turtle()
  3. def rusz(x, y):
  4.   żółw.fd(100)
  5. def obroc(x, y):
  6.   żółw.rt(90)
  7. def cofnij(x, y):
  8.   żółw.bk(100)
  9. żółw.onclick(rusz)
  10. żółw.onclick(obroc, 2, True)
  11. żółw.onclick(cofnij, 3, True)

Żółw obsługuje teraz każdy przycisk myszy. Na kliknięcie lewym idzie do przodu, na środkowy obraca się w prawo, a na prawy idzie do tyłu. W powyższym przykładzie pierwsze zdarzenie nie ma ostatniego argumentu ustawionego na prawdę, ponieważ i tak nadpisze brak zdarzeń. Jednak jeśli w kolejnych, by go nie dodać to poprzednio przypisane zdarzenie by nie działały.

Zwolnienie kliknięcia

Każde kliknięcie myszy składa się z dwóch zdarzeń: naciśnięcie klawisza, a następnie jego zwolnienia. Metoda onrelease pozwala na ustawienie funkcji do wykonania dla tej drugiej części. Przyjmuje ona dokładnie te same argumenty co onclick. Spróbujmy się zastanowić jak zadziała poniższy program:

  1. import turtle
  2. żółw = turtle.Turtle()
  3. def rusz(x, y):
  4.   żółw.fillcolor("red")
  5.   żółw.fd(100)
  6. def koniec(x, y):
  7.   żółw.fillcolor("black")
  8. żółw.onclick(rusz)
  9. żółw.onrelease(koniec)

Otóż w powyższym kodzie zostało przypisane zdarzenie na naciśnięcie i zwolnienie. W momencie naciśnięcia żółw zmienia kolor i wykonuje ruch do przodu. Kolor ten zostaje zmieniony w momencie, gdy zostanie puszczony lewy przycisk myszy. Wtedy żółw ponownie będzie czarny, a nie czerwony. (Korzystamy tu z faktu, że ustawiony na żółwiu kolor wypełnienia jest również kolorem postaci).

Zadania

Zadanie 1

Napisz skrypt, który pozwoli na sterowanie żółwiem w następujący sposób: lewy przycisk myszy - skręt w lewo i analogicznie prawy przycisk skręt w prawo. Jeśli zostanie naciśnięty środkowy przycisk to żółw powinien powiększyć swoją postać dwukrotnie, zmienić kolor na zielony, a następnie przejść do przodu o 50. Po puszczeniu przycisku powinien ponownie stać się czarny.