Pygame游戏开发入门(1)-开发框架
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)-开发框架的更多相关文章
- pygame游戏开发入门例子
# *_* coding:utf-8 *_* # 开发团队:中国软件开发团队# 开发人员:Administrator# 开发时间:2019/3/23 11:16# 文件名称:pygame_demo# ...
- 【python游戏编程之旅】第八篇---pygame游戏开发常用数据结构
本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 上一个博客我们一起学习了pygame中冲突检测技术:http://www.cnblogs.com/msxh/ ...
- .Net Core ORM选择之路,哪个才适合你 通用查询类封装之Mongodb篇 Snowflake(雪花算法)的JavaScript实现 【开发记录】如何在B/S项目中使用中国天气的实时天气功能 【开发记录】微信小游戏开发入门——俄罗斯方块
.Net Core ORM选择之路,哪个才适合你 因为老板的一句话公司项目需要迁移到.Net Core ,但是以前同事用的ORM不支持.Net Core 开发过程也遇到了各种坑,插入条数多了也特别 ...
- Python游戏开发:pygame游戏开发常用数据结构
一.数组与列表 数组可以理解为简化的列表.像我们之前使用的pygame.sprite.Group这样的精灵组,也是一个列表.列表的元素是可变的,它具有添加.删除.搜索.排序等多种方法. 1.一维列表 ...
- Python和Pygame游戏开发 pdf
Python和Pygame游戏开发 目录 第1章 安装Python和Pygame 11.1 预备知识 11.2 下载和安装Python 11.3 Windows下的安装说明 11.4 Mac OS X ...
- Pygame 游戏开发 All In One
Pygame 游戏开发 All In One Pygame Pygame is a library for digital arts, games, music, making, and a comm ...
- 【1】【MOOC】Python游戏开发入门-北京理工大学【第二部分-游戏开发之框架】
学习地址链接:http://www.icourse163.org/course/0809BIT021E-1001873001?utm_campaign=share&utm_medium=and ...
- Egret白鹭H5小游戏开发入门(二)
前言: 昨天的文章中简单的介绍了Egret白鹭引擎从安装到基本的使用配置等问题,今天着重介绍H5小游戏开发的起步阶段,如Wing面板的使用,素材的处理,类的说明,开始布局等等. 整体概况: 根据上一篇 ...
- Egret白鹭H5小游戏开发入门(三)
前言: 在上一篇文章中着重介绍了H5小游戏开发的起步阶段,如Wing面板的使用,素材的处理,类的说明等等,那么今天主要是涉及到场景的创建,loading的修改等等的代码编写. 对于这一节,我在讲解的过 ...
随机推荐
- luogu 2622 关灯问题II
题目大意: 有一些灯,有些开关可以控制这些灯,给出矩阵表示控制 对于矩阵中的a i j 表示第i个开关控制第j个灯的情况 若元素为1 表示当灯开着的时候,关掉灯 若元素为0 表示无操作 若元素为-1 ...
- NOI.AC #31 MST —— Kruskal+点集DP
题目:http://noi.ac/problem/31 好题啊! 题意很明白,对于有关最小生成树(MST)的题,一般是要模拟 Kruskal 过程了: 模拟 Kruskal,也就是把给出的 n-1 条 ...
- POJ1743 Musical Theme 最长重复子串 利用后缀数组
POJ1743 题目意思是求不重叠的最长相同变化的子串,输出该长度 比如1 2 3 4 5 6 7 8 9 10,最长长度为5,因为子串1 2 3 4 5 和 6 7 8 9 10变化都一样的 思路: ...
- 搜索goog
http://www.tech365.net/share/24.html 64.233.160.132|64.233.168.17|64.233.168.167|64.233.160.98|64.23 ...
- bzoj 1801: [Ahoi2009]chess 中国象棋【dp】
注意到一行只能放012个炮,我们只需要知道列的状态,不用状压行 所以设f[i][j][k]表示前i行有j列有1个炮,有k列有2个炮的方案数 然后分情况讨论转移就行了 #include<cstdi ...
- bzoj 1800: [Ahoi2009]fly 飞行棋【枚举】
在圆里所以没有平行四边形,n^4枚举点即可 #include<iostream> #include<cstdio> using namespace std; const int ...
- 爬虫—Selenium使用
Selenium使用 Selenium是一个自动化测试工具,可以驱动浏览器器执行特定的动作,如点击,下拉等.同时还可以获取浏览器当前呈现页面的源代码,可见即可爬. 1.准备 我们使用谷歌Chrome浏 ...
- Java中的抽象类详解,它存在的意义在哪里?
学习抽象类前先理解下面这段话: 问你个问题,你知道什么是"东西"吗?什么是"物体"吗? "麻烦你,小王.帮我把那个东西拿过来好吗" 在生活中 ...
- jenkins手把手教你从入门到放弃02-jenkins在Windows系统安装与配置(详解)
简介 上一篇对jenkins有了大致了解之后,那么我们就开始来安装一下jenkins. Jenkins安装 一.安装Java环境 1.你需要做的第一件事情就是在你的机器上安装Java环境.Jenkin ...
- 基于ASP.Net Core开发一套通用后台框架记录-(总述)
写在前面 本系列博客是本人在学习的过程中搭建学习的记录,如果对你有所帮助那再好不过.如果您有发现错误,请告知我,我会第一时间修改. 前期我不会公开源码,我想是一点点敲代码,不然复制.粘贴那就没意思了. ...