2-dim array i python [LÖST]
Postat: 06 okt 2007, 17:41
Hej
jag håller på å skriver en screenlet. ms-röj-screenlet. Jag behöver en tom 2-dim array för att spara alla fält i och det vill sig inte riktigt.
När jag i huvudprogrammet ropar på
så får jag denna error.
hur skapar man en tom 2-dim array för objekt i python är alltså min enkla fråga?
jag håller på å skriver en screenlet. ms-röj-screenlet. Jag behöver en tom 2-dim array för att spara alla fält i och det vill sig inte riktigt.
Kod: Markera allt
#!/usr/bin/env python
class PlayField:
def __init__(self,size_x,size_y,num_mines):
self.bricks = [size_x][size_y]
self.num_mines = num_mines
self.place_mines()
self.width = size_x
self.height = size_y
def get_num_mines_left(self):
return self.num_mines
# loops over all possible bricks
# and calls place mine on all as
# long as there are mines left
# to place
def place_mines(self):
num_left = self.num_mines
bricks_left = self.width*self.height
for x in range(0,self.width):
for y in range(0,self.height):
if num_left > 1 :
num_left=self.place_mine(x,y,num_left,bricks_left)
bricks_left = bricks_left -1
# places a mine if a random number * playfield area
# is smaller than equal to 1
#
# also places a mine if there are only as mines
# as bricks left
def place_mine(self,posx,posy,num_mines_left,bricks_left):
# If there is only place for as many mines
# as there are bricks left place one
# Otherwise do some random thing to se if
# one should place one
if num_mines_left==bricks_left :
self.bricks[posx][posy]=Brick(True,False,False)
num_mines_left = num_mines_left -1
return num_mines_left
else :
if random.random()*self.playfield_width*self.playfield_height <= 1:
self.bricks[posx][posy]=Brick(True,False,False)
num_mines_left = num_mines_left -1
return num_mines_left
else :
self.bricks[posx][posy]=Brick(False,False,False)
return num_mines_left
def check_brick(self,posx,posy):
if self.Bricks[posx][posy].checked :
return False
else :
return self.Bricks[posx][posy].explosive
def mark_brick(self,posx,posy):
self.Bricks[posx][posy].set_marked()
self.num_mines = self.num_mines-1
def is_marked(self,posx,posy):
return self.Bricks[posx][posy].marked
Kod: Markera allt
self.my_field = PlayField(self.playfield_width,self.playfield_height, self.num_mines)
Kod: Markera allt
Traceback (most recent call last):
File "./MineFielsScreenlet.py", line 160, in <module>
screenlets.session.create_session(MineFieldScreenlet)
File "/usr/lib/python2.5/site-packages/screenlets/session.py", line 392, in create_session
session.start()
File "/usr/lib/python2.5/site-packages/screenlets/session.py", line 177, in start
if self.__load_instances():
File "/usr/lib/python2.5/site-packages/screenlets/session.py", line 322, in __load_instances
sl.on_init()
File "./MineFielsScreenlet.py", line 124, in on_init
self.new_game()
File "./MineFielsScreenlet.py", line 129, in new_game
self.my_field = PlayField(self.playfield_width,self.playfield_height, self.num_mines)
File "/home/cissi/.screenlets/Minefield/PlayField.py", line 6, in __init__
self.bricks = [size_x][size_y]
IndexError: list index out of range
hur skapar man en tom 2-dim array för objekt i python är alltså min enkla fråga?