CSDN话题挑战赛第2期
参赛话题:学习笔记

*学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?

小学生python游戏编程6----碰边变颜色的小球

  • 前言
  • 主要设计
    • 1、界面设计
    • 2、游戏的实现
  • 应用知识点
    • 1、python知识点
      • 1.1 类的定义
      • 1.2 类对象的调用
      • 1.3 列表的复习
    • 2、pygamezero知识点
      • 2.1 画圆
      • 2.2 画距形
      • 2.3 小球的反弹
      • 2.4 小球的变色
    • 3 可记的英语单词
  • 功能录屏
  • 代码实现
  • 总结
  • 源码获取

前言

主要设计

1、界面设计

游戏主界面以窗口形式给出,小球碰到边缘即随机变色,窗体中间显示颜色的英语单词,通过观察小球的颜色变化,窗体中间的颜色提示也在变化,引导学生观看一段时间,强化每个单词的英语意思与底边颜色框一致,在无意识中学习8个英语单词的书写及意思。

2、游戏的实现

通过定义小球的类来实现以上设计功能
class Qiu: # 定义小球类
x = None # 小球的x坐标
y = None # 小球的y坐标
vx = None # 小球x方向的速度
vy = None # 小球y方向的速度
radius = None # 小球的半径
color = None # 小球的颜色

# 使用构造函数传递参数对对象初始化
def __init__(self, x, y, vx, vy, radius, color):self.x = xself.y = yself.vx = vxself.vy = vyself.radius = radiusself.color = colordef draw(self):# 绘制一个填充圆,坐标(x,y),半径radius,颜色colorscreen.draw.filled_circle((self.x, self.y), self.radius, self.color)screen.draw.text("颜色:" + self.color, (WIDTH / 2 - 100, HEIGHT / 2), fontsize=30,fontname='simhei', color='black')screen.draw.filled_rect(Rect(WIDTH / 2 - 100, HEIGHT / 2 + 30, 200, 10), self.color)def update(self):  # 更新小球的位置、速度self.x += self.vx  # 利用x方向速度更新x坐标self.y += self.vy  # 利用y方向速度更新y坐标

应用知识点

1、python知识点

1.1 类的定义

Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。
类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
方法:类中定义的函数。
类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
类就像一个橡皮图章,而对象就是图章印出来的一个实例。类是创建相同类型对象的蓝图或模板,决定了能够得到什么样的对象。例如,如果今天我们创建了一个拥有x,y,vx,vy 属性和color 属性的 Qiu类,那么通过这个 Qiu 类创建的所有对象,都会有x 属性和 y 属性——这一类对象所拥有的属性不会多也不会少。
总之,类是一种 OOP 工具,能使程序员对所要研究的问题进行抽象。在 OOP 中,抽象是用编程对象来表示现实世界中的对象的行为。程序对象也不需要拥有现实世界中对象的所有细节。这使得编程逻辑变得相对简单。
class Qiu: # 定义小球类

1.2 类对象的调用

xiaoQiu = Qiu(WIDTH / 2, HEIGHT / 2, 3, 5, 30, ‘red’) # 定义Qiu对象
此方面的详细内容可以查python相关书本或网上资料,很多了。

1.3 列表的复习

定义列表及调用列表中的一项
#候选的8种颜色组成的列表
Colors = [‘red’, ‘orange’, ‘yellow’, ‘green’, ‘blue’, ‘pink’, ‘grey’, ‘purple’]

2、pygamezero知识点

2.1 画圆

绘制一个填充圆,坐标(x,y),半径radius,颜色color screen.draw.filled_circle(坐标(x,y),半径radius,颜色color )
screen.draw.circle((400, 300), 100, ‘white’)语句绘制了一个圆圈。其中screen表示屏幕,draw为绘制的英文单词,circle表示圆圈;后面的3个参数,(400, 300)表示圆的中心位置坐标,100表示圆的半径,'white’表示圆的颜色为白色。这里要是使用了filled_circle函数。filled是填充的意思,下划线_用来连接filled和circle两个英文单词,合起来就是填充圆的意思。

2.2 画距形

Rect(WIDTH / 2 - 100, HEIGHT / 2 + 30, 200, 10) 这句话的意思是,利用Rect函数定义一个距形


screen.draw.filled_rect(Rect(WIDTH / 2 - 100, HEIGHT / 2 + 30, 200, 10), self.color),给上面定义的距形填充颜色。 screen.draw.filled_rect两个参数,一个rect,一个颜色

2.3 小球的反弹

当小球碰到左右边界时,x方向速度反转
if self.x > WIDTH - self.radius or self.x < self.radius:
self.vx = -self.vx
# 当小球碰到上下边界时,y方向速度反转
if self.y > HEIGHT - self.radius or self.y < self.radius:
self.vy = -self.vy

2.4 小球的变色

    # 当小球碰到上下边界时,y方向速度反转if self.y > HEIGHT - self.radius or self.y < self.radius:self.vy = -self.vyself.color = Colors[random.randint(0, 7)]

3 可记的英语单词

重点记的:Colors = [‘red’, ‘orange’, ‘yellow’, ‘green’, ‘blue’, ‘pink’, ‘grey’, ‘purple’]
新增:filled填充
circle 圆
rect 距形
radius 半径
定义类时,没用英语,而是有意用了Qiu(球的拼音),变量或编程时不想用英语,也可以用汉语拼音,甚至汉字,不过不注张用汉字,拼音用用没事

功能录屏

变色的小球

代码实现

import pgzrun  # 导入游戏库
from pgzero.rect import Rect
import random
from pgzero.screen import Screen
screen: Screen  # 类型标注WIDTH = 800  # 设置窗口的宽度
HEIGHT = 600  # 设置窗口的高度
TITLE = "猜猜几种颜色"
# 候选的8种颜色组成的列表
Colors = ['red', 'orange', 'yellow', 'green', 'blue', 'pink', 'grey', 'purple']class Qiu:  # 定义小球类x = None  # 小球的x坐标y = None  # 小球的y坐标vx = None  # 小球x方向的速度vy = None  # 小球y方向的速度radius = None  # 小球的半径color = None  # 小球的颜色# 使用构造函数传递参数对对象初始化def __init__(self, x, y, vx, vy, radius, color):self.x = xself.y = yself.vx = vxself.vy = vyself.radius = radiusself.color = colordef draw(self):# 绘制一个填充圆,坐标(x,y),半径radius,颜色colorscreen.draw.filled_circle((self.x, self.y), self.radius, self.color)screen.draw.text("颜色:" + self.color, (WIDTH / 2 - 100, HEIGHT / 2), fontsize=30,fontname='simhei', color='black')screen.draw.filled_rect(Rect(WIDTH / 2 - 100, HEIGHT / 2 + 30, 200, 10), self.color)def update(self):  # 更新小球的位置、速度self.x += self.vx  # 利用x方向速度更新x坐标self.y += self.vy  # 利用y方向速度更新y坐标# 当小球碰到左右边界时,x方向速度反转if self.x > WIDTH - self.radius or self.x < self.radius:self.vx = -self.vx# 当小球碰到上下边界时,y方向速度反转if self.y > HEIGHT - self.radius or self.y < self.radius:self.vy = -self.vyself.color = Colors[random.randint(0, 7)]xiaoQiu = Qiu(WIDTH / 2, HEIGHT / 2, 3, 5, 30, 'red')  # 定义Qiu对象def draw():  # 绘制模块,每帧重复执行screen.fill('white')  # 白色背景xiaoQiu.draw()  # 绘制小球def update():  # 更新模块,每帧重复操作xiaoQiu.update()  # 更新小球的位置、速度pgzrun.go()  # 开始执行游戏

总结

通过此次的《变色的小球》游戏实现,让我通过定义类,使用类,开启了python编程的更深一点的探索,通过颜色列表的学习与使用,英语与游戏可以互动学习。

源码获取

关注博主后,私聊博主免费获取
需要技术指导,育娃新思考,企业软件合作等更多服务请联系博主

今天是以此模板持续更新此育儿专栏的第 6 /50次。
可以关注我,点赞我、评论我、收藏我啦。

小学生python游戏编程6----碰边变颜色的小球相关推荐

  1. 小学生python游戏编程4----拼图游戏

    小学生python游戏编程4----拼图游戏 主要设计 应用知识点 1.python知识点 1.1 函数定义与使用 1.2 random 2.pygamezero知识点 2.1 基本框架,取上节中讲到 ...

  2. 小学生python游戏编程arcade----基本知识3

    小学生python游戏编程arcade----基本知识3 前言 多摄象头显得分,title地图加载,精灵分层管理,移动精灵 1.多摄象头显得分 1.1得分 1.2 两个摄象机的绘制 1.3 效果图 1 ...

  3. 小学生python游戏编程arcade----可旋转的坦克的发射子弹

    小学生python游戏编程arcade----可旋转的坦克的发射子弹 前言 小学生python游戏编程arcade----可旋转坦克的发射子弹 1.可旋转坦克的发射子弹 1.1 子弹的类 1.2 发射 ...

  4. 小学生python游戏编程arcade----动画图片实现爆炸效果

    小学生python游戏编程arcade----动画图片实现爆炸效果 前言 动画图片实现爆炸效果 1.爆炸类的的实现 1.1爆炸图片 1.2 类的定义 1.3 爆炸类的引用 1.4 爆炸类的更新 1.5 ...

  5. 小学生python游戏编程2----飞机大战1

    小学生python游戏编程2----飞机大战1 前言 主要设计 1.界面设计 2.动态背景 3.记分的实现 4.射击游戏功能的实现 5.声音的实现 应用知识点 1.python知识点 1.1 角色创建 ...

  6. 小学生python游戏编程arcade----excel调用

    小学生python游戏编程arcade----excel调用 前言 小学生python游戏编程arcade----excel调用 1.excel文件 1.1 excel表头 1.2 excel文件 1 ...

  7. 小学生python游戏编程arcade----爆炸粒子类

    小学生python游戏编程arcade----爆炸粒子类 前言 1.1 参数设置 粒子加速下降的速度.如果不需要,则为0 粒子退出的速度 粒子移动的速度.范围为2.5<-->5,设置为2. ...

  8. 小学生python游戏编程arcade----基本知识1

    小学生python游戏编程arcade----基本知识 前言 基本知识 1.简单窗体 2.试着添加角色及背景 3.场景 4.角色控制及物理引擎 总结 源码获取 前言 前面章节分享试用了pyzero,p ...

  9. 小学生python游戏编程arcade----敌人自动面向角色并开火

    小学生python游戏编程arcade----敌人自动面向角色并开火 前言 敌人自动攻击角色的实现 1. 1.1 计算角度,使用敌人面向角色 1.2 自动生成各色子弹,不是通过调用图片 1.3 控制敌 ...

  10. 小学生python游戏编程arcade----灯光示例

    小学生python游戏编程arcade----灯光示例 前言 灯光阴影效果 1.灯光效果 1.1 玩家灯光效果 1.2 代码 2.灯光效果 2.1 软效果 2.2码实现 3.硬效果 3.1 灯光硬效果 ...

最新文章

  1. jedis连接sentinel示例程序
  2. Bootstrap link 引入3文件
  3. 创建基于MailKit和MimeKit的.NET基础邮件服务
  4. RandomForestClassifier(随机森林检测每个特征的重要性及每个样例属于哪个类的概率)...
  5. asterisk架构
  6. Kafka Producer源码简述
  7. ubuntu 文件服务器--samba的安装和配置
  8. linux线程handler,Handler从源码角度理解
  9. 网曝Facebook中国员工跳楼身亡,总部态度冷漠,华人群体抗议:为死者讨回公道...
  10. pap认证过程_PPP协议当中LCP协商过程详解和PAP认证原理介绍
  11. linux下声卡的安装
  12. php android 图片上传,android上传图片到PHP的过程详解
  13. MongoDB安装配置(Windows)
  14. 一种一致性HASH算法的实现方法,附核心代码
  15. 图解SM2算法流程(合)
  16. html调用矢量小图标的方法,微信小程序里引入SVG矢量图标的方法
  17. 七夕送女友什么礼物有意义、送女朋友实用的七夕礼物清单
  18. redis——jedis的使用以及springboot整合redis
  19. java jdk1.8.0_221 安装步骤
  20. proteus教程——使能端口控制8255

热门文章

  1. Github注册中,邮箱验证通不过解决办法
  2. HTML5内嵌文本编辑器(H5文本编辑器 俗称手机版网站专用)
  3. cpuv(cpuv2和v3有什么区别)
  4. 机器学习 | 特征选择(Feature Selection)
  5. c语言编程的头文件是什么,C语言头文件到底是什么?
  6. python编写移位密码实现加密与解密
  7. 云计算机教室详细建设方案,计算机教室更新建设方案.doc
  8. 微型计算机任务名称,任务五微型计算机的硬件组成.ppt
  9. 程序员人生之路(强烈推荐,分析的透彻!)
  10. 调用谷歌翻译API(FREE)的java代码