head 1.1; access; symbols; locks gary:1.1; strict; comment @# @; 1.1 date 94.11.26.06.44.30; author gary; state Exp; branches; next ; desc @@ 1.1 log @Initial revision @ text @import regsub from dat import * def start(x,y,o,n): if o == 'v': y = y - n + 1 else: x = x - n + 1 return x,y def next(x,y,c): if c == 'v': y = y +1 else: x = x +1 return x,y class Board: def __init__(self): self.square = square self.special = special def reset(self): for x in range(len(self.square)): for y in range(len(self.square[x])): self.square[x][y]=EMPTY def newletters(self,x,y,o,word): # return list of (x,y,ch) tuples (all the newly placed letters) list=[] word = regsub.gsub(BLANK,'',word) # remove trailing _ x,y = start(x,y,o,len(word)) for ch in word: if self.square[x][y] == EMPTY: list.append(x,y,ch) x,y = next(x,y,o) return list def getword (self, x, y, o, word, rack): # Given requested word,endpoint and orientation, # and rack to draw letters from: # Return the word (with blanks shown if necessary) # or raise an exception if we can't do it with this rack print 'getword', x, y, o, word, rack r2 = rack[:] newword='' x,y = start(x,y,o,len(word)) try: for ch in word: if self.square[x][y] == EMPTY: if ch in r2: newword = newword+ch r2.remove(ch) elif BLANK in r2: newword = newword + ch + BLANK r2.remove(BLANK) else: print "missing ",ch raise Badmove, "needed a " + ch + "for" + `x,y` else: if ch == self.square[x][y]: newword = newword + ch else: raise Badmove, "expected "+ch+"at "+`x,y` x,y = next(x,y,o) except IndexError: raise Badmove, "doesn't fit" return newword def play (self, list): for x,y,ch in list: self.square[x][y] = ch @