# 超级玛丽碰砖块

### 超级玛丽碰砖块

turtle mario jump collision bricks 玛丽的算术之角色类

```"""
超级玛丽碰砖块
本程序定义一个Sprite类。
操作它能跳跃起来，能左右移动去碰砖块。
"""
from turtle import *
from brick import Brick

class Sprite(Turtle):
"""
继承自Turtle类的角色类
"""
def __init__(self,leftpics,rightpics,pos):
"""初始化方法
leftpics：左序列造型
rightpics：右序列造型
pos：初始坐标
"""
Turtle.__init__(self,visible=False)
self.penup()
self.speed(0)
self.leftpics = leftpics
self.rightpics = rightpics
self.images = [leftpics,rightpics]
self.shape_index = 0              # 造型序列索引号
self.shape_amount = len(leftpics) # 向左或向右造型数量
self.screen.onkeypress(self.leftmove,"Left")
self.screen.onkeypress(self.rightmove,"Right")
self.screen.listen()
self.goto(pos)
self.shape(self.images[0][0])     # 初始造型
self.st()
self.screen.update()
self.dy = 0                       # 垂直速度
self.gravity()
self.screen.onkeypress(self.jump,"Up")

def gravity(self):
"""受重力自由落体运动"""
y = self.ycor() + self.dy
if y > -105:
self.dy = self.dy -1
else:
y = -105
self.dy = 0
self.sety(y)
self.screen.update()
self.screen.ontimer(self.gravity,10)

def jump(self):
"""跳跃"""
if self.dy == 0 : self.dy = 20

def leftmove(self):
"""向左移动"""
self.shape_index +=1                  # 造型索引增1
self.shape_index %= self.shape_amount # 对总数求余
self.shape(self.images[0][self.shape_index])
self.fd(10)
self.screen.update()

def rightmove(self):
"""向右移动"""
self.shape_index +=1                  # 造型索引增1
self.shape_index %= self.shape_amount # 对总数求余
self.shape(self.images[1][self.shape_index])
self.fd(10)
self.screen.update()
```

(会员专属：能浏览所有文章，下载所有带链接的Python资源。)