当前位置: 首页>>代码示例>>Python>>正文


Python Shape.update_pos方法代码示例

本文整理汇总了Python中shape.Shape.update_pos方法的典型用法代码示例。如果您正苦于以下问题:Python Shape.update_pos方法的具体用法?Python Shape.update_pos怎么用?Python Shape.update_pos使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在shape.Shape的用法示例。


在下文中一共展示了Shape.update_pos方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: __init__

# 需要导入模块: from shape import Shape [as 别名]
# 或者: from shape.Shape import update_pos [as 别名]
class Board:
    def __init__(self, window, width=10, height=16, xinit=2, yinit=2, tile_width=15):
        self.tiles = Tiles(tile_width, window)
        self.window = window
        self.height = height
        self.xinit = xinit
        self.yinit = yinit
        self.width = width
        self.total_lines = 0
        self.board = [[0 for j in range(width)] for i in range(height)]
        self.shape = None
        self._draw()
        self.clear()

    def add_shape(self):
        assert not self.shape
        sh, col = random.choice(shape_color)
        self.shape = Shape(sh, self.window, col, self.width/2, 0, self.xinit, self.yinit)
        if self.collides(self.shape):
            raise GameOver()
        self.shape.draw()

    def eat_shape(self):
        self.shape.erase()
        for x,y in self.shape.shape:
            self.board[y+self.shape.y][x+self.shape.x] = 1
        self.shape = None

    def frame(self, pressed_keys):
        if not self.shape:
            return
        shapex = self.shape.x
        shapey = self.shape.y
        shape_shape = deepcopy(self.shape.shape)
        self.shape.update_pos(pressed_keys)
        if self.collides(self.shape):
            self.shape.x = shapex
            self.shape.y = shapey
            self.shape.shape = shape_shape
        else:
            self.shape.draw()

    def collides(self, shape):
        for x,y in shape.shape:
            x += shape.x
            y += shape.y
            if x < 0 or x >= self.width:
                return True
            if y >= self.height or y < 0:
                return True
            if self.board[y][x] == 1:
                return True
        return False

    def collides_bottom(self, shape):
        for x,y in shape.shape:
            x += shape.x
            y += shape.y
            if y+1 >= self.height:
                return True
            if self.board[y+1][x]:
                return True
        return False

    def tick(self):
        self._erase()
        if not self.shape:
            self.add_shape()
        elif not self.collides_bottom(self.shape):
            self.shape.erase()
            self.shape.move_down()
            self.shape.draw()

        elif self.collides_bottom(self.shape):
            self.eat_shape()
            self.check_lines()

        self._draw()

    def check_lines(self):
        for i in range(self.height):
            if self.check_line(self.board[i]):
                self.board.pop(i)
                self.total_lines += 1
                print self.total_lines
                self.board = [[0 for i in range(self.width)]] + self.board

    def check_line(self, line):
        for i in line:
            if not i:
                return False
        return True

    def _draw(self, draw_f=Tiles.square):
        for y in range(self.height):
            for x in range(self.width):
                if self.board[y][x]:
                    draw_f(self.tiles, x+self.xinit, y+self.yinit)

    def _erase(self):
#.........这里部分代码省略.........
开发者ID:jaffee,项目名称:ristet,代码行数:103,代码来源:board.py


注:本文中的shape.Shape.update_pos方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。