トップページgamedev
540コメント205KB

【アリス】system4.0【御用達】

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2006/11/05(日) 19:38:18ID:cVqN/Dcb
アリスソフトのゲーム開発で使われているsystem4.0のスレです。

長所 
・フリー
・C/C++ JAVAっぽい(オブジェクト指向 仮想マシン)
・ゲーム製作に特化している
・ADV、SLG、3Dダンジョン、なんでも作れる
・同梱されているチュートリアルが親切、解りやすい
・実際にアリスソフトで使用されている言語なので、力さえされば同じレベルのものが作れる

短所
・使用者が少ないため、参考にするサイトが少ない
・専用エディタが無い

アリスソフト公式 ユーザークラブ専用ページからDL可(登録無料)
ttp://www.alicesoft.com/
0268名前は開発中のものです。2007/09/15(土) 23:30:48ID:8R4Y24aZ
int フラグ=0;
while(1){
 KEY_CLEAR();

 if(KEY_IS_DOWN(VK_LBUTTON)){
  if(フラグ==2&&マウス動いたかチェック()){// アイテムつかんで移動中
  }
  else{
   if(今選択中のアイテム==クリックしたとこのアイテム){
    フラグ=2; // 二度目の選択なので掴ませる
   }
   else{
    フラグ=1; // 選択アイテム変更
   }
  }
 }
 else{
  if(フラグ==1){
   フラグ=0;
  }
  else if(フラグ==2){
   フラグ=0; // アイテム放した時の処理
  }
 }
}

イメージ的にはこうか?
選択後左ボタン離さなくていいならこれより簡単になるね。
0269名前は開発中のものです。2007/09/16(日) 15:31:45ID:/KVPUWxW
みんなどんなの作ってるの?
0270名前は開発中のものです。2007/09/18(火) 21:46:33ID:xaL6FU+C
>>267
>WIZとかのアイテムシステム
ってのはどのようなものですか?
0271名前は開発中のものです。2007/09/18(火) 21:58:37ID:xaL6FU+C
>>264
ままにょにょ でしたすいません。
0272名前は開発中のものです。2007/09/18(火) 23:15:28ID:OkpVoOWr
>>267
最近なくなってきたけどキャラが八個までとか
十個までしかアイテム持てないタイプのシステム。
アイテム用の配列をつくるんじゃなく、キャラクターデータの配列に
(他のパラメーターと同じように)所持アイテムの要素を加えているもの。
0273名前は開発中のものです。2007/09/18(火) 23:16:17ID:OkpVoOWr
おっと>270。
0274名前は開発中のものです。2007/09/18(火) 23:19:48ID:xaL6FU+C
>>272
なんとなくイメージが掴めました。

すると、ままにょにょのように(2*2マス)アイテムとかをセットしていくのは、
多次元配列っぽい扱いで組むと良い・・・感じになるのでしょうか。
0275名前は開発中のものです。2007/09/18(火) 23:23:06ID:nh0I3KRl
キャラデータに二次元配列でも持たせる。
0=装備不可、1=装備可、2=装備中として
2,2,1,1,0
2,2,1,1,0
1,1,1,0,0
みたいな感じにして装備時の判定に使う。
画面表示につかう装備位置とか種類はキャラごとにリストとして持っておく。

ぱっと思いついたのを適当にまとめようとしたら
中途半端になりそうだったのでここだけ。
というか、アイテムリストとかの作り方とかから関係してそうだし、
効率とかは別としていろんなパターンありそうだが。
0276名前は開発中のものです。2007/09/20(木) 23:28:58ID:20DvfK8F
txtファイルやバイナリファイルの
読み込み方がわからない・・・
誰か教えて下さい。
0277名前は開発中のものです。2007/09/21(金) 06:04:07ID:9fbbqFiF
それが何らかの構造体に対応する形式なら(設定データとか)File.dll使用。

と書いててふと思ったけど、
stringのみの構造体にFile.dllで全部読み込ませて
自前で文字列分割すればいける?。
File.dllで書き出したものしかダメかもしんないけど。
0278名前は開発中のものです。2007/09/21(金) 11:26:28ID:Tv3x8N6Q
DATAアクセスのDATA.hllってどうやって使うん?
変換ツールの使い方すらよくわからんorz
0279名前は開発中のものです。2007/09/21(金) 20:31:35ID:9fbbqFiF
使ったこと無いから違うかも。

変換はドラッグアンドドロップ。
iniファイルに書かれたフォルダに全部変換されるからNL5でリンク。

Openでデータを開いてReadで指定された構造体へ読込。
書いてないがRead毎に一つのデータを読むのかも。

サンプルデータ.txtだと多分構造体は
struct Data{
string; //名前
int; //性別
int; //体力
int; //攻撃
int; //魔法
int; //防御
int; //魔抵
string; //特技
int; //属性
};
こんな感じだと思われ(変数名とかはめんどいので省略)
データの#defineが効くのは変換時だろうし。
0280名前は開発中のものです。2007/09/21(金) 20:33:45ID:9fbbqFiF
改行多すぎたorz

int result;
Data param;
result = Open(リンク番号);
if(result == 1)
{
if(Read(param) == 1)
{
// 成功
}
Close();
}
これをちゃんと動くように書き直して試してみたらなんとかなるかも。
サンプルデータ.txt使ってランスが読み出せたら正解。
0281名前は開発中のものです。2007/09/22(土) 01:34:26ID:5k6/7BO3
ああ、iniファイルに指定されたフォルダ作ってドラッグドロップすれば良かったのか。
exeだけ実行しても何も起きないはずだorz

サンキュー、これでデータ組み込み&修正が楽になりまする。
0282名前は開発中のものです。2007/09/22(土) 20:55:43ID:lCiDoZD6
>>279
NL5って何?
0283名前は開発中のものです。2007/09/22(土) 21:02:08ID:lCiDoZD6
すまん、調べたらすぐでてきた
0284名前は開発中のものです。2007/09/23(日) 14:51:39ID:1iwE3MFE
>279,280

おかげさまでデータ読み込みまで出来るようになりましたアリガト!(´▽`)

予想通りreadコマンドで読めるの一行だけみたいでしたけど、
配列構造体に格納しつつエラーが出るまで読み続ければOKでした。

これでデータがかなり整理できまする(;つД`) タスカッタ

今まではエクセルのリストから初期化用定義文吐きだしてコピペ。
一個ずつ代入してくって面倒なコトしてたw
0285名前は開発中のものです。2007/09/23(日) 17:44:12ID:gTMsvm9z
>>284
できればソースを見せてくれませんか?
僕もやっているのですがうまくいかなくて
02862842007/09/24(月) 01:33:40ID:wQrq8l22
>>285
こんなんす。
ループが入っているだけで、教えてもらったのとほとんど一緒です。

===
void ★ReadData(void){
int No = 0;

if(Data.Open(1) == 1) {
while(true) {
No++;
if(Data.Read(g_ReadData[No]) == 1) {
// 読み込み成功

//system.MsgBox("No = " + g_ReadData[No].nNo.String() + ":名前 = " + g_ReadData[No].sName);

} else {
//system.MsgBox("データの読み込みを終了しました。");
break;
}
};

Data.Close();
} else {
system.MsgBox("データのロードに失敗しました。");
}

}
02872842007/09/24(月) 02:16:10ID:wQrq8l22
あ、そだそだ。
データチェックとか色々してたんでwhile文とif文分かれてますけど、
普通に作る分にはwhileだけで問題ないです。

うちも最終的には直すんで。
0288名前は開発中のものです。2007/09/24(月) 15:02:52ID:PLTvhaxX
>>286
サンクス。
286のやつでやってもうまくいかないから
Data.dllかNL5でのリンクがうまくいってないみたいだ
0289名前は開発中のものです。2007/09/30(日) 00:54:23ID:jYQSajes
「Data.dll」→RUN\DLLフォルダ
「Data.hll」&「Data.inc」→HLLフォルダ
この三つをそれぞれのフォルダに置いてSys42IDEの"HLLを追加"で追加したけれど
【Open】関数は定義されていません となって使えません
もしかして追加の仕方が間違ってるのでしょうか?
0290名前は開発中のものです。2007/09/30(日) 07:39:52ID:DbtRC+b1
ちゃんと「エイリアス名.Open」にしてるか。
System40.iniをしてるか。

この辺。
0291名前は開発中のものです。2007/10/09(火) 22:50:08ID:q9E93AE4
hosyu
0292名前は開発中のものです。2007/10/20(土) 01:07:20ID:+048CWqr
0乗は1になるのかー。初めて知った。
0293名前は開発中のものです。2007/10/23(火) 23:14:01ID:g6dhJWeE
過疎だ……。
誰かRPGとか作っている人います?
0294名前は開発中のものです。2007/10/24(水) 00:35:21ID:xn+nw84C
今パズル作ってるけど業務が忙しくなって丸2ヶ月くらい触ってない・・・
0295名前は開発中のものです。2007/10/25(木) 00:31:39ID:Zn6cpkxM
よさげな戦闘システム思いついたけど実装できなくて放置中
0296名前は開発中のものです。2007/10/25(木) 16:27:46ID:vNqY00up
>>295
晒したら誰か助言くれるかもよ
0297sage2007/10/26(金) 12:02:12ID:/MaVV48B
今ボードゲームタイプのRPGモドキを作ってる。

最近はwikiの更新が多くて嬉しい。
wiki充実させたいけど、面白い関数とかのネタも特にない。
どういう情報が載ってれば便利なのかな。
0298名前は開発中のものです。2007/10/26(金) 13:27:24ID:+vtTpZVu
あのゲームのこういうとこはこういう風にして動いててsystem4で書くとこうなるんですよ
的な解説とか面白そう&便利そう
0299名前は開発中のものです。2007/10/26(金) 23:39:08ID:HBlQXi9f
ゲームそのものの解説になるけど、そういうサイト自体少ないからな。


それより、wikiの更新が途切れないのはいいんが
あの独特のインデント・カッコの使い方は修整してもいいんだろうか?
まぁコード書いてる本人が判ってるなら別に文句を言う筋はないんだが
あんなスタイル始めて見た
0300名前は開発中のものです。2007/10/27(土) 00:00:22ID:94TX4bJ6
いいよー。もともと我流の上に、普段からTAB使いなんで
WIKIだと自分でも分かりにくいなと思ってる。
0301名前は開発中のものです。2007/10/29(月) 22:11:56ID:F5r4jyoq
今更思ったんだけど……。
RPGの制作って解説に向いて無い?
ソースの増え方が天井知らず。
0302名前は開発中のものです。2007/10/30(火) 00:03:44ID:c1631LRa
RPGでソースが増えるのは仕方ないかと

jafじゃなくてtxtファイルにしてくれたらブラウザで読めて便利かなと思った
ファイル数多いと落とすのがちょっと大変
まあ勝手な言い分なのでやりやすい形で続けてくれ
0303名前は開発中のものです。2007/11/01(木) 00:12:05ID:mCtKzBY/
システム4.0でシューティングは作れるのだろうか
グラディウスやR-TYPEのレベル
0304名前は開発中のものです。2007/11/01(木) 00:29:38ID:v32JWrVo
システム4.0でシューティングのサンプル、見たことありますよ。
0305名前は開発中のものです。2007/11/01(木) 00:43:59ID:mCtKzBY/
すげぇ
突き詰めればかなり融通が効くのだろうか
0306名前は開発中のものです。2007/11/01(木) 07:09:28ID:53sZItNQ
タスクシステムサンプルならスゲスゴにあると思う。

融通が効くというか、関数ポインタを構造体に持たせられるなら、
STGもACTもRPGもSLGもSRPGもそれほど変わらないような作り方で出来る。
処理の重さがネックだけど。
0307名前は開発中のものです。2007/11/01(木) 07:17:14ID:mCtKzBY/
関数どころか算数が出来ないレベルに落ちたぜ

最低限は可能だが(プラスマイナスかけるわり算)
それ以上の方程式という高度なレベルは
学生時代から投げ出していたぜ

そんな自分でもシステム4.0を構築出来なくはないレベルなのだろうか
0308名前は開発中のものです。2007/11/01(木) 11:16:48ID:4l261QOy
大丈夫でしょ。
面倒な計算はそれこそPCにさせればいい。
0309名前は開発中のものです。2007/11/01(木) 11:33:17ID:mCtKzBY/
何という恐怖
システム4.0を突き詰めれば
大概のゲームが作れるとわ…

数学分からないとか言い訳せず
頑張ってみる
0310名前は開発中のものです。2007/11/01(木) 19:34:57ID:gkLUOEZ3
究極に突き詰めたら、
最初にゲームシステムDLLを呼び出したまま最後まで返ってこなくなる気がする。
まあそこまで行ったら他のフリーライブラリのほうがいいんじゃね?とも思うが。
0311名前は開発中のものです。2007/11/02(金) 17:38:20ID:LI5jfqFF
俺はアリス儲だからsystem4.0でやる事に意義がある
まあたいしたもん作ってないけどさw
0312名前は開発中のものです。2007/11/02(金) 23:44:46ID:n3OSdW5H
ユーザークラブのZEROは「こういうのも作れます」
のよい見本だと思う。
0313名前は開発中のものです。2007/11/05(月) 22:47:48ID:eDoMJSU2
うー実行時に

【HLLからIString::Set()が呼ばれましたが、stringの実体は一時オブジェクトです】

と出る……。
これがintの場合は大丈夫なのに何故でしょう。
0314名前は開発中のものです。2007/11/06(火) 21:18:33ID:dVZUWYYT
>313
ふと思ったんだが、dll.func("ABC")とかやってない?
ref stringで。
いや、参照じゃなくてもこれができるかはわかんないし、
intなら大丈夫の意味もわかんないんだけど。

もし自前DLL作ってるなら、
どういう風に呼び出してるかとかHLLとか出してみてよ。
(そのままじゃなくてもいいから)
0315名前は開発中のものです。2007/11/06(火) 23:18:45ID:cZ2R0MB+
それが自作のDLLを使用しているわけではないんです。
全体のソースをはらせていただきます。

http://wikiwiki.jp/system4/?plugin=attach&pcmd=open&file=Source.zip&refer=%CB%DC%A5%B9%A5%EC%A3%D1%A1%F5%A3%C1%A4%DE%A4%C8%A4%E1

無駄に量はありますが、エラーの条件は

RPG \ CHAR_MAKE \ tagObject.jaf

にある、object構造体のコンストラクタの一行です。
同ファイルの先頭にあるg配列の

array@object asChar[20];

の要素数の倍、実行時にエラーメッセージが出るようですが、原因の見当がつきません。
ローカルでoName_baseを呼ぶ分には問題ないようです。
もし宜しければ教えて下さい。
0316名前は開発中のものです。2007/11/06(火) 23:23:09ID:cZ2R0MB+
あれ……テキストは直リンクできるのにZIPは出来ない?
このファイルです。

http://wikiwiki.jp/system4/?plugin=attach&pcmd=info&file=Source.zip&refer=%CB%DC%A5%B9%A5%EC%A3%D1%A1%F5%A3%C1%A4%DE%A4%C8%A4%E1
0317名前は開発中のものです。2007/11/07(水) 20:40:19ID:aH1Zfske
ええとごめん、時間がないからエラーの出る場所だけで。

game_main>asChar_Data>oCharMakeと辿っていって、
最終的にans_t::SString関数内の
if(szX != szA){asY[nL] = szX;return asY[nL];}
の行でエラーが出る。
asChar_Dataを呼ぶ前にAコマンドで止めて、
ブレークポイント使ってステップ実行するとわかると思う。

ただ、使い方が間違ってるのかどうかまではわかんない。
(ライブラリの作者さんならわかりやすいのかな)
あと、intなら大丈夫の意味も未だにわかんない。
0318名前は開発中のものです。2007/11/07(水) 22:25:35ID:aH1Zfske
ふと思いついて、
if(szX != szA){asY[nL] = szX;return asY[nL];}

if(szX != szA){asY.Erase(nL);asY.Insert(nL, szX);return asY[nL];}
としたらエラーはなくなったんだが、
これは>313、ライブラリ作者さん共に正しい動作になってるか?
0319名前は開発中のものです。2007/11/07(水) 23:13:39ID:xpaYlRaB
>>317-318
どうも有り難うございます。エラー箇所は分かったのですが、
何故エラーになるのかがどうしても分かりません。

>>318
まことに申し訳ないのですが、正しい動作になりません……。
第二引数に何を入れてもマウンテンデューが返ってくるようです。
「intなら大丈夫」というのはこういうことです。

//テスト
void game_main(void)
{
ans_t MS;

//MS.nSet("keyword",100);
//MS.nSet("keyword",200);
//N(MS.nGet("keyword"));A;//正常な動作だと200が出力

MS.ssSet("keyword","じむ");
MS.ssSet("keyword","がんたんく");
S(MS.ssGet("keyword"));A;//正常な動作だと"がんたんく"が出力
}

nSetはans_tのメソッド、SNumとほぼ同等のメソッドです。
ssSetはans_tのメソッド、SStringとほぼ同等のメソッドです。
SNumとSStringの違いは、int配列に入れるかstring配列に入れるかというだけで、
操作はほとんど同じです。

しかしnSet(上のコメントアウトしている方)は正常に動作し、
下のssSetの方は単独では前述のエラーメッセージが出ます
(コメントアウトを外し、先にnSetの方を動かすとssSetの方も正常に動きます)
どうしてこんな違いが出るのかに大混乱です。
03203182007/11/08(木) 19:54:53ID:mXVUOzqf
あ、InsertはPushBackしないのか。
>318の修正を
if(szX != szA){asY.Insert(nL, szX);asY.Erase(nL+1);return asY[nL];}
にしてみて。
修正前は文字列を直接置き換えてたっぽいから、
新しい文字列をその位置に挿入した後、後ろに一つずれた以前の文字列を削除するようにしてみた。

>319でもエラーは出ないし、
RPGの方も「無人」とか「勇者」とか出るようになったからちゃんと動いてるとは思う。

原因はわかんない。
stringの配列要素に直接代入するところが特殊仕様かもしれないけど、
ちゃんと動くこともあるからSystem4.0のバグなのかなぁ。
エラーが出るときもそうでないときも
デバッガに出るans_t変数の現在値は変わらないように見えるし。
0321名前は開発中のものです。2007/11/08(木) 19:56:16ID:NpNB32t6
代入はできませんが、加算代入はできるようなので、とりあえず↓こういう形でしのぐことにしました。

とはいえ、何故「asY[nL] = " "」が出来ないのかは未だに分からないので、
もし分かる方がいたらいつでもいいので教えて下さい。一定の条件のもと、
stringの代入が不可になるというのは、条件が分からないままだと困りそうです……。


//stringエラー対策用の代入式
void ADD(ref string szX,string szY)
{
int nLength = szX.Length();
szX += szY;
int nL;

for(;nL < nLength;nL++)
{
szX.Erase(0);
}
}

//文字列から要素を検索し、szXを返します。[asXが要素の役割]
string SString(string szX,string szV = szA,string szY = "Renew")
{ ans_ReAlloc;
int nL;for (nL = 0;nL < asX.Numof(); nL++)
{if(szX == asX[nL]){if(szV == szA){return asY[nL];}
if(szV != szA){ADD(asY[nL],szV);return asY[nL];}
}
} if(szY == "Renew" && szV != szA)
{asX.PushBack(szX);asY.PushBack(szV);return szV;}
return szA;
}
0322名前は開発中のものです。2007/11/08(木) 20:02:41ID:NpNB32t6
>>320
どうも有り難うございますー。上手くいきました。
値に干渉するのはよくて代入だけ駄目というのは本当何なんだろう……。
0323名前は開発中のものです。2007/11/10(土) 18:30:17ID:EfYdmYW2
まとめwikiからHLLshotcat.zipをダウンロードしたんだがパスが解らん
送られてきた会報のメールを確認してユーザーID入れてるんだが上手くいかないorz
0324名前は開発中のものです。2007/11/10(土) 18:34:59ID:EfYdmYW2
と思ったら出来た
スレ汚しスマソ
0325名前は開発中のものです。2007/11/13(火) 07:08:47ID:E7kpa99+
気がつくとWIKIもグーグルの1ページ目だなあ。内容は
初心者向けなのか上級者向けなのか分からないところはあるが……。
0326名前は開発中のものです。2007/11/19(月) 00:19:07ID:5fRgCIrj
いいってことよ
0327名前は開発中のものです。2007/11/28(水) 23:43:23ID:GQA8QXik
最近、関数や機能の整理ためにクラス使い出したんだけど、
クラス内のメソッド関数にデフォルト引数って使えんの?

「メソッド定義にデフォルト引数は使用できません」

ってエラーになっちゃうんだけど。

マニュアルのデフォルト引数の説明見る限りは使えるっぽいんだけどなあ。
0328名前は開発中のものです。2007/11/29(木) 01:38:38ID:YNi9MS+N
メソッドを分割して定義してるなら、上に定数を入れたらできたよ。
0329名前は開発中のものです。2007/11/29(木) 06:18:36ID:Z4mGFDpB
メソッド定義って出てるからそっちに書いてるんじゃない?
実装側に書かないと。
0330名前は開発中のものです。2007/11/29(木) 06:23:12ID:Z4mGFDpB
ごめん、違ってた。
忘れてorz
0331名前は開発中のものです。2007/11/29(木) 21:24:17ID:vAxuvCot
おお、なるほど。
クラスの定義側で定数入れて、
実装側は引数の宣言だけしておけばいいのか。

定義と実装両方同じにしておかないといけないと思ってましたorz
0332名前は開発中のものです。2007/12/10(月) 19:19:39ID:MKJaX+BI
age
0333名前は開発中のものです。2007/12/11(火) 18:39:15ID:usuyb1bv
>>25みてarray@int@4 asasas[1000][1000][1000][1000];とかやってみたら超絶重くて大爆笑した
0334名前は開発中のものです。2007/12/16(日) 16:32:57ID:F9amJRpt
mp3使えない事に気付かず一日を無駄にした(;´Д`)
0335名前は開発中のものです。2007/12/17(月) 20:52:51ID:LmPKFuIU
>>333
 array@int asasas[1000000000000];
と消費メモリは同じですからね。大抵応答待ちで固まる。

WIKIの方も更新感謝。ところで、

>プロジェクトファイルがあるフォルダの下に、"Shortcut" という名前のフォルダを作成し、
>その中にショートカットファイルを入れておくことで、統合環境のプロジェクトワークスペースの
>ファイルタブのショートカットフォルダにショートカットの一覧が表示されます。
>それらをダブルクリックすることで、そのショートカットを実行できます。

とマニュアルに書いてあるのですが、これはどういうファイルが実行されるんでしょう?
0336名前は開発中のものです。2007/12/19(水) 22:49:07ID:tM4C1oFz
やってみれば解るけどそのショートカット元のプログラムが実行されるよ

っつーか今まで知らなかったけどこれ便利だな
とりあえず電卓は常に入れておく事にしよう
0337名前は開発中のものです。2007/12/24(月) 10:38:52ID:TLPoSiAJ
戦国ランスのソースとかってないのか?
戦国みたいなゲーム作りたいがどこがどうなってるのかよく分からん(´・ω・`)
0338名前は開発中のものです。2007/12/25(火) 21:41:17ID:rTg9VkUH
ない。

具体的に、ココがこう判らん、という話なら
教えるなり議論するなり、話の種くらいにはなるかもしれないが
0339名前は開発中のものです。2007/12/26(水) 05:49:19ID:ZQpX3LBN
ココがこう判らん
それがわかれば問題の8割は解決済みだ
0340名前は開発中のものです。2007/12/26(水) 06:02:44ID:iWoIrrsz
プログラムの常識かsysytem4の仕様か分かんなくてうやむやなとこが一番つまづいた
0341名前は開発中のものです。2007/12/26(水) 20:03:45ID:Mctx91sa
「作りたい物」を分割&抽象化して、
ソースコードと対になる設計にまで持ち込む作業ってコーディングより難しい。
というか、そこまでがゲームプログラムのキモだし。今更言うようなこっちゃないけど。

なんで、とりあえずお題を決めて何か喋ろうぜ。
0342名前は開発中のものです。2007/12/27(木) 10:15:46ID:f6iZ7GYt
お題
system4.0ですごいと思った所
0343名前は開発中のものです。2007/12/27(木) 19:33:22ID:2qgB1qG1
マイナスが使えるところと65535以上まで使えるところかな……。あと配列があるんで
3.XとかNScript風の文字列設定にもできるところ。ネット機能が失われたのは残念。
そんな私は3.Xからの移行組。
0344名前は開発中のものです。2007/12/28(金) 19:27:29ID:Qh9aViXN
エロゲのシステムを触ったことがないので、もしかしたら当たり前の機能なのかもしれないが・・・

変数の表示くらいならともかく、スタックを総ざらいしたり
ブレークポイントをかけたりできるのに感動した。
ある意味、もうVS&C++でいいぢゃんという流れになる諸刃の剣だが
0345名前は開発中のものです。2007/12/28(金) 23:22:01ID:KfUqS68a
>>338
やっぱり無いのか(´・ω・`)

じゃあ質問なんだが
戦国で相手の行動パターンってどんなかんじで作ってあるんだ?
交戦状態のときとか兵数が一定以下になったら攻めるのをやめるみたいな感じなんだろうけど
どういう風に書けば良いのかわからん
0346名前は開発中のものです。2007/12/28(金) 23:45:23ID:MhwWZ8rw
説明が難しいな……。国データと直結している。
多分国データの内部にある武将データが関係。
0347名前は開発中のものです。2007/12/29(土) 00:35:25ID:kfiiBsKO
struct 武将{
 兵数
 種別(前衛or後衛)
}
struct 軍団プリセット{
 種別[6]
}
struct 国{
 武将配列、軍団プリセット配列
}
軍団プリセット 全部忍者 = {忍者、忍者、忍者、忍者、忍者、忍者}
軍団プリセット バランス[1] = {武士、僧兵、なし、弓、巫女}
軍団プリセット バランス[2] = ・・・

void ターン(){
 for(国ID=0 ; 国ID<国数 ++国ID){
  if(交戦中フラグ[国ID]){
   国行動( 国ID )
}}}
国行動( 国ID )
{
 if(合戦回数=1)
  rerurn 全部忍者
 
 for(int i=0 ; i<試行回数 ; ++i)
  if( 派遣できる?関数( 国データ,バランス[ramdom] ) ) return バランス[ramdom];
 return 待機
}

ごめんかなり適当に考えた
複数回行動は定数とか割合を基準にして適当に計算したら楽だけど
SLG作るならもっとスマートにやらなきゃいかんのかな・・・ 定数使うのは意外とアリだと思うけど
0348名前は開発中のものです。2007/12/30(日) 15:11:34ID:8hcAIO7D
SLG作る際に重要な機能ってなんだ?
0349名前は開発中のものです。2007/12/30(日) 17:34:45ID:iIx8r+UB
構造体かな?
あと関数呼び出しのオブジェクト(関数ポインタだっけ)。
RPGでも重要だけど、思考ルーチンはSLGの方が重視されがちだし。
0350 【末吉】 2008/01/01(火) 01:34:40ID:ZLqCplPi
あけおめことよろ。
さて今年の開発進行はどうかなっと
おーみーくーじー
0351名前は開発中のものです。2008/01/02(水) 18:38:49ID:yjODYZJu
構造体同士のメンバ変数全部加算させるみたいな事出来ないものか・・・
0352名前は開発中のものです。2008/01/02(水) 22:03:35ID:vVbqFkaY
演算子のオーバーロードがやりたいなら、無理だ。

普通に、構造体を2つ渡す関数を用意するのじゃ駄目かね?
0353名前は開発中のものです。2008/01/03(木) 00:22:17ID:J9suxAsk
初歩的な質問で申し訳ないけど……。
整数を16進数で返す方法ってありますか?
0354名前は開発中のものです。2008/01/03(木) 09:20:17ID:fZeOkcpH
Sys4に限らないと思うけど、
2進数も10進数も16進数も、表記法が違うだけで中身は同じだよ。

10進数16が、16進数0x10という見た目になるだけであって
どちらもint型変数に格納できる。
0355名前は開発中のものです。2008/01/03(木) 10:31:39ID:J9suxAsk
はい。つまり表記で返すやり方を知りたいのです。
例としては、整数65535 を 文字列"FFFF" で返すということです。
0356名前は開発中のものです。2008/01/03(木) 16:11:12ID:X7Gj3bxx
>>355
プログラムの中で返したいの?

って、変換した奴だけ使いたいなら、いくらでもソフトあるか。
0357名前は開発中のものです。2008/01/04(金) 08:38:05ID:bR+AzSYo
>>355
いろいろ試してみたけどむずかしい。10→16なら簡単なんだけどね。
方法を予想してみると、とりあえず16進数の桁数だけ領域を取った一次元のint配列に
「1-15」までの要素を入れ、最後にくっつけるやり方がスマートかもしれない。10進数から
16進数の桁数を算出する方法と、要素に16進数での値を入れる方法さえ分かればできると思う。
(俺はわからない)
0358名前は開発中のものです。2008/01/04(金) 12:15:27ID:Bc3fruj+
"%x"とかじゃ駄目なんか
0359名前は開発中のものです。2008/01/04(金) 13:36:14ID:ZvrZQLG7
間違えた。16→10だ。
つまり"FFFF"を 65535 にするならWIKIを参考にできるんだが。

>>358
"%x"って何だっけ?
出力変換なら、そういうのは無かったように思う。
0360名前は開発中のものです。2008/01/04(金) 14:18:47ID:Bc3fruj+
適当にググったらCめいた出力変換が出来る様なことが書いてあったよ
ttp://www.geocities.jp/akt_trade/sys40/ScenarioVar.html
俺はsystem4.0使ってないから無責任な発言ですまんが
0361名前は開発中のものです。2008/01/04(金) 15:48:13ID:VVEb3/k/
れつとれさんとこのは使い方が違うような……
蛙のダンジョンさんとこのソースがいいんじゃない?
0362名前は開発中のものです。2008/01/04(金) 17:04:16ID:i/Zwdvnb
蛙のだんじょん!ところの人です。
頑張ってソース書いたけど、れつとれさん所の解説読んだら、出力変換できました。
以下ソース。(パラメータあんまりよく分かってません)

void 10→16進数(){
int 元=RAND(2147483647);
string 結果="%0X" % 元;
'10進数:'NH(元);R;
'16進数:'S(結果);A;
}
0363名前は開発中のものです。2008/01/04(金) 19:34:30ID:ZvrZQLG7
おおほんとうだ。マニュアルには
int値変換%d float値変換%f string値変換%s char値変換%c bool値変換%b
しか書かれてなかったから試さなかった。すまん>358。

"%X"は2バイト文字ではなく大文字になるみたいだね。
ありがとう熾憂さん。
0364名前は開発中のものです。2008/01/09(水) 20:42:47ID:oVZERYj2
>>356-363
遅くなりましたが有り難うございます。
おかげで型sz、引数intの関数をつくれました。
0365名前は開発中のものです。2008/02/02(土) 22:57:39ID:ykvhHgTN
プログラマ募集キター!!!
腕に自身のある奴、行っとけ!

俺は無理orz
0366名前は開発中のものです。2008/02/03(日) 00:14:39ID:fzEiLEZm
大阪まで通えません><

そもそも腕に自信もないがorz
0367名前は開発中のものです。2008/02/14(木) 15:33:24ID:lFvH5fEb
SACT2関数の
REGISTER_MESSAGE_CALLBACKとSACT_MESSAGE_REGISTの
使い方が良くわかりません。
サンプルコードを試してみたがマニュアルにあるコードの実行例を再現できない。

ボスケテ
■ このスレッドは過去ログ倉庫に格納されています