diff --git a/playgame.py b/playgame.py index a66e1cf..baf66e8 100644 --- a/playgame.py +++ b/playgame.py @@ -60,13 +60,11 @@ class PlayGame: else: httptools.redirect("/login") - def display_goban(self,gamename): + def display_goban(self,gamename,settings={}): """ gets: dictionary containing the layout of the used goban. returns: string containing the HTML code for a clickable goban. """ - data = helper.header() - data += '
' hoshis19x19 = [(4,4),(4,10),(4,16),(10,4),(10,10),(10,16),(16,4),(16,10),(16,16)] hoshis13x13 = [(4,4),(4,10),(7,7),(10,4),(10,10)] hoshis9x9 = [(3,3),(3,7),(5,5),(7,3),(7,7)] @@ -78,62 +76,31 @@ class PlayGame: gobandict = gnugo.parse_static_gnugo_sgf(sgf) size = mygame.size + settings["Data.GobanSize"] = size + settings["Data.GameName"] = gamename for x in range(1,size+1): for y in range(1,size+1): - # check for white or black stone + settings["Data.Goban.%d.%d.x" % (x,y)] = x + settings["Data.Goban.%d.%d.y" % (x,y)] = y if gobandict[(x,y)] == 1: - stone = "_white" + settings["Data.Goban.%d.%d.color" % (x,y)] = "_white" elif gobandict[(x,y)] == 2: - stone = "_black" - else: - stone = "" - sx = str(x) - sy = str(y) - # check position: - if (x == 1) and (y == 1): # upper left - #data += '' - data += '' % (sx,sy,gamename,stone) - elif (x == 1) and (y == size): # upper right - data += '
' % (sx,sy,gamename,stone) - elif (x == size) and (y == size): # lower right - data += '
' % (sx,sy,gamename,stone) - elif (x == size) and (y == 1): # lower left - data += '' % (sx,sy,gamename,stone) - elif (y == 1): #left line - data += '' % (sx,sy,gamename,stone) - elif (x == 1): # top line - data += '' % (sx,sy,gamename,stone) - elif (y == size): # right line - data += '
' % (sx,sy,gamename,stone) - elif (x == size): #bottom line - data += '' % (sx,sy,gamename,stone) - else: # hoshi or empty inner field - defaultfield = '' % (sx,sy,gamename,stone) - #too lazy to make special images for hoshi fields with stones: - if gobandict[(x,y)] == 1: - hoshifield = '' % (sx,sy,gamename) - elif gobandict[(x,y)] == 2: - hoshifield = '' % (sx,sy,gamename) - else: #empty hoshi - hoshifield = '' % (sx,sy,gamename) - if size == 19: # 9 hoshis - if (x,y) in hoshis19x19: - data += hoshifield - else: - data += defaultfield - elif size == 13: - if (x,y) in hoshis13x13: - data += hoshifield - else: - data += defaultfield - elif size == 9: - if (x,y) in hoshis9x9: - data += hoshifield - else: - data += defaultfield - data += '
' - data += helper.footer() - return data + settings["Data.Goban.%d.%d.color" % (x,y)] = "_black" + #now check wether or not this field is hoshi + if size == 19: # 9 hoshis + if (x,y) in hoshis19x19: + settings["Data.Goban.%d.%d.hoshi" % (x,y)] = 1 + else: pass + elif size == 13: + if (x,y) in hoshis13x13: + settings["Data.Goban.%d.%d.hoshi" % (x,y)] = 1 + else: pass + elif size == 9: + if (x,y) in hoshis9x9: + settings["Data.Goban.%d.%d.hoshi" % (x,y)] = 1 + else: pass + + return helper.cs_render("templates/playgame.cs",settings) def process_form(self,gamename,coord): """ @@ -150,6 +117,7 @@ class PlayGame: gobandict["name"] = gamename gobandict["turn_number"] = turn gobandict["sgf"] = sgf + settings = {} if (gobandict[position] == 0): #empty field if gnugo.is_legal(gobandict,position): #gnugo says the move is ok #let gnugo make the above move, let gnugo write move to file @@ -160,7 +128,9 @@ class PlayGame: mygame.set_time() return "" else: #move not ok - return "This is not a legal move (says Gnugo)." + settings["Data.Message"] = "This is not a legal move (says Gnugo)." + return self.display_goban(gamename,settings) else: #position not empty - return "Could not make move: Field not empty." + settings["Data.Message"] = "Could not make move: Field not empty." + return self.display_goban(gamename,settings) index.exposed = True \ No newline at end of file