pygame初体验

2021年2月15日 / 31次阅读 / Last Modified 2021年2月17日
pygame

pygame还在继续开发中,已经20年了,很nice,它基于SDL库,good,为了给小孩培养编程兴趣,我先学了!

看了点资料,随便测试了一点点代码:

import sys
import random
import time
import pygame


size = width, height = 800, 600
speed = [1,1]

pygame.init()
screen = pygame.display.set_mode(size)
pygame.display.set_caption('Here is topleft title')
clock = pygame.time.Clock()

img = pygame.image.load('intro_ball.gif')
imgrect = img.get_rect()


while True:
    # frame rate per second
    clock.tick(240)
    # event list
    for event in pygame.event.get():
        print(event)
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit(0)
    # adjust speed
    if imgrect.left<0 or imgrect.right>width:
        speed[0] = -speed[0]
    if imgrect.top<0 or imgrect.bottom>height:
        speed[1] = -speed[1]
    # draw and flip
    imgrect = imgrect.move(speed)
    screen.fill((random.randint(0,255),
                 random.randint(0,255),
                 random.randint(0,255)))
    screen.blit(img, imgrect)
    pygame.display.flip()

一个典型的event forever loop,clock.tick可以控制loop的频率,不知道是如何实现的?肯定不是time.sleep。

pygame.event.get()返回的是list,在一个loop中,可能会产生多个event。

screen.fill填入背景颜色,tuple对应的是RGB的3个值。

screen.blit将img对象的数据搬运到imgrect所确定的位置,blit是个专用词汇。

pygame.display.flip(),更新整个画面,也可以用pygame.display.update(),不带参数,一样的效果!update可以带参数,对画面进行局部更新。

好了,准备开始写游戏了!

-- EOF --

本文链接:https://www.pynote.net/archives/3498

留言区

《pygame初体验》有2条留言

您的电子邮箱地址不会被公开。 必填项已用*标注

  • 麦新杰

    pos = pos.move(speed) is the same as pos.move_ip(speed),两种方式都会更新pos。 [回复]

    • 麦新杰

      pygame.Rect对象有很多方法都有_ip这种方法,函数式 or OOP style [回复]


前一篇:
后一篇:

More


©Copyright 麦新杰 Since 2019 Python笔记

go to top