まえがき
現在の進行状況
- 盤が完成(?)し、駒が動かせる状態。
- 後手の駒がランダムに動く(多分合法手)
バグ
- 指し手表示で持ち駒を打った場合の表記が●●歩(1,9)となる
今後の予定等
- コンピュータ側の思考
- 合法手を出力
- 局面評価の関数作成
- 詰めルーチン
まずは王手検索から…
- 定跡データベース・エディタ
- 見た目など
- プログラム(コード)の整理
- 使っている変数を思い出し、見直す。
- HSP2.6以降でも動くようにする。
- 見やすく書き直す。
- 早い処理速度のアルゴリズムを目指す。
盤の表現について
変数ban(x)
- 1一から9九までのマスをban(0)〜ban(79)で表している。
位置については以下のとおり。
0
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
| 10
| 11
| 12
| 13
| 14
| 15
| 16
| 17
| 18
| 19
| 20
| 21
| 22
| 23
| 24
| 25
| 26
| 27
| 28
| 29
| 30
| 31
| 32
| 33
| 34
| 35
| 36
| 37
| 38
| 39
| 40
| 41
| 42
| 43
| 44
| 45
| 46
| 47
| 48
| 49
| 50
| 51
| 52
| 53
| 54
| 55
| 56
| 57
| 58
| 59
| 60
| 61
| 62
| 63
| 64
| 65
| 66
| 67
| 68
| 69
| 70
| 71
| 72
| 73
| 74
| 75
| 76
| 77
| 77
| 78
| 79
|
- マスに駒が無いときはban(x)=0
- 駒台の駒については以下の通り
先手の駒台:ban(81)〜ban(87)
ban(81):持ち駒の飛車の枚数
ban(82):持ち駒の角の枚数
ban(83):持ち駒の金の枚数
ban(84):持ち駒の銀の枚数
ban(85):持ち駒の桂馬の枚数
ban(86):持ち駒の香車の枚数
ban(87):持ち駒の歩の枚数
※後手の駒台:ban(88)〜ban(94)には 先手の駒台番号に7を加えたものが対応
駒の種類
- 駒に番号をつけて局面を変数で表す
番号は以下のとおり
| 王
| 飛
| 角
| 金
| 銀
| 桂
| 香
| 歩
| 先手
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| (成)
| -
| 9
| 10
| -
| 11
| 12
| 13
| 14
| 後手
| 15
| 16
| 17
| 18
| 19
| 20
| 21
| 22
| (成)
| -
| 23
| 24
| -
| 25
| 26
| 27
| 28
|
- 駒を並べるとこのような感じになります。
;駒の初期配置
dim ban,100
ban.0=22,23,24,25,28,25,24,23,22 ;1段目
ban.9=0,27,0,0,0,0,0,26,0 ;後手の飛・角
ban.18=21,21,21,21,21,21,21,21,21 ;後手の歩
ban.27=0,0,0,0,0,0,0,0,0 ;4段目
ban.36=0,0,0,0,0,0,0,0,0 ;5段目
ban.45=0,0,0,0,0,0,0,0,0 ;6段目
ban.54=8,8,8,8,8,8,8,8,8 ;先手の歩
ban.63=0,2,0,0,0,0,0,3,0 ;先手の角・飛
ban.72=7,6,5,4,1,4,5,6,7 ;9段目
省略するとこうなります
;駒の初期配置
dim ban,100
ban.0=22,23,24,25,28,25,24,23,22,0,27 ;後手(1段目と飛車)
ban.16=26,0,21,21,21,21,21,21,21,21,21 ;後手(歩と角)
ban.54=8,8,8,8,8,8,8,8,8,0,3 ;先手(歩と角)
ban.70=2,0,7,6,5,4,1,4,5,6,7 ;先手(1段目と飛車)
- 使用する駒の画像
駒のサイズは32×32のjpeg形式(サイズ縮小とHSPlet対応の為)
棋譜の表記について
棋譜表示サブルーチン
現在の状態・問題点・課題等memo
- 先手番の指し手のみしか表示していない。
- HSP2.55(HSPlet対応のため)
- 不成に未対応
- 「打」「右」「行」等の表現を今後検討
;-------------- 指し手表示 --------------
*sasite_hyouji
if teban=gote:return ;先手のみ表示
kihuyoko="987654321"
yoko=masux
a="??"
wpeek b,kihuyoko,masux*2
wpoke a,0,b
kihutate="一二三四五六七八九"
tate=masuy
c="??"
wpeek d,kihutate,masuy*2
wpoke c,0,d
if koma=1:e="王"
if koma=2:e="飛"
if koma=3:e="角"
if koma=4:e="金"
if koma=5:e="銀"
if koma=6:e="桂"
if koma=7:e="香"
if koma=8:e="歩"
if koma=9:e="龍" :if nari=1:e="飛成":nari=0
if koma=10:e="馬" :if nari=1:e="角成":nari=0
if koma=11:e="成銀" :if nari=1:e="銀成":nari=0
if koma=12:e="成桂" :if nari=1:e="桂成":nari=0
if koma=13:e="成香" :if nari=1:e="香成":nari=0
if koma=14:e="と" :if nari=1:e="歩成":nari=0
kif+=""a+c+e+"("+aa+""+bb+")"+"\n"
return
その他
|