本文整理汇总了Python中piece.Piece.drop方法的典型用法代码示例。如果您正苦于以下问题:Python Piece.drop方法的具体用法?Python Piece.drop怎么用?Python Piece.drop使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类piece.Piece
的用法示例。
在下文中一共展示了Piece.drop方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: answer
# 需要导入模块: from piece import Piece [as 别名]
# 或者: from piece.Piece import drop [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]
示例2: __init__
# 需要导入模块: from piece import Piece [as 别名]
# 或者: from piece.Piece import drop [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
#.........这里部分代码省略.........