一、前引


#已经学习完了:
#1.数据结构:集合、元组、字典
#2.函数
#3.类和对象
#4.继承与多态

#1.规划编程项目:
#(1)你想做什么什么样功能的项目?
# 接小球游戏,碰到挡板时自动反弹
#(2)功能有哪些?
# 自由运动的小球
# 小球触碰到势必会发生反弹
# 键盘左右移动挡板
# 小球触碰到挡板会发生反弹。
#(3)如何实现它的功能?
# 类Ball:初始化小球,小球自由移动,触边反弹等功能;
# 类Board:初始化挡板,挡板左右移动,触碰挡板反弹;
# 类Game:创建小球,挡板对象,小球一直在空间运动。

# 用伪代码==转化==>实际代码

#(4)你的时间规划?开始时间,结束时间。
# 30分钟,设计项目和伪代码实践
# 40分钟,球移动/碰撞反弹
# 20分钟,挡板移动/碰撞反弹


二、伪代码:创建小球+挡板对象

#伪代码:类似于流程图,用在程序的一开始,用来描写和帮助写出程序。

#------------------------------------------------------
#1.(注释)
# 游戏效果:
# 小球在空中自由的运动,当碰到左右移动的挡板时会发生反弹

# (1)导入模块
# (2)运动的小球
# (3)挡板,可以让小球反弹
# (4)创建小球和挡板对象,运行游戏
 

#2.伪代码:

# 导入模块
# 运动的小球
# class Ball():
#     def __init__(self): #小球基本属性
#         pass
#
#     def move(self): #小球自由移动
#         pass
#
#     def checkbound(self): #检测小球触边反弹。
#         pass
#
# # 挡板,可以让小球反弹
# class Board():
#     def __init__(self): #挡板基本属性
#         pass
#
#     def go_left(self): #左移
#         pass
#
#     def go_right(self): #右移
#         pass
#
#     def collide(self,ball):  #挡板与球发生碰撞,接着反弹
#         pass
# #游戏运行
# class Game():
#     def __init__(self):
#         pass
#     def run(self):
#         pass
#
# game=Game()

#3.预制代码(创建了小球对象和挡板对象)
#turtle.Pen()是一个方法

## 游戏效果:
# 小球在空中自由的运动,当碰到左右移动的挡板时会发生反弹
# 导入模块
import turtle
# 运动的小球
class Ball(turtle.Pen):def __init__(self): #小球基本属性turtle.Pen.__init__(self)self.penup()self.speed(0)self.shape("circle")def move(self): #小球自由移动passdef checkbound(self): #检测小球触边反弹。pass# 挡板,可以让小球反弹
class Board(turtle.Pen):def __init__(self): #挡板基本属性turtle.Pen.__init__(self)self.penup()self.speed(0)self.shape("square")#正方形self.shapesize(1,5,1)#设置挡板的长度# stretch_wid:垂直方向的拉伸比例(宽度方向)# stretch_len:水平方向的拉伸比例(长度方向)# outline:形状的轮廓宽度self.goto(0,-200) #挡板的初始位置。def go_left(self): #左移passdef go_right(self): #右移passdef collide(self,ball):  #挡板与球发生碰撞,接着反弹pass
#游戏运行
class Game():def __init__(self):turtle.Screen().setup(600,600)self.ball = Ball() #小球对象self.board = Board() #挡板对象passdef run(self):passgame=Game()input()

三、小球墙面反弹

#(4)小球移动效果。
## 游戏效果:
# 小球在空中自由的运动,当碰到左右移动的挡板时会发生反弹

# 导入模块
import turtle
# 运动的小球
class Ball(turtle.Pen):def __init__(self): #小球基本属性turtle.Pen.__init__(self)self.penup()self.speed(0)self.shape("circle")self.spd=10,5#元组 值(10, 5),赋值给 self.spd-------------------------------------------------1def move(self): #小球自由移动#self.goto(self.xcor()+10, self.ycor()-5)#出错1self.goto(self.xcor()+self.spd[0], self.ycor()+self.spd[1])#上面元祖的第一个、第二个----修改2def checkbound(self): #检测小球触边反弹if self.xcor()>300 or self.xcor()<-300:#-x---------------------------------------------3self.spd=-self.spd[0],self.spd[1]#水平取反,反弹
# if self.xcor()>300 or self.xcor()<-300: #错误修改2
#     self.xcor()-10
#     self.ycor()+5if self.ycor()>300 or self.ycor()<-300:#yself.spd=self.spd[0],-self.spd[1]
# if self.ycor()>300 or self.ycor()<-300: #错误修改2
#     self.xcor()+10
#     self.ycor()-5# 挡板,可以让小球反弹
class Board(turtle.Pen):def __init__(self): #挡板基本属性turtle.Pen.__init__(self)self.penup()self.speed(0)self.shape("square")#正方形self.shapesize(1,5,1)#设置挡板的长度self.goto(0,-200) #挡板的初始位置。def go_left(self): #左移passdef go_right(self): #右移passdef collide(self):  #挡板与球发生碰撞,接着反弹pass
#游戏运行
class Game():def __init__(self):turtle.Screen().setup(600,600)self.ball = Ball() #小球对象self.board = Board() #挡板对象def run(self):while True: #球斜着飞(右上角)-----------------------------------4self.ball.move()self.ball.checkbound()game=Game()
game.run()input()

四、小球挡板反弹

(5)小球挡板反弹。
游戏效果:
小球在空中自由的运动,当碰到左右移动的挡板时会发生反弹

# 导入模块
import turtle
# 运动的小球
class Ball(turtle.Pen):def __init__(self): #小球基本属性turtle.Pen.__init__(self)self.penup()self.speed(0)self.shape("circle")#self.spd=10,5#修改======================================2self.spd=-1,-5def move(self):#self.goto(self.xcor()+10, self.ycor()-5)#出错1self.goto(self.xcor()+self.spd[0], self.ycor()+self.spd[1])#修改1def checkbound(self): #检测小球触边反弹if self.xcor()>300 or self.xcor()<-300:self.spd=-self.spd[0],self.spd[1]
# if self.xcor()>300 or self.xcor()<-300: #错误修改2
#     self.xcor()-10
#     self.ycor()+5if self.ycor()>300 or self.ycor()<-300:self.spd=self.spd[0],-self.spd[1]
# if self.ycor()>300 or self.ycor()<-300: #错误修改2
#     self.xcor()+10
#     self.ycor()-5# 挡板,可以让小球反弹
class Board(turtle.Pen):def __init__(self): #挡板基本属性turtle.Pen.__init__(self)self.penup()self.speed(0)self.shape("square")#正方形self.shapesize(1,5,1)#设置挡板的长度,# stretch_wid, stretch_len, outline,# 像素,每个单位对应 20 个像素,# 因此:挡板的宽度(水平方向)是 5 * 20 = 100 个像素self.goto(0,-200) #挡板的初始位置。def go_left(self): #左移passdef go_right(self): #右移passdef collide(self,ball):  #挡板与球发生碰撞,接着反弹====================================================1if (-210<=ball.ycor()<=-190and abs(self.xcor()-ball.xcor())<50):   #abs是差的绝对值 挡板的宽度为 100,因此 50 是其一半的宽度ball.spd=ball.spd[0],-ball.spd[1]#0=x,1=y#游戏运行
class Game():def __init__(self):turtle.Screen().setup(600,600)self.ball = Ball() #小球对象self.board = Board() #挡板对象def run(self):while True: #球斜着飞(右上角)self.ball.move()self.ball.checkbound()self.board.collide(self.ball)#调用方法#=========================================2game=Game()
game.run()input()

五、小球挡板移动_小球完整

import turtle# 运动的小球
class Ball(turtle.Pen):def __init__(self):  # 小球基本属性turtle.Pen.__init__(self)self.penup()self.speed(0)self.shape("circle")self.spd = -1, -5def move(self):self.goto(self.xcor() + self.spd[0], self.ycor() + self.spd[1])def checkbound(self):  # 检测小球触边反弹if self.xcor() > 300 or self.xcor() < -300:self.spd = -self.spd[0], self.spd[1]if self.ycor() > 300 or self.ycor() < -300:self.spd = self.spd[0], -self.spd[1]# 挡板,可以让小球反弹
class Board(turtle.Pen):def __init__(self):  # 挡板基本属性turtle.Pen.__init__(self)self.penup()self.speed(0)self.shape("square")  # 正方形self.shapesize(1, 5, 1)  # 设置挡板的长度self.goto(0, -200)  # 挡板的初始位置。# 事件监听screen = turtle.Screen()screen.onkey(self.go_left, "Left")screen.onkey(self.go_right, "Right")screen.listen()def go_left(self):  # 左移x = self.xcor()  # 获取当前挡板的x坐标if x > -275:  # 限制挡板的左边界self.setx(x - 20)  # 向左移动20像素def go_right(self):  # 右移x = self.xcor()  # 获取当前挡板的x坐标if x < 275:  # 限制挡板的右边界self.setx(x + 20)  # 向右移动20像素def collide(self, ball):  # 挡板与球发生碰撞,接着反弹if (-210 <= ball.ycor() <= -190) and (abs(self.xcor() - ball.xcor()) < 50):  # abs是差的绝对值ball.spd = ball.spd[0], -ball.spd[1]# 游戏运行
class Game():def __init__(self):turtle.Screen().setup(600, 600)self.ball = Ball()  # 小球对象self.board = Board()  # 挡板对象def run(self):while True:  # 球斜着飞(右上角)self.ball.move()self.ball.checkbound()self.board.collide(self.ball)  # 调用方法game = Game()
game.run()input()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/87570.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/87570.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/87570.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win11 2025开机禁用微软账号登录,改本地用户登录,品牌预装机福音

今天开箱了品牌商出厂系统一台华为笔记本&#xff0c;开机提示连接wifi并需要登录微软账号&#xff0c;其中过程实在缓慢&#xff0c;而且老是提示自动更新&#xff0c;速度太慢了&#xff0c;等的花都谢了&#xff0c;进到桌面大概得要30-40分钟&#xff0c;还不如本地用户登录…

【嵌入式ARM汇编基础】-ELF文件格式内部结构详解(三)

ELF文件格式内部结构详解(三) 文章目录 ELF文件格式内部结构详解(三)12、动态部分和动态加载13、依赖加载(需要)14、程序重定位14.1 静态重定位14.2 动态重定位14.3 全局偏移表 (GOT)14.4 过程链接表 (PLT)12、动态部分和动态加载 ELF 文件格式中的 .dynamic 部分用于指…

HTML知识复习2

文章目录 HTML5简介什么是HTML5HTML5优势 新增语义化标签新增布局标签新增状态标签新增列表标签新增文本标签 新增表单功能表单控件新增属性input新增属性值 新增多媒体标签视频标签音频标签 HTML5兼容性处理 HTML5简介 什么是HTML5 HTML5 是新一代的 HTML 标准&#xff0c;2…

栈(Stack)和队列(Queue)

文章目录 前言1. 栈(Stack)1.1 什么是栈1.2 栈的常用操作1.3 栈的模拟实现1.4 栈的应用场景1.4.1 元素序列处理1.4.2 字符串反转1.4.3 括号匹配1.4.4 逆波兰表达式求值1.4.5 栈的压入、弹出序列1.4.6 最小栈1.4.7 递归转循环 1.5 概念区分1.5.1 数据结构中的栈1.5.2 JVM中的虚拟…

5G MEC四大核心挑战技术解析报告

一、MEC园区部署挑战:数据本地化与低时延接入 痛点深度解析 数据不出园区:工业质检、医疗影像等敏感业务需数据在本地闭环处理。但运营商基站与企业MEC间若经公网绕行,时延超50ms且存在泄露风险。L2网络局限:传统L2接入网无法实现基站→UPF的智能路由,导致业务流绕行城域…

【硬核拆解】英伟达Blackwell芯片架构如何重构AI算力边界?

前言 前些天发现了一个巨牛的人工智能免费学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站 一、Blackwell诞生的算力危机&#xff08;2025现状&#xff09; graph TD A[2025年AI算力需求] --> B[千亿参数模型训练能耗…

【深度学习模块】图像的相对位置编码

这个是一个常用的模块&#xff0c;就是我们可以对输入的特征嵌入位置编码。 位置编码&#xff08;Positional Encoding&#xff09;是一种将空间位置信息嵌入到特征中的方法&#xff0c;通常用于帮助模型更好地理解特征的空间关系。 这里介绍的这个是相对位置编码&#xff0c;…

osg加入实时光照SilverLining 天空和3D 云

OSG系列文章目录 文章目录 OSG系列文章目录一、前言官网的介绍&#xff1a; 二、编译官网例子 一、前言 osg本身也可以加入动态云&#xff0c;但是效果有点差强人意&#xff0c;这里我们使用sundog公司的动态云&#xff1a;SilverLining 天空和 3D 云。 官网的介绍&#xff1…

spring-ai-alibaba 1.0.0.2 学习(十二)——聊天记忆扩展包

学习spring-ai时提到过&#xff0c;spring-ai除了内置的InMemoryChatMemoryRepository&#xff0c;还提供jdbc、cassandra、neo4j三个扩展包。 而spring-ai-alibaba则提供了jdbc、redis、elasticsearch三个扩展包。 两者都提供了jdbc扩展包&#xff0c;有什么区别呢&#xff…

c语言-指针(数组)练习2

题目&#xff1a;将数组中n个元素按逆序存放并打印出来&#xff0c;使用函数封装与指针 思路&#xff1a; 1.定义一个数组arr[5]和用于存放数组大小&#xff08;数组大小通过sizeof关键字来进行计算&#xff09;的变量len&#xff1b; 2.创建三个函数initArr、printArr、rev…

Redis服务器

Redis&#xff0c;一款Key-Value型内存数据库 常用于网站开发场景 Redis服务器只发布了Linux版本 Redis服务器安装&#xff0c;2种办法 自动安装 apt install redis-server手动编译安装 从官网下载源码&#xff0c;编译&#xff0c;部署 1 安装redis apt install redis-s…

LeetCode 第91题:解码方法

题目描述&#xff1a; 一条包含字母A-Z的消息通过以下映射进行了编码 1-A ...... 26-Z 要特别注意&#xff0c;11106可以映射为AAJF或KJF 06不是一个合法编码 给你一个只含数字的非空字符串s&#xff0c;请计算并返回解码方法的总数。如果没有合法的方法解码整个字符串&#xf…

Rocky Linux 9 源码包安装Mysql8

Rocky Linux 9 源码包安装Mysql8 大家好我是星哥&#xff0c;之前介绍了&#xff0c;Rocky Linux 9 源码包安装Mysql5.7。 本文将介绍如何在Rocky Linux 9操作系统上&#xff0c;从源码一步步安装MySQL 8&#xff0c;为您提供一个稳定、高效且可控的数据库解决方案。 为什么…

AI小智项目全解析:软硬件架构与开发环境配置

AI小智项目全解析&#xff1a;软硬件架构与开发环境配置 一、项目整体架构 AI小智是一款基于ESP32的智能物联网设备&#xff0c;集成了语音交互、边缘计算等功能。整体系统架构如下&#xff1a; 终端设备&#xff1a;ESP32模组作为核心通信方式&#xff1a; WebSocket实现实…

设计模式之上下文对象设计模式

目录 一、模式介绍 二、架构设计 三、Demo 示例 四、总结 一、模式介绍 上下文对象&#xff08;Context Object&#xff09;模式 最早由《Core J2EE Patterns》第二版提出&#xff0c;其核心目标是在多层或多组件间共享与当前作用域&#xff08;如一次请求、一次会话、一次…

@Linux服务器加域退域

文章目录 **一、加入Active Directory域****1. 准备工作****2. 配置步骤****步骤1&#xff1a;验证网络和DNS****步骤2&#xff1a;发现域****步骤3&#xff1a;加入域****步骤4&#xff1a;配置SSSD&#xff08;可选&#xff09;****步骤5&#xff1a;配置sudo权限&#xff08…

鸿蒙系统(HarmonyOS)4.2 设备上实现无线安装 APK 并调试

在鸿蒙系统&#xff08;HarmonyOS&#xff09;4.2 设备上实现无线安装 APK 并调试的步骤与 Android 类似&#xff0c;但需注意鸿蒙系统的特殊设置。以下是详细操作指南&#xff1a; 鸿蒙系统特殊准备 开启开发者选项&#xff1a; - 设置 > 关于手机 > 连续点击"H…

MyBatis时间戳查询实战指南

在 MyBatis 中通过时间戳&#xff08;Timestamp&#xff09;作为查询条件&#xff0c;需注意数据库时间类型与 Java 类型的映射。以下是具体实现方式&#xff1a; 一、Java 实体类与数据库字段映射 实体类定义 使用 java.sql.Timestamp 或 java.time.LocalDateTime&#xff08;…

【Verilog硬件语言学习笔记4】FPGA串口通信

串口通信是系统设计中比较基部分&#xff0c;其原理其实也很通俗易懂。单次建立通信会传输8个bit&#xff0c;其时序也很简单&#xff0c;这里就不再赘述了。其对应的实例代码如下所示&#xff1b; 首先是接受部分&#xff08;因为我的变量命名也很规范&#xff0c;通俗易懂&a…

Go 语言安装教程(Windows 系统)

2025年07月02日 准备工作 确认系统为 Windows 7 及以上版本&#xff08;推荐 Windows 10/11&#xff09;。64 位系统选择 amd64 版本安装包&#xff0c;32 位系统选择 386 版本。确保安装目录&#xff08;默认 C:\Program Files\Go\&#xff09;有至少 1GB 空间。 下载安装包…