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


Python Piece.move方法代码示例

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


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

示例1: answer

# 需要导入模块: from piece import Piece [as 别名]
# 或者: from piece.Piece import move [as 别名]
def answer(state_map, state_piece, x, dx, rad):
    map_tmp = copy.deepcopy(const.map)
    for i in range(len(state_map)):
        if state_map[i] != 0:
            map_tmp[state_map[i]][i] = 1

    p_tmp = Piece(state_piece, x)
    p_tmp.updateMap(map_tmp)
    gain = 0

    if dx>0:
        for i in range(dx):
            p_tmp.move('right')
    else:
        for i in range(-dx):
            p_tmp.move('left')
    for i in range(rad):
        p_tmp.rotate('ccw')
    p_tmp.drop()

    for i in range(len(p_tmp.shape[0])):
        for j in range(len(p_tmp.shape[0][i])):
            if p_tmp.shape[0][i][j]:
                map_tmp[p_tmp.y+i][p_tmp.x+j] = p_tmp.shape[1]

    erasable = []
    for i in range(len(map_tmp)-1):
        flag_full = True
        for j in range(1,len(map_tmp[i])-1):
            if map_tmp[i][j] == 0 or map_tmp[i][j] == 8: flag_full = False
        if flag_full:
            erasable.append(i)
    if len(erasable) == 0:
        gain = 0
    else:
        gain = scores[min(len(erasable)-1, 3)]
    for i in erasable:
        for j in range(i-2):
            map_tmp[i-j] = copy.deepcopy(map[i-j-1])

    for i in range(len(map_tmp)):
        for j in range(len(map_tmp[i])):
            if map_tmp[i][j]!=0:
                map_tmp[i][j] = 1
    return [map_tmp, gain]
开发者ID:fand,项目名称:gakushu,代码行数:47,代码来源:__init__.py

示例2: __init__

# 需要导入模块: from piece import Piece [as 别名]
# 或者: from piece.Piece import move [as 别名]
class Manager:

    def __init__(self):
        self.display = Display()
        self._spawn_piece()

    def _spawn_piece(self):
        '''
            Produce a new piece
        '''
        self.display.update_board()
        self.current_piece = Piece()
        try:
            self.display.add_piece(self.current_piece)
            self.display.draw()
        except OverlapError:
            print('Game Over')
            exit()

    def game_loop(self):
        '''
            Execute for each user input
        '''
        move = raw_input('Please enter a move: ').strip()
        action = ACTIONS.get(move)

        if action is None:
            print('Entered move does not exist! Try again.')
            return

        self.current_piece.move(action)
        try:
            self.display.show_piece()
        except OverlapError:
            self.current_piece.undo()
            print('Invalid move! Try again.')
            return

        if self.display.check_valid_moves():
            self.display.draw()
        else:
            self._spawn_piece()
开发者ID:Xuefeng-Zhu,项目名称:tetris,代码行数:44,代码来源:manager.py

示例3: __init__

# 需要导入模块: from piece import Piece [as 别名]
# 或者: from piece.Piece import move [as 别名]
class PtModel:
    #class variables
    FPS = 60
    SCORE = [0, 40, 100, 300, 1200]
    TIME = {
        "fell": -100,
        "moved": -100,
        "rotated": -20,
        "stopped_moving": -30,
        "stopped_rotating":-30
        }
    INTERVAL = {
        "move": 0.3,
        "rotate": 0.3,
        "gravity": 0.3
        }
    
    def __init__(self, gravity = 0.3):
        self.view =  PtView()
        self.board = Board()
        self.p =  Piece(self.board)
        self.p_next = Piece(self.board)
        self.score = 0
        self.line_erasable = []
        self.interval = copy.deepcopy(PtModel.INTERVAL)
        self.interval['gravity'] = gravity
        self.time = copy.deepcopy(PtModel.TIME)

        self.flag = {
            'moving': True,
            'rotating': True
            }
        
        self.view.renderNext(self.p_next.getShape(), self.p_next.getType())
        
    def getKey(self):
        pygame.event.pump()
        keys = pygame.key.get_pressed()
        # 移動のキーn
        if self.isMovable():
            if keys[K_LEFT]:
                self.movePiece('left')
            elif keys[K_RIGHT]:
                self.movePiece('right')
            elif keys[K_UP]:
                self.movePiece('up')
            elif keys[K_DOWN]:
                self.movePiece('down')
                if self.p.isGround() == False:
                    self.time['moved'] = time.clock()
            else:
                # 動くのをやめた時だけインターバル回復
#                if self.flag['moving']:
                self.flag['moving'] = False
                self.time['stopped_moving'] = time.clock()
                self.interval['move'] = PtModel.INTERVAL['move']

        # 回転のキー
        if self.isRotatable():
            if keys[K_z]:
                self.rotatePiece('ccw')
            elif keys[K_x]:
                self.rotatePiece('cw')
            else:
 #               if self.flag['rotating']:
                self.flag['rotating'] = False
                self.time['stopped_rotating'] = time.clock()
                self.interval['rotate'] = PtModel.INTERVAL['rotate']

    def isMovable(self):
        if (time.clock() - self.time['moved']) > self.interval['move']:
            return True
        if (time.clock() - self.time['stopped_moving'])< PtModel.INTERVAL['move']:
            return True
        return False
    
    def isRotatable(self):
        if (time.clock() - self.time['rotated']) > self.interval['rotate']:
            return True
        if (time.clock() - self.time['stopped_rotating'])< PtModel.INTERVAL['rotate']:
            return True
        return False
    
    def movePiece(self, direction):
        if direction == 'up':
            self.p.drop()
        else:
            self.p.move(direction)
        self.time['moved'] = time.clock()
        if self.interval['move'] > 0.1:
            self.interval['move'] *= 0.9
#        self.flag['moving'] = True

    def rotatePiece(self, radius):
        self.p.rotate(radius)
        self.time['rotated'] = time.clock()
        if(self.interval['rotate']>0.1):
            self.interval['rotate'] *= 0.9
#        self.flag['rotating'] = True

#.........这里部分代码省略.........
开发者ID:fand,项目名称:pytetris,代码行数:103,代码来源:model.py


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