pygame库的安装 pip install pygame

pygame最小开发框架

#Pygame Hello World Game
import pygame,sys #引入pygame和sys(python标准库) pygame.init() #初始化模块创建及变量及设置,默认调用
screen = pygame.display.set_mode((600,400)) #初始化显示窗口,元祖值为宽高
pygame.display.set_caption("Python游戏之旅") #窗体标题设置
#获取事件并逐类响应
while True: #无限循环,直到python运行时退出结束
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit() #游戏退出
pygame.display.update() #刷新屏幕

最小开发框架图示:

壁球小游戏(展示型)与图像的基本使用

1)壁球:游戏需要一个壁球,通过图片引入(小球图片位置:https://python123.io/PY15/PYG02-ball.gif)

2)壁球运动:壁球要能够上下左右移动

3)壁球反弹:壁球要能够在上下左右边缘反弹

笛卡尔坐标系图示:

反弹:

与边缘垂直的速度改为反方向运动即 S=-S

壁球小游戏(展示型)代码:

import pygame,sys

pygame.init()
size = width,hight = 600,400
speed = [1,1]
BLACK = 0,0,0
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Pygame壁球")
ball = pygame.image.load("PYG02-ball.gif") #将()中路径下的图像载入游戏,支持jpg、png、gif等13种常见格式
ballrect = 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 > hight:
speed[1] = -speed[1] screen.fill(BLACK)
screen.blit(ball,ballrect)
pygame .display.update()

ball = pygame.image.load("PYG02-ball.gif")

#将()中路径下的图像载入游戏,支持jpg、png、gif等13种常见格式

ballrect = ball.get_rect()

#pygame使用内部定义的Surface对象表示所有载入的图像,.get_rect()方法返回一个覆盖图像的矩形Rect对象

Rect对象

Rect对象有一些重要属性,例如:

top,bottom,left,right表示上下左右

width,height表示宽度、高度

ballrect.move(x,y)

矩形移动一个偏移量(x,y),即在横轴方向移动x像素,纵轴方向移动y像素,xy为整数

if ballrect.left < 0 or ballrect.right > width:
        speed[0] = -speed[0]
    if ballrect.top < 0 or ballrect.bottom > hight:
        speed[1] = -speed[1]

遇到左右两侧,横向速度取反;

遇到上下两侧,纵向速度取反;

screen.fill(color)

显示窗口背景填充为color的颜色,采用RGB色彩体系。由于壁球在不断运动,

运动后原有位置将默认填充白色,因此要不断刷新背景色

screen.blit(src,dest)

将一个图像绘制在另一个图像上,即将src绘制到dest位置上。通过Rect对象一道对壁球的绘制。

(让图像跟着矩形移动而移动)

未完待续 ... ...

本文为博主学习笔记,转载需注明来源;

学习视频所属:中国大学MOOC 北京理工大学 嵩天 黄天羽老师https://www.icourse163.org/course/BIT-1001873001

 

Pygame游戏开发入门(1)-开发框架的更多相关文章

  1. pygame游戏开发入门例子

    # *_* coding:utf-8 *_* # 开发团队:中国软件开发团队# 开发人员:Administrator# 开发时间:2019/3/23 11:16# 文件名称:pygame_demo# ...

  2. 【python游戏编程之旅】第八篇---pygame游戏开发常用数据结构

    本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 上一个博客我们一起学习了pygame中冲突检测技术:http://www.cnblogs.com/msxh/ ...

  3. .Net Core ORM选择之路,哪个才适合你 通用查询类封装之Mongodb篇 Snowflake(雪花算法)的JavaScript实现 【开发记录】如何在B/S项目中使用中国天气的实时天气功能 【开发记录】微信小游戏开发入门——俄罗斯方块

    .Net Core ORM选择之路,哪个才适合你   因为老板的一句话公司项目需要迁移到.Net Core ,但是以前同事用的ORM不支持.Net Core 开发过程也遇到了各种坑,插入条数多了也特别 ...

  4. Python游戏开发:pygame游戏开发常用数据结构

    一.数组与列表 数组可以理解为简化的列表.像我们之前使用的pygame.sprite.Group这样的精灵组,也是一个列表.列表的元素是可变的,它具有添加.删除.搜索.排序等多种方法. 1.一维列表 ...

  5. Python和Pygame游戏开发 pdf

    Python和Pygame游戏开发 目录 第1章 安装Python和Pygame 11.1 预备知识 11.2 下载和安装Python 11.3 Windows下的安装说明 11.4 Mac OS X ...

  6. Pygame 游戏开发 All In One

    Pygame 游戏开发 All In One Pygame Pygame is a library for digital arts, games, music, making, and a comm ...

  7. 【1】【MOOC】Python游戏开发入门-北京理工大学【第二部分-游戏开发之框架】

    学习地址链接:http://www.icourse163.org/course/0809BIT021E-1001873001?utm_campaign=share&utm_medium=and ...

  8. Egret白鹭H5小游戏开发入门(二)

    前言: 昨天的文章中简单的介绍了Egret白鹭引擎从安装到基本的使用配置等问题,今天着重介绍H5小游戏开发的起步阶段,如Wing面板的使用,素材的处理,类的说明,开始布局等等. 整体概况: 根据上一篇 ...

  9. Egret白鹭H5小游戏开发入门(三)

    前言: 在上一篇文章中着重介绍了H5小游戏开发的起步阶段,如Wing面板的使用,素材的处理,类的说明等等,那么今天主要是涉及到场景的创建,loading的修改等等的代码编写. 对于这一节,我在讲解的过 ...

随机推荐

  1. 洛谷 P1965 转圈游戏 —— 快速幂

    题目:https://www.luogu.org/problemnew/show/P1965 居然真的就只是 ( x + m * 10k % n ) % n 代码如下: #include<ios ...

  2. springcloud 向Eureka中注册服务异常java.net.ConnectException: Connection refused: connect

    异常如下: 通过debug发现,服务端的url地址仍然是默认的http://localhost:8761/eureka/apps/,也就是说yml文件中配置没有生效,检查后发现yml中相关配置多写了一 ...

  3. Rails 插入代码与注释

    醉了醉了,在原来那个表格最后加了然后更新博客,然后最后写的内容就没了.来来回回试了n次都一样.不得已新开一个    插入代码  <% ... %>  打印值  <%= ... %&g ...

  4. sql server数据库占用cpu太大,使用sys.dm_exec_query_stats查询优化

    查询sql语句占用 CPU详细信息: SELECT (SELECT TOP 1 SUBSTRING(s2.text,statement_start_offset / 2+1 , ( (CASE WHE ...

  5. python使用ddt模块对用例执行操作

    import time import unittest import ddt from selenium import webdriver TEST_URL = "http://www.ba ...

  6. python自动化测试学习笔记-6excel操作xlwt、xlrd、xlutils模块

    python中通过xlwt.xlrd和xlutils操作xls xlwt模块用于在内存中生成一个xls/xlsx对象,增加表格数据,并把内存中的xls对象保存为本地磁盘xls文件; xlrd模块用于把 ...

  7. Selct 大全

    添加option $("#ID option").each(function(){ if($(this).val()==111){ $(this).remove(); } }); ...

  8. 232 Implement Queue using Stacks 用栈来实现队列

    使用栈来实现队列的如下操作: push(x) -- 将一个元素放入队列的尾部.pop() -- 从队列首部移除元素.peek() -- 返回队列首部的元素.empty() -- 返回队列是否为空.注意 ...

  9. 面向过程与面向对象引入三大特性&&事务

    1.面向过程 int a = 10;int b =5;int c = a+b; int r1 = 10;int r2 = 5;double c = r1*r1*3.14 - r2*r2*3.14 缺点 ...

  10. 24 C#的类和对象

      类是C#面向对象编程的基本单元.一个类都可以包含2种成员:字段和方法. 1)类的字段代表类中被处理的数据(变量): 2)类的方法代表对这些数据的处理过程或用于实现某种特定的功能,方法中的代码往往需 ...