python中的pygame弹球游戏代码_【pygame系列 第三课 弹球游戏-上 】
python我们可以做文字版的游戏,比如猜数字游戏,21点游戏。那python可以做图形界面的游戏吗?偷偷告诉你,用pygame库就可以实现了。pygame是python中专门用来编写游戏的一个引擎库,通过使用它,就可以很快的实现编写图形化的游戏。
小球动图.gif
实现思路:
第一步:创建游戏窗口
第二步:绘制一个弹球
第三步:让球动起来
球动起来的原理实际上就是球的位置发生了改变,位置是由球的x,y坐标决定的,所以只要不断改变球的坐标就可以实现动起来的效果了。
第四步:边界检测
怎样知道球出了边界呢?通过比较球的x,y坐标值与边界的坐标值,从而判断是否出了边界。
1.创建游戏窗口
这个已经非常熟练了,直接看代码。
代码:
import pygame
import sys
pygame.init()
size =width,height=400,300
screen = pygame.display.set_mode(size)
pygame.display.set_caption("弹球游戏")
# 背景白色
bg = (255,255,255)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
screen.fill(bg)
pygame.display.flip() # 更新
效果:
2.绘制一个弹球
绘制一个小球,其实就是绘制一个圆。
代码:
import pygame
import sys
pygame.init()
size =width,height=400,300
screen = pygame.display.set_mode(size)
pygame.display.set_caption("弹球游戏")
# 背景白色
bg = (255,255,255)
# 球的颜色 红色
ball_color = (255,0,0)
# 球的大小 半径
ball_size = 20
# 球的初始位置 设置在窗口中心位置
pos_x,pos_y = width//2-ball_size,height//2-ball_size
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
screen.fill(bg)
# 在窗口上绘制一个圆形 球
pygame.draw.circle(screen,ball_color,[pos_x,pos_y],ball_size)
pygame.display.flip()
效果:
3.让球动起来
小球是绘制出来了,那该怎样让它动起来了呢?物体动其实它的位置发生了改变,在计算机中就是它的坐标,我们只要让球的坐标变化,利用人眼暂留的效应,使得小球看上去在运动一样。
代码:
import pygame
import sys
import random
pygame.init()
size =width,height=400,300
screen = pygame.display.set_mode(size)
pygame.display.set_caption("弹球游戏")
# 背景白色
bg = (255,255,255)
# 球的颜色 红色
ball_color = (255,0,0)
# 球的大小 半径
ball_size = 20
# 球的初始位置 设置在窗口中心位置
pos_x,pos_y = width//2-ball_size,height//2-ball_size
# 设置球的 初始速度
speed_x=random.randint(1,5)
speed_y=random.randint(1,5)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
screen.fill(bg)
# 在窗口上绘制一个圆形 球
pygame.draw.circle(screen,ball_color,[pos_x,pos_y],ball_size)
pygame.display.flip()
# 等待 100ms 避免刷新太快
pygame.time.wait(100)
# 更改位置
pos_x += speed_x
pos_y += speed_y
效果:
4.边界检测
虽然小球可以移动了,但是发现没过一会,小球就跑出窗口了,这个时候,我们需要检测小球是否到达边界,到了就改变运动方向。
代码:
import pygame
import sys
import random
pygame.init()
size =width,height=400,300
screen = pygame.display.set_mode(size)
pygame.display.set_caption("弹球游戏")
# 背景白色
bg = (255,255,255)
# 球的颜色 红色
ball_color = (255,0,0)
# 球的大小 半径
ball_size = 20
# 球的初始位置 设置在窗口中心位置
pos_x,pos_y = width//2-ball_size,height//2-ball_size
# 设置球的 初始速度
speed_x=random.randint(1,5)
speed_y=random.randint(1,5)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
screen.fill(bg)
# 在窗口上绘制一个圆形 球
pygame.draw.circle(screen,ball_color,[pos_x,pos_y],ball_size)
pygame.display.flip()
# 等待 100ms 避免刷新太快
pygame.time.wait(100)
# 如果小球碰到左右边界,改变速度反弹
if pos_x width-ball_size:
speed_x = -speed_x
# 如果小球碰到上下边界,改变速度反弹
if pos_y height-ball_size:
speed_y = -speed_y
# 更改位置
pos_x += speed_x
pos_y += speed_y
效果:
总结:
本文主要讲了如何绘制一个圆形球,如何让球移动起来,以及限制小球移除边界。
pygame.draw.circle(screen,ball_color,[pos_x,pos_y],ball_size) 在窗口上的中心位置绘制一个什么颜色,多大的圆形。
speed_x = -speed_x,speed_y = -speed_y - 号表示取反的意思
pos_x width-ball_size 判断是否出了 上边界 或者 下边界
pos_x += speed_x ,pos_y += speed_y 累加 等效于 pos_x = pos_x+ speed_x
欢迎转载,转载请注明出处!
欢迎关注公众微信号:叶子陪你玩
分享自己的python学习之路
python中的pygame弹球游戏代码_【pygame系列 第三课 弹球游戏-上 】相关推荐
- python中的猜数字实验代码_「gals」python实现推理猜数字游戏Begals - seo实验室
gals Begals是可以和朋友一起玩的一个推理游戏.你的朋友想到一个随机的.没有重复的3位数字,你尝试去猜测它是什么. 每次猜测之后,朋友就会给出3种类型的线索: Bagels:你猜测的3个数都不 ...
- python中不同类型的数据不能相互运算_Python第三课——数据类型与运算(2)
hello大家好,我是你们的小蒟蒻鸭,终于终于有时间写博客了(虽然刚开始期末复习),真的非常非常抱歉,拖更太厉害了.反正还有一个月不到小蒟蒻就要放暑假了!!!(激动.jpg),蒟蒻保证会一周两篇,绝不 ...
- python中列表元素和的代码_使用python的列表中元素的总和
如果"根"总是相同的,你可以用正则表达式来捕获它们. 有了这个解决方案 更改原始列表 . import re l = [(0.14409883378622257, 'count_9 ...
- c#推箱子小游戏代码_用C#制作推箱子小游戏
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading. ...
- python有趣代码-wtfPython―Python中一组有趣微妙的代码【收藏】
wtfPython是github上的一个项目,作者收集了一些奇妙的Python代码片段,这些代码的输出结果会和我们想象中的不太一样: 通过探寻产生这种结果的内部原因,可以让我们对Python里的一些细 ...
- 如何在Python中注释掉一段代码[重复]
本文翻译自:How to comment out a block of code in Python [duplicate] This question already has an answer h ...
- python有趣的代码-介绍wtfPython—Python中一组有趣微妙的代码【收藏】
wtfPython-Python中一组有趣微妙的代码[收藏] wtfPython是github上的一个项目,作者收集了一些奇妙的Python代码片段,这些代码的输出结果会和我们想象中的不太一样: 通过 ...
- Python中sort和sorted函数代码解析
Python中sort和sorted函数代码解析 本文研究的主要是Python中sort和sorted函数的相关内容,具体如下. 一.sort函数 sort函数是序列的内部函数 函数原型: L.sor ...
- 创建二维数组 以及 python中[0 ]* n与[0 for _ in range(n)]的区别与联系
一.浅拷贝于深拷贝 关于浅拷贝于深拷贝:Python 的深拷贝和浅拷贝 直接赋值:其实就是对象的引用(别名). 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象. 深拷贝(deepcopy) ...
最新文章
- IntelliJ IDEA中用快捷键自动创建测试类
- 关于核定区域电网2018—2019年输电价格的通知
- Kubernetes实用技巧
- 哈希表和有序表的简单介绍
- mysql抖动可能的原因,12 | 为什么我的MySQL会“抖”一下?
- PostgreSQL如何使用PLJava支持Java编程
- 用java实现页面搜索功能_关于如何利用矩阵实现搜索功能
- 存储过程中定义sql语句_学习SQL:用户定义的存储过程
- Mysql多实例实施文档
- PHP 7天前的时间戳
- 去除椒盐噪声(简单的matlab代码实践,PSNR评价)
- 软件设计师中级考试经验总结
- 利用easyCHM制作JavaAPI帮助文档
- 数据库的数据文件和日志文件
- UVM中p_sequencer和m_sequencer的用法及其区别
- 【易康eCognition】面向对象的图像分类学习
- OpenStack使用Placement做资源管理时虚拟机无法调度的一次排错记录
- git master和main 的纠缠
- 猜拳游戏android代码,android 简易的猜拳小游戏
- 2019电商生意经(三):内容化,跨界与反击
热门文章
- QQMusic.exe竟然占用了8080端口
- 2019蓝桥杯省赛B组填空题 迷宫
- 牛津大学计算机科学硕士,牛津大学计算机科学硕士牛津大学计算机科学硕士.pdf...
- 错误:UnmappedTerms cannot be cast to org.elasticsearch.search.aggregations.bucket.terms.StringTerms
- 2010-02-28 传智播客—Android(三)数据存储之三SQLite嵌入式数据库
- jeecg屏蔽聊天窗口
- 生死系列--WuJie
- selenium 有界模式正常,无界模式报错
- Ubuntu 20.04桌面版 安装Antlr4
- HTML中bgcolor与background-color的区别