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的修改等等的代码编写. 对于这一节,我在讲解的过 ...
随机推荐
- 并不对劲的spoj1811
题意是求两个字符串的lcs,两个串都只包含小写字母. 本题既可以用后缀自动机,又可以用后缀数组. 对于后缀自动机,就是一道模板题,直接对于一个字符串建后缀自动机再用另一个串查询就行. 对于后缀数组,其 ...
- 【POI 2010】 Pilots
[题目链接] 点击打开链接 [算法] 单调队列 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 3000010 ...
- js实现IOS上删除app时颤抖动画j函数
欢迎提供更好的方法! <!--http://www.cnblogs.com/webzhangnan/p/3244920.html --> <html> <head> ...
- jquery input 赋值和取值
记录一下: 在写一个input赋值,二话不说就直接利用了$('#xx').val()来进行取值和赋值,取值ok,赋值后利用alert显示正确,但是在html上并没有正确的显示出来,后来改为使用如下代码 ...
- js实现页面的全屏与退出
1.在data里面定义: data(){ return{ isScreen:false, } } //是否显示全屏 fullScreen(event){ this.isScreen = !this.i ...
- webpack+vue-cli中proxyTable配置接口地址代理详细解释
在vue-cli项目中config目录里面的index.js配置接口地址代理,详细解释如下图所示:
- spring cloud config搭建说明例子(三)-添加actuator
添加心跳 服务端 ConfigServer pom.xml添加actuator包 <dependency> <groupId>org.springframework.cloud ...
- 使用JS分页 <span> beta 3.0 完成封装的分页
<html> <head> <title>分页</title> <style> #titleDiv{ width:500px; backgr ...
- IDEA破解方法以及快捷键大全
IntelliJ IDEA2017.3 激活 - CSDN博客:https://blog.csdn.net/dc2222333/article/details/78582131 Eclipse和Int ...
- ajax怎么理解?
Ajix是创建交互式网页的前端网页开发技术,不是一种语言,ajax是基于http来传输数据的,他是利用浏览器提供操作http的接口(XMLHttpRequest或者activeXobject),来操作 ...