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

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

pygame安装方法:http://www.cnblogs.com/GraceSkyer/p/8004004.html

1.Pygame 简介与安装

Python优秀的第三方库SDL:各个操作系统上提供的一种能直接与计算机外设打交道的一个第三方库在这个库基础上做了相关封装

安装:在win平台:“以管理员身份运行”cmd,执行pip install pygamewin平台:“以管理员身份运行”cmd,执行python -m pygame.examples.aliens

Pygame 是Python最经典的2D游戏开发第三方库,也支持3D游戏开发Pygame 是一种游戏开发引擎,基本逻辑具有参考价值

==============================================================================

2.Pygame 最小开发框架及最小游戏

最小开发框架与极简开发框架:

源代码:

 1 # Pygame的Hello World程序,包含了Pygame最小开发框架。
 2 import pygame,sys
 3
 4 # 对pygame内部各功能模块进行初始化创建及变量设置,默认调用
 5 pygame.init()
 6 # 初始化显示窗口,第一个参数是一个二元组,分别表示窗口的宽度和高度
 7 screen = pygame.display.set_mode((600, 400))
 8 # 设置显示窗口的标题内容,参数是一个字符串类型
 9 pygame.display.set_caption("Pygame游戏之旅")
10
11 while True:
12     # 从pygame的事件队列中取出事件,并从队列中删除该事件,例如:键盘按下是一个事件
13     for event in pygame.event.get():
14         # 获得事件类型,并逐类响应;pygame.QUIT是pygame中定义的退出事件常量
15         if event.type == pygame.QUIT:
16             sys.exit()
17     # 对显示窗口进行更新,默认窗口全部重绘
18     pygame.display.update()

Pygame的Hello World程序,包含了Pygame最小开发框架。

sys是python的标准库sys提供python运行时环境变量的操控sys.exit()用于退出结束游戏并退出
==============================================================================

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

需求到实现的三个关键要素:1 壁球:游戏需要一个壁球,通过图片引入2 壁球运动:壁球能上下左右运动(每次向右及向下移动1个像素)3 壁球反弹:壁球能在上下左右边缘反弹(到达边缘后,速度取反即可)

通过链接下载壁球图片:https://python123.io/PY15/PYG02-ball.gif图片保存为gif格式,和.py文件保存在同一个文件夹中。

注意坐标轴体系:窗口左上角坐标(0,0),横轴正向向右,纵轴正向向下。

源代码:

 1 # Pygame壁球小游戏(展示型)
 2 import pygame,sys
 3
 4 pygame.init()
 5 size = width, height = 600, 400
 6 speed = [1,1]
 7 BLACK = 0, 0, 0
 8
 9 screen = pygame.display.set_mode(size)
10 pygame.display.set_caption("Pygame壁球")
11
12 ball = pygame.image.load("PYG02-ball.gif")
13 ballrect = ball.get_rect()
14
15 while True:
16     for event in pygame.event.get():
17         if event.type == pygame.QUIT:
18             sys.exit()
19     ballrect = ballrect.move(speed[0], speed[1])
20     if ballrect.left < 0 or ballrect.right > width:
21         speed[0] = - speed[0]
22     if ballrect.top < 0 or ballrect.bottom > height:
23         speed[1] = - speed[1]
24
25     screen.fill(BLACK)
26     screen.blit(ball, ballrect)
27     pygame.display.update()

Pygame壁球小游戏(展示型)

==============================================================================

4.壁球小游戏(节奏型)与屏幕的帧率设置

需求:壁球可以按照一定速度运动需求到实现的关键要素:壁球速度:如何控制壁球的运动速度

每次循环壁球运动一步;控制循环间隔即可控制速度;(展示型)在尽最大能力运动pygame.time.Clock()  创建一个Clock对象,用于操作时间Clock.tick(fps)      控制帧速度,即窗口刷新速度,表示每秒fps次帧刷新视频中每次展示的静态图像称为帧

源代码:

 1 # Pygame壁球小游戏(节奏型)
 2 import pygame,sys
 3
 4 pygame.init()
 5 size = width, height = 600, 400
 6 speed = [1,1]
 7 BLACK = 0, 0, 0
 8 screen = pygame.display.set_mode(size)
 9 pygame.display.set_caption("Pygame壁球")
10 ball = pygame.image.load("PYG02-ball.gif")
11 ballrect = ball.get_rect()
12 fps = 300
13 fclock = pygame.time.Clock()
14
15 while True:
16     for event in pygame.event.get():
17         if event.type == pygame.QUIT:
18             sys.exit()
19     ballrect = ballrect.move(speed[0], speed[1])
20     if ballrect.left < 0 or ballrect.right > width:
21         speed[0] = - speed[0]
22     if ballrect.top < 0 or ballrect.bottom > height:
23         speed[1] = - speed[1]
24
25     screen.fill(BLACK)
26     screen.blit(ball, ballrect)
27     pygame.display.update()
28     fclock.tick(fps)

Pygame壁球小游戏(节奏型)

==============================================================================

5.壁球小游戏(操控型)与键盘的基本使用

需求:通过键盘的上下左右控制壁球运动速度,规则如下:↑:纵向绝对速度增加1个像素【纵向加速】↓:【纵向减速】←:【横向减速】→:【横向加速】

需求到实现的关键要素:键盘使用:如何获取键盘的操作事件速度调节:根据对应按键调节壁球运动速度

键盘使用Pygame采用事件来对应键盘操作获取事件将得到键盘输入不同按键编写操作函数即可

源代码:

 1 # Pygame壁球小游戏(操控型)
 2 import pygame,sys
 3
 4 pygame.init()
 5 size = width, height = 600, 400
 6 speed = [1,1]
 7 BLACK = 0, 0, 0
 8 screen = pygame.display.set_mode(size)
 9 pygame.display.set_caption("Pygame壁球")
10 ball = pygame.image.load("PYG02-ball.gif")
11 ballrect = ball.get_rect()
12 fps = 300
13 fclock = pygame.time.Clock()
14
15 while True:
16     for event in pygame.event.get():
17         if event.type == pygame.QUIT:
18             sys.exit()
19         elif event.type == pygame.KEYDOWN:
20             if event.key == pygame.K_LEFT:
21                 speed[0] = speed[0] if speed[0] == 0 else (abs(speed[0]) - 1)*int(speed[0]/abs(speed[0]))
22             elif event.key == pygame.K_RIGHT:
23                 speed[0] = speed[0] + 1 if speed[0] > 0 else speed[0] - 1
24             elif event.key == pygame.K_UP:
25                 speed[1] = speed[1] + 1 if speed[1] > 0 else speed[1] - 1
26             elif event.key == pygame.K_DOWN:
27                 speed[1] = speed[1] if speed[1] == 0 else (abs(speed[1]) - 1)*int(speed[1]/abs(speed[1]))
28     ballrect = ballrect.move(speed)
29     if ballrect.left < 0 or ballrect.right > width:
30         speed[0] = - speed[0]
31     if ballrect.top < 0 or ballrect.bottom > height:
32         speed[1] = - speed[1]
33
34     screen.fill(BLACK)
35     screen.blit(ball, ballrect)
36     pygame.display.update()
37     fclock.tick(fps)

Pygame壁球小游戏(操控型)

 
时间: 2024-08-11 07:16:44

【1】【MOOC】Python游戏开发入门-北京理工大学【第二部分-游戏开发之框架】的相关文章

【3】【MOOC】Python游戏开发入门-北京理工大学【第三部分-游戏开发之机制(事件处理机制)】

学习地址链接:http://www.icourse163.org/course/0809BIT021E-1001873001?utm_campaign=share&utm_medium=androidShare&utm_source=qq Pygame事件处理机制 1.Pygame事件处理机制简介 =================================================================================== 2.键盘事件及类型的使用

史上最简单的个人移动APP开发入门--jQuery Mobile版跨平台APP开发

书是人类进步的阶梯. ——高尔基 习大大要求新新人类要有中国梦,鼓励大学生们一毕业就创业.那最好的创业途径是什么呢?就是APP.<构建跨平台APP-jQuery Mobile移动应用实战>就是一本写给没钱没身份没资历的创业小白看的APP书,看完这本书你可以拥有自己的一个APP,不用花钱就能移植到其他移动平台,支持iOS,Android,Windows Phone!!!!!!!!找个最便宜的来练手吧!  小白APP交流Q群:  348632872 清华大学出版社推出的<构建跨平台APP:j

微信小程序开发入门学习(1):石头剪刀布小游戏

从今天起开始捣鼓小程序了2018-12-17   10:02:15 跟着教程做了第一个入门实例有兴趣的朋友可以看看: 猜拳游戏布局 程序达到的效果 猜拳游戏的布局是纵向显示了三个组件:文本组件(text).图像组件(image)和按钮组件(button).在创建小程序工程时,默认建立了两个页面:index 和 logs.我们不需要管 logs,在这个例子中只修改和 index 页面相关的文件,index 是小程序第一个显示的页面,其中 index.wxml 文件是 index 页面的布局文件.

Cordys BOP 4平台开发入门实战演练——While循环流程建模开发及测试

关于While循环 Cordys C3版本中,While循环解释如下: While循环是BPMN组构造,用于一组活动或子流程执行所满足的While条件.在每个循环体开始,进行测试条件,如果测试结果为"假"是则不执行.因此,这组活动或子流程将执行0或多次.While结构用于执行多次循环或根本不执行:也就说,从开始条件是假,将不执行循环.当在循环体内迭代循环,当前循环的打破也是下一次循环迭代的开始.打破循环功能有助于打破或退出循环,继续执行循环体后续活动环节.While结构代表图例如下图1

Cordys BOP 4平台开发入门实战演练——For Each流程建模开发

关于For Each For Each是BPMN组结构,并且体现应该执行消息内每个子单元的活动或子流程.For Each循环使用一个计数器,称为一个详尽描述重复执行相同活动的迭代器.For Each代表图如下图1所示. 图1 迭代器有下述3个数值: 初始迭代器值 增量值 执行条件 在执行条件失败时循环结束.应复制对于结构中"Message Map"的递归元素(Element)的XPath去工作. For Each循环流程实践 (1)新建BPM流程 按下图2所示,用鼠标圈上活动环节,点击

以太坊 DApp 开发入门实战! 用Node.js和truffle框架搭建——区块链投票系统!

第一节 概述 面向初学者,内容涵盖以太坊开发相关的基本概念,并将手把手地教大家如何构建一个 基于以太坊的完整去中心化应用 -- 区块链投票系统. 通过学习,你将掌握: 以太坊区块链的基本知识 开发和部署以太坊合约所需的软件环境 使用高级语言(solidity)编写以太坊合约 使用NodeJS编译.部署合约并与之交互 使用Truffle框架开发分布式应用 使用控制台或网页与合约进行交互 前序知识要求 为了顺利完成,最好对以下技术已经有一些基本了解: 一种面向对象的开发语言,例如:Python,Ru

Flask Web开发入门北京快乐8出售之文件上传

本章北京快乐8出售 dsluntan.com 我们介绍Flask Web开发中涉及的文件上传模块 定义后台接收处理逻辑@app.route('/upload', methods=['POST'])def upload_file():if request.method == 'POST': check if the post request has the file part if 'file' not in request.files: logger.debug('No file part')

Python爬虫从入门到放弃(十一)之 Scrapy框架整体的一个了解

这里是通过爬取伯乐在线的全部文章为例子,让自己先对scrapy进行一个整理的理解 该例子中的详细代码会放到我的github地址:https://github.com/pythonsite/spider/tree/master/jobboleSpider 注:这个文章并不会对详细的用法进行讲解,是为了让对scrapy各个功能有个了解,建立整体的印象. 在学习Scrapy框架之前,我们先通过一个实际的爬虫例子来理解,后面我们会对每个功能进行详细的理解.这里的例子是爬取http://blog.jobb

微信公众号开发入门笔记(四):开发环境搭建

(一)Eclipse+Tomcat本地服务器的搭建及Servlet程序的创建 我们主要在Servlet程序中实现业务逻辑,自然要先熟悉Servlet程序开发环境的搭建及程序的创建. 详见博文:微信公众号开发技术基础(一):Eclipse+Tomcat搭建本地服务器并跑通HelloWorld程序 (二)外网映射工具的准备 从上一篇博文中的数据交互原理中可以看出,我们的本地后台服务器是需要直接和微信服务器进行交互的,而微信服务器必须访问一个公网的地址,无法访问我们本地的地址.因此,需要一个外网映射工