Bagaimana untuk Mengikat Berbilang Acara Akhbar Utama dalam Grafik Penyu?

Patricia Arquette
Lepaskan: 2024-11-03 01:11:02
asal
935 orang telah melayarinya

How to Bind Multiple Key Press Events in Turtle Graphics?

Mengikat Berbilang Acara Tekan Kekunci dalam Grafik Penyu

Menyelaraskan input pengguna daripada berbilang tekanan kekunci adalah penting dalam banyak aplikasi interaktif, termasuk permainan. Dalam grafik Penyu, menyambungkan titik berdasarkan kombinasi kekunci tertentu adalah keperluan biasa.

Untuk mengendalikan berbilang penekanan kekunci secara bersama-sama, pendekatan berikut telah digunakan secara meluas:

Menggunakan win.onkeypress( )

Kaedah win.onkeypress() dalam Turtle menyediakan cara yang mudah untuk mengikat acara penekan kekunci kepada fungsi tertentu. Dengan mendaftarkan pendengar acara untuk setiap kekunci individu, kami boleh melaksanakan tindakan yang diingini apabila kekunci yang sepadan ditekan.

Sebagai contoh, pertimbangkan senario di mana kami mahu Penyu kami bergerak ke arah yang berbeza berdasarkan gabungan kekunci. Kami boleh mendaftarkan pendengar acara untuk kekunci 'Atas,' 'Bawah,' 'Kiri' dan 'Kanan' serta menentukan fungsi berasingan untuk mengendalikan setiap pergerakan.

<code class="python">import turtle

flynn = turtle.Turtle()
win = turtle.Screen()

win.listen()

def Up():
    flynn.setheading(90)
    flynn.forward(25)

def Down():
    flynn.setheading(270)
    flynn.forward(20)

def Left():
    flynn.setheading(180)
    flynn.forward(20)

def Right():
    flynn.setheading(0)
    flynn.forward(20)

win.onkeypress(Up, "Up")
win.onkeypress(Down, "Down")
win.onkeypress(Left, "Left")
win.onkeypress(Right, "Right")</code>
Salin selepas log masuk

Dengan kod ini, apabila pengguna menekan kekunci 'Naik', Penyu akan bergerak 25 unit ke arah utara. Begitu juga, Penyu akan bertindak balas terhadap tekanan kekunci 'Bawah,' 'Kiri' dan 'Kanan'.

Mengendalikan Kombinasi

Penyelesaian di atas merangkumi peristiwa penekanan kekunci tunggal, tetapi untuk mengendalikan kombinasi, seperti kekunci 'Atas' dan 'Kanan' yang ditekan bersama, kita perlu menggunakan pendekatan yang lebih maju.

Menggunakan kaedah win.onkeypress() secara eksklusif untuk acara gabungan boleh membawa kepada isu masa dan ketidakkonsistenan. Sebaliknya, kami boleh menggunakan mekanisme pemasa untuk menyemak secara berkala untuk kemunculan sebarang kombinasi tekan kekunci.

<code class="python">from turtle import Turtle, Screen

win = Screen()

flynn = Turtle('turtle')

def process_events():
    events = tuple(sorted(key_events))

    if events and events in key_event_handlers:
        (key_event_handlers[events])()

    key_events.clear()

    win.ontimer(process_events, 200)

def Up():
    key_events.add('UP')

def Down():
    key_events.add('DOWN')

def Left():
    key_events.add('LEFT')

def Right():
    key_events.add('RIGHT')

def move_up():
    flynn.setheading(90)
    flynn.forward(25)

def move_down():
    flynn.setheading(270)
    flynn.forward(20)

def move_left():
    flynn.setheading(180)
    flynn.forward(20)

def move_right():
    flynn.setheading(0)
    flynn.forward(20)

def move_up_right():
    flynn.setheading(45)
    flynn.forward(20)

def move_down_right():
    flynn.setheading(-45)
    flynn.forward(20)

def move_up_left():
    flynn.setheading(135)
    flynn.forward(20)

def move_down_left():
    flynn.setheading(225)
    flynn.forward(20)

key_event_handlers = { \
    ('UP',): move_up, \
    ('DOWN',): move_down, \
    ('LEFT',): move_left, \
    ('RIGHT',): move_right, \
    ('RIGHT', 'UP'): move_up_right, \
    ('DOWN', 'RIGHT'): move_down_right, \
    ('LEFT', 'UP'): move_up_left, \
    ('DOWN', 'LEFT'): move_down_left, \
}

key_events = set()

win.onkey(Up, "Up")
win.onkey(Down, "Down")
win.onkey(Left, "Left")
win.onkey(Right, "Right")

win.listen()

process_events()

win.mainloop()</code>
Salin selepas log masuk

Pendekatan ini mengekalkan senarai peristiwa utama dalam set_peristiwa kunci dan setiap kali fungsi pemasa dilaksanakan , ia menyemak sama ada terdapat sebarang kombinasi dalam kamus key_event_handlers. Jika gabungan ditemui, fungsi pengendali yang sepadan akan dilaksanakan, menyebabkan Penyu melakukan tindakan yang diingini.

Atas ialah kandungan terperinci Bagaimana untuk Mengikat Berbilang Acara Akhbar Utama dalam Grafik Penyu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!