VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > python爬虫 >
  • 打砖游戏,详解每一行代码,历经三个小时解析,初学可看(5)

self.closestpoint_y = self.window_wide#纵坐标最近位置就是窗口的高度(就刚好落地的时候) self.collision_sign_y = 2#这种情况,碰撞标识用2标识 else: self.closestpoint_y = self.ball_y#球的最近纵坐标为球所在的位置 self.collision_sign_y = 3#这种情况,碰撞标识用3标识 # 定义球拍到圆心最近点与圆心的距离 (最近点距离减去球心横坐标的距离的平方,加上纵坐标最近陆离减去球心纵坐标的平方),对这整体再开根号。意思就是求的两个位置之间的距离大小。 self.distance = math.sqrt( math.pow(self.closestpoint_x - self.ball_x, 2) + math.pow(self.closestpoint_y - self.ball_y, 2)) # 球在球拍上左、上中、上右3种情况的碰撞检测 if self.distance < self.radius and self.collision_sign_y == 1 and ( self.collision_sign_x == 1 or self.collision_sign_x == 2): #如果满足:球拍到圆心最近点与圆心距离小于半径且纵坐标标识为1和横坐标标识为1或者2 if self.collision_sign_x == 1 and self.move_x > 0:#如果横坐标标识为1并且横向速度大于0 。 向右速度大于0,向左速度小于0.!!! self.move_x = - self.move_x#水平速度反向 self.move_y = - self.move_y#纵向速度也反向 就是反弹的意思 if self.collision_sign_x == 1 and self.move_x < 0: #如果横向标识为1并且速度小于0 速度的大于小于零只是根据方向来说的,并不是速度的绝对值会小于0!!! self.move_y = - self.move_y#直竖直速度反向,就是弹回 if self.collision_sign_x == 2 and self.move_x < 0:#如果横坐标标识为2并且一定速度小于0 self.move_x = - self.move_x#水平速度反向 self.move_y = - self.move_y#纵向速度也反向 就是反弹的意思 if self.collision_sign_x == 2 and self.move_x > 0:#如果横坐标标识为2并且一定速度大于0 self.move_y = - self.move_y#竖直速度反向 ,就是弹回 if self.distance < self.radius and self.collision_sign_y == 1 and self.collision_sign_x == 3:#如果球拍到最近距离与球心距离小于球半径并且纵坐标标识为1和3 self.move_y = - self.move_y#竖直速度反向概 # 球在球拍左、右两侧中间的碰撞检测 if self.distance < self.radius and self.collision_sign_y == 3:#如果球拍到最近距离与球心距离小于球半径并且纵坐标标识为3 self.move_x = - self.move_x#水平速度反向 # 球与砖块的碰撞检测 def ball_brick(self): # 定义碰撞标识 开始标识都为0,标识没有碰撞 self.collision_sign_bx = 0 self.collision_sign_by = 0 if self.ball_x < self.brick_x: #如果球横坐标小于砖块横向放置的位置大小 self.closestpoint_bx = self.brick_x #砖块横坐标就是最近点位置 self.collision_sign_bx = 1#标识为1 elif self.ball_x > self.brick_x + self.brick_length: #如果球横坐标大于砖块横向放的位置大小与砖块长度之和 self.closestpoint_bx = self.brick_x + self.brick_length#最近点位置就是砖块横坐标放的位置大小加上砖块的长度 self.collision_sign_bx = 2#标识为2 else:#不是上面两种情况的话,执行下面语句 self.closestpoint_bx = self.ball_x#球的横向最近陆离为球的中心横坐标 self.collision_sign_bx = 3#这种情况标识为3 #y方向和x方向是同理的,就不解析描述了。 if self.ball_y < self.brick_y: self.closestpoint_by = self.brick_y self.

相关教程