pygame 学习之旅——第一个小游戏

【 推荐教学视频:

Python游戏开发入门_中国大学MOOC(慕课)  http://www.icourse163.org/learn/BIT-1001873001?tid=1001966001#/learn/content?type=detail&id=1003532113&cid=1004193419

嵩天教授的Python游戏开发教程(pygame)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili  https://www.bilibili.com/video/av19574503?p=3

基本框架:

import pygame,sys

pygame.init()
screen = pygame.display.set_mode((600,400))  #界面宽高
pygame.display.set_caption("第一个小游戏")  #标题

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

小球碰壁:

让球以某速度向某方向运动,碰壁后反方向运动:

(事先下载ball.png作为小球)

import pygame, sys
pygame.init()
size = width,height = 600, 400
speed = [1,1]
BLACK = 0,0,0
screen = pygame.display.set_mode(size)
pygame.display.set_caption("pygame壁球")
ball = pygame.image.load("ball.png")
#pygame.image.load(filename)
#将filename路径下的图像载入游戏,支持JPG、PNG、GIF(非动画)等13重常用的格式。

ballrect = ball.get_rect()
#surface 对象  ball.get_rect()
#Pygame 使用内部定义的Surface对象表示所有载入的图像,
# 其中.get_rect()方法返回一个覆盖图像的矩形Rect对象(外切矩形)
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
    ballrect = ballrect.move(speed[0],speed[1])
    if ballrect.left < 0 or ballrect.right > width:
        speed[0] = -speed[0]
    if ballrect.top<0 or ballrect.bottom > height :
        speed[1] = - speed[1]

    screen.fill(BLACK)
    # screen.fill(color):
    # ——>显示窗口背景填充颜色,采用RGB色彩体系。
    # 由于壁球不断运动,运动后原有位置将默认为填充白色,因此需要不断刷新。

    screen.blit(ball, ballrect)
    # screen.blit(src,dest)
    # 将一个图像绘制在另一个图像之上,即将src绘制在dest的位置之上。通过Rect对象引导对壁球的绘制。
    pygame.display.update()

 

 

此时会发现球运动的速度太快了! 

改进撞球:(使速度与屏幕相适应)

import pygame, sys
pygame.init()
size = width,height = 600, 400
speed = [1,1]
BLACK = 0,0,0
screen = pygame.display.set_mode(size)
pygame.display.set_caption("pygame壁球")
ball = pygame.image.load("ball.png")
ballrect = ball.get_rect()
fps = 300 #Frames per second 每秒帧率参数
fclock = pygame.time.Clock() #创建一个Clock对象,用于操作时间
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
    ballrect = ballrect.move(speed[0],speed[1])
    if ballrect.left < 0 or ballrect.right > width:
        speed[0] = -speed[0]
    if ballrect.top<0 or ballrect.bottom > height :
        speed[1] = - speed[1]
    screen.fill(BLACK)
    screen.blit(ball, ballrect)
    pygame.display.update()
    fclock.tick(fps)
    # clock.tick(framerate)
    # 控制帧速度,即窗口刷新速度,例如:clock.tick(100)表示每秒钟100次帧刷新
    # 视频中每次展示的静态图像称为帧

键盘使用:

 上下左右键可以改变速度

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值