本文整理汇总了Python中term2048.board.Board.getCell方法的典型用法代码示例。如果您正苦于以下问题:Python Board.getCell方法的具体用法?Python Board.getCell怎么用?Python Board.getCell使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类term2048.board.Board
的用法示例。
在下文中一共展示了Board.getCell方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: Game
# 需要导入模块: from term2048.board import Board [as 别名]
# 或者: from term2048.board.Board import getCell [as 别名]
#.........这里部分代码省略.........
avoid yellow, to give a few examples.
"""
rp = Game.__color_modes.get(mode, {})
for k, color in self.__colors.items():
self.__colors[k] = rp.get(color, color)
def loadBestScore(self):
"""
load local best score from the default file
"""
if self.scores_file is None or not os.path.exists(self.scores_file):
self.best_score = 0
return
try:
f = open(self.scores_file, 'r')
self.best_score = int(f.readline(), 10)
f.close()
except:
pass # fail silently
def saveBestScore(self):
"""
save current best score in the default file
"""
if self.score > self.best_score:
self.best_score = self.score
try:
f = open(self.scores_file, 'w')
f.write(str(self.best_score))
f.close()
except:
pass # fail silently
def end(self):
"""
return True if the game is finished
"""
return not (self.board.won() or self.board.canMove())
def readMove(self):
"""
read and return a move to pass to a board
"""
k = keypress.getArrowKey()
return Game.__dirs.get(k)
def loop(self):
"""
main game loop
"""
while True:
os.system(Game.__clear)
print(self.__str__(margins={'left':4, 'top':4, 'bottom':4}))
if self.board.won() or not self.board.canMove():
break
try:
m = self.readMove()
except KeyboardInterrupt:
self.saveBestScore()
return
self.score += self.board.move(m)
if self.score > self.best_score:
self.best_score = self.score
self.saveBestScore()
print('You won!' if self.board.won() else 'Game Over')
def getCellStr(self, x, y):
"""
return a string representation of the cell located at x,y.
"""
c = self.board.getCell(x, y)
if c == 0:
return ' .'
if c == 1024:
s = ' 1k'
elif c == 2048:
s = ' 2k'
else:
s = '%3d' % c
return self.__colors.get(c, Fore.RESET) + s + Fore.RESET
def boardToString(self, margins={}):
"""
return a string representation of the current board.
"""
b = self.board
rg = xrange(b.size())
left = ' '*margins.get('left', 0)
s = '\n'.join(
[left + ' '.join([self.getCellStr(x, y) for x in rg]) for y in rg])
return s
def __str__(self, margins={}):
b = self.boardToString(margins=margins)
top = '\n'*margins.get('top', 0)
bottom = '\n'*margins.get('bottom', 0)
scores = ' \tScore: %5d Best: %5d\n' % (self.score, self.best_score)
return top + b.replace('\n', scores, 1) + bottom
示例2: Game
# 需要导入模块: from term2048.board import Board [as 别名]
# 或者: from term2048.board.Board import getCell [as 别名]
class Game(object):
"""
A 2048 game
"""
__dirs = {
keypress.UP: Board.UP,
keypress.DOWN: Board.DOWN,
keypress.LEFT: Board.LEFT,
keypress.RIGHT: Board.RIGHT,
}
__clear = 'cls' if os.name == 'nt' else 'clear'
def __init__(self, **kws):
"""
Create a new game.
"""
self.board = Board(**kws)
self.score = 0
self.__colors = {
2: Fore.GREEN,
4: Fore.BLUE + Style.BRIGHT,
8: Fore.CYAN,
16: Fore.RED,
32: Fore.MAGENTA,
64: Fore.CYAN,
128: Fore.BLUE + Style.BRIGHT,
256: Fore.MAGENTA,
512: Fore.GREEN,
1024: Fore.RED,
2048: Fore.YELLOW,
# just in case people set an higher goal they still have colors
4096: Fore.RED,
8192: Fore.CYAN,
}
def incScore(self, pts):
"""
update the current score by adding it the specified number of points
"""
self.score += pts
def end(self):
"""
return True if the game is finished
"""
return not (self.board.won() or self.board.canMove())
def readMove(self):
"""
read and return a move to pass to a board
"""
k = keypress.getKey()
return Game.__dirs.get(k)
def loop(self):
"""
main game loop. returns the final score.
"""
try:
while True:
os.system(Game.__clear)
print(self.__str__(margins={'left': 4, 'top': 4, 'bottom': 4}))
if self.board.won() or not self.board.canMove():
break
m = self.readMove()
self.incScore(self.board.move(m))
except KeyboardInterrupt:
return
print('You won!' if self.board.won() else 'Game Over')
return self.score
def getCellStr(self, x, y): # TODO: refactor regarding issue #11
"""
return a string representation of the cell located at x,y.
"""
c = self.board.getCell(x, y)
if c == 0:
return ' .'
elif c == 1024:
s = ' 1k'
elif c == 2048:
s = ' 2k'
else:
s = '%3d' % c
return self.__colors.get(c, Fore.RESET) + s + Style.RESET_ALL
def boardToString(self, margins={}):
"""
return a string representation of the current board.
"""
b = self.board
rg = range(b.size())
left = ' '*margins.get('left', 0)
s = '\n'.join(
#.........这里部分代码省略.........
示例3: TestBoard
# 需要导入模块: from term2048.board import Board [as 别名]
# 或者: from term2048.board.Board import getCell [as 别名]
class TestBoard(unittest.TestCase):
def setUp(self):
self.b = Board()
# == init == #
def test_init_dimensions(self):
self.assertEqual(len(self.b.cells), Board.SIZE)
self.assertEqual(len(self.b.cells[0]), Board.SIZE)
if Board.SIZE > 1:
self.assertEqual(len(self.b.cells[1]), Board.SIZE)
def test_init_dimensions_1(self):
b = Board(size=1)
c = b.cells[0][0]
self.assertTrue(c in [2, 4])
def test_init_dimensions_3_goal_4(self):
b = Board(size=3, goal=4)
self.assertEqual(b.size(), 3)
def test_init_only_two_tiles(self):
t = 0
for x in xrange(Board.SIZE):
for y in xrange(Board.SIZE):
c = self.b.cells[y][x]
if not c == 0:
t += 1
else:
self.assertEqual(c, 0, 'board[%d][%d] should be 0' % (y, x))
self.assertEqual(t, 2)
def test_init_not_won(self):
self.assertFalse(self.b.won())
def test_init_not_filled(self):
self.assertFalse(self.b.filled())
# == .size == #
def test_size(self):
s = 42
b = Board(size=s)
self.assertEqual(b.size(), s)
# == .won == #
def test_won(self):
self.b._Board__won = True
self.assertTrue(self.b.won())
self.b._Board__won = False
self.assertFalse(self.b.won())
# == .canMove == #
def test_canMove_no_empty_cell(self):
b = Board(size=1)
b.setCell(0, 0, 42)
self.assertFalse(b.canMove())
def test_canMove_empty_cell(self):
b = Board(size=2)
self.assertTrue(b.canMove())
def test_canMove_no_empty_cell_can_collapse(self):
b = Board(size=2)
b.cells = [
[2, 2],
[4, 8]
]
self.assertTrue(b.canMove())
# == .filled == #
def test_filled(self):
self.b.cells = [[1]*Board.SIZE for _ in xrange(Board.SIZE)]
self.assertTrue(self.b.filled())
# == .addTile == #
def test_addTile(self):
b = Board(size=1)
b.cells = [[0]]
b.addTile(value=42)
self.assertEqual(b.cells[0][0], 42)
# == .getCell == #
def test_getCell(self):
x, y = 3, 1
v = 42
self.b.cells[y][x] = v
self.assertEqual(self.b.getCell(x, y), v)
# == .setCell == #
def test_setCell(self):
x, y = 2, 3
v = 42
self.b.setCell(x, y, v)
self.assertEqual(self.b.cells[y][x], v)
# == .getLine == #
def test_getLine(self):
b = Board(size=4)
l = [42, 17, 12, 3]
#.........这里部分代码省略.........
示例4: Game
# 需要导入模块: from term2048.board import Board [as 别名]
# 或者: from term2048.board.Board import getCell [as 别名]
#.........这里部分代码省略.........
return Game.__dirs.get(k)
def loop(self):
"""
main game loop. returns the final score.
"""
try:
while True:
if self.clear_screen:
os.system(Game.__clear)
else:
print("\n")
print(self.__str__(margins={'left':4, 'top':4, 'bottom':4}))
if self.board.won() or not self.board.canMove():
break
m = self.readMove()
self.incScore(self.board.move(m))
except KeyboardInterrupt:
self.saveBestScore()
return
self.saveBestScore()
print('You won!' if self.board.won() else 'Game Over')
return self.score
def loopAI(self,sleep_time=0.1):
"""
main game loop. returns the final score.
"""
try:
while True:
if self.clear_screen:
os.system(Game.__clear)
else:
print("\n")
print(self.__str__(margins={'left':4, 'top':4, 'bottom':4}))
if self.board.won() or not self.board.canMove():
break
m = AI.nextMove(self.board)
self.incScore(self.board.move(m))
time.sleep(0.01)
except KeyboardInterrupt:
self.saveBestScore()
return
self.saveBestScore()
print('You won!' if self.board.won() else 'Game Over')
return self.score
def getCellStr(self, x, y): # TODO: refactor regarding issue #11
"""
return a string representation of the cell located at x,y.
"""
c = self.board.getCell(x, y)
az = {}
for i in range(1, int(math.log(self.board.goal(), 2))):
az[2**i] = chr(i+96)
if c==0 and self.__azmode:
return '.'
elif c == 0:
return ' .'
elif self.__azmode:
if c not in az:
return '?'
s = az[c]
elif c == 1024:
s = ' 1k'
elif c == 2048:
s = ' 2k'
elif c == 4096:
s = ' 4k'
elif c == 8192:
s = ' 8k'
else:
s = '%3d' % c
return self.__colors.get(c, Fore.RESET) + s + Style.RESET_ALL
def boardToString(self, margins={}):
"""
return a string representation of the current board.
"""
b = self.board
rg = range(b.size())
left = ' '*margins.get('left', 0)
s = '\n'.join(
[left + ' '.join([self.getCellStr(x, y) for x in rg]) for y in rg])
return s
def __str__(self, margins={}):
b = self.boardToString(margins=margins)
top = '\n'*margins.get('top', 0)
bottom = '\n'*margins.get('bottom', 0)
scores = ' \tScore: %5d Best: %5d\n' % (self.score, self.best_score)
return top + b.replace('\n', scores, 1) + bottom
示例5: Game
# 需要导入模块: from term2048.board import Board [as 别名]
# 或者: from term2048.board.Board import getCell [as 别名]
#.........这里部分代码省略.........
if self.score > self.best_score:
self.best_score = self.score
try:
with open(self.scores_file, 'w') as f:
f.write(str(self.best_score))
except:
return False
return True
def incScore(self, pts):
"""
update the current score by adding it the specified number of points
"""
self.score += pts
if self.score > self.best_score:
self.best_score = self.score
def readMove(self):
"""
read and return a move to pass to a board
"""
k = keypress.getKey()
return Game.__dirs.get(k)
def store(self):
"""
save the current game session's score and data for further use
"""
size = self.board.SIZE
cells = []
for i in range(size):
for j in range(size):
cells.append(str(self.board.getCell(j, i)))
score_str = "%s\n%d" % (' '.join(cells), self.score)
try:
with open(self.store_file, 'w') as f:
f.write(score_str)
except:
return False
return True
def restore(self):
"""
restore the saved game score and data
"""
size = self.board.SIZE
try:
with open(self.store_file, 'r') as f:
lines = f.readlines()
score_str = lines[0]
self.score = int(lines[1])
except:
return False
score_str_list = score_str.split(' ')
count = 0
for i in range(size):
for j in range(size):
value = score_str_list[count]
self.board.setCell(j, i, int(value))
示例6: Game
# 需要导入模块: from term2048.board import Board [as 别名]
# 或者: from term2048.board.Board import getCell [as 别名]
#.........这里部分代码省略.........
if self.score > self.best_score:
self.best_score = self.score
try:
with open(self.scores_file, "w") as f:
f.write(str(self.best_score))
except:
return False
return True
def incScore(self, pts):
"""
update the current score by adding it the specified number of points
"""
self.score += pts
if self.score > self.best_score:
self.best_score = self.score
def readMove(self):
"""
read and return a move to pass to a board
"""
k = keypress.getKey()
return Game.__dirs.get(k)
def store(self):
"""
save the current game session's score and data for further use
"""
size = self.board.SIZE
cells = []
for i in range(size):
for j in range(size):
cells.append(str(self.board.getCell(j, i)))
score_str = "%s\n%d" % (" ".join(cells), self.score)
try:
with open(self.store_file, "w") as f:
f.write(score_str)
except:
return False
return True
def restore(self):
"""
restore the saved game score and data
"""
size = self.board.SIZE
try:
with open(self.store_file, "r") as f:
lines = f.readlines()
score_str = lines[0]
self.score = int(lines[1])
except:
return False
score_str_list = score_str.split(" ")
count = 0
for i in range(size):
for j in range(size):
value = score_str_list[count]
self.board.setCell(j, i, int(value))