本文整理汇总了Python中game.game.Game.undo方法的典型用法代码示例。如果您正苦于以下问题:Python Game.undo方法的具体用法?Python Game.undo怎么用?Python Game.undo使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类game.game.Game
的用法示例。
在下文中一共展示了Game.undo方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_undo_redo
# 需要导入模块: from game.game import Game [as 别名]
# 或者: from game.game.Game import undo [as 别名]
def test_undo_redo(self):
game = Game(4, Game.Modes.human_human, Game.DifficultyLevels.easy,
True, 5)
initial_state = (deepcopy(game.mover.board), s.WHITE)
game.next_move('a3')
game.next_move('a2')
my_state = game.get_current_state()
game.undo()
self.assertEqual(initial_state, game.get_current_state())
game.redo()
self.assertEqual(my_state, game.get_current_state())
game.undo()
self.assertEqual(initial_state, game.get_current_state())
示例2: ReversiWindow
# 需要导入模块: from game.game import Game [as 别名]
# 或者: from game.game.Game import undo [as 别名]
class ReversiWindow(QMainWindow):
def __init__(self, board_size, game_mode, game_difficulty_level,
game_time_for_move):
super().__init__()
self.images = {}
self.init_ui(board_size, game_mode, game_difficulty_level,
game_time_for_move)
def init_ui(self, board_size, game_mode, game_difficulty_level,
game_time_for_move):
self.game = Game(board_size, mode=game_mode,
difficulty_level=game_difficulty_level,
is_console_game=False,
time_for_move=game_time_for_move)
self.game_was_saved = False
self.time_for_move = game_time_for_move
self.count = self.time_for_move
self.timer = QBasicTimer()
self.move_timer = QTimer()
self.ai_thread = AIThread(self)
self.ai_thread.finished.connect(self.ai_finish)
self.ai_finished = True
self.load_images()
self.add_toolbar()
self.font_size = 10
self.resize(board_size * s.IMG_SIZE,
(board_size * s.IMG_SIZE + self.toolbar.height() + 10 +
self.font_size))
self.center()
self.setWindowTitle('Reversi')
self.show()
self.timer.start(1, self)
self.move_timer.timeout.connect(self.count_down)
self.move_timer.start(1000)
def center(self):
screen = QDesktopWidget().screenGeometry()
size = self.geometry()
self.move((screen.width() - size.width()) / 2,
(screen.height() - size.height()) / 2)
def add_toolbar(self):
self.toolbar = self.addToolBar('')
self.add_toolbar_action(self.toolbar, 'Save', 'save.png', self.save,
'Ctrl+S')
self.add_toolbar_action(self.toolbar, 'Undo', 'undo.png', self.undo,
'Ctrl+Z')
self.add_toolbar_action(self.toolbar, 'Redo', 'redo.png', self.redo)
self.toolbar.setMovable(False)
def add_toolbar_action(self, toolbar, name, image, function,
shortcut=None):
action = QAction(QIcon(QPixmap(self.images[image])), name, self)
if shortcut is not None:
action.setShortcut(shortcut)
action.triggered.connect(function)
toolbar.addAction(action)
def save(self):
if self.game.game_state == Game.States.human:
with open('saved_game.pickle', 'wb') as f:
pickle.dump(self.game, f, protocol=pickle.HIGHEST_PROTOCOL)
self.game_was_saved = True
def undo(self):
if self.game.game_state == Game.States.human:
self.reset_count()
self.game.undo()
def redo(self):
if self.game.game_state == Game.States.human:
self.reset_count()
self.game.redo()
def draw_cell(self, painter, cell):
if cell.state == s.BLACK:
image = self.images['black.png']
elif cell.state == s.WHITE:
image = self.images['white.png']
elif (cell.get_coordinates() in self.game.mover.next_possible_moves and
self.game.game_state != Game.States.ai):
image = self.images['possible_move.png']
else:
image = self.images['empty.png']
painter.drawImage(
cell.y*s.IMG_SIZE,
cell.x*s.IMG_SIZE + self.toolbar.height() + self.font_size,
image)
def draw_text(self, painter, font_size):
painter.setPen(QColor(Qt.black))
painter.setFont(QFont('Decorative', font_size))
painter.drawText(QPoint(10, self.toolbar.height() + font_size),
'Time left for move: {}'.format(self.count))
def reset_count(self):
if not self.ai_thread.isRunning():
self.count = self.time_for_move
def count_down(self):
#.........这里部分代码省略.........