2008-06-01から1ヶ月間の記事一覧

《準備中》2008年6月30日(月)

C#.use(better, IronPython="GoF") IronPython で学ぶ デザインパターンの世界 《著》小粒ちゃん《監修》小泉ひよ子とタマゴ倶楽部改訂♪2008/09/13 Contents index 第0章 概要 第1章 コントロール 第2章 データバインディング 第3章 イベントとアクショ…

付録C XAML

付録B 組み込み関数

2008-04-28: getattr/setattr dir/reduce/type

付録A 基本構文

lambda 関数

第7章 アプリケーション

インスペクター

第6章 パネルとレイアウト

2008-08-11: StackPanel 1/1 2008-08-12: WrapPanel 1/1 2008年8月13日(水) DockPanel 2008年8月14日(木) Grid 2008年8月15日(金)

第5章 スタイルとテンプレート

第4章 グラフィックスとアニメーション

グラフィックス 2008-07-14 第4章 グラフィックス 1/5, Rectangle Rectangle マークアップと分離コード 2008-07-16 第4章 グラフィックス 3/5, Polygon Polygon マークアップと分離コード 2008-07-15 第4章 グラフィックス 2/5, Ellipse Ellipse マークアッ…

第3章 イベントとアクション

Slider Menu ルーティングイベント

第2章 データバインディング

ListView 2008年6月12日(木) 2008年6月13日(金) Observer パターン 2008-06-09 第2章 Observer パターン 1/3 適用事例: Observer パターン 1)事前の登録:addObserver 2)事後の更新/通知:update 2008-06-10 第2章 Observer パターン 2/3 何が問題か 適用…

第1章 コントロール

2008年5月12日(月) コンテンツモデル 2008年5月13日(火) 2008年5月14日(水) 2008年5月15日(木) 2008年5月16日(金) コントロール

第0章 概要

《index》 サンプルコードを実行するには アプリケーション管理の概要 マークアップと分離コード コントロール イベントとアクション グラフィックスとアニメーション パネルとレイアウト 【余録】Windows Forms vs. WPF サンプルコードを実行するには 2008-…

さまざまな補助関数

いくつかの補助関数(ユーティリティー)を規定しています。# --------------------------------------------------- after ----- class HexStone(GameItem): def width (self, g): return self.deltaX def height(self, g): return self.deltaY def isExist…

コマの描画

盤面に配置されるコマは、目に見えないコマ(盤面の緑が透けて見える)と、目に見えるコマ(黒:先手または白:後手)とに分かれます。 # --------------------------------------------------- after ----- def paintBackground(self, g): width = self.wid…

蜂の巣 comb

新たなゲーム用のモデル HexStone を規定します。# --------------------------------------------------- after ----- class HexStone(GameItem): _dx, _dy = 7, 4 # 7*7+4*4=65 8*8=64 _R2 = (_dx*2)**2 _width, _height = _dx*2, _dy*4 _dw, _dh = _dx*2,…

新たなゲームを作成する:モデル

新たなゲームを構成するために「モデル」について再考します。

《付録》hexothello.py

# -*- coding: utf-8 -*- #=============================================================================== # Copyright (C) 2000-2008, 小泉ひよ子とタマゴ倶楽部 # # History: Othello Game # 1988/05, Smalltalk # 2004/09, Java # 2005/02, C# # 200…

要求仕様の変更:オセロゲーム〈蜂の巣〉hexagon 5/5

《Previous|5/5|Next》 Shall_we_Agile = Java.use(better, Python) # 《記事一覧》

新たなパネル:イベントハンドラー

(ゲーム用に開発した)既存のフレームワーク GameBoardPanel をもとに、イベントハンドラーを拡張します。# --------------------------------------------------- after ----- def this_mouseClicked(self, e): stone = self.detectStone(e) print ">>> th…

要求仕様の変更:オセロゲーム〈蜂の巣〉hexagon 4/5

《Previous|4/5|Next》 Shall_we_Agile = Java.use(better, Python) # 《記事一覧》

新たなパネル:メソッド

(ゲーム用に開発した)既存のフレームワーク GameBoardPanel をもとに、その機能を拡張します。 # --------------------------------------------------- after ----- def locateItems(self): for x, y in self._items(): self.items.append(NullStone(x, y…

新たなパネル:クラス属性

新たなゲーム用のパネル HexOthelloPanel を規定します。# --------------------------------------------------- after ----- class HexOthelloPanel(GameBoardPanel): _bounds = (-1, -1), (1, -1), (2, 0) _bounds = list(_bounds) + [(-x, -y) for x, y …

新たなフレーム

新たなゲーム用のフレーム HexOthelloFrame を規定します。# --------------------------------------------------- after ----- class HexOthelloFrame(DefaultFrame): def initialize(self): self.panel = HexOthelloPanel()従来の格子模様の盤面では、六…

新たなゲームを作成する:ビュー

新たなゲームを構成するために「ビュー」について再考します。要求仕様の変更に伴って、既存のリソースをどのように再利用できるかが鍵となります。

要求仕様の変更:オセロゲーム〈蜂の巣〉hexagon 3/5

《Previous|3/5|Next》 Shall_we_Agile = Java.use(better, Python) # 《記事一覧》

図形を正確に配置するには

各六角形を蜂の巣状に配置するには、ひとつ置きに配置するだけです。図のように、各六角形には、固有の座標を与えます。ここで、座標 (3,0) と座標 (5,0) との間には、座標 (4,0) に相当する図形が存在しません。また、座標 (2,1) と座標 (4,1) との間には、…

図形の位置を正確に検出するには

六角形の内部を「精確に」判定するのは面倒です。しかし、正多角形の内接円を使うと、単純な計算で「大まかに」判定できます。図のように、半径の長さが 7 の内接円を想定します。すると、円の中心と任意の点との距離の自乗が 49 以下なら、その点は円の内部…

不正確な正六角形を正確に表現するには

正六角形を正確に表現するのに、整数座標系は不適切です。かと言って、浮動小数で図形を表現しようとすると、誤差が累積します。そこで、次のように、整数座標系で表示可能な、正六角形に近い図形で代用します。三辺の比が a:b:c の三角形に、三平方の定理を…

数学の時間ですよ

要求仕様の変更:オセロゲーム〈蜂の巣〉hexagon 2/5

《Previous|2/5|Next》 Shall_we_Agile = Java.use(better, Python) # 《記事一覧》