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