cari
Rumahpembangunan bahagian belakangTutorial PythonCara menggunakan modul acara Acara Pygame dalam Python

Modul Acara Pygame

Acara ialah salah satu modul penting Pygame Ia adalah teras membina keseluruhan program permainan, seperti klik tetikus yang biasa digunakan, ketik papan kekunci, pergerakan tetingkap permainan dan pelarasan. Saiz tetingkap, mencetuskan plot tertentu, keluar dari permainan, dsb., semuanya boleh dianggap sebagai "peristiwa".

Jenis Acara

Pygame mentakrifkan struktur yang khusus digunakan untuk mengendalikan acara, iaitu baris gilir acara ini mengikut prinsip asas "dahulu dilayan" dalam baris gilir beratur, kami Operasi pengguna (peristiwa tercetus) boleh diproses dengan teratur dan satu demi satu. Jadual berikut menyenaraikan acara permainan yang biasa digunakan dalam Pygame:

名称 说明
QUIT 用户按下窗口的关闭按钮
ATIVEEVENT Pygame被激活或者隐藏
KEYDOWN 键盘按下
KEYUP 键盘放开
MOUSEMOTION 鼠标移动
MOUSEBUTTONDOWN 鼠标按下
MOUSEBUTTONUP 鼠标放开
JOYAXISMOTION 游戏手柄(Joystick or pad) 移动
JOYBALLMOTION  游戏球(Joy ball) 移动
JOYHATMOTION 游戏手柄(Joystick) 移动
JOYBUTTONDOWN 游戏手柄按下
JOYBUTTONUP 游戏手柄放开
VIDEORESIZE Pygame窗口缩放
VIDEOEXPOSE Pygame窗口部分公开(expose)
USEREVENT 触发一个用户事件

Perhatikan bahawa apabila menggunakan Pygame untuk pembangunan permainan, tidak semua acara di atas boleh digunakan, jadi semasa proses pembelajaran, Kita mesti tahu cara membuat inferens dan membuat inferens.

Kaedah pengendalian acara

名称 说明
pygame.event.get() 从事件队列中获取一个事件,并从队列中删除该事件
pygame.event.wait()  阻塞直至事件发生才会继续执行,若没有事件发生将一直处于阻塞状态
pygame.event.set_blocked()  控制哪些事件禁止进入队列,如果参数值为None,则表示禁止所有事件进入
pygame.event.set_allowed()   控制哪些事件允许进入队列
pygame.event.pump()  调用该方法后,Pygame 会自动处理事件队列
pygame.event.poll()  会根据实际情形返回一个真实的事件,或者一个None
pygame.event.peek()   检测某类型事件是否在队列中
pygame.event.clear() 从队列中清除所有的事件
pygame.event.get_blocked()  检测某一类型的事件是否被禁止进入队列
pygame.event.post()   放置一个新的事件到队列中
pygame.event.Event()   创建一个用户自定义的新事件

Apabila kami menggunakan Pygame untuk mengendalikan acara, logiknya pada umumnya serupa. Anda perlu menentukan jenis acara dahulu, dan kemudian mengambil tindakan permainan yang berbeza untuk setiap jenis acara. Oleh itu, pernyataan if & else sesuai untuk situasi ini. Seperti yang ditunjukkan di bawah:

import pygame

while True:
    # 等待事件发生
    event = pygame.event.wait()
    if event.type == pygame.QUIT:
        exit()
    if event.type == pygame.MOUSEBUTTONDOWN:
        print('鼠标按下', event.pos)
    if event.type == pygame.MOUSEBUTTONUP:
        print('鼠标弹起')
    if event.type == pygame.MOUSEMOTION:
        print('鼠标移动')
        # 键盘事件
    if event.type == pygame.KEYDOWN:
        # 打印按键的英文字符
        print('键盘按下', chr(event.key))
    if event.type == pygame.KEYUP:
        print('键盘弹起')

Mengendalikan acara papan kekunci

Kita boleh menggunakan atribut kekunci yang disediakan oleh acara papan kekunci untuk mendapatkan kekunci papan kekunci yang ditekan. Pygame mentakrifkan kekunci huruf, kekunci angka, kekunci gabungan dan kekunci lain pada papan kekunci dalam bentuk pemalar Jadual berikut menyenaraikan pemalar beberapa kekunci yang biasa digunakan:

名称 说明
K_BACKSPACE 退格键(Backspace)
K_TAB 制表键(Tab)
K_CLEAR 清除键(Clear)
K_RETURN 回车键(Enter)
K_PAUSE 暂停键(Pause)
K_ESCAPE 退出键(Escape)
K_SPACE 空格键(Space)
K_0...K_9 0…9
K_a...Kz a…z
K_DELETE 删除键(delete)
K_KP0...K_KP9 0(小键盘)…9(小键盘)
K_F1...K_F15 F1…F15
K_UP 向上箭头(up arrow)
K_DOWN 向下箭头(down arrow)
K_RIGHT 向右箭头(right arrow)
K_LEFT 向左箭头(left arrow)
KMOD_ALT 同时按下Alt键

Berikut ialah contoh. "pergerakan gambar" Untuk memahami proses pemprosesan peristiwa papan kekunci, seperti yang ditunjukkan di bawah:

import pygame
import sys

# 初始化pygame
pygame.init()
# 定义变量
size = width, height = 600, 400
bg = (255, 255, 255)
# 加载logo图
img = pygame.image.load("./python.png")
# 获取图像的位置
position = img.get_rect()
# 创建一个主窗口
screen = pygame.display.set_mode(size)
# 标题
pygame.display.set_caption("Python自学网")
# 创建游戏主循环
while True:
    # 设置初始值
    site = [0, 0]
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        # 图像移动 KEYDOWN 键盘按下事件
        # 通过 key 属性对应按键
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_UP:
                site[1] -= 8
            if event.key == pygame.K_DOWN:
                site[1] += 8
            if event.key == pygame.K_LEFT:
                site[0] -= 8
            if event.key == pygame.K_RIGHT:
                site[0] += 8
    # 移动图像
    position = position.move(site)
    # 填充背景
    screen.fill(bg)
    # 放置图片
    screen.blit(img, position)
    # 更新显示界面
    pygame.display.flip()

Memproses acara tetikus

Pygame menyediakan tiga acara tetikus, iaitu pergerakan tetikus (MOUSEMOTION) dan tetikus tekan (MOUSEBUTTONDOWN), pelepas tetikus (MOUSEBUTTONUP), jenis acara yang berbeza sepadan dengan atribut ahli yang berbeza. Seperti yang ditunjukkan di bawah:

pygame.event.MOUSEMOTION acara pergerakan tetikus

event.pos relatif kepada penjuru kiri sebelah atas tetingkap, nilai koordinat semasa tetikus (x, y)
event.rel mouse Jarak pergerakan relatif (X, Y), relatif kepada acara terakhir
event.buttons Keadaan awal butang tetikus (0,0,0), sepadan dengan (butang kiri, takal, kanan butang) masing-masing, butang mana yang diklik semasa pergerakan, Kedudukan yang sepadan akan bertukar kepada 1

pygame.event.MOUSEBUTTONUP acara pelepasan butang tetikus

acara.pos berbanding sudut kiri atas tetingkap, nilai koordinat semasa tetikus (x, y)
acara .butang Nombor kunci pelepas tetikus (integer) Butang kiri ialah 1, roda skrol ditekan 2, butang kanan ialah 3

pygame.event.MOUSEBUTTONDOWN Acara tekan butang tetikus

event.pos relatif kepada Sudut kiri atas tetingkap, nilai koordinat semasa tetikus (x, y)
event.butang butang tetikus nombor (integer), butang kiri ialah 1, tekan roda skrol 2, butang kanan ialah 3, tatal ke hadapan 4, Takal guling ke belakang 5

import pygame
from random import randint

# 初始化程序
pygame.init()
screen = pygame.display.set_mode((450, 400))
pygame.display.set_caption("Python自学网")
# 更新显示
pygame.display.flip()
while True:
    # 等待事件发生
    event = pygame.event.wait()
    if event.type == pygame.QUIT:
        exit("成功退出")
    if event.type == pygame.MOUSEBUTTONDOWN:
        # pos 获取鼠标当前位置
        print('鼠标按下', event.pos)
        mx, my = event.pos
        # 调用 pygame.draw 模块画圆
        pygame.draw.circle(screen, (255, 255, 0), (mx, my), 50)
        # 处理完,更新显示
        pygame.display.update()
    if event.type == pygame.MOUSEBUTTONUP:
        print('鼠标弹起')
        pass
    if event.type == pygame.MOUSEMOTION:
        print('鼠标移动')
        mx, my = event.pos
        # 随机生成 RGB 颜色值
        r = randint(0, 255)
        g = randint(0, 255)
        b = randint(0, 255)
        pygame.draw.circle(screen, (r, g, b,), (mx, my), 50)
        # 处理完,更新显示
        pygame.display.update()

Atas ialah kandungan terperinci Cara menggunakan modul acara Acara Pygame dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Artikel ini dikembalikan pada:亿速云. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Python vs C: Memahami perbezaan utamaPython vs C: Memahami perbezaan utamaApr 21, 2025 am 12:18 AM

Python dan C masing -masing mempunyai kelebihan sendiri, dan pilihannya harus berdasarkan keperluan projek. 1) Python sesuai untuk pembangunan pesat dan pemprosesan data kerana sintaks ringkas dan menaip dinamik. 2) C sesuai untuk prestasi tinggi dan pengaturcaraan sistem kerana menaip statik dan pengurusan memori manual.

Python vs C: Bahasa mana yang harus dipilih untuk projek anda?Python vs C: Bahasa mana yang harus dipilih untuk projek anda?Apr 21, 2025 am 12:17 AM

Memilih Python atau C bergantung kepada keperluan projek: 1) Jika anda memerlukan pembangunan pesat, pemprosesan data dan reka bentuk prototaip, pilih Python; 2) Jika anda memerlukan prestasi tinggi, latensi rendah dan kawalan perkakasan yang rapat, pilih C.

Mencapai matlamat python anda: kekuatan 2 jam sehariMencapai matlamat python anda: kekuatan 2 jam sehariApr 20, 2025 am 12:21 AM

Dengan melabur 2 jam pembelajaran python setiap hari, anda dapat meningkatkan kemahiran pengaturcaraan anda dengan berkesan. 1. Ketahui Pengetahuan Baru: Baca dokumen atau tutorial menonton. 2. Amalan: Tulis kod dan latihan lengkap. 3. Kajian: Menyatukan kandungan yang telah anda pelajari. 4. Amalan Projek: Sapukan apa yang telah anda pelajari dalam projek sebenar. Pelan pembelajaran berstruktur seperti ini dapat membantu anda menguasai Python secara sistematik dan mencapai matlamat kerjaya.

Memaksimumkan 2 Jam: Strategi Pembelajaran Python BerkesanMemaksimumkan 2 Jam: Strategi Pembelajaran Python BerkesanApr 20, 2025 am 12:20 AM

Kaedah untuk belajar python dengan cekap dalam masa dua jam termasuk: 1. Semak pengetahuan asas dan pastikan anda sudah biasa dengan pemasangan Python dan sintaks asas; 2. Memahami konsep teras python, seperti pembolehubah, senarai, fungsi, dan lain -lain; 3. Menguasai penggunaan asas dan lanjutan dengan menggunakan contoh; 4. Belajar kesilapan biasa dan teknik debugging; 5. Memohon pengoptimuman prestasi dan amalan terbaik, seperti menggunakan komprehensif senarai dan mengikuti panduan gaya PEP8.

Memilih antara python dan c: bahasa yang sesuai untuk andaMemilih antara python dan c: bahasa yang sesuai untuk andaApr 20, 2025 am 12:20 AM

Python sesuai untuk pemula dan sains data, dan C sesuai untuk pengaturcaraan sistem dan pembangunan permainan. 1. Python adalah mudah dan mudah digunakan, sesuai untuk sains data dan pembangunan web. 2.C menyediakan prestasi dan kawalan yang tinggi, sesuai untuk pembangunan permainan dan pengaturcaraan sistem. Pilihan harus berdasarkan keperluan projek dan kepentingan peribadi.

Python vs C: Analisis perbandingan bahasa pengaturcaraanPython vs C: Analisis perbandingan bahasa pengaturcaraanApr 20, 2025 am 12:14 AM

Python lebih sesuai untuk sains data dan perkembangan pesat, manakala C lebih sesuai untuk prestasi tinggi dan pengaturcaraan sistem. 1. Sintaks Python adalah ringkas dan mudah dipelajari, sesuai untuk pemprosesan data dan pengkomputeran saintifik. 2.C mempunyai sintaks kompleks tetapi prestasi yang sangat baik dan sering digunakan dalam pembangunan permainan dan pengaturcaraan sistem.

2 jam sehari: potensi pembelajaran python2 jam sehari: potensi pembelajaran pythonApr 20, 2025 am 12:14 AM

Adalah mungkin untuk melabur dua jam sehari untuk belajar Python. 1. Belajar Pengetahuan Baru: Ketahui konsep baru dalam satu jam, seperti senarai dan kamus. 2. Amalan dan Amalan: Gunakan satu jam untuk melakukan latihan pengaturcaraan, seperti menulis program kecil. Melalui perancangan dan ketekunan yang munasabah, anda boleh menguasai konsep teras Python dalam masa yang singkat.

Python vs C: Lengkung pembelajaran dan kemudahan penggunaanPython vs C: Lengkung pembelajaran dan kemudahan penggunaanApr 19, 2025 am 12:20 AM

Python lebih mudah dipelajari dan digunakan, manakala C lebih kuat tetapi kompleks. 1. Sintaks Python adalah ringkas dan sesuai untuk pemula. Penaipan dinamik dan pengurusan memori automatik menjadikannya mudah digunakan, tetapi boleh menyebabkan kesilapan runtime. 2.C menyediakan kawalan peringkat rendah dan ciri-ciri canggih, sesuai untuk aplikasi berprestasi tinggi, tetapi mempunyai ambang pembelajaran yang tinggi dan memerlukan memori manual dan pengurusan keselamatan jenis.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),