Rumah pembangunan bahagian belakang Tutorial Python pygame学习笔记(3):运动速率、时间、事件、文字

pygame学习笔记(3):运动速率、时间、事件、文字

Jun 10, 2016 pm 03:15 PM
pygame peristiwa watak masa

1、运动速率

上节中,实现了一辆汽车在马路上由下到上行驶,并使用了pygame.time.delay(200)来进行时间延迟。看了很多参考材料,基本每个材料都会谈到不同配置机器下运动速率的问题,有的是通过设定频率解决,有的是通过设定速度解决,自己本身水平有限,看了几篇,觉得还是《Beginning Game Development with Python and Pygame》这里面提到一个方法比较好。代码如下,代码里更改的地方主要是main里的代码,其中利用clock=pygame.time.Clock()来定义时钟,speed=250.0定义了速度,每秒250像素,time_passed=clock.tick()为上次运行时间单位是毫秒,time_passed_seconds=time_passed/1000.0将单位改为秒,distance_moved=time_passed_seconds*speed时间乘以速度得到移动距离,这样就能保证更加流畅。

复制代码 代码如下:

import pygame,sys
def lineleft():
    plotpoints=[]
    for x in range(0,640):
        y=-5*x+1000
        plotpoints.append([x,y])
    pygame.draw.lines(screen,[0,0,0],False,plotpoints,5)
    pygame.display.flip()
def lineright():
    plotpoints=[]
    for x in range(0,640):
        y=5*x-2000
        plotpoints.append([x,y])
    pygame.draw.lines(screen,[0,0,0],False,plotpoints,5)
    pygame.display.flip()   
def linemiddle():
    plotpoints=[]
    x=300
    for y in range(0,480,20):
        plotpoints.append([x,y])
        if len(plotpoints)==2:
            pygame.draw.lines(screen,[0,0,0],False,plotpoints,5)
            plotpoints=[]
    pygame.display.flip()
def loadcar(yloc):
    my_car=pygame.image.load('ok1.jpg')
    locationxy=[310,yloc]
    screen.blit(my_car,locationxy)
    pygame.display.flip()

   
if __name__=='__main__':
    pygame.init()
    screen=pygame.display.set_caption('hello world!')
    screen=pygame.display.set_mode([640,480])
    screen.fill([255,255,255])
    lineleft()
    lineright()
    linemiddle()
 
    clock=pygame.time.Clock()
    looper=480
    speed=250.0
    while True:
        for event in pygame.event.get():
            if event.type==pygame.QUIT:
                sys.exit()

        pygame.draw.rect(screen,[255,255,255],[310,(looper+132),83,132],0)
        time_passed=clock.tick()
        time_passed_seconds=time_passed/1000.0
        distance_moved=time_passed_seconds*speed
        looper-=distance_moved
       
        if looper             looper=480 
        loadcar(looper)

2、事件
   
我理解的就是用来解决键盘、鼠标、遥控器等输入后做出什么反映的。例如上面的例子,可以通过按上方向键里向上来使得小车向上移动,按下向下,使得小车向下移动。当小车从下面倒出时,会从上面再出现,当小车从上面驶出时,会从下面再出现。代码如下。event.type == pygame.KEYDOWN用来定义事件类型,if event.key==pygame.K_UP这里是指当按下向上箭头时,车前进。if event.key==pygame.K_DOWN则相反,指按下向下箭头,车后退。

复制代码 代码如下:

import pygame,sys
def lineleft():
    plotpoints=[]
    for x in range(0,640):
        y=-5*x+1000
        plotpoints.append([x,y])
    pygame.draw.lines(screen,[0,0,0],False,plotpoints,5)
    pygame.display.flip()
def lineright():
    plotpoints=[]
    for x in range(0,640):
        y=5*x-2000
        plotpoints.append([x,y])
    pygame.draw.lines(screen,[0,0,0],False,plotpoints,5)
    pygame.display.flip()   
def linemiddle():
    plotpoints=[]
    x=300
    for y in range(0,480,20):
        plotpoints.append([x,y])
        if len(plotpoints)==2:
            pygame.draw.lines(screen,[0,0,0],False,plotpoints,5)
            plotpoints=[]
    pygame.display.flip()
def loadcar(yloc):
    my_car=pygame.image.load('ok1.jpg')
    locationxy=[310,yloc]
    screen.blit(my_car,locationxy)
    pygame.display.flip()

   
if __name__=='__main__':
    pygame.init()
    screen=pygame.display.set_caption('hello world!')
    screen=pygame.display.set_mode([640,480])
    screen.fill([255,255,255])
    lineleft()
    lineright()
    linemiddle()

    looper=480

    while True:
        for event in pygame.event.get():
            if event.type==pygame.QUIT:
                sys.exit()
            elif event.type == pygame.KEYDOWN:

                if event.key==pygame.K_UP:
                    looper=looper-50
                    if looper                        looper=480
                   
                    pygame.draw.rect(screen,[255,255,255],[310,(looper+132),83,132],0)
                    loadcar(looper)
                if event.key==pygame.K_DOWN:
                    looper=looper+50
                    if looper>480:
                       looper=-480
                    pygame.draw.rect(screen,[255,255,255],[310,(looper-132),83,132],0)
                    loadcar(looper)

3、字体及字符显示

使用字体模块用来做游戏的文字显示,大部分游戏都会有诸如比分、时间、生命值等的文字信息。pygame主要是使用pygame.font模块来完成,常用到的一些方法是:
pygame.font.SysFont(None, 16),第一个参数是说明字体的,可以是"arial"等,这里None表示默认字体。第二个参数表示字的大小。如果无法知道当前系统中装了哪些字体,可以使用pygame.font.get_fonts()来获得所有可用字体。
pygame.font.Font("AAA.ttf", 16),用来使用TTF字体文件。
render("hello world!", True, (0,0,0), (255, 255, 255)),render方法用来创建文字。第一个参数是写的文字;第二个参数是否开启抗锯齿,就是说True的话字体会比较平滑,不过相应的速度有一点点影响;第三个参数是字体的颜色;第四个是背景色,无表示透明。
下面将上面的例子添加当前汽车坐标:

复制代码 代码如下:

import pygame,sys
def lineleft():
    plotpoints=[]
    for x in range(0,640):
        y=-5*x+1000
        plotpoints.append([x,y])
    pygame.draw.lines(screen,[0,0,0],False,plotpoints,5)
    pygame.display.flip()
def lineright():
    plotpoints=[]
    for x in range(0,640):
        y=5*x-2000
        plotpoints.append([x,y])
    pygame.draw.lines(screen,[0,0,0],False,plotpoints,5)
    pygame.display.flip()   
def linemiddle():
    plotpoints=[]
    x=300
    for y in range(0,480,20):
        plotpoints.append([x,y])
        if len(plotpoints)==2:
            pygame.draw.lines(screen,[0,0,0],False,plotpoints,5)
            plotpoints=[]
    pygame.display.flip()
def loadcar(yloc):
    my_car=pygame.image.load('ok1.jpg')
    locationxy=[310,yloc]
    screen.blit(my_car,locationxy)
    pygame.display.flip()
def loadtext(xloc,yloc):
    textstr='location:'+str(xloc)+','+str(yloc)
    text_screen=my_font.render(textstr, True, (255, 0, 0))
    screen.blit(text_screen, (50,50))
   
if __name__=='__main__':
    pygame.init()
    screen=pygame.display.set_caption('hello world!')
    screen=pygame.display.set_mode([640,480])
   
    my_font=pygame.font.SysFont(None,22)
    screen.fill([255,255,255])
    loadtext(310,0)   
    lineleft()
    lineright()
    linemiddle()

    looper=480

    while True:

        for event in pygame.event.get():
            if event.type==pygame.QUIT:
                sys.exit()
            elif event.type == pygame.KEYDOWN:

                if event.key==pygame.K_UP:
                    looper=looper-50
                    if looper                        looper=480
                if event.key==pygame.K_DOWN:
                    looper=looper+50
                    if looper>480:
                       looper=-132
                    loadtext(310,looper)
                screen.fill([255,255,255])                   
                loadtext(310,looper)
                lineleft()
                lineright()
                linemiddle()
                loadcar(looper)

这个例子里直接让背景重绘一下,就不会再像1、2里面那样用空白的rect去覆盖前面的模块了。

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

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

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara membuat gambar bulat dan teks dalam ppt Cara membuat gambar bulat dan teks dalam ppt Mar 26, 2024 am 10:23 AM

Mula-mula, lukis bulatan dalam PPT, kemudian masukkan kotak teks dan masukkan kandungan teks. Akhir sekali, tetapkan isi dan garis besar kotak teks kepada Tiada untuk melengkapkan penghasilan gambar dan teks bulat.

Berapakah kos papan tanda lampu tahap 10 Douyin? Berapa hari yang diperlukan untuk mencipta tanda kipas tahap 10? Berapakah kos papan tanda lampu tahap 10 Douyin? Berapa hari yang diperlukan untuk mencipta tanda kipas tahap 10? Mar 11, 2024 pm 05:37 PM

Pada platform Douyin, ramai pengguna tidak sabar-sabar untuk mendapatkan pensijilan tahap, dan tanda cahaya tahap 10 menunjukkan pengaruh dan pengiktirafan pengguna pada Douyin. Artikel ini akan menyelidiki harga papan lampu tahap 10 Douyin dan masa yang diperlukan untuk mencapai tahap ini untuk membantu pengguna memahami proses tersebut dengan lebih baik. 1. Berapakah kos papan tanda lampu Douyin tahap 10? Harga papan tanda lampu 10 peringkat Douyin akan berbeza-beza bergantung pada turun naik pasaran dan penawaran dan permintaan Harga umum berjulat dari beberapa ribu yuan hingga sepuluh ribu yuan. Harga ini termasuk kos tanda lampu itu sendiri dan kemungkinan bayaran perkhidmatan. Pengguna boleh membeli papan tanda cahaya tahap 10 melalui saluran rasmi Douyin atau agensi perkhidmatan pihak ketiga, tetapi mereka harus memberi perhatian kepada saluran undang-undang semasa membeli untuk mengelakkan transaksi palsu atau penipuan. 2. Berapa hari yang diperlukan untuk mencipta tanda kipas tahap 10? Mencapai tahap 10 tanda cahaya

Bagaimana untuk menambah titik pada teks dalam perkataan? Bagaimana untuk menambah titik pada teks dalam perkataan? Mar 19, 2024 pm 08:04 PM

Apabila kita membuat dokumen Word setiap hari, kadangkala kita perlu menambah titik di bawah perkataan tertentu dalam dokumen, terutamanya apabila terdapat soalan ujian. Untuk menyerlahkan bahagian kandungan ini, editor akan berkongsi dengan anda petua tentang cara menambah titik pada teks dalam Word, saya harap ia dapat membantu anda. 1. Buka dokumen perkataan kosong. 2. Contohnya, tambah titik di bawah perkataan "Cara menambah titik pada teks". 3. Kami mula-mula memilih perkataan "Cara menambah titik pada teks" dengan butang kiri tetikus Ambil perhatian bahawa jika anda ingin menambah titik pada perkataan itu pada masa hadapan, anda mesti menggunakan butang kiri tetikus untuk memilih perkataan mana. . Hari ini kami menambah titik pada perkataan ini, jadi kami telah memilih beberapa perkataan. Pilih perkataan ini, klik kanan dan klik Font dalam kotak fungsi pop timbul. 4. Kemudian sesuatu seperti ini akan muncul

Butiran pemasangan Pygame: mengajar anda langkah demi langkah untuk memasang dan mengkonfigurasi persekitaran pembangunan Butiran pemasangan Pygame: mengajar anda langkah demi langkah untuk memasang dan mengkonfigurasi persekitaran pembangunan Feb 20, 2024 pm 04:54 PM

Butiran pemasangan Pygame: Ajar anda langkah demi langkah untuk memasang dan mengkonfigurasi persekitaran pembangunan, contoh kod khusus diperlukan Pengenalan: Pygame ialah perpustakaan pembangunan permainan berasaskan Python Ia menyediakan pelbagai alatan dan fungsi untuk menjadikan pembangunan permainan mudah dan menarik . Artikel ini akan memperkenalkan secara terperinci cara memasang Pygame, mengkonfigurasi persekitaran pembangunan dan memberikan contoh kod khusus. Bahagian 1: Pasang Pygame Pasang Python: Sebelum anda mula memasang Pygame, anda perlu terlebih dahulu memastikan bahawa Pyt dipasang pada komputer anda.

Berapa lamakah masa yang diambil untuk membersihkan Cincin Elden? Berapa lamakah masa yang diambil untuk membersihkan Cincin Elden? Mar 11, 2024 pm 12:50 PM

Pemain boleh mengalami plot utama permainan dan mengumpul pencapaian permainan apabila bermain di Elden's Circle Ramai pemain tidak tahu berapa lama masa yang diambil untuk membersihkan Elden's Circle Proses pelepasan pemain adalah 30 jam. Berapa lama masa yang diambil untuk membersihkan Cincin Elden Jawapan: 30 jam. 1. Walaupun masa pelepasan 30 jam ini tidak merujuk kepada pas laju seperti induk, ia juga meninggalkan banyak proses. 2. Jika anda ingin mendapatkan pengalaman permainan yang lebih baik atau mengalami plot yang lengkap, maka anda pasti perlu meluangkan lebih banyak masa pada tempoh tersebut. 3. Jika pemain mengumpul kesemuanya, ia akan mengambil masa kira-kira 100-120 jam. 4. Jika anda hanya mengambil garisan utama untuk memberus BOSS, ia akan mengambil masa lebih kurang 50-60 jam. 5. Jika anda ingin mengalami semuanya: 150 jam masa asas.

Bagaimana untuk menetapkan masa untuk menerbitkan karya di Xiaohongshu? Adakah masa untuk menerbitkan karya itu tepat? Bagaimana untuk menetapkan masa untuk menerbitkan karya di Xiaohongshu? Adakah masa untuk menerbitkan karya itu tepat? Mar 24, 2024 pm 01:31 PM

Xiaohongshu, platform yang penuh dengan kehidupan dan perkongsian pengetahuan, membolehkan semakin ramai pencipta untuk menyatakan pendapat mereka secara bebas. Untuk mendapatkan lebih banyak perhatian dan suka pada Xiaohongshu, selain kualiti kandungan, masa penerbitan juga penting. Jadi, bagaimana untuk menetapkan masa untuk Xiaohongshu menerbitkan karya? 1. Bagaimana untuk menetapkan masa untuk menerbitkan karya di Xiaohongshu? 1. Fahami masa aktif pengguna Pertama, adalah perlu untuk menjelaskan masa aktif pengguna Xiaohongshu. Secara umumnya, 8 malam hingga 10 malam dan tengah hari hujung minggu ialah masa apabila aktiviti pengguna tinggi. Walau bagaimanapun, tempoh masa ini juga berbeza bergantung pada faktor seperti kumpulan penonton dan geografi. Oleh itu, untuk lebih memahami tempoh aktif pengguna, adalah disyorkan untuk menjalankan analisis yang lebih terperinci tentang tabiat tingkah laku kumpulan yang berbeza. Dengan memahami kehidupan pengguna

Penjelasan terperinci tentang teknik melihat masa fail Linux Penjelasan terperinci tentang teknik melihat masa fail Linux Feb 21, 2024 pm 01:15 PM

Penjelasan terperinci tentang teknik melihat masa fail Linux Dalam sistem Linux, maklumat masa fail adalah sangat penting untuk pengurusan fail dan perubahan penjejakan. Sistem Linux merekodkan maklumat pertukaran fail melalui tiga atribut masa utama iaitu masa capaian (atime), masa pengubahsuaian (mtime) dan masa perubahan (ctime). Artikel ini memperincikan cara melihat dan mengurus maklumat masa fail ini dan menyediakan contoh kod khusus. 1. Semak maklumat masa fail dengan menggunakan arahan ls dengan parameter -l untuk menyenaraikan fail.

Bermula dengan Pygame: Tutorial Pemasangan dan Konfigurasi Komprehensif Bermula dengan Pygame: Tutorial Pemasangan dan Konfigurasi Komprehensif Feb 19, 2024 pm 10:10 PM

Pelajari Pygame dari awal: tutorial pemasangan dan konfigurasi lengkap, contoh kod khusus diperlukan Pengenalan: Pygame ialah perpustakaan pembangunan permainan sumber terbuka yang dibangunkan menggunakan bahasa pengaturcaraan Python Ia menyediakan pelbagai fungsi dan alatan, membolehkan pembangun mencipta pelbagai jenis dengan mudah permainan. Artikel ini akan membantu anda mempelajari Pygame dari awal, dan menyediakan tutorial pemasangan dan konfigurasi yang lengkap, serta contoh kod khusus untuk membolehkan anda bermula dengan cepat. Bahagian Pertama: Memasang Python dan Pygame Pertama, pastikan anda mempunyai

See all articles