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

self.frequency = 0 def countscore(self): #定义计算分数的函数 my_score = self.score_font.render(str(self.score), False, (255, 255, 255)) self.game_window.blit(my_score, (555, 15))# 绘制玩家分数,分数的位置放在横坐标为555,距离窗顶位置15 class GameOver(object): '''创建游戏结束类''' def __init__(self, *args, **kw): # 设置Game Over字体 楷体,字体大小80 self.over_font = pygame.font.SysFont('arial', 80) # 定义GameOver标识 self.over_sign = 0 class Win(object): '''创建游戏胜利类''' def __init__(self, *args, **kw): # 设置You Win字体 楷体,字体大小80 self.win_font = pygame.font.SysFont('arial', 80) # 定义Win标识 self.win_sign = 0 class Collision(object): '''碰撞检测类''' # 球与窗口边框的碰撞检测 def ball_window(self): if self.ball_x <= self.radius or self.ball_x >= (self.window_length - self.radius):#如果球横坐标位置小于球半径或者大于窗口宽度减去球半径,意思就是超出边界了 self.move_x = -self.move_x#横坐标减小一个单位,意思就是反弹了 if self.ball_y <= self.radius:#球纵坐标小于半径,意思就是只要没落地 self.move_y = -self.move_y#继续向下移动 # 球与球拍的碰撞检测 def ball_rect(self): # 定义碰撞标识为0 self.collision_sign_x = 0 self.collision_sign_y = 0 #分三种情况,一种是直接碰到砖块反弹到球拍;一种是碰撞到砖块,又碰撞到墙;还有一种是碰到两个砖块,又碰到墙。这里用if-elif-else讨论。 if self.ball_x < (self.mouse_x - self.rect_length // 2): #如果球中心位置小于鼠标坐标减去球拍一半的长度,表示没有超出边界。即没有撞墙,撞一个砖块。 self.closestpoint_x = self.mouse_x - self.rect_length // 2#横坐标最近点位置为鼠标位置减去球拍一半长度 self.collision_sign_x = 1#这种情况,碰撞标识用1标识 elif self.ball_x > (self.mouse_x + self.rect_length // 2):#超出边界范围,撞墙。碰到墙和砖块各一次。 self.closestpoint_x = self.mouse_x + self.rect_length // 2#反弹了,横坐标最近位置为鼠标坐标加上球拍一半的长度。 self.collision_sign_x = 2#这种情况,碰撞标识用2标识 else: #上面两种情况都不满足的话执行下面的语句 self.closestpoint_x = self.ball_x#横坐标最近点位置就是球位置。 self.collision_sign_x = 3#这种情况,碰撞标识用3标识 if self.ball_y < (self.window_wide - self.rect_wide): #如果球的纵坐标小于窗口高度减去球心的高度。意思如果就是没有落地的话。 self.closestpoint_y = (self.window_wide - self.rect_wide)#纵坐标最近距离为窗口高度减去球拍的高度 self.collision_sign_y = 1#这种情况,碰撞标识用1标识 elif self.ball_y > self.window_wide: #如果球的纵向长度大于了窗口高度,意思就是落地了

相关教程