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系列 第三课 弹球游戏-上 】相关推荐

  1. python中的猜数字实验代码_「gals」python实现推理猜数字游戏Begals - seo实验室

    gals Begals是可以和朋友一起玩的一个推理游戏.你的朋友想到一个随机的.没有重复的3位数字,你尝试去猜测它是什么. 每次猜测之后,朋友就会给出3种类型的线索: Bagels:你猜测的3个数都不 ...

  2. python中不同类型的数据不能相互运算_Python第三课——数据类型与运算(2)

    hello大家好,我是你们的小蒟蒻鸭,终于终于有时间写博客了(虽然刚开始期末复习),真的非常非常抱歉,拖更太厉害了.反正还有一个月不到小蒟蒻就要放暑假了!!!(激动.jpg),蒟蒻保证会一周两篇,绝不 ...

  3. python中列表元素和的代码_使用python的列表中元素的总和

    如果"根"总是相同的,你可以用正则表达式来捕获它们. 有了这个解决方案 更改原始列表 . import re l = [(0.14409883378622257, 'count_9 ...

  4. c#推箱子小游戏代码_用C#制作推箱子小游戏

    usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading. ...

  5. python有趣代码-wtfPython―Python中一组有趣微妙的代码【收藏】

    wtfPython是github上的一个项目,作者收集了一些奇妙的Python代码片段,这些代码的输出结果会和我们想象中的不太一样: 通过探寻产生这种结果的内部原因,可以让我们对Python里的一些细 ...

  6. 如何在Python中注释掉一段代码[重复]

    本文翻译自:How to comment out a block of code in Python [duplicate] This question already has an answer h ...

  7. python有趣的代码-介绍wtfPython—Python中一组有趣微妙的代码【收藏】

    wtfPython-Python中一组有趣微妙的代码[收藏] wtfPython是github上的一个项目,作者收集了一些奇妙的Python代码片段,这些代码的输出结果会和我们想象中的不太一样: 通过 ...

  8. Python中sort和sorted函数代码解析

    Python中sort和sorted函数代码解析 本文研究的主要是Python中sort和sorted函数的相关内容,具体如下. 一.sort函数 sort函数是序列的内部函数 函数原型: L.sor ...

  9. 创建二维数组 以及 python中[0 ]* n与[0 for _ in range(n)]的区别与联系

    一.浅拷贝于深拷贝 关于浅拷贝于深拷贝:Python 的深拷贝和浅拷贝 直接赋值:其实就是对象的引用(别名). 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象. 深拷贝(deepcopy) ...

最新文章

  1. IntelliJ IDEA中用快捷键自动创建测试类
  2. 关于核定区域电网2018—2019年输电价格的通知
  3. Kubernetes实用技巧
  4. 哈希表和有序表的简单介绍
  5. mysql抖动可能的原因,12 | 为什么我的MySQL会“抖”一下?
  6. PostgreSQL如何使用PLJava支持Java编程
  7. 用java实现页面搜索功能_关于如何利用矩阵实现搜索功能
  8. 存储过程中定义sql语句_学习SQL:用户定义的存储过程
  9. Mysql多实例实施文档
  10. PHP 7天前的时间戳
  11. 去除椒盐噪声(简单的matlab代码实践,PSNR评价)
  12. 软件设计师中级考试经验总结
  13. 利用easyCHM制作JavaAPI帮助文档
  14. 数据库的数据文件和日志文件
  15. UVM中p_sequencer和m_sequencer的用法及其区别
  16. 【易康eCognition】面向对象的图像分类学习
  17. OpenStack使用Placement做资源管理时虚拟机无法调度的一次排错记录
  18. git master和main 的纠缠
  19. 猜拳游戏android代码,android 简易的猜拳小游戏
  20. 2019电商生意经(三):内容化,跨界与反击

热门文章

  1. QQMusic.exe竟然占用了8080端口
  2. 2019蓝桥杯省赛B组填空题 迷宫
  3. 牛津大学计算机科学硕士,牛津大学计算机科学硕士牛津大学计算机科学硕士.pdf...
  4. 错误:UnmappedTerms cannot be cast to org.elasticsearch.search.aggregations.bucket.terms.StringTerms
  5. 2010-02-28 传智播客—Android(三)数据存储之三SQLite嵌入式数据库
  6. jeecg屏蔽聊天窗口
  7. 生死系列--WuJie
  8. selenium 有界模式正常,无界模式报错
  9. Ubuntu 20.04桌面版 安装Antlr4
  10. HTML中bgcolor与background-color的区别