From f6d89e7ae20d237f258bc085a2088e8176a50d0a Mon Sep 17 00:00:00 2001 From: Anna Wiggins Date: Tue, 17 Apr 2012 23:11:49 -0400 Subject: [PATCH] Implemented game info, play move, hover --- lib/goban.py | 4 +- ui/res/transparent.png | Bin 178 -> 0 bytes widgets/gogame.py | 104 +++++++++++++++++++++++++++-------------- 3 files changed, 71 insertions(+), 37 deletions(-) delete mode 100644 ui/res/transparent.png diff --git a/lib/goban.py b/lib/goban.py index 18cef61..2b22cda 100644 --- a/lib/goban.py +++ b/lib/goban.py @@ -272,10 +272,10 @@ class Goban: code = 'w' if pos == self.last_move: - code = code + 'T' + code += 'C' if pos == self.ko: - code = code + 'C' + code += 'C' return code diff --git a/ui/res/transparent.png b/ui/res/transparent.png deleted file mode 100644 index e0dd6dc2eef6c1dd5175d686b8f05b33de251abe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k92}K#X;^)4C~IxyaaOClDyqr82*Fc zg1yTp14TFsJR*x37`TN&n2}-D90{Nxdx@v7EBhT5Ax0ym`B?@{Kq1Kz*N775{M_8s zyb=cIqSVBa)D(sC%#sWRcTeAd@J2pypdwyR7sn8e>&ZX<|F>sm;P}JzFJ}JvTR;g0 MPgg&ebxsLQ01!+s8UO$Q diff --git a/widgets/gogame.py b/widgets/gogame.py index 6e53ef6..d6edc1f 100644 --- a/widgets/gogame.py +++ b/widgets/gogame.py @@ -72,6 +72,8 @@ class GoGame(gtk.HBox): self.pack_start(self.board_area) self.pack_end(info_box, expand=False) + self.update_info() + def do_hover(self, widget, event): x = event.x @@ -87,12 +89,25 @@ class GoGame(gtk.HBox): if max(row,col) < board_size: if self.goban._real_pos((row,col)) != self.goban.hover: self.goban.set_hover((row,col)) + self.board_area.queue_draw() else: self.goban.clear_hover() + self.board_area.queue_draw() def do_play(self, widget, event): - print 'GoGame:do_play(): stub' + x = event.x + y = event.y + width, height = widget.size_request() + size = min(width, height) + board_size = self.goban.board_size + inc = size / board_size + + row = int(y / inc) + col = int(x / inc) + + self.goban.play_move((row,col)) + self.update_info() # fixme: create a backbuffer pixmap and draw to *that* when we need to update @@ -116,18 +131,41 @@ class GoGame(gtk.HBox): col = i % board_size drawable.draw_pixbuf(gc, img, 0, 0, inc * col, inc * row, inc, inc) + if i == self.goban.hover: + if self.goban.to_move == goban.Goban.BLACK: + code = 'bH' + elif self.goban.to_move == goban.Goban.WHITE: + code = 'wH' + + base_img = GoGame.img_res[code] + img = base_img.scale_simple(inc, inc, gtk.gdk.INTERP_BILINEAR) + drawable.draw_pixbuf(gc, img, 0, 0, inc * col, inc * row, inc, inc) + + + def on_pass(self, widget): - print 'GoGame.on_pass(): stub' + self.goban.pass_move() + self.update_info() def on_resign(self, widget): - print 'GoGame.on_resign(): stub' + self.goban.resign() + self.update_info() + + + # fixme: Add a widget to show the outcome + def update_info(self): + if self.goban.to_move == goban.Goban.BLACK: + move = 'Black' + elif self.goban.to_move == goban.Goban.WHITE: + move = 'White' + else: + move = 'None' + self.to_move_value.set_text(move) + self.black_cap_value.set_text(str(self.goban.black_captures)) + self.white_cap_value.set_text(str(self.goban.white_captures)) - - - -# pixmap.draw_pixbuf(None, pixbuf, 0, 0, x, y, -1, -1, gtk.gdk.RGB_DITHER_NONE, 0, 0) @@ -142,26 +180,23 @@ def _build_img_res(): triangle = _load_png('go_t.png') circle = _load_png('go_c.png') - ret['w'] = _load_png('go_w.png') - ret['wT'] = _load_png('go_w.png') - ret['wH'] = _load_png('go_w.png', 128) + ret['wH'] = _load_png('go_wH.png') + ret['bH'] = _load_png('go_bH.png') + ret['wT'] = _load_png('go_w.png') width = ret['wT'].get_width() height = ret['wT'].get_height() triangle.composite(ret['wT'], 0, 0, width, height, 0, 0, 1, 1, gtk.gdk.INTERP_NEAREST, 255) - ret['b'] = _load_png('go_b.png') ret['bT'] = _load_png('go_b.png') - ret['bH'] = _load_png('go_b.png', 128) - width = ret['bT'].get_width() height = ret['bT'].get_height() triangle.composite(ret['bT'], 0, 0, width, height, 0, 0, 1, 1, gtk.gdk.INTERP_NEAREST, 255) - for d in ('u', 'd', 'l', 'r', 'm', 'dl', 'dr', 'ul', 'ur', 'h'): + for d in ('u', 'd', 'l', 'r', 'm', 'dl', 'dr', 'ul', 'ur', 'h', 'w', 'b'): ret[d] = _load_png('go_' + d + '.png') - ret[d + 'C'] = _load_png('go_' + d + '.png') + ret[d + 'C'] = _load_png('go_' + d + '.png') width = ret[d + 'C'].get_width() height = ret[d + 'C'].get_height() circle.composite(ret[d + 'C'], 0, 0, width, height, 0, 0, 1, 1, gtk.gdk.INTERP_NEAREST, 255) @@ -169,36 +204,35 @@ def _build_img_res(): return ret -def _load_png(name, alpha=None): +def _load_png(name): """ Load image and return image object""" fullname = os.path.join('ui/res/', name) image = gtk.gdk.pixbuf_new_from_file(fullname) - if alpha is not None: - image = _set_alpha(image, alpha) + # if alpha is not None: + # image = _set_alpha(image, alpha) return image +# _trans_png = None -_trans_png = None +# def _set_alpha(image, alpha): +# """ +# change_opacity - changes the opacity of pixbuf by combining +# the pixbuf with a pixbuf derived from a transparent .png -def _set_alpha(image, alpha): - """ - change_opacity - changes the opacity of pixbuf by combining - the pixbuf with a pixbuf derived from a transparent .png +# returns: a pixbuf of image made alpha more composite +# """ + +# global _trans_png - arguments: - alpha - - returns: a pixbuf with the transperancy - """ +# if _trans_png == None: +# _trans_png = _load_png('transparent.png') - global _trans_png +# width = image.get_width() +# height = image.get_height() - if _trans_png is None: - _trans_png = _load_png('transparent.png') - - width = image.get_width() - height = image.get_height() - _trans_png = _trans_png.scale_simple(width,height,gtk.gdk.INTERP_NEAREST) - image.composite(_trans_png, 0, 0, width, height, 0, 0, 1, 1, gtk.gdk.INTERP_NEAREST, alpha) +# trans= _trans_png.scale_simple(width,height,gtk.gdk.INTERP_NEAREST) +# trans.composite(image, 0, 0, width, height, 0, 0, 1, 1, gtk.gdk.INTERP_NEAREST, alpha) +# return trans