こんにちは。
hsp3clですが・・とりあえず、研究はできるかもしれませんが、ゲームを作るには厳しいかと思います。
標準コンソールを使用してGUIなゲームを作ることを目的とするならばパイプ(pipeexec)を
使ってHSPと通信をする必要があると思います。
ただ・・、HSP標準のpipeexecはpipeput、pipegetなどと連携して使うのですが、どうも使いづらく、
テストプログラム組んで試してみてもうまく動作しませんでした。
あちらこちら探してみたところ、月影ともさんという方が、使いやすいパイプモジュールを公開されてました。
>Win32 コンソール向きパイプ通信モジュール
http://tu3.jp/0569
このモジュールを、感謝の意を表しながらHPからもらって来て、pipe2.hsp という名前で保存します。
プログラムと同じフォルダ、もしくはHSPのcommonフォルダに入れてください。
以下、このモジュールを使用してのUSIとの通信テストプログラムです。
USIエンジンの Lesserkai.exe 等は、今プログラムのあるところのEngineフォルダ内にある前提です。
#include "pipe2.hsp"
screen 0, 640, 480
title "pipe2execを使ってUSIプロコってみるテスト"
sdim buf, 4016 //バッファサイズは適当
pid = 0 //これにパイプID入れる
//実行ファイル指定
pipe2exec "Engine\\Lesserkai.exe"
if stat < 0 {
//エラー(↑実行ファイルの場所間違わないように。もしくは自分環境に書き換える)
dialog "パイプ作成できず..げふっ"
end
}
//パイプIDがstatに帰ってくるので回収する
pid = stat
//ためしに初期化コマンドを送ってみる
//(最後に必ず"\n"を入れないと無限ループになるようだ)別に"usi\n"でもおk
pipe2put pid, "usi" + "\n"
//ループさせて状況を調べ、確定後先にすすむ
repeat
//パイプから来る情報を確認
pipe2check pid
if stat & 1 {
mes "pipe:実行中"
}
if stat & 2 {
mes "pipe:標準出力"
//標準出力でデータを受信
pipe2get pid, buf
break
}
if stat & 4 {
mes "pipe:エラー出力"
//エラー出力でデータを受信
pipe2err pid, buf
break
}
await 17
loop
//USIエンジンから取得したデータを画面に表示する
mes buf
//パイプを閉じる
pipe2term pid
//最後にキメゼリフ
mes "正常に終了したよ!"
stop
きちんとUSIからの返事がありましたか?
実行中はパイプIDを使ってコマンド送信、受信確認、受信を繰り返す感じになります。
受信データはbufに入っているので、これを加工すればゲームに使えますね。
以上。(・ω・`)