2013-11-24 54 views
0

我正在尝试为5x5网格中的匹配游戏创建一个类。用户将根据行号和列号选择范围。我花了最近几个小时试图弄清楚如何设置它,并且我认为它应该是一个集合或者一个具有x,y坐标的元组列表。我可以做得到一组生成的坐标列表:在Python中创建匹配游戏

board = set((x,y) 
     for x in range(5) 
     for y in range(5)) 

我无法弄清楚如何真正变成一个可行的板这虽然。我试图用匹配的值创建一个“真实的棋盘”,以及一个只有X的“显示”棋盘,直到用户获得匹配,然后真实值将显示在棋盘上。

因此理想情况下,应该有一个板,看起来像

X X X X X 
X X X X X 
X X X X X 
X X X X X 
X X X X X 

,另一个随机对:

A M F H I 
C D B J E 
G I F A C 
D J G H L 
K E L B M 
+0

也许你应该尝试一个4x5板,或5×6板?由于5x5棋盘上有奇数个位置,这很难用_匹配对来填充。 –

回答

1

也许有更好的方式来表示主板是使用字典:

board = {} 
for x in range(5): 
    for y in range(5): 
     board[x, y] = 'X' 

您可以通过执行以下操作来更新字符:board[3, 4] = 'D'

你甚至可以使用指定板dictionary comprehension

board = {(x, y): 'X' for x in range(5) for y in range(5)} 
+0

这似乎比列表解决方案简单一些。就更新角色而言,我知道我需要用随机值生成第二个表格,它是我的指导原则的一部分,以及用户输入网格上的坐标以显示元素。我是否会像上面所做的那样做同样的事情,但是添加一个while循环来随机添加变量达2次?即使在弄清楚之后,我如何才能使网格与坐标相符? – Swolerosis

1

我会用列表的列表做到这一点:

board = [] 

def initializeBoard(board): 
    for i in range(5): 
     board.append([]) 
    for l in board: 
     for i in range(5): 
      l.append('X') 

def printBoard(board): 
    for l in board: 
     for e in l: 
      print e, 
     print 


initializeBoard(board) 
board[0][1] = 'A' # To access an element   
printBoard(board) 

>>> 
X A X X X 
X X X X X 
X X X X X 
X X X X X 
X X X X X