建立内部网站需要多少钱专业app开发
web/
2025/9/29 1:17:56/
文章来源:
建立内部网站需要多少钱,专业app开发,access 数据库做网站,dw个人网页制作教程学生目录 专栏导读之前的课程1、小球类设计2、挡板类的设计3、砖块类4、砖块与小球的边界碰撞检测5、检测到碰撞#xff0c;删除砖块#xff0c;改变运动方向完整版代码总结 专栏导读 #x1f338; 欢迎来到Python办公自动化专栏—Python处理办公问题#xff0c;解放您的双手 … 目录 专栏导读之前的课程1、小球类设计2、挡板类的设计3、砖块类4、砖块与小球的边界碰撞检测5、检测到碰撞删除砖块改变运动方向完整版代码总结 专栏导读 欢迎来到Python办公自动化专栏—Python处理办公问题解放您的双手 ️ 博客主页请点击—— 一晌小贪欢的博客主页求关注 该系列文章专栏请点击——Python办公自动化专栏求订阅 此外还有爬虫专栏请点击——Python爬虫基础专栏求订阅 此外还有python基础专栏请点击——Python基础学习专栏求订阅 文章作者技术和水平有限如果文中出现错误希望大家能指正 ❤️ 欢迎各位佬关注 ❤️ 之前的课程
pygame课程课程名称第1课pygame安装链接https://blog.csdn.net/weixin_42636075/article/details/130512509第2课pygame加载图片链接https://blog.csdn.net/weixin_42636075/article/details/130562606第3课画图小程序链接https://blog.csdn.net/weixin_42636075/article/details/130801371第4课颜色监测(迷宫小游戏)链接https://blog.csdn.net/weixin_42636075/article/details/130804267第5课音乐播放器链接https://blog.csdn.net/weixin_42636075/article/details/130811078第6课贪吃蛇小游戏链接https://blog.csdn.net/weixin_42636075/article/details/132341210第7课打砖块游戏链接https://blog.csdn.net/weixin_42636075/article/details/137239564
1、小球类设计 1、小球的大小(球的半径)、初始坐标、速度 self.radius半径 self.pos [x,y]初始坐标 self.velocity [2, -2]速度self.velocity[0]--x轴移动self.velocity[1]--y轴移动 2、小球绘制方法 pygame.draw.circle(窗口对象, 颜色(RGB-元组), 初始位置(列表[x,y]), 半径(整数)) 3、小球的移动方法(x轴、y轴的移动) 如果小球的x轴坐标 小球半径或者小球的x轴坐标 屏幕的宽度就设置方向相反 同理y轴 # 球体类
class Ball:def __init__(self, radius):self.radius radiusself.pos [screen_width // 2, screen_height - 20 - radius]self.velocity [2, -2]def draw(self, surface):pygame.draw.circle(surface, WHITE, self.pos, self.radius)def update(self):self.pos[0] self.velocity[0]self.pos[1] self.velocity[1]# print(self.pos)# 碰到墙壁反弹# print(screen_width - self.radius)if self.pos[0] self.radius or self.pos[0] (screen_width - self.radius):# self.pos[0] -self.pos[0]self.velocity[0] * -1# if self.pos[0] 0:# self.pos[0] -self.pos[0]# print(screen_height - self.radius)if self.pos[1] self.radius or self.pos[1] (screen_height - self.radius):self.velocity[1] * -1# if self.pos[1] 0:# self.pos[1] -self.pos[1]
2、挡板类的设计 1、挡板的宽x高 self.width width self.height height 2、挡板的初始坐标 self.pos [screen_width // 2 - width // 2, screen_height - 20] 3、挡板的速度因为只在x轴运动所以y轴为0 self.velocity [-5, 0] 4、挡板的绘制,x1,y1矩形左上角坐标点 x2,y2矩形右下角坐标点 pygame.draw.rect((窗口对象, 颜色(RGB-元组), (x1,y1, x2,y2), 0, 0) 5、挡板的移动 接收键盘的事件(左键和右键)设置限制不可以超出屏幕外面 # 挡板类
class Paddle:def __init__(self, width, height):self.width widthself.height heightself.pos [screen_width // 2 - width // 2, screen_height - 20]self.velocity [-5, 0]def draw(self, surface):pygame.draw.rect(surface, WHITE, (self.pos[0], self.pos[1], self.width, self.height), 0, 0)def update(self):keys pygame.key.get_pressed()if keys[pygame.K_LEFT] and self.pos[0] 0:self.pos[0] self.velocity[0]if keys[pygame.K_RIGHT] and self.pos[0] screen_width - self.width:self.pos[0] - self.velocity[0]
3、砖块类 1、砖块的摆放坐标宽、高、 颜色 2、绘制砖块 pygame.draw.rect(surface, self.color, self.rect) class Brick:def __init__(self, x, y, width, height, color):self.rect pygame.Rect(x, y, width, height)self.color colordef draw(self, surface):pygame.draw.rect(surface, self.color, self.rect)4、砖块与小球的边界碰撞检测
def check_collision(ball, brick):# 检查球与砖块的左右边界碰撞if (brick.rect.x - ball.radius ball.pos[0] brick.rect.x brick.rect.width ball.radius) and (brick.rect.y ball.pos[1] brick.rect.y brick.rect.height):return 1 # 返回1表示碰撞发生在砖块的左右边界# 检查球与砖块的上下边界碰撞if (brick.rect.y - ball.radius ball.pos[1] brick.rect.y brick.rect.height ball.radius) and (brick.rect.x ball.pos[0] brick.rect.x brick.rect.width):return 2 # 返回2表示碰撞发生在砖块的上下边界return 05、检测到碰撞删除砖块改变运动方向
def update_bricks(ball, bricks):score 0for brick in bricks[:]:if check_collision(ball, brick) 1:# 处理碰撞效果比如删除砖块或改变球的方向bricks.remove(brick)ball.velocity[0] * -1score 10breakelif check_collision(ball, brick) 2:bricks.remove(brick)ball.velocity[1] * -1score 10break# 可能还需要更新分数或其他游戏状态return score完整版代码
import math
import randomimport pygame
import sys# 球体类
class Ball:def __init__(self, radius):self.radius radiusself.pos [screen_width // 2, screen_height - 20 - radius]self.velocity [2, -2]def draw(self, surface):pygame.draw.circle(surface, WHITE, self.pos, self.radius)def update(self):self.pos[0] self.velocity[0]self.pos[1] self.velocity[1]# print(self.pos)# 碰到墙壁反弹# print(screen_width - self.radius)if self.pos[0] self.radius or self.pos[0] (screen_width - self.radius):# self.pos[0] -self.pos[0]self.velocity[0] * -1# if self.pos[0] 0:# self.pos[0] -self.pos[0]# print(screen_height - self.radius)if self.pos[1] self.radius or self.pos[1] (screen_height - self.radius):self.velocity[1] * -1# if self.pos[1] 0:# self.pos[1] -self.pos[1]# 挡板类
class Paddle:def __init__(self, width, height):self.width widthself.height heightself.pos [screen_width // 2 - width // 2, screen_height - 20]self.velocity [-5, 0]def draw(self, surface):pygame.draw.rect(surface, WHITE, (self.pos[0], self.pos[1], self.width, self.height), 0, 0)def update(self):keys pygame.key.get_pressed()if keys[pygame.K_LEFT] and self.pos[0] 0:self.pos[0] self.velocity[0]if keys[pygame.K_RIGHT] and self.pos[0] screen_width - self.width:self.pos[0] - self.velocity[0]class Brick:def __init__(self, x, y, width, height, color):self.rect pygame.Rect(x, y, width, height)self.color colordef draw(self, surface):pygame.draw.rect(surface, self.color, self.rect)def check_collision(ball, brick):# 检查球与砖块的左右边界碰撞if (brick.rect.x - ball.radius ball.pos[0] brick.rect.x brick.rect.width ball.radius) and (brick.rect.y ball.pos[1] brick.rect.y brick.rect.height):return 1 # 返回1表示碰撞发生在砖块的左右边界# 检查球与砖块的上下边界碰撞if (brick.rect.y - ball.radius ball.pos[1] brick.rect.y brick.rect.height ball.radius) and (brick.rect.x ball.pos[0] brick.rect.x brick.rect.width):return 2 # 返回2表示碰撞发生在砖块的上下边界return 0def update_bricks(ball, bricks):score 0for brick in bricks[:]:if check_collision(ball, brick) 1:# 处理碰撞效果比如删除砖块或改变球的方向bricks.remove(brick)ball.velocity[0] * -1score 10breakelif check_collision(ball, brick) 2:bricks.remove(brick)ball.velocity[1] * -1score 10break# 可能还需要更新分数或其他游戏状态return scoredef create_explosion(brick):# 创建一个表示爆炸效果的对象或动画passdef update_explosions(explosions, bricks):for explosion in explosions[:]:# 更新爆炸效果if explosion.is_finished():explosions.remove(explosion)# 如果爆炸与砖块碰撞移除砖块if explosion.intersects(brick):bricks.remove(brick)if __name__ __main__:# 初始化Pygamepygame.init()# 设置屏幕大小screen_width, screen_height 640, 480screen pygame.display.set_mode((screen_width, screen_height))# 设置标题和时钟pygame.display.set_caption(Bounce Game)clock pygame.time.Clock()# 定义颜色WHITE (255, 255, 255)BLACK (0, 0, 0)RED (255, 0, 0)# 创建球体和挡板ball Ball(10)paddle Paddle(80, 10)# 创建砖块bricks []for x in range(0, screen_width, 80): # 假设每个砖块宽度为80像素for y in range(0, screen_height // 4, 20): # 假设每个砖块高度为40像素brick Brick(x 2, y 2, 80 - 2, 20 - 2, (255, 255, 255)) # 白色砖块bricks.append(brick)# 得分变量score 0# 游戏主循环running Truewhile running:for event in pygame.event.get():if event.type pygame.QUIT:running False# 更新球体和挡板的位置ball.update()paddle.update()# print(ball.pos, paddle.pos)# 检测球体是否碰到挡板if ball.pos[1] ball.radius paddle.pos[1]:if ball.pos[0] paddle.pos[0] or ball.pos[0] paddle.pos[0] paddle.width:# running Falsescore - 1else:ss abs(ball.pos[0] - (paddle.pos[0]paddle.width//2)) / 20ball.velocity[0] 2ss*2ball.velocity[1] * -1# screen.fill(BLACK)# 渲染背景screen.fill(BLACK)# 绘制球体和挡板ball.draw(screen)paddle.draw(screen)xx random.randint(0, 255)# 绘制砖块for brick in bricks:# 渐变ß# r math.sqrt((ball.pos[0] - brick.rect.x) ** 2 (ball.pos[1] - brick.rect.y) ** 2)# brick.color ((r)/720 *255 % 255, 255, (r)/720*255 % 255)brick.draw(screen)if ball.pos[1] screen_height//2:score update_bricks(ball, bricks)# 显示得分font pygame.font.Font(None, 36)score_text font.render(Score: str(score), True, RED)screen.blit(score_text, (10, 10))# 更新屏幕显示pygame.display.flip()# 设置帧率clock.tick(60)# 退出游戏pygame.quit()sys.exit()
本文转载至https://blog.csdn.net/u010095372/article/details/137205814?spm1001.2014.3001.5506
总结 希望对初学者有帮助 致力于办公自动化的小小程序员一枚 希望能得到大家的【一个免费关注】感谢 求个 关注 此外还有办公自动化专栏欢迎大家订阅Python办公自动化专栏 求个 ❤️ 喜欢 ❤️ 此外还有爬虫专栏欢迎大家订阅Python爬虫基础专栏 求个 收藏 此外还有Python基础专栏欢迎大家订阅Python基础学习专栏
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/83623.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!