Pygame制作跳跃小球小游戏
首先创建一个游戏窗口,然后再窗口内创建一个小球。以一定的速度移动小球,当小球碰到游戏窗口的边缘时,小球弹回,继续移动。可以按照如下步骤实现该功能。
(1)首先来创建一个游戏窗口,宽和高设置为640×480.代码如下:
import sys #导入sys模块
import pygame #导入pygame模块
pygame.init() #初始化pygame
size=with,height=640,480 #设置窗口大小
screen=pygame.display.set_model(size) #显示窗口
上述代码中,首先导入pygame模块,该模块在上一篇文章中介绍过,直接用pip命令安装即可。然后调用init()方法初始化pygame模块。接下来,设置窗口的宽和高,最后使用display模块显示窗体。display模块的常用方法如下:
方法名 | 功能 |
pygame.display.init | 初始化init模块 |
pygame.display.quit | 结束display模块 |
pygame.display.get_init | 如果display模块已经被初始化,则返回true |
pygame.display.set_mode | 初始化一个准备显示的界面 |
pygame.display.get_surface | 获取当前的surface对象 |
pygame.display.flip | 更新整个待显示的surface对象到屏幕上 |
pygame.display.update | 更新部分内容显示到屏幕上,如果没有参数则与flip功能相同 |
(2)当我们运行上述代码时,会出现一个一闪而过的窗口,这是因为程序执行完毕后会自动关闭。如果让窗口一直显示,需要使用while true循环让程序一直执行,此外,还需要设置关闭按钮。如果不设置关闭按钮,虽然在界面会显示红叉关闭按钮,但点击后就会出现程序无响应的错误,然后强制关闭了程序。
在pycharm演示如下
代码:
运行:
点击红叉就会关闭窗口。
上述代码中,添加了轮询时间监测。pygame.event.get()能够获取事件队列,使用for in遍历事件,然后根据type属性判断事件类型。这里的事件处理方式与GUI类似,如event.type等于pygame.QUIT表示检测到关闭pygame窗口事件,pygame.KEYDOWN表示键盘按下事件,pygame.MOUSEBUTTONDOWN表示鼠标按下事件等。
(3)在窗口中添加小球。我们先准备一张ball.png图片,然后加载图片,最后将图片显示在窗口中,在pycharm中演示如下。
代码:
运行:
上述代码中,使用image模块的load方法加载图片,返回值ball是一个surface对象。surface是用来代表图片的pygame对象,可以对一个surface对象进行涂画、变形、复制等各种操作。事实上,屏幕也只是一个surface,pygame.display.set_mode就返回了一个屏幕surface对象。如果将ball这个surface对象画到screen surface对象,需要使用blit()方法,最后使用display方法更新整个待显示的surface对象到屏幕上。surface对象常用方法如下:
方法名 | 功能 |
pygame.Surface.blit | 将一个图像画到另一个图像上 |
pygame.Surface.convert | 转换图像的像素格式 |
pygame.Surface.convert_alpha | 转换图像的像素格式,包含alpha通道的转换 |
pygame.Surface.fill | 使用颜色填充surface |
pygame.Surface.get_rect | 获取surface的矩形区域 |
(4)上面的小球是静止的,下面我们该让小球动起来了。ball.get_rect()方法返回值ballrect是一个rec对象,该对象有一个move()方法可以用于移动矩形。move(x,y)函数有两个参数,第一个参数是x轴移动的距离,第二个参数是y轴移动的距离。窗体左上角坐标为(0,0)。
为了实现小球不停地移动,将move()函数添加到while循环内,具体代码如下:
我们在原代码的基础上加上了这两行代码。运行后却发现小球一闪而过,但小球并没有真正的笑死,而是移动到窗体之外,此时需要添加碰撞监测的功能。当小球与窗体的任意边缘发生碰撞,则更改小球的移动方向。
代码如下:
在原有代码中添加上面的碰撞判断代码,运行如下
小球在界面飞速运动。然后我们需要控制小球移动的速度。首先介绍一下上面的代码,上面代码中,添加了碰撞监测功能。如果碰到左右边缘,这则更改x轴数据为负数;如果碰到上下边缘,则更改y轴数据为负数。
那么我们怎样控制小球移动的速度呢?这时我们需要添加一个“时钟”来控制程序运行的时间。这时就需要使用pygame的time模块。使用pygame时钟之前,必须先创建clock对象的一个实例,然后再while循环中设置多长时间运行一次。代码如下【也就是最终代码,由于运动效果无法展示,各位还是自行运行查看效果^_^】:
# -*- coding:utf-8 -*-
import sys # 导入sys模块
import pygame # 导入pygame模块pygame.init() # 初始化pygame
size = width, height = 640, 480 # 设置窗口
screen = pygame.display.set_mode(size) # 显示窗口
color = (0, 0, 0) # 设置颜色ball = pygame.image.load("ball.png") # 加载图片
ballrect = ball.get_rect() # 获取矩形区域speed = [5, 5] # 设置移动的X轴、Y轴距离
clock = pygame.time.Clock() # 设置时钟
# 执行死循环,确保窗口一直显示
while True:clock.tick(60) # 每秒执行60次# 检查事件for event in pygame.event.get():if event.type == pygame.QUIT: # 如果点击关闭窗口,则退出sys.exit()ballrect = ballrect.move(speed) # 移动小球# 碰到左右边缘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(color) # 填充颜色screen.blit(ball, ballrect) # 将图片画到窗口上pygame.display.flip() # 更新全部显示pygame.quit() # 退出pygame
上述代码中在上面代码中添加了:
clock=pygame.time.Clock() #设置时钟
以及循环中的
clock.tick(60) #每秒执行60次
这样我们再次运行就会出现小球缓慢移动并碰撞边缘改变方向的效果了。
Pygame制作跳跃小球小游戏相关推荐
- python3+pygame制作的连连看小游戏,好玩,酷炫,
使用Python3+pygame模块制作的连连看小游戏,好玩,酷炫,很适合初学Python的同学练习 连连看源码下载: 长按左侧二维码 2 秒 回复「连连看」即可获取源码 (非本号) 一.运行效果 二 ...
- 手把手教你使用Pygame制作飞机大战小游戏,4万字超详细讲解!
点击上方"早起Python",关注并"星标" 每日接收原创Python干货! 大家好,偷学Python系列是由小甜同学从初学者的角度学习Python的笔记,其特 ...
- cmd小游戏_使用pygame制作Flappy bird小游戏
原文链接: [Python]使用Pygame做一个Flappy bird小游戏(一)mp.weixin.qq.com 最近看到很多大佬用强化学习玩Flappy bird.所以打算也上手玩一玩,但是苦 ...
- python连连看小游戏_利用Python制作一个连连看小游戏,边学边玩!
导语 今天我们将制作一个连连看小游戏,让我们愉快地开始吧~ 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块 环境搭建 安装Python并添加到环 ...
- 【源代码】Python制作的赛车小游戏,逆行飙车
python制作的赛车小游戏,逆行飙车,通过键盘方向键控制 程序运行截图 源代码 import pygame, sys, time, random# pygame 初始化 pygame.init() ...
- Python制作的赛车小游戏源代码,逆行飙车
python制作的赛车小游戏,逆行飙车,通过键盘方向键控制 程序运行截图: 源代码 import pygame, sys, time, random# pygame 初始化 pygame.init() ...
- c语言使用easyX图形库制作打气球小游戏
大一c语言使用easyX图形库制作打气球小游戏 如果你是入门easyX图形库,那么这个打气球小游戏将会是和不错的入门项目选择,easyX开创了可视化窗口,使用户更加直观的了解到对象的变化,总代码以及素 ...
- 学习跃动小球小游戏(cocos creator)
学习跃动小球小游戏 玩法:小球会不断的上下跳动,点击屏幕小球会加速掉落,下面的白色跳板一直在移动,小球需要准确的跳到跳板上才能得分. 效果图 [截图] ball脚本 小球碰撞回调 block脚本 初始 ...
- C语言 弹小球 小游戏(控制台)
C语言实现弹小球游戏 编译环境:vs2019 需求: 小球在控制台界面内不停移动,碰到边界则改变方向,控制棍子接住小球,得分加一,小球没有被接住则游戏结束. 思路: _getch()函数接收a.d两个 ...
- C# 制作贪吃蛇小游戏,最简单的实现
C# 制作贪吃蛇小游戏 目录 画蛇 实现蛇的上下左右移动 随机生成目标物 开始游戏 计分 重新开始 增加难度 死亡判定 1.1 画蛇的一节 Class Element()Graphics g;publ ...
最新文章
- POJ 1177 Picture [离散化+扫描线+线段树]
- loadlibrary failed with error 126:找不到指定模块
- uploadify php处理程序,uploadify 后台处理
- [转]c#调用API截图
- OMP算法实现人脸识别_matlab完整代码
- Spring : Factories这个是什么
- MySQL5.7安装教程(windows .zip)
- 大数据如何应用于食品追溯管理
- 《扩展 jQuery》——2.3 总结
- python实现ID3决策树和CART决策树
- Python学习之Turtle库
- Springboot+jwt+shiro实现用户权限控制
- WIndows禁用笔记本键盘
- 爬虫python下载电影_Python 爬虫实战:分析豆瓣中最新电影的影评
- C语言字母的组合,C语言求字母的全部组合
- 应用程序配置不正确,程序无法启动的问题小结
- 益聚星荣:今年双11,薇娅失去了“全网最低价”?
- 基于单片机红外对管测风速控制系统设计(毕设课设)
- 谷歌收购机器人公司 不满足虚拟世界欲踏进现实
- 树莓派CM4 USB不能使用
热门文章
- Android 锁屏通知 权限获取
- iis mysql安装包下载_配置Windows Server2008+iis+php+mysql所需下载安装包
- word按backspace键不能删除问题
- OPENGL纹理贴图作业分享
- rootkit后门程序开发测试过程
- python 3d绘图立方体_Python绘制立方体
- 【Unity2D入门教程】简单制作战机弹幕射击游戏③C#编写 子弹Laser脚本
- 显卡天梯图vs专业计算卡丽台T4,v100vs混合精度训练
- Jquery之removeClass()
- Part Ⅴ Entertainment 娱乐活动??