【オセロ,将棋】ボードゲーム【囲碁,War】

■ このスレッドは過去ログ倉庫に格納されています
1名前は開発中のものです。
垢版 |
03/07/10 00:10ID:6FQp6G+O
比較的地味なボードゲーム専用のスレが欲しくて立ててみました。

私はc言語で作ったデータベースを使って人間と対戦できる将棋かチェス
みたいなソフトを作りたいと思ってますが、グラフィックインターフェースの
作り方がわからなくてつっかえているレベルです。
03/07/10 00:46ID:c+Tl/JM7
>>1
まずユーザインタフェースは、テキストベースで作れ。
盤面を表示して、指す座標をひとつずつ入力させるタイプ。
AIのテストなら、それくらいで十分だろ。
03/07/10 00:48ID:c+Tl/JM7
もうひとつ逝っておくと、「私は云々」みたいなことは、>>1に書くべきではないな。
単発質問スレだとおもわれるぞ?(もし真性単発質問スレだったらスマソw)
4名前は開発中のものです。
垢版 |
03/07/10 06:47ID:ZYbxAUmJ
ありがとうございます。単発というわけでなく話題提供のつもりでしたが
まぎらわしかったですね。すみません。ボードゲームに関するいかなる
話題でも参考になるのでそういう風に解釈してください。
あと2でいわれたテキストベースというのは具体的にどのようなことを
すればいいのかもう少し詳しく教えてくださいませんか。当方c言語を
はじめて一ヶ月。BCCだけでとりあえず思考ルーチンだけはめどが
たってきた程度で表示はまったくの素人なのです。
5名前は開発中のものです。
垢版 |
03/07/10 21:54ID:661ntdMC
自信作のエロサイト!

http://alink3.uic.to/user/angeler.html
6直リン
垢版 |
03/07/10 22:12ID:NVbp/PY1
http://homepage.mac.com/maki170001/
7_
垢版 |
03/07/10 22:44ID:MmlDAKc1
http://homepage.mac.com/hiroyuki44/jaz09.html
03/07/10 23:37ID:c+Tl/JM7
>>4
盤面の状態はどうやって持ってるの?
9
垢版 |
03/07/11 02:32ID:tBkU7GoV
ミニゲームなのであらゆる可能なポジションに対しそれが最善で
何手で詰むかまたは引き分け(ドロー)かの情報を得ることができますので
それを一度作ってデータベースとしてそれを参照しながら(数MBになる予定)
次の一手を考えるようにしたいと思ってます。まだ途中ですが。
03/07/11 03:08ID:h6ee7c7G
>>1
Cのコンソールでやるなら、オセロ、囲碁なら、●〇+で
将棋は歩v等か外字エディタとか。僕は今時間が空いているので、
コンソール×外字エディタの将棋をウインアプリに作り直している。
Win32APIにCreateFont関数があるから、それで逆の文字も表示できる。
一番良いのはやっぱりビットマップを用意して表示する。

参考に7行プログラミングで作られたもの。Cコンソール。
http://pc.2ch.net/test/read.cgi/tech/984182993/372

#include <stdio.h>
int*i,p,t,a,d,v,m[91]={-10,-9,-8,-1,1,8,9,10},s;void k(){if(m[p]==0)for(i=m;*i
;i++){for(v=p+*i;m[v]==9-t;v+=*i);if(v-p-*i&&m[v]==t&&(s=a=v=p,d))do m[v]=t,v
+=*i;while(m[v]-t);}}main(){for(m[40]=m[50]=s=t=3,m[41]=m[49]=6;s-1;a=d=0){for
(p=8;++p<82;printf("・\0○\0●\0\n"+m[p]))p%9?k():m[p]=9;for(a?d=a=p=9:s?s=0,
puts("pass"):s++;a==9;k())t-6?scanf("%d%d",&p,&v),p+=v*9:++p;t=9-t;}return 0;}

>>2さんが言っているような感じ。思考ルーチンができるなら、
めちゃ強いのを作ってから、グラフィカルなのに入っても遅くない。
03/07/11 11:04ID:JYguR8yG
いきなり7行オセロかよ!初心者にはつらそう。
まぁ、適当にサンプルを書いておこう。
syouhai_hantei()
cpu_no_sikou_routine()
の二つの関数さえ書けば、完璧な囲碁ソフトだぜ!

ちなみに、↓は囲碁だけどbanmen,koma,syohaiを変えれば、将棋でもチェスでも同じ。
------------------
int banmen[19][19] = {{0}}; /* ←グローバル変数 */
char *koma[] = {"+", "●", "○"};
char *syohai[] = {"", "●の勝ちです", "○の勝ちです", "引き分けです"};
int i, j, r;
while (1) {
  for (i = 0; i < 19; i++) {
    for (j = 0; j < 19; j++) {
      printf("%s", koma[banmen[i][j]]);
    }
    printf("\n");
  }
12続き
垢版 |
03/07/11 11:05ID:JYguR8yG
  do {
    printf("縦?\n");
    scanf("%d", &i);
    printf("横?\n");
    scanf("%d", &j);
  } while(i < 0 || i >= 19 || j < 0 || j >= 19);
  banmen[i][j] = 1;
  r = syouhai_hantei();
  if (r != 0)
    break;
  cpu_no_sikou_routine(&i, &j);
  banmen[i][j] = 1;
  r = syouhai_hantei();
  if (r != 0)
    break;
}
printf("%sの勝ちです。", syohai[r]);
13間違い
垢版 |
03/07/11 11:06ID:JYguR8yG

  cpu_no_sikou_routine(&i, &j);
  banmen[i][j] = 2;
だった。ごめ。
14名前は開発中のものです。
垢版 |
03/07/16 10:39ID:/YDbp02a
話題もないですし対戦でもしてみます?
一応プラットフォームとしては
リバーシ
http://dahlia.xrea.jp:8080/hikky/index.php?%5B%5B%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%BB%A8%C3%CC%2FReversi%5D%5D
もありますしプラットフォームから作るのもおもしろいんじゃないかと
03/07/24 15:23ID:WvOHnIpg
放置されてるスレなんで上げてみた。
いいんじゃね、東大将棋とかがどうかしましたかって言うのは無理だけど
なんか作りたいね。
16名前は開発中のものです。
垢版 |
03/07/24 15:31ID:KoHs+Voy
http://www.k-514.com/sample/sample.html
  _、_ 癒し系か・・・
( ,_ノ` )y━・~~~ 見たらどうだ・・・
17名前は開発中のものです。
垢版 |
03/07/24 16:03ID:xMvniY6D
http://www.39001.com/cgi-bin/cpc/gateway.cgi?id=ookazujp
http://www.39001.com/cgi-bin/cpc/welcome.cgi?id=ookazujp
http://www.bannerbridge.net/cgi-bin/click.cgi?mid=b000000002&pid=p000000244
http://www.bannerbridge.net/cgi-bin/click.cgi?mid=b000000003&pid=p000000244
http://www.bannerbridge.net/cgi-bin/click.cgi?mid=b000000017&pid=p000000244
http://www.adultshoping.com/index.cgi?id=1057809839
http://www.bannerbridge.net/cgi-bin/click.cgi?mid=b000000008&pid=p000000244

!!!!! ━━━━━━(゚∀゚)b━━━━━━ グッジョブ!!!!!
03/07/25 00:23ID:fakPmJ3A
結局>>1はどうなったの?
19名前は開発中のものです。
垢版 |
03/07/29 07:57ID:g9GIpNGm
1より森田さんはどうなったの?
2020
垢版 |
03/09/27 13:02ID:BQIe1Jzq
JAVA、将棋、行ってみます。
方針は、1億局指す、すべての局面の勝率を記憶する。

public class example3{
public static void main(String arg[]){
//
int banmen[][] = new int[9][9];
char koma[] = {'+','F','O','+','f','o'};
String syohai[] = {" ","先手の勝ちです","後手の勝ちです","引き分けです"};
int i, j, r;
banmen[0][4]=5;banmen[2][4]=4;
banmen[6][4]=1;
banmen[8][4]=2;

{
for (i = 0; i < 9; i=i+1) {
for (j = 0; j < 9; j=j+1) {
System.out.print(koma[banmen[i][j]]);
}
System.out.print("\n");
}
}
}
}

21あぼーん
垢版 |
03/09/27 13:19ID:V9CFc5A8
あぼーん
2220
垢版 |
03/09/27 14:53ID:BQIe1Jzq
歩、香車、桂馬、銀、金、角、飛車、王、と金、成り香、成り桂、成り銀、竜馬、竜
pawn,lance,night,silver,gold,bishop,rook,oh,Tokin,yari,narikeiMa,argent,dragonHorse,dragon
で行く。

lnsgogsnl
.r.....b.
ppppppppp
.........
.........
.........
PPPPPPPPP
.B.....R.
LNSGOGSNL
03/09/27 15:33ID:GI1kgLEP
囲碁や将棋で一番アツいところは、コンピュータの思考ルーチンだと思う。
24_
垢版 |
03/09/27 15:38ID:8HTp6N1L
  ∋8ノノハ.∩   http://endou2.kir.jp/hankaku11.html#.2ch.net
   川o・-・)ノ <先生!こんなのがありました!
http://endou2.kir.jp/hankaku04.html#.2ch.net
http://endou2.kir.jp/hankaku03.html#.2ch.net
http://endou2.kir.jp/hankaku10.html#.2ch.net
http://endou2.kir.jp/hankaku05.html#.2ch.net
http://endou2.kir.jp/hankaku08.html#.2ch.net
http://endou2.kir.jp/hankaku07.html#.2ch.net
http://endou2.kir.jp/hankaku01.html#.2ch.net
http://endou2.kir.jp/hankaku06.html#.2ch.net
http://endou2.kir.jp/hankaku02.html#.2ch.net
http://endou2.kir.jp/hankaku09.html#.2ch.net
2520
垢版 |
03/09/27 15:56ID:BQIe1Jzq
>>23
もち、ろん、です。

名人が最善手と次善手しか指さないと仮定すれば、1兆局面を用意
すれば、80手まではOKになる。あとは森田将棋に頼む。
よもや3善手を指すような事はあるまいが、そのときは灯台将棋に引き継ぐ。
26直リン
垢版 |
03/09/27 18:56ID:rs35jAW+
http://www.leverage.jp/bloom/qry/search.qry?function=first
2720
垢版 |
03/09/27 20:58ID:BQIe1Jzq
public class example3{
public static void main(String arg[]){
int banmen[][] = {
{2,3,4,5,8,5,4,3,2},
{0,7,0,0,0,0,0,6,0},
{1,1,1,1,1,1,1,1,1},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{10,10,10,10,10,10,10,10,10},
{0,15,0,0,0,0,0,16,0},
{11,12,13,14,17,14,13,12,11}};
char koma[] = {'.','f','y','m','s','g','k','h','o',
'.','P','Y','M','S','G','K','H','O'};
String syohai[] = {" ","先手の勝ちです","後手の勝ちです","引き分けです"};
int i, j, r;

{
for (i = 0; i < 9; i=i+1) {
for (j = 0; j < 9; j=j+1) {
System.out.print(koma[banmen[i][j]]);
}
System.out.print("\n");
}}}}
03/09/28 11:11ID:yU8F/DmP
>>20さん
22の見ると、なんか将棋は素人っぽくてワロタ(悪い意味ではないです)


駒をテキスト表示するなら一文字で下記を使うと良いかも(下段は成り駒)

飛、角、歩、香、桂、銀、金、玉
竜、馬、个、仝、今、全
2920
垢版 |
03/09/28 12:58ID:JqB40bUM
>>28
はじめて見るアイディアで参考になります。色携帯、アジアスタンダードには良いかもしれない。
敵方表現で4バイトは必要?
当方、敵駒含めても1バイトで表現したいので、大文字先手、小文字後手、
日本語成らず、英語(フランス語)成り、で。 改定版は
fymsgokh,plnagobr
チェス屋含めてインターナショナル。
3020
垢版 |
03/09/28 14:42ID:JqB40bUM
試しに76歩、77歩を10億回まわして見た。P4、2.4Gで約10秒。
結構速いね。秒速100万手も夢ではない。 (劇刺で数十万手らしい)

'fymsgokh'は「フィムスゴコホ」と読む。タバコを吸うとスゴく咳き込む。

public class example3{
public static void main(String arg[]){
int banmen[][] = {
{2,3,4,5,8,5,4,3,2},
{0,7,0,0,0,0,0,6,0},
{1,1,1,1,1,1,1,1,1},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{17,17,17,17,17,17,17,17,17},
{0,22,0,0,0,0,0,23,0},
{18,19,20,21,24,21,20,19,18}};
char koma[] = {'.','f','y','m','s','g','k','h','o','p','l','n','a','g','b','r',
'.','F','Y','M','S','G','K','H','O','P','L','N','A','G','B','R'};
long i, j, r;

for (i=0;i<1000000000;i=i+1){
banmen[6][2]=0;
banmen[7][2]=17;

banmen[7][2]=0;
banmen[6][2]=17;
}
}}
03/09/28 21:45ID:JqB40bUM
初期面:
's00000000000000ymsgogsmy1h5k1fffffffff999FFFFFFFFF1K5H1YMSGOGSMY'
この派板にチェスはなかったのか。



03/09/28 21:52ID:JqB40bUM
'S0000000000000000ymsgogsmy1h5k1fffffffff999FFFFFFFFF1K5H1YMSGOGSMY'
03/09/30 21:30ID:gZv5839q
困らないか、盤上の駒数を計算すれば、足りないものが持ち駒。
0S5210y4o1my1y2gs1g1f4f1ff4s1f4bm2F3F2FS3F2G1F2F2S3H2YMOG3MY
0:平手
S:つぎ、先手番
5:先手持ち歩5
2:後手持ち歩2
1:先手持ち角1
0:後手持ち角0

任意の局面から、100万分の1秒以内で合法的な手を指したい。
200行から400行のプログラムで達成できればなんとかなるか。

9一に自分の駒があるか
8一に、、、、、

3五に自駒あるか、yes
  自駒は前にひとつ進めるか、yes
  進む先は盤内空枡または敵駒か、yes
候補手決定、return
03/10/01 02:23ID:06jconaO
>>31-33
>'S0000000000000000ymsgogsmy1h5k1fffffffff999FFFFFFFFF1K5H1YMSGOGSMY'
この暗号みたいな文字列が何を表わすのか教えて栗
35名前は開発中のものです。
垢版 |
03/10/01 02:39ID:JUQLzkMt
>>34
 まあ、なんとなく"ymsgogsmy"は"香桂銀金王金銀桂香"であろうことはわかるのだが。
36旧版
垢版 |
03/10/01 05:29ID:BGyx/9fV
>>34
2日古い旧版ですが、
"S0000000000000000"
S:次の手番、先手
00:先手持ち歩
000000:先手その他持ち駒の数
00:後手持ち歩
000000:後手持ち駒
小文字英字:後手盤上駒
大文字英字:先手盤上駒
数字:連続空枡の数
のつもりでしたが、持ち駒については、盤上に足りないものだけを
表示すればよいことにした。
「何手目まで指したか」の情報も入れたほうが良いかな。
チェスプログラマからのアイディアですが、あちらは持ち駒がない。
3734
垢版 |
03/10/01 20:24ID:IcaM+bMd
>36
なるほどあの文字列はそういう風にゲームの状態を表していたんですね。
当方将棋やチェスのプログラムを組んだことがないのでよくわかりませんが
初期状態としてプログラムを実行するときの引数などに与えれば、テストを
行ったり詰将棋を解かせたりするときに便利そうですね。
ただちょっと人間が読むにはちょっと読みにくい形式なので、例えば次のような
感じにセパレータをいれてみたりして読みやすくしてはどうでしょうか?
先手番:00000000:00000000:ymsgogsmy/1h5k1/fffffffff/9/9/9/FFFFFFFFF/1K5H1/YMSGOGSMY
03/10/01 21:22ID:BGyx/9fV
>>37
人間にもコンピュータにもと「ふたまた」をかけたものです。
気にかけていただき恐れ入ります。
2台のPC間の通信、局面データを保存するときのキーなどを想定しています。
ちなみに>>33
'平手先手番:52:10:y4o1my/1y2gs1g1/f4f1ff/4s1f2/2bm2F2/1F2FS3/F2G1F2F/2S3H2/YMOG3MY'は
後手持ち駒:歩2
y・・・・o・my
・y・・gs・g・
f・・・・f・ff
・・・・s・f・・
・・bm・・歩・・
・歩・・歩銀・・・
歩・・金・歩・・歩
・・銀・・・飛・・
香桂王金・・・桂香
先手持ち駒:角1歩5

03/10/01 21:49ID:BGyx/9fV
∨香 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄∨王 ̄ ̄∨桂∨香  後手:歩2
 ̄ ̄∨香 ̄ ̄ ̄ ̄∨金∨銀 ̄ ̄∨金 ̄ ̄
∨歩 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄∨歩 ̄ ̄∨歩∨歩
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄∨銀 ̄ ̄∨歩 ̄ ̄ ̄ ̄
 ̄ ̄ ̄ ̄∨馬∨桂 ̄ ̄ ̄ ̄∧歩 ̄ ̄ ̄ ̄
 ̄ ̄∧歩 ̄ ̄ ̄ ̄∧歩∧銀 ̄ ̄ ̄ ̄ ̄ ̄
∧歩 ̄ ̄ ̄ ̄∧金 ̄ ̄∧歩 ̄ ̄ ̄ ̄∧歩
 ̄ ̄ ̄ ̄∧銀 ̄ ̄ ̄ ̄ ̄ ̄∧飛 ̄ ̄ ̄ ̄
∧香∧桂∧王∧金 ̄ ̄ ̄ ̄ ̄ ̄∧桂∧香  先手:角歩2


03/10/02 20:04ID:cBMmv4Dp
1人頑張ってる奴がいるな

コンピューター将棋スレッド11
http://game.2ch.net/test/read.cgi/bgame/1064575087/

おまいら最強の将棋プログラムしてみろよ part2
http://pc2.2ch.net/test/read.cgi/tech/1043246252/
03/10/02 21:42ID:ud54yjB9
だれか、Cで10億回まわして。
42 ◆R/rLuLKeEI
垢版 |
03/10/03 22:14ID:6g0/L3Ad
>>40
頑張ってますよ。
03/10/05 23:34ID:WQ0kK/U9
>>1
>c言語で作ったデータベースを使って人間と対戦できる将棋かチェス

データーベースはC,JAVA無関係なので、作りましょう。
まずは先手、機械、19手まで。
1:76歩
3:
14歩:xxx;24歩:xxx;34歩:xxx;44歩:xxx;
54歩:xxx;64歩:xxx;74歩:xxx;84歩:xxx;
94歩:xxx;32銀:xxx;42銀:xxx;32金:xxx;
42金:xxx;52金左:xxx;42玉:xxx;52玉:xxx;
......


03/10/06 21:37ID:u0x9oIcm
1手目は76歩:77760
3手目は後手指手にかかわらず26歩:27260
13140:27260
23240:27260
33340:27260
...
91920:27260
5手目
13140,14150:26250
...
33340,53540:39480
33340,41320:69780
...
03/10/07 20:56ID:ViuviOpc
1手目、3手目、コンピュータがいつも同じ手では面白くない。
1手目:30
2手目:30
3手目:8
4手目:26
5手目:4
6手目:16
7手目:2
8手目:12
9手目:2
10手目:8
.....
位が適当か、
03/10/07 21:19ID:ViuviOpc
30*30*8*26*4*16*2*12*2*8=40,0062,7200 すでに46億か、無理だ。
30*30*4*16*2*8*2*4*1*2=1474,5600 15百万、この程度か。
あと50手を先手1手、後手2手で、32百万、掛けると、
472兆、ちょっと苦しい。
8*30*2*16*1*8*1*4*1*2=491520 、30分の一になった。
16兆。 これで60手までOK
機械でうまくはじき出せるか。
47無理
垢版 |
03/10/09 03:57ID:G6zbUIk0
相手の手を2手用意したのでは、すぐに定跡から外れて役に立たないか。
4手まで用意で、40手までで、1兆。
03/10/09 10:04ID:RyMlJxaL
コンピューターの将棋は、終盤はプロ並の寄せをするようになったが
序盤から中盤はイマイチだからねぇ。
03/10/09 21:34ID:LCLj7mCa
40手目まで先手後手5分の将棋を、コンピュータと強い人間が引き継いで指せば、人間勝利は当然。
では、130手で終局した互角の名勝負を、現在の最強ソフトと最強人間で指し継ぐとすれば、何手目くらいからが、良い勝負になるでしょう。
03/10/11 01:31ID:KnVdGg3r
>>49
ま、言いたい事は大体分かるけど、もっと分かりやすい日本語使おうな(5分→互角)
ってか文章の最後のほうなんて、とても日本人とは思えんぞ。

あんまり将棋が指せない(棋力が低い)人なんだろうけど、
「40手目まで指し終わり、その状況がほぼ互角」ってのは、そうそうないと思うし、
お互いにプロ並の棋力があっても、なかなか互角だと断言できないだろうから難しいよ。

130手というと終盤の状況だろうし、その時点でもマァマァ長手数の部類になるから
「優劣なし、互角」と断言ができずに無理っぽい。
(矛盾してるっぽいが、もし本当に互角の状況なら手番があるほうが有利になる場合が多いのでは)
03/10/11 11:00ID:K9b3BQSh
//www.colina.demon.co.uk/chu.html.
中将棋のソースがあった。

if timeRemaining == 60000 then do -- byo yomi
basicTime=sp.getByoYomiTime() -- 13 seconds - cautious
maximumTime=55 -- leaves 5 seconds in which to actually make the move
end



if abbrev.equals(String "P") then return "Pawn"
else if abbrev.equals("+P") then return "Tokin"
else if abbrev.equals(String "K") then return "King"
else if abbrev.equals(String "L") then return "Lance"
else if abbrev.equals(String "S") then return "Silver General"
else if abbrev.equals(String "G") then return "Gold General"
else if abbrev.equals(String "B") then return "Bishop"
else if abbrev.equals(String "R") then return "Rook"
52BitSet
垢版 |
03/10/12 16:55ID:vJq46n+e
JavaにBitSetクラスというものがあるのを偶然見つけた。
81枡での駒の存非をビットで表現するのに便利そう。
53名前は開発中のものです。
垢版 |
03/10/18 00:28ID:fl0E31RS
やさしいチェスプログラムがあった。
これを焼きなおして見よう。

//build start position
int [] org = {
99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
99,124, 22, 23, 25,126, 23, 22,124, 99,
99, 21, 21, 21, 21, 21, 21, 21, 21, 99,
99, 00, 00, 00, 00, 00, 00, 00, 00, 99,
99, 00, 00, 00, 00, 00, 00, 00, 00, 99,
99, 00, 00, 00, 00, 00, 00, 00, 00, 99,
99, 00, 00, 00, 00, 00, 00, 00, 00, 99,
99, 11, 11, 11, 11, 11, 11, 11, 11, 99,
99,114, 12, 13, 15,116, 13, 12,114, 99,
99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
99, 99, 99, 99, 99, 99, 99, 99, 99, 99 };

for (int i=0; i < 120; i++)
board [i] = org [i];

//update screen
repaint ();
03/10/24 13:59ID:B1JCysav
>>36
後手盤上駒、先手盤上駒の順に分けると:
'0S:lnsgkgsnl/1r5b1/ppppppppp/108/ppppppppp/1b5r1/lnsgkgsnl'

'0S5210:l4k1nl/1r2gs1g1/p4p1pp4s1p/4Bn/83/p3p2ps3/p2g1p2p/2s3r2/lnkg3nl'
左上隅から順に81枡で後手駒終わり、次先手駒。大文字は成り。
文字の種類が少なくなってすっきりした。

>>38、39  8二香は誤り、8二飛
>>30 banmen[7][2]=17;は誤り、banmen[5][2]=17;




03/10/24 14:22ID:B1JCysav
大文字と小文字を逆にして見た。
'0S5210:L4K1Nl/1R2GS1G1/F4F1FF/4S1F4bN/83/F3F2FS3/F2G1F2F/2S3R2/LNKG3NL'
「0S5210:香4王1桂香/1飛2金銀1金1/歩4歩1歩歩/4銀1歩2/2馬桂
/83/歩2/1歩2歩銀3/歩2金1歩2歩/2銀3飛2/香桂王金3桂香」
03/10/25 21:28ID:X5VuBDRK
一兆と一口に言っても1秒で1局面を評価結論出して行って3万年かかる。
10000,0000,0000/60/60/24/365.25=31688.08781
03/10/27 23:32ID:94uElLdI
まずは盤が必要。
9x9
11x11
16x16
どれが良いか。9x10を延長して13x10+1にしよう。
なぜプラス1か?

99,99,99,99,99,99,99,99,99,99,
99,99,99,99,99,99,99,99,99,99,
99,18,19,20,21,24,21,20,19,18,
99,00,23,00,00,00,00,00,22,00,
99,17,17,17,17,17,17,17,17,17,
....
....
99,99,99,99,99,99,99,99,99,99,
99,99,99,99,99,99,99,99,99,99,99
のような感じ。99より48が良いか。
11x11の採用者は1列無駄だよね。チェスじゃないから
桂馬は横に飛ばないのに。
03/10/31 15:46ID:X+ZKdv/s
発見!! 64JAVA
J2SE Itanium v 1.4.2_02 のダウンロード
でも、ハードとOSの値段は??  あ、OSはRedHatでも良いか。
03/10/31 20:32ID:X+ZKdv/s
Itanium2はサーバー用か。Athlon64用だと良かった。
03/12/10 04:37ID:Sw46xuo+
案1:
人間とプログラムが対戦する際、
人間側の選択肢を「2択」データベースで用意する。
例えば人間初手なら:
1:76歩
2:26歩
3:投了
その他の手は選択不可とする。
プログラム側の対応手を1手用意する。
初手より70手までで320億応手。
70手終了時点で、
歩:1点、小駒:2点、大駒:10点で集計。得点多いほうが勝ち。
これなら全ての手をゼロ秒で送り出せる。 遊べると思います?
03/12/10 10:56ID:a8St1G3J
ストレスが溜まると思う
03/12/12 19:34ID:0lTC0Jam
中盤以降、どうやって2手に絞り込むのだ?
03/12/12 21:25ID:fBTD6+Y3
申し訳ない。へぼプログラムの考える最善2手だから、ロクな手では無いとおもわれ、
まずは携帯用ストレス解消用。ナズケテ「ストレス将棋」
03/12/12 21:58ID:fBTD6+Y3
序盤34手まで、13万通り、は過去局CDROMから頻出手を選ぶ。
以降は1局面あたり、プログラムで1000秒思考した結果最善2手を保存する。
PC1台で1314.9局面/年。1000台のPCにお願いして、131万局面。
約40手先、合計で74手まで用意できる。
コンピュータの考えた次善手をたどると実は人間側の勝ちになったりする?。

03/12/12 22:09ID:fBTD6+Y3
計算違いだ。34手目までは、過去の名局ただ1局のみをベースにする必要がある。
もしくは、最新の流行1局。こちらだと1年先の保証がない
03/12/13 04:48ID:FZIp2nQw
計算バグ
PC1台で31557.6局面/年 (24倍を忘れた)
40台程度の協力者でよい
03/12/13 04:54ID:FZIp2nQw
40手までの「2ちゃんボードゲーム板標準手順」を将棋の強い方に上げてもらおう。
その後の30手をDB作成する。まずは1秒思考版で。
03/12/20 07:51ID:cJscYprH
1. 盤、Bang、 は取りあえず 9x9=81の一次元配列にしよう。
  あとで変更するかも知れない。
2. 駒、 こちらも適当に、
   先手歩:16、先手香車:17、後手歩:32、、
3. generateArandomMove()
乱数で合法手を1手作成して返す。 

4.何局か指して、勝率の良いもの選ぶ。

計画
1.詰め将棋、1手詰め
2.詰め将棋、3手詰め
3.詰め将棋、5手詰め
4、次の一手問題
5、2日制将棋1日目終了後指し継ぎ
6、序盤データベース



03/12/20 13:55ID:cJscYprH
944422200
....K....
.........
....g....
.........
.........
.........
.........
.........
.........
000010000
1手詰め、持ち駒、金

ランダムに3手指し終了した時点で駒台に敵玉がのっていれば
勝ち、その他は負け。


03/12/21 01:05ID:45Mhtaty
50万回試行した。結果は、、、、、、
41金:702
61金:727
42金:540
52金:663
62金:588
ちょっと予想と違う結果になった。

61金、62王、のあと9分の2の確率で王を取る。
52金、61王、のあと10分の1の確率で王が駒台にのる。
とりあえず理屈には合って居そう。
「逃げる」「取る」手を覚えさせれば、なんとかなりそう。

次の1手詰めをやってみよう
844322100
.........
......G..
.........
......dsK
........G
.........
.........
.........
.........
000000000
持ち駒無し

■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況