C言語何でも質問掲示板

Total hit  今日  昨日  



必ずお読み下さい → 規約と注意事項  アンケートはこちら  エラーで投稿できない方はこちら  過去ログ検索はこちら

 
   飲み込まれるような不 ....   
     ・[43401] Justy 
     ・[43408] 初心者 
     ・[43597] 山崎 
     ・[43599] 山崎 
     ・[43755] 初心者 
   アスタリスクについて   
     ・[43717] MNS 
   ファイル入出力に関し ....   
     ・[43706] softya 
     ・[43710] たいちう 
   【質問】敵(・自機弾 ....   
     ・[43303] Dixq (管理人) 
     ・[43313] 3T 
     ・[43331] TKOZ 
     ・[43356] 3T 
     ・[43381] Justy 
     ・[43396] 3T 
     ・[43689] TKOZ 
   ソフトの配布後にバグ ....   
     ・[43004] YuO 
     ・[43012] ラッコ 
     ・[43030] ふにみふ 
     ・[43031] softya 
     ・[43034] ふにみふ 
     ・[43043] YuO 
     ・[43044] softya 
     ・[43187] ふにみふ 
     ・[43201] softya 
     ・[43205] YuO 
     ・[43308] ふにみふ 
     ・[43310] ふにみふ 
     ・[43419] ねこ 
     ・[43427] ふにみふ 
     ・[43560] YuO 
     ・[43566] 組木紙織 
     ・[43569] ふにみふ 
     ・[43571] 御津凪 
     ・[43573] YuO 
     ・[43580] ねこ 
     ・[43588] ふにみふ 
     ・[43590] 御津凪 
     ・[43601] lbfuvab 
     ・[43624] ふみにふ 
     ・[43628] 御津凪 
     ・[43633] ふにみふ 
     ・[43635] 御津凪 
     ・[43688] ふにみふ 
   文字を消去する関数に ....   
     ・[43638] Mist 
     ・[43684] poipoi 
   リストへの追加削除の ....   
     ・[43648] kazuoni 
     ・[43649] non 
     ・[43674] ばいなむ 
     ・[43675] non 
   弾幕のプチテストプレ ....   
     ・[43432] ひよこ 
     ・[43441] jay 
     ・[43445] チルチル 
     ・[43463] jay 
     ・[43464] ひよこ 
     ・[43507] jay 
     ・[43511] ひよこ 
     ・[43512] チルチル 
     ・[43544] jay 
     ・[43548] チルチル 
     ・[43554] jay 
     ・[43556] チルチル 
     ・[43600] jay 
     ・[43604] チルチル 
     ・[43665] jay 
   雑誌への掲載依頼   
     ・[43631] 御津凪 
     ・[43636] Ma 
   解像度について   
     ・[43470] 不明 
     ・[43522] mimi 
     ・[43534] Dixq (管理人) 
     ・[43540] Justy 
     ・[43541] Dixq (管理人) 
     ・[43542] Justy 
     ・[43547] Dixq (管理人) 
     ・[43551] Justy 
     ・[43555] Justy 
     ・[43564] Dixq (管理人) 
     ・[43565] Dixq (管理人) 
     ・[43607] Justy 
     ・[43614] Dixq (管理人) 
   【雑談】FLASHが凄い件 ....   
     ・[43399] Dixq (管理人) 
     ・[43400] Dixq (管理人) 
     ・[43403] array 
     ・[43404] Dixq (管理人) 
     ・[43405] array 
     ・[43407] Dixq (管理人) 
     ・[43410] array 
     ・[43411] 通りすがり 
     ・[43413] toyo 
     ・[43416] たかぎ 
     ・[43421] ねこ 
     ・[43422] たかぎ 
     ・[43459] たいちう 
     ・[43460] たかぎ 
     ・[43461] Dixq (管理人) 
     ・[43472] array 
     ・[43473] Dixq (管理人) 
     ・[43478] kazuoni 
     ・[43481] array 
     ・[43488] たかぎ 
     ・[43489] たかぎ 
     ・[43518] ねこ 
     ・[43525] array 
     ・[43536] ねこ 
     ・[43611] array 
   CheckHitKey関数の制御 ....   
     ・[43575] 通り 
     ・[43576] rrr 
     ・[43577] YuO 
     ・[43578] rrr 
     ・[43579] 通り 
     ・[43582] kazuoni 
     ・[43587] tk 
   いきなり最初で   
     ・[43583] 御津凪 
     ・[43584] サバ 
   ウインドウのアイコン   
     ・[43414] Mist 
     ・[43415] 初心者 
     ・[43420] TKOZ 
     ・[43430] 初心者 
     ・[43435] 初心者 
     ・[43485] ひよこ 
     ・[43543] 初心者 
     ・[43545] MNS 
     ・[43546] 初心者 
     ・[43550] MNS 
     ・[43553] 初心者 
     ・[43557] pooka 
     ・[43559] 初心者 
     ・[43561] pooka 
     ・[43562] 初心者 
     ・[43563] 初心者 
     ・[43568] 御津凪 
   爆発のエフェクトに関 ....   
     ・[43475] Justy 
     ・[43529] 山崎 
     ・[43537] Justy 
     ・[43539] Justy 
     ・[43552] 山崎 
   グローバル変数   
     ・[43433] 通り 
     ・[43434] たかぎ 
     ・[43436] 初心者 
     ・[43437] Naohiro19 
     ・[43439] 初心者 
     ・[43443] non 
     ・[43447] たかぎ 
     ・[43448] non 
     ・[43450] Naohiro19 
     ・[43451] softya 
     ・[43452] hoge 
     ・[43453] たかぎ 
     ・[43456] softya 
     ・[43458] non 
     ・[43468] たかぎ 
     ・[43493] non 
     ・[43495] たかぎ 
     ・[43497] たかぎ 
     ・[43513] non 
     ・[43515] 初級者 
     ・[43516] たかぎ 
     ・[43517] non 
     ・[43520] たかぎ 
     ・[43523] non 
     ・[43524] たかぎ 
     ・[43530] non 
     ・[43535] 組木紙織 
     ・[43538] たかぎ 
     ・[43549] non 
   RPG風コマンドウィンド ....   
     ・[43457] kazuoni 
     ・[43532] ti 
   メニューウィンドウの ....   
     ・[43521] ひよこ 
     ・[43527] kazuoni 
   困ってます   
     ・[43491] たかぎ 
     ・[43501] スウェーデン 
     ・[43502] たかぎ 
     ・[43514] スウェーデン 
   PlayMovie関数   
     ・[43466] ひよこ 
     ・[43467] HIT 
     ・[43471] kazuoni 
     ・[43484] ひよこ 
     ・[43510] HIT 
   数字を左側に伸ばした ....   
     ・[43508] MNS 
     ・[43509] いい 
   無限ループになってし ....   
     ・[43425] ねこ 
     ・[43426] たかぎ 
     ・[43442] 南瓜 
     ・[43446] たかぎ 
     ・[43490] 南瓜 
     ・[43492] たかぎ 
     ・[43498] 南瓜 
     ・[43499] たかぎ 
     ・[43505] 南瓜 
   龍神録で、DrawGraphで ....   
     ・[43482] DVDM 
     ・[43486] 3T 
     ・[43487] 3T 
     ・[43494] バグ 
     ・[43500] Dixq (管理人) 
     ・[43503] 3T 
     ・[43504] 3T 
   最高値の求め方が分か ....   
     ・[43479] kazuoni 
     ・[43483] box 
     ・[43496] ぽんちょ 
   d3dx9d_37.dllが見つか ....   
     ・[43118] Ma 
     ・[43123] 御津凪 
     ・[43126] 御津凪 
     ・[43182] シノニム 
     ・[43186] 御津凪 
     ・[43188] YuO 
     ・[43240] シノニム 
     ・[43282] 御津凪 
     ・[43320] シノニム 
     ・[43322] Mist 
     ・[43346] シノニム 
     ・[43348] 御津凪 
     ・[43438] シノニム 
   アスキーコードの変換   
     ・[43272] sizuma 
     ・[43273] 彼ー屋 
     ・[43274] sizuma 
     ・[43278] たかぎ 
     ・[43280] non 
     ・[43317] カリーやカレー 
     ・[43321] Mist 
     ・[43341] たかぎ 
     ・[43352] non 
     ・[43375] sizuma 
     ・[43377] box 
     ・[43387] たかぎ 
     ・[43388] box 
     ・[43389] たかぎ 
     ・[43390] tkmakwins15 
     ・[43391] たかぎ 
     ・[43392] たかぎ 
     ・[43394] tkmakwins15 
     ・[43424] たかぎ 
   fps60にしたい   
     ・[43297] kazuoni 
     ・[43299] Dixq (管理人) 
     ・[43301] 寺初心者 
     ・[43304] 寺初心者 
     ・[43315] 寺初心者 
     ・[43325] Libra 
     ・[43326] 寺初心者 
     ・[43328] Mist 
     ・[43329] 寺初心者 
     ・[43330] Libra 
     ・[43332] Mist 
     ・[43334] Libra 
     ・[43340] 寺初心者 
     ・[43342] Libra 
     ・[43345] 寺初心者 
     ・[43347] Libra 
     ・[43349] 寺初心者 
     ・[43350] Libra 
     ・[43351] 寺初心者 
     ・[43355] Libra 
     ・[43360] 寺初心者 
     ・[43418]  
   久しぶりの雑談スレ   
     ・[43184] たかぎ 
     ・[43189] softya 
     ・[43190] 御津凪 
     ・[43198] たかぎ 
     ・[43202] たかぎ 
     ・[43206] 御津凪 
     ・[43209] Tororo 
     ・[43213] Dixq (管理人) 
     ・[43215] Hermit 
     ・[43216] たかぎ 
     ・[43217] 御津凪 
     ・[43219] Dixq (管理人) 
     ・[43223] non 
     ・[43225] softya 
     ・[43229] たかぎ 
     ・[43234] Dixq (管理人) 
     ・[43235] たいちう 
     ・[43236] Dixq (管理人) 
     ・[43237] softya 
     ・[43239] Dixq (管理人) 
     ・[43279] たかぎ 
     ・[43318] Naohiro19 
     ・[43323] ouh 
     ・[43339] やっくん 
     ・[43357] Dixq (管理人) 
     ・[43358] たかぎ 
     ・[43359] バグ 
     ・[43362] kazuoni 
     ・[43364] Dixq (管理人) 
     ・[43365] たかぎ 
     ・[43366] sizuma 
     ・[43367] Dixq (管理人) 
     ・[43368] Dixq (管理人) 
     ・[43369] たかぎ 
     ・[43370] sizuma 
     ・[43371] Dixq (管理人) 
     ・[43372] たかぎ 
     ・[43374] Dixq (管理人) 
     ・[43378] sizuma 
     ・[43379] non 
     ・[43380] sizuma 
     ・[43382] たかぎ 
     ・[43383] Dixq (管理人) 
     ・[43384] Dixq (管理人) 
     ・[43385] Naohiro19 
     ・[43393] softya 
   高速フーリエ変換を用 ....   
     ・[43300] Dixq (管理人) 
     ・[43302] ろろろ 
     ・[43305] Dixq (管理人) 
     ・[43309] ろろろ 
     ・[43311] Mist 
     ・[43312] ろろろ 
     ・[43316] ろろろ 
     ・[43376] Dixq (管理人) 
   テキストファイルでの ....   
     ・[43204] GPGA 
     ・[43327] SIT 
     ・[43344] GPGA 
     ・[43354] SIT 
   抽象クラスでの動作   
     ・[43335] MNS 
     ・[43337] ジャーニー 
     ・[43338] ジャーニー 
   画像を点滅させる方法   
     ・[43016] softya 
     ・[43017] 234 
     ・[43018] チルチル 
     ・[43019] softya 
     ・[43336] TKOZ 
   逆順表示   
     ・[43199] kazuoni 
     ・[43200] ma 
     ・[43203] たかぎ 
     ・[43207] softya 
     ・[43208] ma 
     ・[43210] kazuoni 
     ・[43211] たかぎ 
     ・[43214] non 
     ・[43247] ma 
     ・[43258] softya 
     ・[43259] ma 
     ・[43262] たかぎ 
     ・[43263] ma 
     ・[43268] すずめ 
     ・[43277] たかぎ 
     ・[43291] すずめ 
     ・[43294] non 
     ・[43314] すずめ 

Name: 初心者  ..熟練のプログラマー(41,295ポイント)   Date: 2009/12/05(土) 00:58   No:43397       
Title: 飲み込まれるような不思議な映像    
ユーチューブで
飲み込まれるような不思議な映像
http://www.youtube.com/watch?v=jqK2eR3fkmM&feature=related
という動画をみたのですが、
これはDXライブラリで再現できないでしょうか?


58ポイント を手に入れた。


Name: Justy  ..伝説なるハッカー(471,073ポイント)   Date: 2009/12/05(土) 02:31   No:43401     
Title: Re:飲み込まれるような不思議な映像    
 3D機能を使えば出来ると思います。
 
 やりかたはいろいろあるでしょうが、大きく分けるとモデルを使うか使わないかで
分けられます。

 モデルを使うなら例えば

・ モデリングソフトでこういう形状をモデリングする
・ カメラパス(位置と向き)をつくる
・ モデルを表示し、カメラパスの通リカメラ(或いは背景)を動かす

で、できるんじゃないかと。


 ただ実際に延々とループを続けるには背景モデルの先端と終端が形状的にうまく繋がるように
作っておく必要があるのと、カメラの向きはアニメーション通りに再生するけど
位置は原点に固定して代わりに背景を反対方向に動かさないと、どこかで破綻しそうです。

 あぁ、でも動画をよくみるとカメラパスの向きの方は必要なさそうです。
 数フレーム先の位置と今の位置とで目標となるベクトルを出して、
現在の向きとの間で適当に補完すれば出せそうです。

 あとなんとなく道(?)の中心から少し外れたところを移動している時があるようにも見えます。
 そうならパスは中央を通るように作っておいて、実際に動かすときに慣性をつけて
位置を補正すれば、曲がるときは軌道が外側に膨らむようなるはずです。


 反対にモデルを使わない場合は
 
・ 道の通過点を幾つかランダムかなにかで決めて、その間の道をスプラインで補完。
・ ルートがある程度確定したら、そのルートを元に周囲のポリゴンをソフト的に計算し、
テクスチャを貼る。
・ ルートからカメラの位置と向きを計算します。

これを延々と繰り返せば出来そうです。


# モデルを使わず動的にランダムでルートを造った方が不規則な道・動きになるので
面白いのかもしれませんね。


251ポイント を手に入れた。

Name: 初心者  ..熟練のプログラマー(41,377ポイント)   Date: 2009/12/05(土) 03:32   No:43408     
Title: Re:飲み込まれるような不思議な映像    
モデルは全く勉強してないので、今の段階ではちょっと作成しようがないですorz
サンプルどなたか作成していただけないでしょうか?
ふと、思ったのですが、管理人さんの新作ゲームのメイン画面に似てますね。この動画。


82ポイント を手に入れた。

Name: 山崎  ..プログラマー(29,805ポイント)   Date: 2009/12/07(月) 21:53   No:43597     
Title: Re:飲み込まれるような不思議な映像    
確かに凄い動画ですね。これ。
DXライブラリで挑戦してみたいですね


19ポイント を手に入れた。

Name: 山崎  ..プログラマー(29,864ポイント)   Date: 2009/12/07(月) 22:36   No:43599     
Title: Re:飲み込まれるような不思議な映像    
ひとつ上の山崎さんのコメントは、
私と同じHNの山崎さんの投稿のようですね。

他の記事で爆発のエフェクトのことを質問している山崎ではないですので・・・。

別に敢えて言う必要も無いとは思いますが、念のため。


59ポイント を手に入れた。

Name: 初心者  ..熟練のプログラマー(42,361ポイント)   Date: 2009/12/10(木) 20:51   No:43755     
Title: Re:飲み込まれるような不思議な映像    
これに近いサンプル的なものはないでしょうか?

19ポイント を手に入れた。



Name: 初心者  ..熟練のプログラマー(42,342ポイント)   Date: 2009/12/09(水) 21:47   No:43716       
Title: アスタリスクについて    
変数にアスタリスクつけてでポインタを定義しますが
void* 型のように型にアスタリスクがついている
ことがあります。これってどういう意味かわからないんですが、
おしえてください。char*とかもありますね。


81ポイント を手に入れた。


Name: MNS  ..上級者(23,474ポイント)   Date: 2009/12/09(水) 21:58   No:43717     
Title: Re:アスタリスクについて    
そもそも、ポインタは型にアスタリスクをつけて定義します。
void* pointer
void *pointer
この二つは全く同じことになります。


57ポイント を手に入れた。



Name: Holy14bhs  ..ぴよぴよ(360ポイント)   Date: 2009/12/09(水) 15:44   No:43703       
Title: ファイル入出力に関して    
C言語初心者です.
理系の研究室におり,現在Visual C++6.0を使っています.
やりたいことはモータを動かして台を1秒ごとに速度を変えて動かしたいです.
速度はテキストファイル(data.txt)に入れてあります.
開始ボタンを押すと同時にファイルからデータを読み込み,スピードを変化させるということです.

以下を書いて見たのですが,どうしてもエラーになってしまいます.
エラー内容は mainのローカル定義が正しくありません
fatal error も出てきます.初心者で前の研究者が書いたものを見たり,本を見たりして書いています.
時間があまりないため,C言語を一から勉強していないため,どこがおかしいかわかりません.
以下が,なんとか調べつつ書いたC言語です.MtrChangeSpeed〜の書き方は前機能を見ながら書いたので
あっているとは思います.よろしくお願いします.

void CSyncStartDlg::OnDielessstart()
{
INT nRet;
int main(void)
{
fstream finout; //入出力用ストリームの宣言
char ss[1000];

finout.open("data.txt", ios::in); //ファイルオープン
if(finout.fail()){
cout << "入力ファイルをオープンできません\n";
exit (1);
}
while(!finout.eof() && !finout.fail()) //データの入力
{
finout.getline( ss,1000 );
nRet=MtrChangeSpeed(hDeviceHandle1,MTR_ACCDEC_CHANGE,(ss*360*9)/(0.04394531*5)); //関数の実行結果
if(nRet != MTR_ERROR_SUCCESS)
AfxMessageBox("速度変更に失敗しました");
Sleep(1000);
}
finout.close();


360ポイント を手に入れた。


Name: softya [URL]  ..熟練のプログラマー(62,511ポイント)   Date: 2009/12/09(水) 16:22   No:43706     
Title: Re:ファイル入出力に関して    
えーとですね。
まず、この掲示板の規約によく目を通してください。
http://dixq.net/board/board.html


マルチポストの条件に違反してらっしゃいますよね?
http://oshiete1.goo.ne.jp/qa5509839.html
なので、まず向こうの質問を削除するか閉じるようにしてください。

その上で「良くわからない人はテンプレを」に沿って書いていただけますか。
それとソースコードは< pre>と< /pre>のタグで囲んでください。を必ず守ってください。
的確な回答するためにも必要な事柄ですのでお願いします。

[補足的質問]
・C言語とおっしゃっていますが、ソースを見る限りC++と混在しています。と言うよりC++にC言語の書き方が混じっています。C++については、どの程度ご存知でしょうか(勉強した期間など)?



265ポイント を手に入れた。

Name: たいちう  ..プログラマー(37,872ポイント)   Date: 2009/12/09(水) 16:36   No:43710     
Title: Re:ファイル入出力に関して    
> void CSyncStartDlg::OnDielessstart()
> {
> INT nRet;
> int main(void)

MFCのダイアログのボタンクリックのイベントハンドラに、
main関数を書こうとしているように見えます。
コンパイルできるはずがありません。

ソースコードは、C言語ではなくC++で、
MFCというライブラリを使用していますので、C++とMFCを
ある程度は使えないと改造はできないでしょう。

勉強する時間がないならば自分で作ることを諦めて、
周りの人に相談するのが良いでしょう。

また掲示板で質問しても、ソースコードの断片だけでは
アドバイスのしようがありません。全ソースコードか、
せめて、まともに動いているときのCSyncStartDlg::OnDielessstart()が分かり、あなたのやりたいことが分かれば、何か言えるかもしれないけど、
保証はできません。


# マルチかよって思ったけど、書いた後だから投稿します。


215ポイント を手に入れた。



Name: 3T  ..ぴよぴよ(4ポイント)   Date: 2009/12/04(金) 09:30   No:43285       
Title: 【質問】敵(・自機弾・敵弾)の行動パターンの記述の仕方【STG】    
こんにちは。
お世話になります。

テンプレートを使わせていただきます。



[1] 質問文
 [1.1] 自分が今行いたい事は何か
STGにおける敵(・自機弾・敵弾)の行動パターンの記述の仕方について。どのような記述方法がいいのか(適しているのか)

 [1.2] どのように取り組んだか(プログラムコードがある場合記載)
1.ソースに直接書くべきなのか
(速度が良い、導入が簡単。反面、調整する毎にコンパイル時間がかかる)
2.BulletMLのような弾幕専用の言語を用いるべきなのか
(行動の記述が楽、調整が楽。反面、導入が難しい(?)、出来ることに制約がかかりそう(?)、速度は未知数)
3.Luaなどのスクリプト組み込みでやるのがいいのか
(最初の導入に苦労しそうだが、出来れば1と2の良いとこ取り?(調整が楽・制約なし。ただし、速度は未知数))
について検討

 [1.3] どのようなエラーやトラブルで困っているか(エラーメッセージが解る場合は記載)

 [1.4] 今何がわからないのか、知りたいのか
各方法に長所短所があるとは思われるが、例えばDixqさんの龍神録のようなものを1からそのまま作る場合とすると、どれが一番適切であるか


[2] 環境  
 [2.1] OS : Windows Vista
 [2.2] コンパイラ名 : VC++ 2008

[3] その他
 ・どの程度C言語を理解しているか
龍神録の館の内容は理解できる程度

 ・ライブラリを使っている場合は何を使っているか
DXライブラリ





よろしくお願いします。


4ポイント を手に入れた。


Name: Dixq (管理人)  ..ウィザード(1,093,778ポイント)   Date: 2009/12/04(金) 12:40   No:43303     
Title: Re:【質問】敵(・自機弾・敵弾)の行動パターンの記述の仕方【STG】    
3Tさん、こんにちは^^

携帯なので手短ですがカキコします。

何が適切かは知りませんが、私はスクリプトにしてます。
エクセルデータ。
詳しくは龍神録プログラミングの館参照で

ソースに直接かくのはあまりよくないのでは?

読み込みが早いってのは少し誤解なんじゃないでしょうか。
完全に問題にならない時間で読み込めますよ。
後、変更したファイルだけならコンパイルも数秒かと

読み込み用プログラム作るのが面倒かもしれませんが、そこは勉強がてら組んでみては

BulletMLは使った事ないですが、私はなるべくCで書きたいです。
自由度が違いますし。やりたいこと、改造など、Cならなんでも出来ます。ハードルは高くないですし。

1.2の意味が少しわからないのですが、1.4についてはこの3択で回答すべきなんでしょうか?

館をご覧になってるのなら館の方法はダメですか?


207ポイント を手に入れた。

Name: 3T  ..ぴよぴよ(453ポイント)   Date: 2009/12/04(金) 13:49   No:43313     
Title: Re:【質問】敵(・自機弾・敵弾)の行動パターンの記述の仕方【STG】    
ご返信ありがとうございます。


確認したいのですが、龍神録のやり方というのは
http://dixq.net/rp/11.html
この辺りですよね?

行動パターンの識別だけを外部データ(この場合はエクセル)というのではなく、行動の中身そのものを外部データ(BulletMLなど)で記述したいと思っております。


>BulletMLは使った事ないですが、私はなるべくCで書きたいです。
自由度が違いますし。やりたいこと、改造など、Cならなんでも出来ます。ハードルは高くないですし。

BulletMLで書ける部分(弾の動きなど)だけは任せ、画像が回転するだとか言ったことはCで記述するようにすれば、自由度は変わらないと思われます。


>1.2の意味が少しわからないのですが、1.4についてはこの3択で回答すべきなんでしょうか?

すいません、書き方が悪かったですね。
この3択以外にも方法があれば、お教えいただきたいです。
また、意味が分かりづらくて申し訳ございません。
もしよろしければ、どこら辺が意味不明なのかお教え下さい。


449ポイント を手に入れた。

Name: TKOZ  ..熟練のプログラマー(42,623ポイント)   Date: 2009/12/04(金) 16:32   No:43331     
Title: Re:【質問】敵(・自機弾・敵弾)の行動パターンの記述の仕方【STG】    
unsigned char script[MAX_INST][2]={
{ENEMY_DOWN,32},
{ENEMY_SHOT,1},
{ENEMY_RESET,0}
};

こんな感じで32フレーム下降して、1フレームだけショットを打つみたいなのは
どうでしょうか?

まあ、例としては甘いですが、命令を加えれば高度な処理も出来そうです。


90ポイント を手に入れた。

Name: 3T  ..ぴよぴよ(509ポイント)   Date: 2009/12/04(金) 19:17   No:43356     
Title: Re:【質問】敵(・自機弾・敵弾)の行動パターンの記述の仕方【STG】    
確かに、そういうのもありますね。
組み合わせ次第で面白くなりそうです。
参考にさせていただきます。
ありがとうございます。


56ポイント を手に入れた。

Name: Justy  ..伝説なるハッカー(470,470ポイント)   Date: 2009/12/04(金) 23:11   No:43381     
Title: Re:【質問】敵(・自機弾・敵弾)の行動パターンの記述の仕方【STG】    

> 例えばDixqさんの龍神録のようなものを1からそのまま作る場合とすると、どれが一番適切であるか

 龍神録のようなもの、といってもいろいろ違うところはあるでしょうから
どういう STGなのか、ゲームの規模、制作期間、自機・敵機・弾などのゲーム仕様、
それから仮にどの程度の練度の人間を何人アサインできるのか、などによって
変わってきます。

 ただ、どういうものであれ 3Tさんにとって調整が楽であること、
try & errorの効率がいいものがいいでしょう。



> 行動の中身そのものを外部データ(BulletMLなど)で記述したいと思っております

 やろうと思えばエネミーの動きや弾の動きをアプリ上で(アプリの再起動することなしに)
簡単に調整できるようなインターフェースを作るとか、デバッガで変数を変えて
即座に試せるような仕組みを作り、パラメータが確定したらメモして(ファイルに書き出してもいい)、
後でソースに反映する、とかでビルド回数を減らす工夫をすれば十分効率は
良かったりする可能性もありますが、この段階で1のソースに埋め込みは
もう選択肢として無いわけですよね。


 だとするともう必然的に2と3になるわけで。
 そうなると、後はどこまでやりたいのか次第です。
 弾幕の動きだけでいいなら2、それ以外もなら3です(或いは2と3の併用)。

 ただ、2・3どちらも既にお気付きのように慣れるまでに少し時間がかかります。
 慣れていないうちに作り始めると意外なトラップに引っかかることもあるので、
慣れた上でそれに合わせて適切なアプリの設計も必要です。

 そのあたりの余力があるかどうか、ですね。



>> こんな感じで32フレーム下降して、1フレームだけショットを打つみたいなのは
>> どうでしょうか?
> 組み合わせ次第で面白くなりそうです

 機能的に簡易スクリプト「命令+パラメータ」で表現できるなら、csvなどで羅列するだけで
目的は果たせそうです。

 TKOZさんの仰っているように命令を増やせば、(プレイヤーとの距離とかなどの)状況を
アプリ本体に問い合わせてそれを元に分岐して処理を変えることもできますしね。

 ただ、敵の移動とかはいいのですが、弾幕はちょっと厳しい気がするのと
直線・円軌道・ホーミングな単純な移動ではなく、「複雑な計算式による動き」を
どこまで命令として落とし込めるが微妙なところです。


2倍のポイントを手に入れた! 1,534ポイント を手に入れた。

Name: 3T  ..ぴよぴよ(865ポイント)   Date: 2009/12/05(土) 00:39   No:43396     
Title: Re:【質問】敵(・自機弾・敵弾)の行動パターンの記述の仕方【STG】    
> 龍神録のようなもの、といってもいろいろ違うところはあるでしょうから
どういう STGなのか、ゲームの規模、制作期間、自機・敵機・弾などのゲーム仕様、
それから仮にどの程度の練度の人間を何人アサインできるのか、などによって
変わってきます。


もちろん龍神録そっくりに作ることはありませんが、規模やゲーム仕様はほぼ同じと考えていただければと思います。
プログラム自体は私が一人でやることになると思いますが、外部データですと弾幕記述を他の人にも頼みやすいかなと思うところもありますね。



>> 行動の中身そのものを外部データ(BulletMLなど)で記述したいと思っております
> やろうと思えばエネミーの動きや弾の動きをアプリ上で(アプリの再起動することなしに)
簡単に調整できるようなインターフェースを作るとか、デバッガで変数を変えて
即座に試せるような仕組みを作り、パラメータが確定したらメモして(ファイルに書き出してもいい)、
後でソースに反映する、とかでビルド回数を減らす工夫をすれば十分効率は
良かったりする可能性もありますが、この段階で1のソースに埋め込みは
もう選択肢として無いわけですよね。


すいません、本音が出てしまってますね 汗
ソースに記述するのでも、そういう工夫によりビルド回数を減らすことができるなら良いとも思ってます。
色々と考えてみたいと思います、ありがとうございます。



356ポイント を手に入れた。

Name: TKOZ  ..熟練のプログラマー(43,310ポイント)   Date: 2009/12/09(水) 11:54   No:43689     
Title: Re:【質問】敵(・自機弾・敵弾)の行動パターンの記述の仕方【STG】    
ネットカフェから書き込みです。
自分なら、もう1つ方法が思いつきます。

自作スクリプト言語(インタプリタ)を作る事です。
何故、コンパイラじゃないかというと、作るのが難しいというのもありますが、
なんといっても、テキストファイル(スクリプトファイル)を改変するだけで、
実行できるからです。

char ScriptData[10000][50];
long int PCcounter=0;
とグローバル宣言し、

void LoadScript(char filename[])
{
FILE *fp;…
fp=fopen(filename,"r");

fclose(fp);
}
でスクリプトを読み込みます。

void ExecuteScript()
{
if(strcmp(ScriptData[PCCounte],"MOVE");
{
}
PCcounter++;
}
そして、これで、実行します。

といった、感じで非常にエレガントじゃない方法を使って、
自作アドベンチャーゲームを作っています。参考になればいいです。


348ポイント を手に入れた。



Name: ふにみふ  ..ぴよぴよ(93ポイント)   Date: 2009/12/01(火) 14:37   No:43003       
Title: ソフトの配布後にバグが見つかったら?    
ゲームソフトを作っていて最終的にはコミケなどで販売できればと思っている者です。

出来る限り努力はしても配布後バグが見つからないということも正直ないと思います。
そこでタイトルどおりの質問なのですが、配布後にバグが見つかった場合どのように対応するのが妥当なのでしょうか?
コミケで売られている作品を見てもバグは出来る限り対応します等、配布後の対応について書かれているものもありますが、
皆さんはどのように対応してらっしゃるのでしょう?

ここで配布されている龍神録のようにフリーであれば、単純に改良版をアップすれば何の問題もありませんが、
有料となるとどうしてよいものか…

私の思いつくところですと、画像や音楽のファイルは配布せず、exeの実行ファイルのみ再配布。
というものしか思いつきません…
わかる方がいらっしゃいましたら、妥当な対応策を教えていただけないでしょうか?


93ポイント を手に入れた。


Name: YuO  ..プログラマー(38,094ポイント)   Date: 2009/12/01(火) 15:59   No:43004     
Title: Re:ソフトの配布後にバグが見つかったら?    
Samll UpdateやMinor Updateを配布するのが基本です。
MSDN: Small Updates (Windows)
http://msdn.microsoft.com/en-us/library/aa371855.aspx
MSDN: Minor Updates (Windows)
http://msdn.microsoft.com/en-us/library/aa370037.aspx

大規模にやっているのはWindows Updateですが,
それ以外でも通常はバグフィックス用のパッチを提供しています。
SITE: A-Train8 SUPPORT
http://www.artdink.co.jp/japanese/title/a8/game/support.html
市販でなくても,同人でパッチを提供している探すとあるようです。
やることは,基本的にファイルの入れ替えです。
実行ファイルだったり,スクリプトファイルだったり。


Windows Installerの作成には,SDKだけ,というのもあるとは思いますが,
WiXのようなものもあります。

SITE: Windows Installer XML (WiX) toolset
http://wix.sourceforge.net/
SITE: WiXではじめるWindows Installer作成入門 第1回(1/3):CodeZine
http://codezine.jp/article/detail/428?p=1


Windows Installerを使わないような方法であれば,自分でパッチ機構を用意するなり,
パッチ機構のあるインストーラを使うのがよいでしょう。


226ポイント を手に入れた。

Name: ラッコ  ..かけだし(1,038ポイント)   Date: 2009/12/01(火) 19:26   No:43012     
Title: Re:ソフトの配布後にバグが見つかったら?    
販売したものなどはパッチなどを
サイト内で配布するのが一番いいのではないでしょうか。

たぶんそれが一番適切?なやり方なのではないでしょうか。


45ポイント を手に入れた。

Name: ふにみふ  ..ぴよぴよ(557ポイント)   Date: 2009/12/02(水) 12:19   No:43030     
Title: Re:ソフトの配布後にバグが見つかったら?    
回答ありがとうございます。
ラッコさんYuOさん共にパッチというものを使用する方法ということですよね?

YuOさんのリンク先を拝見しましたが、まったくわからず呆然としてしまいました…orz
その後もパッチという言葉でいくらか検索をしてみましたが、
かなり難解で自分に出来るのかと不安になってきました…

パッチの原理なども調べようと思いましたが、思うような情報は出てこず…
if(hennsuu==0)と書いたプログラムだったが、本当は==1だった!
というようなとき、パッチを使用すれば、この部分を差し替えることが出来るのですか?
原理を簡単にで良いので教えていただけると…

あと調べているうちに何度かDiffというものを見たのですが、これを使用すればよいのでしょうか?

さらに、これもまた調べているときに見た文章なのですが、
パッチは回線が遅かった時代に使用していた物であって、今は単純に新しいexeファイルを作って配布すればよいというのも一度見かけました。
まだ色々とわからない私からすると、新しくexeファイルを作る。という方法でも良いように見えますが…
ゲームの場合、画像や音楽に容量をとられるだけで、exeファイル自体ですと、それほど容量も重くありませんし…

自分の環境を最初に書いていなかったので記述しておきます。
ソフトはBCC Developerでボーランドでプログラムを組んでいます。


464ポイント を手に入れた。

Name: softya  ..熟練のプログラマー(53,397ポイント)   Date: 2009/12/02(水) 12:52   No:43031     
Title: Re:ソフトの配布後にバグが見つかったら?    
昔のパッチはexeファイルのバイナリの差分パッチって意味でしたが、近年は差分ファイルだけ差し替えるって意味でもパッチと呼んでますね。
インストーラで配布したなら、同じインストーラの差分パッチ機能で配布したほうが購入者の操作が楽ですのから、exeファイルだけを配布するのはお勧めできません。
それは一般のWindowsユーザーは、exeファイルだけ入れ替えるなんて操作が出来ません。何処のフォルダにインストールされているかなんて気にした事も無いでしょうから。


178ポイント を手に入れた。

Name: ふにみふ  ..ぴよぴよ(945ポイント)   Date: 2009/12/02(水) 14:46   No:43034     
Title: Re:ソフトの配布後にバグが見つかったら?    
パッチについては先ほどからも検索を続けておりましたが、あいかわらず何がなにやら…(泣)

パッチの原理、使用法がまずわからないので、
「同じインストーラの差分パッチ機能で配布したほうが購入者の操作が楽」という文章もピンと来ません…申し訳ないです…
とりあえず今のところインストールするタイプにはしないつもりでいます。
理由は単純なもので、私自身インストールするタイプは面倒で嫌いですし、インストールするメリットがよくわからないからです。
なのでフォルダにまとめておいてアンインストールするときは、フォルダをごみ箱に移動するだけ…というタイプにしようかと今は考えております。

そうすればexeファイルを入れ替えるぐらいなら比較的簡単に出来るのではないかと思います。
インストール型だと、確かにどこに関連しているフォルダがあるのかはわかりにくいですね。
…ちなみにインストール型のメリットってなんなんでしょうか?…

パッチに関しましては、なんとか一度作成してみたいので、
簡単な原理とexeにパッチを当てる方法、何が必要なのか?、かなり簡単にでいいので、おおまかな作り方をまず知りたいです…
それに解説されているサイトや本などがあれば教えていただきたいです。
今は本当にわからず、まったく太刀打ちできていません…


388ポイント を手に入れた。

Name: YuO  ..プログラマー(38,665ポイント)   Date: 2009/12/02(水) 15:50   No:43043     
Title: Re:ソフトの配布後にバグが見つかったら?    
> とりあえず今のところインストールするタイプにはしないつもりでいます。
> …ちなみにインストール型のメリットってなんなんでしょうか?…

配置,更新および削除に必要なことが確実に出来る事です。
たとえば,インストーラのブートストラッパにDirectXをインストールするように構成しておけば,
対象の環境にDirectXの対象バージョンが入っていなかった場合にインストールする事ができます。

フリーのダウンロードであるならばともかく,販売という形を取るのであれば,インストーラを用意しないという選択肢自体が存在しないです。
# CD/DVD上ですべてが完結するのであれば別ですが。
少なくともCD/DVDならsetup.exeとautorun.infは必須でしょうし,ダウンロード販売であってもインストーラを用意するのは当然だと思います。
ついでに,Microsoftの推奨ではWindows Installerの利用となっています。


なお,高萩さん (とっちゃんさん) の@ITの記事
SITE: あなたのアプリにはどのインストーラが最適? − @IT
http://www.atmarkit.co.jp/fdotnet/vblab/compareinstaller/compareinstaller_01.html
なども参考にすると良いでしょう。


> パッチに関しましては、なんとか一度作成してみたいので、
> 簡単な原理とexeにパッチを当てる方法、何が必要なのか?、かなり簡単にでいいので、おおまかな作り方をまず知りたいです…
> それに解説されているサイトや本などがあれば教えていただきたいです。

先ほどのWiXと,高萩さんのCodeZineの記事とWiX付属のヘルプではだめですか。
ヘルプを自己流 (かつRC時代版) ながら訳した方もおられますし。
http://blogs.wankuma.com/chiharu/archive/2009/01/02/165456.aspx

簡単に作りたいのであればInstaller Shieldというものはありますが,
パッチを作るとなるとProfessional以上が必要なので,直販価格で38万円強と,現実的ではありません。


571ポイント を手に入れた。

Name: softya  ..熟練のプログラマー(54,138ポイント)   Date: 2009/12/02(水) 16:14   No:43044     
Title: Re:ソフトの配布後にバグが見つかったら?    
コミケでの販売を考えられているって事は、CD/DVD−ROMでの販売になると思うんですが買った人は何処かにROMの内容をコピーしないとダメですよね。あるいはROMのままの起動を可能にするかです。

確かに買った人の自由なのですが、次の点を気をつけないと無駄なサポートが発生します。
1.何処にコピーされるかわかりませんので何処にコピーされても動く保障をいないと行けません。
2.不十分なコピーをされた時のチェック機能が必要なる可能性があります。
3.コピーしないままROM起動された場合のセーブファイルの作り場所を考えておかないといけません。
4.コピーが良く分からないと言い出す人も考慮しないといけません。
これらに全てうまく対応できるかってことになります。
で無難な策がインストーラって事になります。ROM起動されていた場合、入れ替えるexeを置くHDDの場所もありませんしね。


>簡単な原理とexeにパッチを当てる方法、
exeのパッチはexeファイルの新旧の差分を検出して、その差分だけのデータファイル(書き換えるべき部分の位置と書き換えるデータを持っている)を作ります。
パッチをダウンロードした人は、差分データファイルからexeファイルを更新するツールでexeファイルを最新にします。気の利いたツールだと更新ツールと更新データを結合してexeファイルとして出力する機能が付いてますね。

バイナリ(exe)のパッチ作成ツール色々。
http://www.vector.co.jp/vpack/filearea/win/util/bin/patch/
最近使われる事は少ないので、古いツールが多いです。wdiffが有名。

wdiffの使い方(この場合は日本語化パッチだけど)
http://journal.mycom.co.jp/column/toolexp/015/index.html


679ポイント を手に入れた。

Name: ふにみふ  ..かけだし(1,865ポイント)   Date: 2009/12/03(木) 17:40   No:43187     
Title: Re:ソフトの配布後にバグが見つかったら?    
wdiffを使用して、かなりの苦労の末にexeファイルの書き換え動作をすることができました。
exeファイルがあるフォルダにwdiffで作成したパッチ(wdiffで作ったファイルはパッチと呼んでよいのでしょうか…?)を置き、
ダブルクリックをしてexeを改良後に…という具合です。
皆様のおかげです。本当にありがとうございます。

この出来たパッチですが、バージョンごとに沢山パッチを作らなければいけないということになりますか?
1.00と1.01と1.02と1.03と段階ごとに更新していった場合、
1.00から1.03に更新するパッチ、1.01から1.03に更新するパッチ、1.02から1.03に更新するパッチ…
と、どんどん増えていってしまうのでしょうか?

そしてコミケなどで販売する場合はインストーラが必要のようですね…
インストーラなしではsoftyaさんのおっしゃっているようなことが確かに起きそうです。

以下はYuOさんの書き込みについてです。
ブーストラッパという単語がよくわかりませんが、
もしDXライブラリを使用する場合はDirectXが必要となりますので、
一緒にDirectXがインストールされるのであれば確かに便利ですね。

setup.exeは実行すれば、program fileなどにフォルダを作成し、
スタート→すべてのプログラム。にインストールしたアプリを追加するもの。とわかりますが、
autorun.infとは何なのでしょうか?
setup.exeはよく見かけていた気もしますが、autorun.infというのはあまり見た覚えが…
必須ということで相当大切なもののようですが…

そして今回もリンク先を拝見させていただきました。
Installer Shieldは値段があまりにも…ということで残る選択肢は
Visual Studioセットアップ・プロジェクトとWindows Installer XML toolset(WiX)
の二つになりそうですね。

私の作っているものは特に変わったこともないであろうシューティングゲームですので、
それこそ最低限のインストーラが作成できればいいのではないかと思います。
Windows Installer XML toolset(WiX)は自由度が高いが少し難しい。
対してVisual Studioセットアップ・プロジェクトは自由度は低いが簡単。
ということだと思いますが、
今回の私のゲームのように、それほど複雑なインストーラはいらない場合は
Visual Studioセットアップ・プロジェクトで問題ないと考えてよろしいのでしょうか?

ボーランドのBCC Developerを使用していると前に書き込みをしましたが、
一応フリーのVisual C++ 2008 Express Editionは持っています(まったくといっていいほど使用していませんが…)
もしVisual Studioセットアップ・プロジェクトで問題ない場合、
このソフトでもインストーラは作成できるのでしょうか?
それともまた別に
http://www.microsoft.com/japan/msdn/vstudio/productinfo/pricing.aspx
ここに書かれているような市販のソフトが必要でしょうか?


920ポイント を手に入れた。

Name: softya  ..熟練のプログラマー(58,840ポイント)   Date: 2009/12/03(木) 18:54   No:43201     
Title: Re:ソフトの配布後にバグが見つかったら?    
インストーラ作成ツールのフリーソフトやシェアウェアから探すのも手です。
http://www.vector.co.jp/vpack/filearea/win/prog/install/
私は、簡単インストーラを使ってますが差分配布の機能がありません。
多少扱いが面倒な所もありますが、無料で多機能なのは良い点です。

インストーラ作成ツールで有名なのがEXEpressです。これも差分配布の機能が無い様です。
同人ソフトを販売する場合有料のシェアウェア版(5250円)を使う必要があります。
http://www.webtech.co.jp/onlinesoft/exepress/index.html
メーカーでも利用している所がありますね。

インストーラ作成ツールは他にも色々ありますので、試してみて使いやすいものを選ぶと良いと思います。


152ポイント を手に入れた。

Name: YuO  ..プログラマー(39,280ポイント)   Date: 2009/12/03(木) 19:05   No:43205     
Title: Re:ソフトの配布後にバグが見つかったら?    
> autorun.infとは何なのでしょうか?

CD-ROM等における,自動起動のための設定ファイルです。
これ自体,セキュリティ上の問題があるのは承知しているのですが,セットアップが自動起動しないのでは,初心者はインストール作業ができない可能性があります。
SITE: USBメモリで広まるウイルスへの対策 | セキュリティ情報 : トレンドマイクロ
http://jp.trendmicro.com/jp/threat/solutions/usb/


> Windows Installer XML toolset(WiX)は自由度が高いが少し難しい。
> 対してVisual Studioセットアップ・プロジェクトは自由度は低いが簡単。
> ということだと思いますが、
> 今回の私のゲームのように、それほど複雑なインストーラはいらない場合は
> Visual Studioセットアップ・プロジェクトで問題ないと考えてよろしいのでしょうか?

VSセットアップでは,原則として全部入れ替える必要があります。
@ITの高萩さんの記事の3ページ目,「更新パターンへの対応」欄をお読みください。
更新を考えているのであれば,WiXが最適ということになります。


> 一応フリーのVisual C++ 2008 Express Editionは持っています(まったくといっていいほど使用していませんが…)
> もしVisual Studioセットアップ・プロジェクトで問題ない場合、
> このソフトでもインストーラは作成できるのでしょうか?

できません。
SITE: Microsoft Visual Studio 2008 製品ラインの概要
http://www.microsoft.com/japan/msdn/vstudio/2008/product/compare.aspx
の「配置ツール」欄にあるように,Express製品ではClickOnce配置しかできず,C++/CLIでないC++プログラムは,実質的に配置用の方法が存在しない事になります。
VSセットアップは,同欄の「MSI」にあたります。
つまり,Standard Edition以上の機能となります。


2倍のポイントを手に入れた! 448ポイント を手に入れた。

Name: ふにみふ  ..かけだし(1,532ポイント)   Date: 2009/12/04(金) 12:58   No:43308     
Title: Re:ソフトの配布後にバグが見つかったら?    
丁寧な回答ありがとうございます。

autorun.infを調べてみました。
なかなかいいイメージはないようですね(汗)
こちらはまだ試しておりませんが、インストーラーやパッチに比べると比較的簡単そうで、なんとかなりそうだと思えました。
コミケにて購入したゲームソフトをautorunの観点から見たことがなかったので、
試しにCDを入れてみると、確かに自動的に起動するタイプが多かったです。
一つだけ違うのもありましたが…

YuOさんの提示していただいたインストーラー以外にもフリーソフトなどがあるのですか。
しかしインストーラーの差分配布機能とはどういうことでしょう?
@ITの高萩さんの記事の3ページ目,「更新パターンへの対応」もこの差分配布機能に関する内容なのだろうと思いますが…

昨日に出来ましたパッチですと、インストールされているフォルダにパッチを入れ、
そこで実行(ダブルクリック)という動作でアップデートできますが、
差分配布機能なら、もっと簡単に出来るとか、そういうことでしょうか?

http://www.vector.co.jp/soft/win95/prog/se351266.html
例えばこのソフトですと紹介に「通常版と差分版が作成できる高機能なインストーラ作成ソフト」と書かれていますが、
まさにこれが差分配布機能ということでしょうか?


333ポイント を落としてしまった。

Name: ふにみふ  ..かけだし(1,549ポイント)   Date: 2009/12/04(金) 13:15   No:43310     
Title: Re:ソフトの配布後にバグが見つかったら?    
ちなみに今もまた少し調べていたところ、
このサイトでもよく見かける東方シリーズは(今見たのは紅魔郷、妖々夢、永夜抄、花映塚)
パッチをダウンロードし、手動で対象のフォルダまでパッチを移動し、実行。
というタイプのようです。


17ポイント を手に入れた。

Name: ねこ  ..熟練のプログラマー(48,601ポイント)   Date: 2009/12/05(土) 11:26   No:43419     
Title: Re:ソフトの配布後にバグが見つかったら?    
僕も同人ソフト売ったりしてますが、差分パッチはあまりおすすめ出来ないです。
掲示板等で色々と不具合の報告をしてくれる際素早い対応をしていくと
どんどんバージョン段階が出来てしまい管理するだけで結構大変だからです。

外部にファイルを置く手法にしておくとEXEごとパッチと言っても4,5MB。最近のネット環境なら全く問題ありません。

またインストーラーに関しては毛嫌いする人も居ます。
CDからのコピーだけじゃないのでレジストリ等に何かしてるんじゃないの?といった疑問を持つ人や
アンインストールは削除だけでさくっとしたいと言った人が多いためです。

MSIを使って確実にインストールした内容を管理するのも大切だとは思いますが、
ユーザーさんの要望に近い形にするのが同人としては良いような気がします。


149ポイント を手に入れた。

Name: ふにみふ  ..かけだし(1,916ポイント)   Date: 2009/12/05(土) 12:33   No:43427     
Title: Re:ソフトの配布後にバグが見つかったら?    
インストーラを毛嫌い…まさに私ですw
それだけにインストーラはまったく作るつもりはなかったのですが、
これまでの書き込みを見ると、初心者にはインストーラーの方が優しいといえば確かにそんな気もしてきます。

パッチに関しても同じく、今時少しぐらい重くてもバグを取ったexeファイルを再び配布したほうがいいのでは?
というのは私も同じように思わなくもないところです。
しかし一言パッチが主流と言われると、そうなの?!とついそちらへ気持ちが傾いてしまいます。
パッチをダウンロードしてexeと同じフォルダにいれ実行、と、改良されたexeをダウンロードして旧exeと入れ替える、を比較したとき、両方とも初心者に対する難易度もあまり変わらないと思いますし…

インストーラーを作るか作らないか、
バグ対応はパッチにするか改良exeを配布するか、
うーん…どちらがよいのか…
また新たなスレッドタイトルでこの点を聞いてみようか…


367ポイント を手に入れた。

Name: YuO  ..プログラマー(39,868ポイント)   Date: 2009/12/07(月) 02:12   No:43560     
Title: Re:ソフトの配布後にバグが見つかったら?    
まず,方法を知らない人は.zipの展開すらできません (実例あり)。
この事実を考えると,CD/DVDにautorun.infとインストーラーは必須です。
# なければ,方法がわからない人達は無駄金を出した事になるので。

で,インストーラー無しがユーザー要望であるのは,本当に多数派なのですかねぇ……。
インストーラーを使わないというのはユーザーにバージョン管理を任せる,ということになります。
毛嫌いするユーザーも,そこまで本当に考えているのか疑問です。
私には到底ユーザーに配布物のバージョン管理をさせるなんてできませんが。

無償のソフトならば,全てを上書きという方法でバージョン管理ができるのでよいとしても,
有償のソフトである以上,全てを上書きという方法はできませんよね。
なので,最初の点を無視するにしても,インストーラーとパッチのためのシステムが必要になります。


添付はWiX 3.0.5419とVS 2008を使ったMinor Update / Major Updateのテストです。
WiXのインストールディレクトリを各makefileのWIXBINDIRに設定して試してみてください。
bin/setup.exeが各バージョン用のインストーラー (.msiを中に含む),
pbin/patch.exeが各バージョン用のアップデートパッチ (.mspを中に含む) になります。
# これを元に別途インストーラーを作成する場合,各種GUIDを変更してください。


383ポイント を手に入れた。

Name: 組木紙織  ..比類無きプログラマー(76,305ポイント)   Date: 2009/12/07(月) 08:42   No:43566     
Title: Re:ソフトの配布後にバグが見つかったら?    
>zip
これについては私も経験があります。XPだったので右クリックで解凍出来たのが幸いでした。

>インストーラー無しがユーザー要望であるのは,本当に多数派なのですかねぇ……。
ここの掲示板に来てる人自体がPCが出来る部類にいるということを忘れてはいけません。

一般ユーザーだと過程はどうあってもソフトが動けば問題ない。
そこそこ出来るユーザーだと色々動作が見えないインストーラーなんてものは怖くて使えない。(使いたくない)
本当に出来るユーザーだと、インストーラーの動作を知ってるので、気にせず使う。

といった感じじゃないでしょうか。


19ポイント を手に入れた。

Name: ふにみふ  ..かけだし(2,470ポイント)   Date: 2009/12/07(月) 10:49   No:43569     
Title: Re:ソフトの配布後にバグが見つかったら?    
YuOさん、細木紙織さんありがとうございます。

zipの解凍が出来ないのは確かにちょっと…ですね。
ではインストーラーは作成するとして、パッチ(バージョン)はどのようにユーザーに扱ってもらえばよいのか、わかりません…
理解が及ばず申し訳ないです…

インストーラーは以前softyaさんが提示していただいたように、
WIXに限らず、簡略化してあるフリーソフト(シェアでも)などで行えばよいとして、
インストーラーの差分配布機能というものは重要なのでしょうか?
どのような動作をする機能なのかがわかっていないので…

もし差分配布機能を考えなかったとしても、対象のexeがあるフォルダに、
wdiffで作成した差分ファイルを置き、実行すればいいのだとは思いますが…
つまりはこれも初心者には難しいので、差分配布機能という初心者に優しい機能(?)を使うということでしょうか?

>無償のソフトならば,全てを上書きという方法でバージョン管理ができるのでよいとしても,
>有償のソフトである以上,全てを上書きという方法はできませんよね。

これについても、私は改良されたexeをまるまる配布と言っていますが、ゲームの音楽や画像などのデータは配布しません。
そのようにすれば、それはもうパッチを配布しているのと、ほとんど同じ意味なのでは?
と思ってしまう訳ですが、どうでしょう?

あと、ごめんなさい…
YuOさんがせっかく複雑そうなファイルを用意して下さったのに、
動作の方法がわかりませんでした…
まだWiXでインストーラーを作るかは決めていないので、WiXの扱いは全くわからない上、.exeのファイルが見当たりませんでした…


554ポイント を手に入れた。

Name: 御津凪 [URL]  ..ハッカー(128,022ポイント)   Date: 2009/12/07(月) 11:11   No:43571     
Title: Re:ソフトの配布後にバグが見つかったら?    
> これについても、私は改良されたexeをまるまる配布と言っていますが、ゲームの音楽や画像などのデータは配布しません。

ゲームの音楽や画像などのデータに修正が必要になった場合はどうするのでしょうか?
一つのファイルにパックされている構造なら丸ごと上書きで対処ということはできないですよ。
(プログラムを修正したがゆえに他のデータも変更せざるを得ないということもままあるので)

> インストーラーの差分配布機能というものは重要なのでしょうか?

有料モノのバグ修正などによるアップデートではインストーラーの差分配布機能は結構重要ですよ。
その機能はツールによっては無かったりしますが、
ツールに外部実行できるような細かい処理ができるものであれば、

> 対象のexeがあるフォルダに、
> wdiffで作成した差分ファイルを置き、実行すればいいのだとは思いますが…

この処理をインストーラー内で実行させることができます。
(Inno Setup というツールでは、このような方法で対応できます)


2倍のポイントを手に入れた! 282ポイント を手に入れた。

Name: YuO  ..熟練のプログラマー(40,475ポイント)   Date: 2009/12/07(月) 11:49   No:43573     
Title: Re:ソフトの配布後にバグが見つかったら?    
> zipの解凍が出来ないのは確かにちょっと…ですね。
> ではインストーラーは作成するとして、パッチ(バージョン)はどのようにユーザーに扱ってもらえばよいのか、わかりません…
> 理解が及ばず申し訳ないです…

.exeをダウンロードしてもらうことになります。
ただし,その方法は簡単であってもWeb上に書く必要があるでしょう。


> WIXに限らず、簡略化してあるフリーソフト(シェアでも)などで行えばよいとして、
> インストーラーの差分配布機能というものは重要なのでしょうか?
> どのような動作をする機能なのかがわかっていないので…

Windows Installerにおけるパッチファイル,つまり.mspというのは,.msiのデータベースの差分です。
他のソフトウェアでも同じでしょう。


> これについても、私は改良されたexeをまるまる配布と言っていますが、ゲームの音楽や画像などのデータは配布しません。
> そのようにすれば、それはもうパッチを配布しているのと、ほとんど同じ意味なのでは?
> と思ってしまう訳ですが、どうでしょう?

・バージョン管理問題はどうしますか。
ありがちなのが,Web上のパッチよりも新しいバージョンが配布される場合です。
ユーザーにバージョン管理を丸投げの場合,ダウングレードが発生します。
バージョン管理機能を持つインストーラーを使えばそのような状況は発生しません。
・インストールされた場所はどうやって知らせますか
通常,%ProgramFiles%にインストールされるわけですが,そこへユーザーへ直接アクセスさせるのですか。
個人的にはそれはもう配置機構の欠陥としか思えません。
なお,Windows Installerを使ったインストーラーの場合,対象の.exeをKeyPathとした場合,自動復旧機能が働きます。


> 動作の方法がわかりませんでした…
> まだWiXでインストーラーを作るかは決めていないので、WiXの扱いは全くわからない上、.exeのファイルが見当たりませんでした…

・WiX 3.0をインストールする
・Visual Studio 2008 コマンドプロンプトを起動する
・WiX 3.0のbinへのパスを切る
・先に添付したファイルを展開したディレクトリ (create.batや*.makがあるディレクトリ) に移動
・create.batを実行する
が手順です。

バイナリを追加したものは,以下になります。
http://pub.idisk-just.com/fview/olN5vuUPjsD8DHIzezbv68Gvw-sWdttEUK_OQCcD_vSBOv29xlYGpH-XoEZxPqj0xU2esy1JRH-_RzgUF1XkCw.zip
# 1MiB強なので添付不可でした。


607ポイント を手に入れた。

Name: ねこ  ..熟練のプログラマー(49,993ポイント)   Date: 2009/12/07(月) 12:45   No:43580     
Title: Re:ソフトの配布後にバグが見つかったら?    
なんだか企業のパッケージ商品に対しての話ではないかと感じてしまうねこです。
またインストーラの持つバージョン管理についても大事だとは思うのですが
「コミケ等で配布する同人ソフト」という前提の前ではちょっと大げさに感じてしまいます。

インストーラ形式で配布した際「うざい」とは言われるものの「インストーラで良いね」とは言われないんですよね
<インストーラー無しがユーザー要望であるのは,本当に多数派なのですかねぇ……。
ここに絡みますが「インストーラが良い」と言う人が圧倒的少数なので、「どっちでもいい」+「コピペが良い」ってのが一般的な意見となってます。

インストーラの経験を積むのは良いことで、同人ソフトであれば拘る必要はないと思いますよ。
というのが僕個人の一意見です。


余談ですが
同人ゲーム=有償ソフトなんて考えは大体の人が持ってないと思います。
趣味で楽しく作って多くの人に遊んでもらって黒字赤字をいったりきたり。
有償ソフトとしての品質が必要であればそれ相応にコストも増えますが、
あくまでゲームを遊んでもらうのが一番の目的なのでそこに拘ったりはしません。


388ポイント を手に入れた。

Name: ふにみふ  ..入門者(3,013ポイント)   Date: 2009/12/07(月) 15:43   No:43588     
Title: Re:ソフトの配布後にバグが見つかったら?    
>ゲームの音楽や画像などのデータに修正が必要になった場合はどうするのでしょうか?

確かにその通りですね…バグということでexeファイルにばかり意識が行っていました。
しかし、これならこれで、プログラムによるバグ(exeが原因)が発生した場合はexeの再配布。
音楽や画像によるバグが発生した場合はパッチを配布。
で、どうでしょうか?
以前にバグがあるたびにパッチを作っていると管理が大変との書込みがあり、
実際その通りではないかな?と私自身も思うので…

>この処理をインストーラー内で実行させることができます。
>(Inno Setup というツールでは、このような方法で対応できます)

>.exeをダウンロードしてもらうことになります。
>ただし,その方法は簡単であってもWeb上に書く必要があるでしょう。

御津凪さん、YuOさんのこの書込みから察するに
差分配布機能とはexe型で、それをダウンロードして、場所はデスクトップだろうが、どこだろうが、実行(ダブルクリック)するだけで、
修正対象のファイル(exe等)を見つけ出し、修正処理をしてくれる…という理解で大丈夫でしょうか…?

それと差分配布機能は他の呼び名もありますか?
「Inno Setup 差分」「Inno Setup 差分配布」「Inno Setup 差分配布機能」等と検索しても、全くそれらしい記事が見当たらず…
ちなみに一番初め本体のインストーラー作成はAというフリーソフトで(例えば簡単インストーラー)、修正パッチのインストーラーはBというフリーソフトで(例えばInno Setup)…というのは可能ですか?

ダウングレードが発生してしまうというのもwdiffのパッチですとないような気もします(少し触った感想ですが)
例えば、最新の1.05を配布したとして、1.00から1.03を1.04に変更するパッチがウェブ上にあり、
1.05に対して1.04に変更するパッチを当てたところで、恐らくエラーが出ると思います。
またバージョン管理機能と差分配布機能は別物ですか?管理機能があればダウングレードの間違いをなくせるということですか?

ねこさんのおっしゃるとおり、かなり私には難しい話でなかなか理解ができず苦労しております(汗)
同人ソフトに対する意見として、ねこさんの意見もとても参考になります。
「どっちでもいい」+「コピペが良い」この式なんだかとってもよくわかりますw

YuOさん、先ほどのファイルの使い方の詳細ありがとうございます。
この後試してみようと思います。


543ポイント を手に入れた。

Name: 御津凪 [URL]  ..ハッカー(128,880ポイント)   Date: 2009/12/07(月) 16:32   No:43590     
Title: Re:ソフトの配布後にバグが見つかったら?    
Inno Setup はインストール方法やインストール先などをスクリプトで細かく指定できるインストーラ作成ツールです。
(YuO さんの WiX とは全くの別物です)
差分配布機能という名称はそのスクリプトで再現できることであって、 Inno Setup の機能というわけではないです。

wdiffのパッチファイルを前回インストールしたソフトの場所に置き、パッチをあてるという処理を
インストーラ側が自動で実行するようにスクリプトを書き、
wdiffのパッチファイルだけを格納したインストーラをつくるというわけです。

ただし、「インストール動作をスクリプトで書く」ので、慣れるまで簡単ではないということを留意してください。


> またバージョン管理機能と差分配布機能は別物ですか?

機能的に別物です。
バージョン管理機能はインストール対象のバージョンをチェックする機能で、内容が差分かどうかは関係ありません。
差分配布機能は差分データを配布する機能で、バージョンは基本関係ありません。

> 管理機能があればダウングレードの間違いをなくせるということですか?

基本的にはそういうことになります。


もし時間があるのなら、インストーラについてじっくり勉強したほうが良いかもしれませんね。
間違った作成をして、インストーラのバグが出るということもありえます。


若干問題ではありますが、差分データを作らずに、インストール時にライセンスコードの入力を促すような方法もあります。
配布時の説明書などの欄にそのライセンスコードを入れて、その配布物のインストール時や、アップデートインストール時にライセンスコードの入力を促す、という方法です。


537ポイント を手に入れた。

Name: lbfuvab  ..上級者(23,384ポイント)   Date: 2009/12/07(月) 23:08   No:43601     
Title: Re:ソフトの配布後にバグが見つかったら?    
自分で
・ファイルのコピー(&削除)
・バージョンチェック
・差分ファイルの適応
辺りに絞ってインストールツールを作るのもありですね。
但し、簡単にするとアンインストールもCDから行う形式になりますが・・・


74ポイント を手に入れた。

Name: ふみにふ  ..ぴよぴよ(52ポイント)   Date: 2009/12/08(火) 12:17   No:43624     
Title: Re:ソフトの配布後にバグが見つかったら?    
皆様のおかげで少しずつではありますが、整理が付いてきています。ありがとうございます。

しかし、まだいくらか頭の整理が出来ていない部分もあります。
ここの整理さえつけば、さっそくインストーラーを作るテストをしてみたいので、
もう少しだけ、お付き合いをお願いしたいです…

1、
先ほども書き込みをしましたように、音楽や画像のバグはパッチ。
exeのバグは改良exeの配布で大丈夫なのでしょうか?
全てのバグをパッチで直すのもできることには出来ますが、exeのバグは改良exeの配布で行ったほうが
パッチの管理も簡単だと思うのですが…
この方法ですと何か不具合が起きますでしょうか?

2、
ダウングレードの起こる理屈がイマイチわかりません…
wdiffのパッチですと、これも先ほど書いたように1.00を1.01にするパッチを1.02に対して使っても(ダウングレードしようとしても)エラーが起こり実行できないと思うのです。
なのでダウングレードは絶対に起こらないように思うのですが…?

3、
これも前回の書込みからですが、ソフトを導入する時(つまりCDからインストールする時)に使用するインストーラー作成のフリーソフトはAというソフト。
その後、差分配布を行うインストーラーの作成はBというフリーソフト。
というように分けて使うことは出来ますか?
ソフト導入時にAというソフトで作ったインストーラーを使ったのなら、差分配布もAというソフトで作ったものしか出来ない!
ということかどうかです。


52ポイント を手に入れた。

Name: 御津凪 [URL]  ..ハッカー(129,527ポイント)   Date: 2009/12/08(火) 13:04   No:43628     
Title: Re:ソフトの配布後にバグが見つかったら?    
> 1、
パッチを使って差分アップデートするなら、パッチで統一した方が管理しやすいかと思いますが、
きちんとバージョン管理ができるのであれば統一しなくても大丈夫ではないかと思います。

> 2、
パッチでダウングレードが起こることは通常ないと思います。無理やり当てても壊れるだけですから。
(ダウングレードするパッチを作ったのなら別です)

(ちなみにパッチの際に作られるバックアップファイルに戻すという行為もダウングレードに当たりますがこれは別の話。)

> 3、
インストール情報の互換性があれば、できます。
一応無くても問題なくインストールできますが、Aのインストール情報とBのインストール情報が別々に登録され、
インストールしたソフトウェアの一覧に同じものが重複するということになり、ユーザーがアンインストール時に混乱を招く恐れがあります。


213ポイント を手に入れた。

Name: ふにみふ  ..入門者(3,314ポイント)   Date: 2009/12/08(火) 15:02   No:43633     
Title: Re:ソフトの配布後にバグが見つかったら?    
書き込みありがとうございます。
1と2は完全整理が付きましたm(__)m

>インストールしたソフトウェアの一覧に同じものが重複するということになり

インストールしたソフトウェアの一覧とは、コントロールパネル→プログラムの追加と削除。で現れる一覧のことですよね?
CDからソフトを導入する時のインストール作業で、この一覧に作成したソフトウェアが追加されるのは当然ですしわかります(このインストーラーはAというソフトで作ったものとする)

その後、差分配布をBというインストーラーで行うと、それだけで「プログラムの追加と削除」の一覧にまた何かが(わかりませんが)追加されてしまうのですか…?
差分配布のインストーラー、つまり中身は差分パッチだけなのに…?


301ポイント を手に入れた。

Name: 御津凪 [URL]  ..ハッカー(130,148ポイント)   Date: 2009/12/08(火) 15:18   No:43635     
Title: Re:ソフトの配布後にバグが見つかったら?    
> インストールしたソフトウェアの一覧とは、コントロールパネル→プログラムの追加と削除。で現れる一覧のことですよね?

そうです。

その一覧はレジストリ情報から読み出していて、それぞれの項目は決まった形式に基づいて一覧に登録されています。
(これにはアンインストールするための情報も含まれます)

そして、それぞれの項目ごとに一意を識別する ID がインストーラから割り振られます。
この ID が違うと、たとえ同じソフトウェアでも、一覧には重複して表示されるということです。
(中身はパッチを行うものだとしても)


通常は、インストール時のソフトウェア名がそのまま ID 名になりますが、
インストーラツールによっては専用の ID を指定することでその ID を使用することがあります。

つまり、A で作成し、インストールしたときに割り振られた ID を、 B のインストーラで使用できるようにすれば、
一覧で重複することはなくなります。

ただし、B のインストーラでは A のアンインストール情報を上書きしないように設定しない(アンインストール情報を作成しない等)と、
正しくアンインストールされないバグが発生しますので注意してください。


406ポイント を手に入れた。

Name: ふにみふ  ..入門者(3,376ポイント)   Date: 2009/12/09(水) 11:45   No:43688 解決!     
Title: Re:ソフトの配布後にバグが見つかったら?    
ありがとうございます。
これで少なくとも現時点では頭の整理が付きました。

ここで得た情報を元に頑張っていきたいと思います。
長い間お付き合いいただき、皆様ありがとうございました。


62ポイント を手に入れた。



Name: poipoi  ..ぴよぴよ(95ポイント)   Date: 2009/12/08(火) 15:09   No:43634       
Title: 文字を消去する関数について    

  DrawString( 250 , 240 - 32 , "文字を入力" , Cr );

 で出力した文字を消去する方法はあるのでしょうか??


 ClearDrawScreenを使用すると、作図も全て消えてしまいました。


95ポイント を手に入れた。


Name: Mist  ..比類無きプログラマー(76,628ポイント)   Date: 2009/12/08(火) 15:40   No:43638     
Title: Re:文字を消去する関数について    
DXライブラリは全て書き直すことが基本です。
「文字を消したい=文字以外を全部書き直す」です。


40ポイント を手に入れた。

Name: poipoi  ..ぴよぴよ(105ポイント)   Date: 2009/12/09(水) 10:36   No:43684     
Title: Re:文字を消去する関数について    
分かりました。
ありがとうございます。


10ポイント を手に入れた。



Name: ばいなむ  ..ぴよぴよ(395ポイント)   Date: 2009/12/08(火) 16:49   No:43642       
Title: リストへの追加削除のプログラム    
以下のプログラムのメイン関数で最初のセルを struct MEMBER start = {"dummy", serialNum++, NULL};
のようにスタックに定義した場合の連結リストへの新規、追加、削除プログラ
ムを作りなさい、という問題ですがよろしくお願い合います。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
static intserialNum= 0;
/*----------------------------------------------
連結リストを構成する構造体
-----------------------------------------------*/
struct MEMBER{
charname[20]; //名前
int number; //番号
structMEMBER* next;//次のデータポインタ
};
/*----------------------------------------------
関数プロトタイプ
-----------------------------------------------*/
void AddMember(struct MEMBER* start, char* name, int num);
struct MEMBER* NewMember(char* name, int num);
void FreeLink(struct MEMBER* start);
/*--------------------------
連結リストを作成する
----------------------------*/
int main(int argc, char** argv)
{
struct MEMBER* start = NewMember("mitsugi", serialNum++);
AddMember(start, "emura", serialNum++);
AddMember(start, "satou", serialNum++);
AddMember(start, "yonemura", serialNum++);
FreeLink(start);
return(0);
}
/*----------------------------------------------
新しいセルを定義する
input name: 新しいメンバの名前
num: 新しいメンバの番号
return エントリの番地
-----------------------------------------------*/
struct MEMBER* NewMember(char* name, int num)
{
}
/*----------------------------------------------
リストの最後にセルを追加する
-----------------------------------------------*/
void AddMember(struct MEMBER* start, char* name, int num)
{
}
/*----------------------------------------------
start から始まる連結リストのメモリを解放する
-----------------------------------------------*/
void FreeLink(struct MEMBER* start)
{
}


395ポイント を手に入れた。


Name: kazuoni [URL]  ..ハッカー(117,501ポイント)   Date: 2009/12/08(火) 17:50   No:43648     
Title: Re:リストへの追加削除のプログラム    
とりあえず、規約を読んで、不足な部分を追記するなり、修正するなりしてください^^

(FLASHの効果が発揮されt・・・)


72ポイント を手に入れた。

Name: non  ..比類無きプログラマー(78,157ポイント)   Date: 2009/12/08(火) 17:50   No:43649     
Title: Re:リストへの追加削除のプログラム    
丸投げは、いけませんよ。
作れるところまで作ってください。

ところで、
>以下のプログラムのメイン関数で最初のセルを struct MEMBER start = {"dummy", serialNum++, NULL};
という文章とmainプログラムの
>struct MEMBER* start = NewMember("mitsugi", serialNum++);
との兼ね合いがわかりません。どういうことでしょう。



102ポイント を手に入れた。

Name: ばいなむ  ..ぴよぴよ(410ポイント)   Date: 2009/12/09(水) 02:02   No:43674     
Title: Re:リストへの追加削除のプログラム    
non様 
僕も何のことだかさっぱりわかりません


15ポイント を手に入れた。

Name: non  ..比類無きプログラマー(78,690ポイント)   Date: 2009/12/09(水) 08:40   No:43675     
Title: Re:リストへの追加削除のプログラム    
それでは、課題を出した人に、よく聞いて、理解した上で質問してください。

29ポイント を手に入れた。



Name: jay  ..入門者(4,157ポイント)   Date: 2009/12/05(土) 12:37   No:43428       
Title: 弾幕のプチテストプレイ    
現在、龍神録のprojectを使わせて頂きつつ弾幕STGを制作中です。
龍神録仕様で弾幕のコードを書きますので感想、指摘、意見などをお願いします。
void boss_shot_bulletH013(){
#define TM013 230
int r,i,s,k,t=boss_shot.cnt%TM013;
static int cnum=0;
if(t==0){//1周期の最初なら
if(cnum%3==0){//3回に1回
//50<x<FMX-50、40<y<110の範囲を30の距離、60カウントで移動
move_boss_pos(50,40,FMX-50,110,30,60);
}
}
if(t==40){
r=GetRand(60);
for(i=0;i<8;i++){
for(s=0;s<8;s++){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].knd =1;
boss_shot.bullet[k].col =3;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].flag =1;
boss_shot.bullet[k].angle =PI/180*r+PI2/8*i;
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =1.5;
boss_shot.bullet[k].state =s;
se_flag[0]=1;
}
}
}
}
if(t==100){
r=GetRand(50);
for(i=0;i<8;i++){
for(s=1;s<9;s++){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].knd =1;
boss_shot.bullet[k].col =4;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].flag =1;
boss_shot.bullet[k].angle =PI/180*r+PI2/8*i;
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =1.5;
boss_shot.bullet[k].state =s*10;
se_flag[0]=1;
}
}
}
}
for(i=0;i<BOSS_BULLET_MAX;i++){
if(boss_shot.bullet[i].flag>0){
if(t==150){
if(boss_shot.bullet[i].state<10){
boss_shot.bullet[i].spd=1.0;
boss_shot.bullet[i].angle=PI2/8*boss_shot.bullet[i].state;
}
}
}
}
for(i=0;i<BOSS_BULLET_MAX;i++){
if(boss_shot.bullet[i].flag>0){
if(t==210){
if(boss_shot.bullet[i].state>=10){
boss_shot.bullet[i].spd=1.0;
boss_shot.bullet[i].angle=PI2/8*boss_shot.bullet[i].state/10;
}
}
}
}
if(t==240) cnum++;
}

この弾幕はステージ1のボスのラストで使う予定です。
この事もふまえて感想などよろしくお願いします。


710ポイント を手に入れた。


Name: ひよこ  ..比類無きプログラマー(74,353ポイント)   Date: 2009/12/05(土) 13:35   No:43432     
Title: Re:弾幕のプチテストプレイ    
試してみましたがけっこういい弾幕ですね。見た目が軽そうで、増えてくるってのがいいですね。
もうちょっと、何かが欲しいです。自分はとんがったレーザがほしいです。
弾の数が調整しやすいので、難易度も変えやすいということです。
これって改造いいですか?、使ってみたいのですが。


2倍のポイントを手に入れた! 226ポイント を手に入れた。

Name: jay  ..入門者(4,225ポイント)   Date: 2009/12/05(土) 16:57   No:43441     
Title: Re:弾幕のプチテストプレイ    
3WAY位でレーザー入れてもいいですが
1面にしては難しくないですかね?
アレンジはプログラムコードを記載して
どのように手を加えたのか簡単に解説して下さるならOKです。


68ポイント を手に入れた。

Name: チルチル  ..比類無きプログラマー(82,743ポイント)   Date: 2009/12/05(土) 18:13   No:43445     
Title: Re:弾幕のプチテストプレイ    
私が気になった所としては

・ボスの移動距離が短い
何かつっかえたような印象を受けました
もう少し短時間で遠くに行ってほしいです

・黄色と緑色の速度が同じ
何か2色出している意味が無いような気がします

・攻撃が単調
見ていても変化が無いので飽きてきます
変化を付けるか要素を増やしたら良いかもしれません

・分裂する前に画面外に出ると消えてしまう
画面外に出た弾も戻って来てほしいです

・地味に見える
ステージのラストの割には地味な気がします

あと参考までに私も軽くアレンジしてみました
void boss_shot_bulletH013(){

int t=boss_shot.cnt%240;
if( t%20==0 && t<60 ){
move_boss_pos(50,40,FMX-50,110,80+GetRand(40),30);
int r=GetRand(4);
for( int i=0;i<8;i++ ){
int k=search_boss_shot();
if( k!=-1 ){
boss_shot.bullet[k].knd =1;
boss_shot.bullet[k].col =t/20;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].flag =1;
boss_shot.bullet[k].angle =PI/32*r+PI2/8*i;
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =5;
boss_shot.bullet[k].state =t/20;
boss_shot.bullet[k].till =240;
}
}
se_flag[0]=1;
}
else if( t==120 )move_boss_pos(50,40,FMX-50,110,150,60);
else if( t%5==0 && t>120 && t<180 ){
for( int i=0;i<3;i++ ){
int k=search_boss_shot();
if( k!=-1 ){
boss_shot.bullet[k].knd =11;
boss_shot.bullet[k].col =i;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].flag =1;
boss_shot.bullet[k].angle =bossatan2();
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =2.5+0.5*i;
boss_shot.bullet[k].state =-1;
}
}
se_flag[0]=1;
}
for( int i=0;i<BOSS_BULLET_MAX;i++ ){
if( boss_shot.bullet[i].flag>0 ){
if( boss_shot.bullet[i].state>=0 ){
if( boss_shot.bullet[i].cnt<50 )boss_shot.bullet[i].spd-=0.1;
else{
for( int j=0;j<8;j++ ){
int k=search_boss_shot();
if( k!=-1 ){
boss_shot.bullet[k].knd =1;
boss_shot.bullet[k].col =boss_shot.bullet[i].col;
boss_shot.bullet[k].x =boss_shot.bullet[i].x;
boss_shot.bullet[k].y =boss_shot.bullet[i].y;
boss_shot.bullet[k].flag =1;
boss_shot.bullet[k].angle =boss_shot.bullet[i].angle+PI2/8*j+0.2;
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =1.5+0.5*boss_shot.bullet[i].state;
boss_shot.bullet[k].state =-1;
boss_shot.bullet[k].till =240;
}
}
boss_shot.bullet[i].flag =0;
}
}
}
}
}


869ポイント を手に入れた。

Name: jay  ..入門者(4,390ポイント)   Date: 2009/12/05(土) 22:31   No:43463     
Title: Re:弾幕のプチテストプレイ    
チルチルさん、ご指摘ありがとうございます。
ゆっくり移動はボスが余裕を持っている感じを出そうとしたのですが失敗でしたね
ゆっくり長く移動させてみます
あと確かに地味なのでもう少し動きか変化をつけてみます
改良したものは明日にでもコードを書いてみます。
チルチルさんの弾幕はアレンジというよりある種の発展形という感じがしました。
以前誰かが言っていましたが人のコードを見るのは参考になりますね。
ありがとうございます。


165ポイント を手に入れた。

Name: ひよこ  ..比類無きプログラマー(75,321ポイント)   Date: 2009/12/05(土) 22:50   No:43464     
Title: Re:弾幕のプチテストプレイ    
私は、2つのレーザが左右から飛んでくるみたいなことを考えました。
自分のソースじゃ再現できませんが、
自分の怪しいアレンジ?を置いておきます。
これを改造したのを使わせていただきます。
jayさん感想など、お願いします。
円形弾+螺旋です。

void boss_shot_bulletH014(){
#define TM014 230
int i,s,k,t=boss_shot.cnt%TM013;
double r;
static int cnum=0;
if(t==0){//1周期の最初なら
if(cnum%2==0){//3回に1回
//50<x<FMX-50、40<y<110の範囲を30の距離、60カウントで移動
move_boss_pos(50,40,FMX-50,(FY+FMY)/2,90,60);
}
}
if(t>100 && t%3==0){
for(i=0;i<8;i++){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].knd =8;
boss_shot.bullet[k].col =0;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].flag =1;
boss_shot.bullet[k].angle =bossatan2()+PI2/8*i+t*0.2;
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =4.0;
boss_shot.bullet[k].state =0;
se_flag[0]=1;
}
}
}
if(t%50==0){
r=PI2/(GetRand(3)+1);
for(i=0;i<16;i++){
for(s=1;s<5;s++){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].knd =1;
boss_shot.bullet[k].col =0;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].flag =1;
boss_shot.bullet[k].angle =t/50*0.2+r+PI2/8*i;
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =1.5+s/5;
boss_shot.bullet[k].state =s*10;
se_flag[0]=1;
}
}
}
}
for(i=0;i<BOSS_BULLET_MAX;i++){
if(boss_shot.bullet[i].flag>0){
if(boss_shot.bullet[i].cnt==20 && boss_shot.bullet[i].state!=0){
boss_shot.bullet[i].spd-=0.01;
boss_shot.bullet[i].angle=PI2/5*boss_shot.bullet[i].state/10;
}
}
}
if(t==TM014) cnum++;
}


968ポイント を手に入れた。

Name: jay  ..初心者(5,334ポイント)   Date: 2009/12/06(日) 12:23   No:43507     
Title: Re:弾幕のプチテストプレイ    
ひよこさん
>jayさん感想など、お願いします。
あれ? 僕が感想言うんですか? 最初は僕が言ってもらうはずだったのに・・・
ここまで行くとアレンジというか別の弾幕ですね。
あ! だからアレンジじゃなくて改造と・・・、成る程。

自分のアレンジが一応できたので載せます。
一つ目、ひよこさんの言葉を意識して作ってみた
レーザー”もどきですが”・・・
void boss_shot_bulletH013(){
#define TM013 290
int r,i,s,k,t=boss_shot.cnt%TM013;
double angle;
static int cnum=0;
if(t==0){//1周期の最初なら
if(cnum%3==0){//3回に1回
//40<x<FMX-40、30<y<120の範囲を70の距離、60カウントで移動
move_boss_pos(40,30,FMX-40,120,70,60);
}
}
if(t==40){
r=GetRand(60);
for(i=0;i<12;i++){
for(s=0;s<8;s++){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].knd =1;
boss_shot.bullet[k].col =3;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].flag =1;
boss_shot.bullet[k].angle =PI/180*r+PI2/12*i;
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =1.3;
boss_shot.bullet[k].state =s;
se_flag[0]=1;
}
}
}
}
if(t==100){
r=GetRand(50);
for(i=0;i<12;i++){
for(s=1;s<9;s++){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].knd =1;
boss_shot.bullet[k].col =4;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].flag =1;
boss_shot.bullet[k].angle =PI/180*r+PI2/12*i;
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =1.7;
boss_shot.bullet[k].state =s*10;
se_flag[0]=1;
}
}
}
}
for(i=0;i<BOSS_BULLET_MAX;i++){
if(boss_shot.bullet[i].flag>0){
if(t==120){
if(boss_shot.bullet[i].state<10){
boss_shot.bullet[i].spd=1.4;
boss_shot.bullet[i].angle=PI2/8*boss_shot.bullet[i].state;
}
}
}
}
for(i=0;i<BOSS_BULLET_MAX;i++){
if(boss_shot.bullet[i].flag>0){
if(t==180){
if(boss_shot.bullet[i].state>=10){
boss_shot.bullet[i].spd=0.6;
boss_shot.bullet[i].angle=PI2/8*boss_shot.bullet[i].state/10;
}
}
}
}
if(t>=200 && t<=280 && t%3==0){
for(s=-1;s<2;s+=2){
angle=bossatan2();//自機とボスとの成す角
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].knd =2;
boss_shot.bullet[k].col =1;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].flag =1;
boss_shot.bullet[k].angle =angle+PI2/2.7*s+PI/180*+(t-58)*s;
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =5.5;
se_flag[0]=1;
}
}
}
if(t==280) cnum++;
}

これは以前作っていた弾幕と組み合わせた形になりました。
感想などよろしくお願いします。


944ポイント を手に入れた。

Name: ひよこ  ..比類無きプログラマー(75,709ポイント)   Date: 2009/12/06(日) 12:45   No:43511     
Title: Re:弾幕のプチテストプレイ    
自分が改造すると、ほとんど違う弾幕に・・・手出しすぎですね。上の自分のアレンジ?を改造させたのと
−>for(s=-1;s<2;s+=2){ を変更して<5;s++などにしてアレンジ?(改造?)をしています。

上のソース
結構良くなりました。ただ、レーザが絶対に当たらないのは、私にはなんかいやなので、
自機にねらったほうがいいです。


151ポイント を手に入れた。

Name: チルチル  ..比類無きプログラマー(82,856ポイント)   Date: 2009/12/06(日) 13:00   No:43512     
Title: Re:弾幕のプチテストプレイ    
なかなか良くなったと思いますよ

まあレーザーが自機を避けるのは少し違和感がありますが
本家でも演出目的で弾を撃つ事は多いですし
体力減少 or 時間経過で真ん中の隙間が狭くなっていったらラスト弾幕っぽいですしね

ですが動きが無くて単調になりがちなので
レーザー撃つ時に自機狙いで遅めの大弾とかを出すとミスを誘えそうです


113ポイント を手に入れた。

Name: jay  ..初心者(6,856ポイント)   Date: 2009/12/06(日) 22:21   No:43544     
Title: Re:弾幕のプチテストプレイ    
自機狙いですか、こんな感じですか?
でも、難易度的に大丈夫でしょうか?
ラストだから少し難易度高めにするとはいえ仮にも1面ですから、少し不安・・・
void boss_shot_bulletH013(){
#define TM013 290
int r,i,s,k,t=boss_shot.cnt%TM013;
double angle;
static int cnum=0;
if(t==0){//1周期の最初なら
if(cnum%3==0){//3回に1回
//40<x<FMX-40、30<y<120の範囲を70の距離、60カウントで移動
move_boss_pos(40,30,FMX-40,120,70,60);
}
}
if(t==40){
r=GetRand(60);
for(i=0;i<12;i++){
for(s=0;s<8;s++){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].knd =1;
boss_shot.bullet[k].col =3;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].flag =1;
boss_shot.bullet[k].angle =PI/180*r+PI2/12*i;
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =1.3;
boss_shot.bullet[k].state =s;
se_flag[0]=1;
}
}
}
}
if(t==100){
r=GetRand(50);
for(i=0;i<12;i++){
for(s=1;s<9;s++){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].knd =1;
boss_shot.bullet[k].col =4;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].flag =1;
boss_shot.bullet[k].angle =PI/180*r+PI2/12*i;
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =1.7;
boss_shot.bullet[k].state =s*10;
se_flag[0]=1;
}
}
}
}
for(i=0;i<BOSS_BULLET_MAX;i++){
if(boss_shot.bullet[i].flag>0){
if(t==120){
if(boss_shot.bullet[i].state<10){
boss_shot.bullet[i].spd=1.4;
boss_shot.bullet[i].angle=PI2/8*boss_shot.bullet[i].state;
}
}
}
}
for(i=0;i<BOSS_BULLET_MAX;i++){
if(boss_shot.bullet[i].flag>0){
if(t==180){
if(boss_shot.bullet[i].state>=10){
boss_shot.bullet[i].spd=0.6;
boss_shot.bullet[i].angle=PI2/8*boss_shot.bullet[i].state/10;
}
}
}
}

if(t==140){
for(i=0;i<2;i++){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].knd =1;
boss_shot.bullet[k].col =0;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].flag =1;
boss_shot.bullet[k].angle =PI*i;
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =1.6;
boss_shot.bullet[k].state =-1;
se_flag[0]=1;
}
}
}
for(i=0;i<BOSS_BULLET_MAX;i++){
if(boss_shot.bullet[i].flag>0){
if(boss_shot.bullet[i].state==-1){
if(t==170){
boss_shot.bullet[i].state=0;
boss_shot.bullet[i].spd=2.2;
boss_shot.bullet[i].angle = angle
=bossatan4(boss_shot.bullet[i].x,boss_shot.bullet[i].y);
}
}
}
}

if(t>=200 && t<=280 && t%3==0){
angle=bossatan2();
for(s=-1;s<2;s+=2){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].knd =2;
boss_shot.bullet[k].col =1;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].flag =1;
boss_shot.bullet[k].angle =angle+PI2/2.7*s+PI/180*+(t-60)*s;
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =5.5;
se_flag[0]=1;
}
}
}
if(t==280) cnum++;
}
では、三度。感想、指摘、意見等よろしくお願いします。


1,522ポイント を手に入れた。

Name: チルチル  ..比類無きプログラマー(82,962ポイント)   Date: 2009/12/06(日) 22:37   No:43548     
Title: Re:弾幕のプチテストプレイ    
難易度的には問題無いですよ
むしろ自機狙いが加わると簡単になった気がします

ちなみに私のイメージとはちょっと違いますね
大弾は一番大きいb0でボスから1発自機に向かって一直線です
そうすると大弾は大きいのでその場から移動しなくてならないので単調にならなさそうです

とりあえず自機狙い弾が他の弾と同じなのはインパクトに欠けますね


106ポイント を手に入れた。

Name: jay  ..中級者(9,562ポイント)   Date: 2009/12/06(日) 23:32   No:43554     
Title: Re:弾幕のプチテストプレイ    
チルチルさん
>大弾は一番大きいb0でボスから1発自機に向かって一直線です
僕もはじめはそうしようとしたのですが、
そうすると動きが以前作った弾幕とかなり似てしまうのでこのような形にしました。
大弾はゲーム前半は一切出さずに
後半に突然出してプレーヤーにインパクトを与えようというたくらみがあるので・・・

>とりあえず自機狙い弾が他の弾と同じなのはインパクトに欠けますね
ナイフにします

void boss_shot_bulletH013(){
#define TM013 290
int r,i,s,k,t=boss_shot.cnt%TM013;
double angle;
static int cnum=0;
if(t==0){//1周期の最初なら
if(cnum%3==0){//3回に1回
//40<x<FMX-40、30<y<120の範囲を70の距離、60カウントで移動
move_boss_pos(40,30,FMX-40,120,70,60);
}
}
if(t==40){
r=GetRand(60);
for(i=0;i<12;i++){
for(s=0;s<8;s++){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].knd =1;
boss_shot.bullet[k].col =3;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].flag =1;
boss_shot.bullet[k].angle =PI/180*r+PI2/12*i;
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =1.3;
boss_shot.bullet[k].state =s;
se_flag[0]=1;
}
}
}
}
if(t==100){
r=GetRand(50);
for(i=0;i<12;i++){
for(s=1;s<9;s++){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].knd =1;
boss_shot.bullet[k].col =4;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].flag =1;
boss_shot.bullet[k].angle =PI/180*r+PI2/12*i;
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =1.7;
boss_shot.bullet[k].state =s*10;
se_flag[0]=1;
}
}
}
}
for(i=0;i<BOSS_BULLET_MAX;i++){
if(boss_shot.bullet[i].flag>0){
if(t==120){
if(boss_shot.bullet[i].state<10){
boss_shot.bullet[i].spd=1.4;
boss_shot.bullet[i].angle=PI2/8*boss_shot.bullet[i].state;
}
}
}
}
for(i=0;i<BOSS_BULLET_MAX;i++){
if(boss_shot.bullet[i].flag>0){
if(t==180){
if(boss_shot.bullet[i].state>=10){
boss_shot.bullet[i].spd=0.6;
boss_shot.bullet[i].angle=PI2/8*boss_shot.bullet[i].state/10;
}
}
}
}

if(t==130){
for(i=1;i<3;i++){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].knd =3;
boss_shot.bullet[k].col =0;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].flag =1;
boss_shot.bullet[k].angle =PI*i;
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =1.4+i*0.4;
boss_shot.bullet[k].state =-i;
se_flag[0]=1;
}
}
}
if(t==130){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].knd =3;
boss_shot.bullet[k].col =0;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].flag =1;
boss_shot.bullet[k].angle =bossatan2();
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =2.2;
boss_shot.bullet[k].state =0;
se_flag[0]=1;
}
}
for(i=0;i<BOSS_BULLET_MAX;i++){
if(boss_shot.bullet[i].flag>0){
if(boss_shot.bullet[i].state<0){
if(t==180){
boss_shot.bullet[i].spd=3.2+boss_shot.bullet[i].state*0.6;
boss_shot.bullet[i].angle = angle
=bossatan4(boss_shot.bullet[i].x,boss_shot.bullet[i].y);
boss_shot.bullet[i].state=0;
}
}
}
}

if(t>=200 && t<=280 && t%3==0){
angle=bossatan2();
for(s=-1;s<2;s+=2){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].knd =2;
boss_shot.bullet[k].col =1;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].flag =1;
boss_shot.bullet[k].angle =angle+PI2/2.7*s+PI/180*+(t-60)*s;
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =5.5;
se_flag[0]=1;
}
}
}
if(t==280) cnum++;
}
これで、どうでしょうか?
やはり自分的には難易度に少々不安が・・・


2倍のポイントを手に入れた! 2,706ポイント を手に入れた。

Name: チルチル  ..比類無きプログラマー(83,246ポイント)   Date: 2009/12/07(月) 00:44   No:43556     
Title: Re:弾幕のプチテストプレイ    
>後半に突然出してプレーヤーにインパクトを与えようというたくらみがあるので・・・

あ〜なるほどそこまで考えていたとは・・
何も考えずに弾幕作ってる私とは大違いですね

>これで、どうでしょうか?

何かナイフが突然向きを変えるのに違和感がありますね
自機に到達した時の時間差も不自然に見えます

これは悩み所ですが、試しに飛行中ネストみたいに
蝶弾が壁に当たると自機の方に加速しながら飛んで来るようにしてはどうでしょうか?

>やはり自分的には難易度に少々不安が・・・

では見た目の派手さを損なわないで簡単にする方法として
自機狙いの逆で自機を避けてはどうですか?

つまり丸弾を打つ時の基準角度をランダムではなくて自機の方向から少しずらします
そうすれば分裂弾とレーザーは止まっていても当たらないので
見た目は変わらないけど難易度はかなり下がります

あとは現状のナイフのような事をすれば避けようとして丸弾とかに自分から当たるミスを誘えます

ところで良く考えたら本家ではステージのラスト弾幕って
ボスが画面中心で動かない物が多いですよね
これは動きまくってますけど大丈夫ですか?


284ポイント を手に入れた。

Name: jay  ..中級者(10,116ポイント)   Date: 2009/12/07(月) 23:04   No:43600     
Title: Re:弾幕のプチテストプレイ    
>何かナイフが突然向きを変えるのに違和感がありますね
自機に到達した時の時間差も不自然に見えます
わざとずらしたんですけどね、3つ同時に行くと面白みないから
もう一工夫加えてみます。

>自機狙いの逆で自機を避けてはどうですか?
自機外し、その手がありましたか・・・

>ところで良く考えたら本家ではステージのラスト弾幕って
ボスが画面中心で動かない物が多いですよね

そうですかね?
ちょっとラスト弾幕の記憶力テスト開始します。

ルーミア ディマーケイション:動いてる
チルノ  ダイアモンドブリザード:動いてる
美鈴   極彩台風:中央静止
咲夜   操りドール:動いてる
レミリア スカーレットシュート:動いてる
フランドール 495の波紋:中央静止

アリス  魔彩光の上海人形:動いてる
プリズムリバー コンチェルトグロッソ:回ってる
幽々子  反魂蝶:動く以前の問題
藍    飯綱権現降臨:動いてる
紫    弾幕結界:動く以前の問題

慧音   高天原:静止
魔理沙  ファイナルスパーク:ゆっくり動く
霊夢   夢想封印「瞬」:素早く動く
妹紅   インペリシャブルシューティング:動く以前の問題
輝夜   蓬莱の弾の枝:画面上の方で静止

穣子   オオトシハーベスター:動く
文    山神渡御:中央静止
早苗   神の風:中央静止
神奈子  マウンテンオブフェイス:中央静止
諏訪子  ミシャグジさま:中央静止

全員は覚えてないけど、
そんなには動いてないかと、杞憂です。 多分
地霊殿と星蓮船は未プレイです。

>これは動きまくってますけど大丈夫ですか?
大丈夫です、みんな動いてるから。


554ポイント を手に入れた。

Name: チルチル  ..比類無きプログラマー(83,366ポイント)   Date: 2009/12/08(火) 00:37   No:43604     
Title: Re:弾幕のプチテストプレイ    
言われてみれば動いてるものも多いですね
地霊殿と星蓮船以前は記憶が曖昧でした・・
ちなみに確認すると地霊殿と星蓮船は9割方動かないです

それにしてもラスト弾幕をこれだけ覚えているとは
やはりやり込んでいるんですね


120ポイント を手に入れた。

Name: jay  ..中級者(10,174ポイント)   Date: 2009/12/08(火) 21:49   No:43665     
Title: Re:弾幕のプチテストプレイ    
>やはりやり込んでいるんですね
やり込まないとクリア出来ませんからね。

>ちなみに確認すると地霊殿と星蓮船は9割方動かないです
風神録もあまり動かない
最近のものほどあまり動かないようで・・・

とりあえず、あれから少しだけ難易度を下げる形でこの弾幕は一応完成とします
ご協力感謝します。


58ポイント を手に入れた。



Name: Ma [URL]  ..上級者(22,398ポイント)   Date: 2009/12/08(火) 10:07   No:43616       
Title: 雑誌への掲載依頼    
某雑誌のフリーゲーム紹介コーナーで、
私がリーダーとして協力者20人ほどで開発したゲーム(DXライブラリ使用)を紹介させていただきたい、
とのご厚意をいただいたのですが、メンバーとの正式な協力は終わり解散しました。

早速メンバーに掲載の承諾をとろうとおもっております。
ただ、メンバー(開発関与者全員)とは一応メールでの連絡はとれますが、
必ずしも全員が読むとは限りません。

どちらかといえば、途中で健康面の理由でやめた方などがいるため、
全員と連絡がとれる可能性のほうが低い気がします。
(背景を2枚ほど担当していただいた方。)

このような場合、掲載を断念せざるをえないでしょうか?

この件は掲載を依頼してきた会社様にも相談をしようと思いましたが、
メンバーへ送ったメールへの返信を待っている間
まずはこちらで皆様のご意見を聞いてみたいと思いました。

お礼としての謝礼金は発生しないようですが、雑誌をいただけるそうです。

それでは、詳しい方、よろしくお願いします。


347ポイント を手に入れた。


Name: 御津凪 [URL]  ..ハッカー(129,742ポイント)   Date: 2009/12/08(火) 14:37   No:43631     
Title: Re:雑誌への掲載依頼    
下記は私の自論です。全て正しいかどうかは分かりませんので予めご了承を。

通常、雑誌や何かに掲載されるということに関しては関係者全員の確認が必要不可欠です。

ただし、責任者が存在する場合でのプロジェクトの場合、掲載の承諾はその責任者にゆだねられることができます。

また、製作物の著作権がどこに存在するかにもよります。

著作権が製作プロジェクト上に存在する、つまり、製作関係者が作成した物が全て製作プロジェクトによる製作物となる場合で、
その製作関係者がそのこと(製作したものは全て製作プロジェクトに譲渡すること)について認知しているのであれば、製作プロジェクトの製作物として、上記に書いた責任者の下で認可を下すことができます。


…まあ、上記の堅苦しそうな説明はさておき、原則全員に確認を取ったほうが良いでしょう。


215ポイント を手に入れた。

Name: Ma  ..上級者(22,443ポイント)   Date: 2009/12/08(火) 15:36   No:43636     
Title: Re:雑誌への掲載依頼    
御津凪さんありがとうございます。

>また、製作物の著作権がどこに存在するかにもよります。
お借りした素材がいくつか含まれていますが(BGM/SE等)、著作権明記で使用/販売可能のものなので問題なさそうです。
(もちろん明記済み)
声や、絵の方もプロジェクトに譲渡の形で製作していただいたので、おおかたOKそうです。


ともかく、やはりメンバーの意を集めてみることにします。


45ポイント を手に入れた。



Name: mimi  ..ぴよぴよ(37ポイント)   Date: 2009/12/06(日) 00:00   No:43469       
Title: 解像度について    
DXライブラリは640×480の解像度ですよね
この解像度でゲームを作って最大化すると非常に荒くなります。
このための対策ってあるのでしょうか?


37ポイント を手に入れた。


Name: 不明  ..ぴよぴよ(70ポイント)   Date: 2009/12/06(日) 00:20   No:43470     
Title: Re:解像度について    
フルスクリーンで試したことがないのですが、
SetGraphMode関数での変更はどうでしょうか?

http://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_graph.html#R4N1

(640*480は便宜的なものだと思います)


70ポイント を手に入れた。

Name: mimi  ..ぴよぴよ(61ポイント)   Date: 2009/12/06(日) 15:09   No:43522     
Title: Re:解像度について    
フルスクリーンって
普通やらないんですか?
僕はやるんですが・・・・


24ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,096,997ポイント)   Date: 2009/12/06(日) 18:52   No:43534     
Title: Re:解像度について    
あ〜それは私も気になっていました。
何か線形補完みたいなことをして拡大してくれる方法って無いんですかね。
フルスクリーンにするとウィンドウで拡大した時よりは綺麗になるようですが。

気になるので本家掲示板で聞いてきます。少々お待ちを。

後、フルスクリーンは開発時以外なら結構使うんじゃないでしょうか?


108ポイント を手に入れた。

Name: Justy  ..伝説なるハッカー(473,310ポイント)   Date: 2009/12/06(日) 21:24   No:43540     
Title: Re:解像度について    
 不明さんの方法で 640x480でゲームを作らずに、もっと解像度を上げて
作ればいいのではないですか?

 きっちり作るなら対象のディスプレイの現在の解像度を調べるか、
使用可能な解像度をリストアップしてその解像度(或いは近い解像度)で
DXライブラリのウインドウを作りフルスクリーンにすればいいのではないでしょうか。
(ものによってはアスペクト比の調整機能が必要になるかもしれませんが)

 それで綺麗な解像度で遊べるはずです。


 640x480にこだわるのであればディスプレイの設定の中を見て、
その手の設定がないか調べてみるといいかもしれません。

 うちの NVIDIAだとコントロールパネルにスケーリングに関する設定があり、
スケーリングを綺麗にするオプションはありませんでしたが、
フルスクリーンで起動する際に、スケーリングが ONだと全画面で、
OFFだと中央に640x480の原寸で表示されます。

 原寸ならウインドウモードと変わらないので荒くはならないかと。


321ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,097,055ポイント)   Date: 2009/12/06(日) 21:50   No:43541     
Title: Re:解像度について    
しかし元の解像度を上げると途端に重くなりません?
しかも元の解像度を変えるとプログラム自体ごっそり変わりますし・・。


58ポイント を手に入れた。

Name: Justy  ..伝説なるハッカー(473,472ポイント)   Date: 2009/12/06(日) 22:12   No:43542     
Title: Re:解像度について    
 プログラムの方はどうとでもなりますが、描画負荷の方は環境に依って
たしかに厳しいかもしれません……。

 うーん、ユーザーの環境に合わせて 640x480、800x600、1024x768と何段階かに
選択できるようにするくらしか思いつかないですね。



 あ、フルスクリーン時の荒さですけど、描画全体にバイリニアをかけて表示すれば、
少しは緩和されるかもしれません。


162ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,097,194ポイント)   Date: 2009/12/06(日) 22:29   No:43547     
Title: Re:解像度について    
DXライブラリ本家の方で聞いていますので情報共有の為にリンク貼ります。
http://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=view&no=1506

描画全体にSetDrawMode( DX_DRAWMODE_BILINEAR )かけてみたのですが、



う〜ん、、、。という感じです・・。
画像は640x480の解像度のウィンドウを縦1200まで広げたものです。


139ポイント を手に入れた。

Name: Justy  ..伝説なるハッカー(473,491ポイント)   Date: 2009/12/06(日) 22:53   No:43551     
Title: Re:解像度について    
広げたということは、これウインドウモードですか?

19ポイント を手に入れた。

Name: Justy  ..伝説なるハッカー(473,541ポイント)   Date: 2009/12/06(日) 23:38   No:43555     
Title: Re:解像度について    
 あ、Aerobeat+はフルスクリーンモードはなかったんでしたっけ。

 最新版の Aerobeat+で 縦1200まで伸ばしてみました。
 ロゴの光の部分はマスクデータの問題なので置いておくとして、
それ以外の部分は多少気にはなりますが、適度にぼけた感じで
それほど荒くはありませんでした。

 GPU/モニタの違いでしょうか。


50ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,096,999ポイント)   Date: 2009/12/07(月) 07:25   No:43564     
Title: Re:解像度について    
はい、ウィンドウモードです。
フルスクリーンモードにすると、何故か音楽と同期する関数がうまく働かず、
音楽がプレイしているうちに段々ずれていくという原因不明のバグがあり、
フルスクリーンの仕様は泣く泣くはずしました・・。
いったい何が悪いのやら。
まぁそこは私の設計が悪いのだという事は想像できますが、
今回の荒くなる件はよく解らないですね〜;
仰る通り、Justyさんの画面だと奇麗に補間されてますね。
グラフィックドライバが悪いのでしょうか・・。
windows7を使っているので、まだしっかり対応できていないのかも・・。
帰ったらドライバの更新してみます。


195ポイント を落としてしまった。

Name: Dixq (管理人) [URL]  ..ウィザード(1,097,016ポイント)   Date: 2009/12/07(月) 07:43   No:43565     
Title: Re:解像度について    
最新にしてみたのですが、やはり変わらないようです;

17ポイント を手に入れた。

Name: Justy  ..伝説なるハッカー(474,862ポイント)   Date: 2009/12/08(火) 01:40   No:43607     
Title: Re:解像度について    

> フルスクリーンの仕様は泣く泣くはずしました・

 なるほど、そういう経緯でしたか。



> グラフィックドライバが悪いのでしょうか・

 古いノートPCとか、いろいろ設定をいじって試してみたのですが、
そういう荒さを再現することはできませんでした。

 なんか環境に起因するものっぽいですね。


15ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,097,554ポイント)   Date: 2009/12/08(火) 08:34   No:43614     
Title: Re:解像度について    
わざわざ試していただいてありがとうございます^^;

> 環境依存

そうですか〜・・、まぁ私のPC以外できれいに表示されているんならいいのですが^^;
でも気になるので管理人さんが回答してくれるのを待ちます。


57ポイント を手に入れた。



Name: array [URL]  ..熟練のプログラマー(60,810ポイント)   Date: 2009/12/05(土) 01:59   No:43398       
Title: 【雑談】FLASHが凄い件について    
なんか凄いインパクトのある規約へのリンクですねw

とりあえず、コードはpreで囲んでくれってのがひしひしと伝わってきました

突っ込みどころがいくつかありますが、こういう冗談めいたものをみると和みますねw
良いFLASHだと思います。


ところで、FLASHは手を出せずにいるのですが
簡単に作れる有名なツールはあるのでしょうか。

昔、FLASH MXだとかいう名前のソフトがあると聞いた事があるのですが店で売ってるのを
見た事がない・・・


124ポイント を手に入れた。


Name: Dixq (管理人) [URL]  ..ウィザード(1,095,498ポイント)   Date: 2009/12/05(土) 02:19   No:43399     
Title: Re:【雑談】FLASHが凄い件について    
普段規約なんて目にも止めない人の目を止めるにはどうしたら・・と
散々試行錯誤した結果こんなななめ方向に行きましたw

「FLASHは広告に見える」と言われたので、
どうにか広告っぽくないFLASHを目指したつもりですw

---------------------------------------------------------

FLASHを手軽にということならparaflaはどうでしょう?
http://www.geocities.jp/coa9999/
実はこのFLASHはparaflaで作ってます。
今はもっといいツールがあるのかも知れませんが、私は昔からこれ使ってます。

このツール気に入ってたんですが、最近めっきり更新がないですし、
文字化けなどの修正もされてないんですよねぇ・・。
もっと管理してたら神ツールなのに・・。

若干くせがあって操作が独特なので慣れるのに時間かかるかもしれませんが、
サンプルが結構沢山あるので、最初はサンプルから少しずつ変える形で作ると解りやすいです。


225ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,095,649ポイント)   Date: 2009/12/05(土) 02:29   No:43400     
Title: Re:【雑談】FLASHが凄い件について    
AerobeatPlusの上のFLASHもこれで作りました。
プロジェクト一式ここにあげとくのでよければご覧ください^^
画面消さずに上のレイヤーへ上のレイヤーへ書いてるので真似はしない方がいいです^^;

http://dixq.net/flash/FLASH2.zip

フォルダ内の「AerobeatPlushFlash.pfl」がエアロビートの、「Kiyaku.pfl」が上のやつです。
paraflaをダウンロードしたらProgram Filesフォルダにでも入れてやり、
.pflファイルをこのparaflaの実行ファイルに関連付けておけば開きやすいです。


151ポイント を手に入れた。

Name: array [URL]  ..熟練のプログラマー(60,907ポイント)   Date: 2009/12/05(土) 02:52   No:43403     
Title: Re:【雑談】FLASHが凄い件について    
paraflaでここまで作ってしまうんですか流石ですねー

.pflファイルDLさせてもらいました。
まさか実際のデータを見せてもらえるとは思っていませんでしたよ
FLASHの中身なんてはじめてみるのでかなりwktkしながら
実行してみましたが、感動ものですねw

私も参考にして何か作ってみたいですけど、作る機会がないですorz


97ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,095,809ポイント)   Date: 2009/12/05(土) 02:58   No:43404     
Title: Re:【雑談】FLASHが凄い件について    
>paraflaでここまで作ってしまうんですか流石ですねー

あ、もしかして既にご存じでした?
これ文字化けとかなんとかならないんですかねぇ・・。
しかし、このツールよく出来ていて、割とやりたい事は何でも出来そうです。
エフェクト関連もフリーの割にしっかりしてますし。

>作る機会がないですorz

そこまで仰るのでてっきり何か作りたいものがあるのかと思いましたが^^;

でもHPをおもちなんですから、使う機会はどこにでもあるのでは?
講習所のロゴをFLASHで表示してみてはどうでしょうw



160ポイント を手に入れた。

Name: array [URL]  ..熟練のプログラマー(60,928ポイント)   Date: 2009/12/05(土) 03:11   No:43405     
Title: Re:【雑談】FLASHが凄い件について    
paraflaは以前にも、掲示板で話題に上がってましたよね。
その時DLしてちょっとだけ触った事があります・・・ちょっとだけ

HTMLだけだと、どうしても静的なページになってしまいますよね。
しかし、FLASHを使っているホームページって華やかで羨ましいです。

> そこまで仰るのでてっきり何か作りたいものがあるのかと思いましたが^^;

実際はロゴをFLASHで作りたいです・・・しかしQさんと違ってセンスがないので・・・orz
(こっそり作ってみて、ある程度納得できれば公開してみるかもですw)


21ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,095,954ポイント)   Date: 2009/12/05(土) 03:28   No:43407     
Title: Re:【雑談】FLASHが凄い件について    
> paraflaは以前にも、掲示板で話題に上がってましたよね。

あれ、そうだったんですか、最近ご無沙汰しててすみません;

某サイトで「最近C言語何でも質問掲示板の管理人いないよね」というコメを昨日見たので、
これはいかんと思って慌て(?)ました^^;
HPの管理ちゃんとやっていかねば。

> 実際はロゴをFLASHで作りたいです・・・しかしQさんと違ってセンスがないので・・・orz

私の基本スタイルは全てパクリだという事をお忘れなく(笑
まぁ今回の演出も某ゲームですしw
でも問題にならない程度に既存の良いものを参考にするのはありだと思うので、
いきなり作れなければ何か参考にしてみては^^(と何気に自己フォロー


145ポイント を手に入れた。

Name: array [URL]  ..熟練のプログラマー(60,982ポイント)   Date: 2009/12/05(土) 03:47   No:43410     
Title: Re:【雑談】FLASHが凄い件について    
> 某サイトで「最近C言語何でも質問掲示板の管理人いないよね」というコメを昨日見たので

なにを・・・・掲示板の(メイン)URLも変ったし、NEWも変わってるし裏で頑張ってるじゃないですか!
偉い人にはそれがわからんのですよ


> でも問題にならない程度に既存の良いものを参考にするのは良いことだと思いますよ^^(自己フォロー

でも、似すぎてて叩かれるんですね。流石です。羨ましいです。


54ポイント を手に入れた。

Name: 通りすがり  ..上級者(18,219ポイント)   Date: 2009/12/05(土) 05:15   No:43411     
Title: Re:【雑談】FLASHが凄い件について    
簡単タグ入力で選択した範囲を
<pre></pre>で自動的に囲むようには出来ないのでしょうか?
たまにここの掲示板を利用させてもらい、
そのとき<pre>という文字列を忘れることがちょくちょくあるのですが、
そのたびにいちいち規約を開くのが面倒だったりします。個人的に


93ポイント を手に入れた。

Name: toyo  ..熟練のプログラマー(45,769ポイント)   Date: 2009/12/05(土) 07:33   No:43413     
Title: Re:【雑談】FLASHが凄い件について    
私はサイトの上で動くFlashは自動的に無視する体質になっているようです
まったく気づかずに無視してました
横は結構目に入ることもありますが上はすぐスクロールするのでまったく見ませんね
自分の場合はwebプログラム(PHP + MySQL)からプログラミングに入ったのでCでこれだけできるのになぜ掲示板ごときも自作しないのかなと思ってました。
全コメントに自動で<pre>挿入や過去ログ検索もデータベースつかえば簡単にできるし自分の思い通りに作れますよ
PHPなら関数もCに似てますし文字列操作も得意ですしHTMLがわかれば簡単です


209ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(132,468ポイント)   Date: 2009/12/05(土) 10:02   No:43416     
Title: Re:【雑談】FLASHが凄い件について    
> 自分の場合はwebプログラム(PHP + MySQL)からプログラミングに入ったのでCでこれだけできるのになぜ掲示板ごときも自作しないのかなと思ってました。

機能的なことは問題なくても、セキュリティ面に不安があるのだと思いますよ。
クロスサイトスクリプティング、SQLインジェクション...など、どこまで対応すればよいのか見極められないと、なかなか自作には踏み切れないものです。

> PHPなら関数もCに似てますし文字列操作も得意ですしHTMLがわかれば簡単です

これはそうですね。
文字列操作に限れば、PHPよりむしろC++の方が強力(特にC++0x)だったりしますが...


107ポイント を手に入れた。

Name: ねこ  ..熟練のプログラマー(48,812ポイント)   Date: 2009/12/05(土) 11:42   No:43421     
Title: Re:【雑談】FLASHが凄い件について    
>arrayさん
FLASH MXは数代前のAdobe社が出しているFLASH開発ツールです。現在の最新版はFLASH CS4ってのが出てます。
高いです。興味本位では手が出せません。
ただそれなりに数は出てるみたいなので検索等で情報が拾いやすいのは他ツールにはない大きな利点だと思います。

<FLASH
会社から見るとフィルタリングかかっちゃいますねぇ。
フィルタリングかかってるようなとこから見る人はちゃんと規約くらい見るとは思いますが・・・

<規約
仕事柄GUI等ユーザー視点は結構意識するのですが、
規約を読まない人=HELPもツールチップもステータスバーも読まないユーザーって置き換えると
目立つようにしたところで自分の操作する狭い範囲しか注意がいかないと思います。

例えば「質問をしたい」というユーザーは「新規投稿」を探し、それ以外には目がいきません。
新規投稿画面では「入力部分」しか目がいかないというような。
慣れればその視野が広くなるので色々気づきます。スポーツやってる時の視野に似た感覚ですね。

何とかして「注意をそらす」となると他の方が述べられているようにCGIの改造レベルが必要になるのでしょう。
個人的には新規投稿キーとか設定するだけでも十分規約へ目はいかせられると思いますがレンタルなので難しいのですよね。
FLASHの中に新規投稿リンクを作るとかも思いつきましたが敬遠されるBBSになりそうです(汗


211ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(132,517ポイント)   Date: 2009/12/05(土) 11:52   No:43422     
Title: Re:【雑談】FLASHが凄い件について    
> 例えば「質問をしたい」というユーザーは「新規投稿」を探し、それ以外には目がいきません。

そうなんですよね。
素材サイトなどは、それがわかっているから、ダウンロードのしかたが非常にわかりにくくなっています。
ただ、それがよいかというと、決してそんなことはないわけですから難しいところです。


49ポイント を手に入れた。

Name: たいちう  ..プログラマー(37,657ポイント)   Date: 2009/12/05(土) 21:05   No:43459     
Title: Re:【雑談】FLASHが凄い件について    
私は今回も気付きませんでした。
タイトル一覧でこのスレを見つけてからスクロールして見ました。
見ない人は全く見ないんだな、と他人事のように思いました。

こういう人はスルーするしかないですね、もう。


73ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(133,143ポイント)   Date: 2009/12/05(土) 21:08   No:43460     
Title: Re:【雑談】FLASHが凄い件について    
やはり、レスで

こうするしかないですかね。


87ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,096,330ポイント)   Date: 2009/12/05(土) 21:50   No:43461     
Title: Re:【雑談】FLASHが凄い件について    
>>arrayさん

細かいところに気づいていただきありがとうございます^^
エフェクトうんぬんよりゲームシステム自体パクリぱっかりですよほんと^^;

>>通りすがりさん

この掲示板は私の自作ではないので、そういう改造が出来ないのです。すみません。
ん〜、これは本腰いれて勉強するしかないか・・。

>>toyoさん

知識が無い事が第一要因であることは当然なのですが、
たかぎさんの仰るようにセキュリティ関連を懸念しているんですよね。
攻撃したりデータを消したりする方法って少し調べた位じゃ全然対策出来ない気がするんです。
まぁその辺も勉強すれば対応できるのかもしれませんが、なかなか踏み切れてません^^;

>>ねこさん

そうですね〜、結局は自作が一番ってことになるんでしょうねぇ。
有料掲示板はお金もかかるし^^;
人の3倍もお金はらって掲示板借りてるのは自分でもどうかと思いますw

>>たいちうさん

そういう体質になっている人にはFLASHで太刀打ちするのは無理そうですねw

>>たかぎさん

掲示板の上にあると全く気付かなくても
レスにFLASHがあるとこうも目立つのは何故でしょう^^;
まぁ普段あるはずがないところにあるとそうなるんでしょうねw
回答テンプレ用FLASHでも作りますか^^;


376ポイント を手に入れた。

Name: array [URL]  ..熟練のプログラマー(61,258ポイント)   Date: 2009/12/06(日) 01:35   No:43472     
Title: Re:【雑談】FLASHが凄い件について    
> ねこさん

Adobe社の製品は高くて興味本位で手が出せないので困ってます。
他の製品でも前々から欲しいと思っているPhotoshopがありますが、これも高い・・・


> たかぎさん

レスにフラッシュは良い案ですねw
質問者さんも、回答を期待して見る場所ですから絶対に目に入ると思います。


-
↓qさんが確認したみたいなので削除しました。


276ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,096,579ポイント)   Date: 2009/12/06(日) 01:48   No:43473     
Title: Re:【雑談】FLASHが凄い件について    
>>arrayさん

私もcgiとか埋め込んだりFLASH使えたり出来るとは思っていませんでした。
しかし必要なタグ以外つかない仕様なので、解ってて許可している気がします。

・・・が、万一これが使えなくなると相当不便になるので、
ここだけの話にw


87ポイント を手に入れた。

Name: kazuoni [URL]  ..ハッカー(116,562ポイント)   Date: 2009/12/06(日) 03:41   No:43478     
Title: Re:【雑談】FLASHが凄い件について    
高校生、大学生が学校のパソコンから質問する場合には、
見えていない場合があるかと思いますね。
実際、自分の学校は「最新のFLASH〜〜〜」と出てた気がします。
規約を読まない人に「学生」という人は結構多い気がします・・・。

# >Photoshopがありますが、これも高い・・・
学生だから買っておこうかなぁ・・・w


Name: array [URL]  ..熟練のプログラマー(61,057ポイント)   Date: 2009/12/06(日) 05:19   No:43481     
Title: Re:【雑談】FLASHが凄い件について    
kazuoniさんがいじめる・・・w

自分も学生の時に買っておけば良かった・・・。kazuoniさんと同じ歳なはずなのに・・・不公平だorz

amazon情報
通常 学割
Photoshop 8 \11,340 → \6,301
Photoshop CS4 \83,160 → \31,795

通常版を買う気にならないんですが・・・。
そもそも、種類が色々あって、何が目的にあっているのかが分からなくて買えないですよ。


ちょっと気になったんですけど、amazonで買えば学割も買えるんじゃ・・・どうやって証明するんだろう。
店舗で買う場合は、学生書見せれば買えたと思いますけど。


201ポイント を落としてしまった。

Name: たかぎ [URL]  ..ハッカー(133,359ポイント)   Date: 2009/12/06(日) 09:16   No:43488     
Title: Re:【雑談】FLASHが凄い件について    
Adobeの製品は、どこの学校のどこの学科の誰なのかを専用の書類に記入して提出する必要があります。
私も教員の資格でアカデミック版を購入することは可能ですが、仕事で使うのはかなり制約されるので、迷うことも多いですね。
抱き合せ版を買うのであれば、いっそのことデジハリあたりでソフト付きの通信講座を受講したほうがよかったりもします。


143ポイント を落としてしまった。

Name: たかぎ [URL]  ..ハッカー(133,416ポイント)   Date: 2009/12/06(日) 09:36   No:43489     
Title: Re:【雑談】FLASHが凄い件について    
> 高校生、大学生が学校のパソコンから質問する場合には、
> 見えていない場合があるかと思いますね。
> 実際、自分の学校は「最新のFLASH〜〜〜」と出てた気がします。

私のところは見えていたような気もしますが...
誰にでも見えるようにするには、アニメーションGIFとかの方がよいかもしれませんね。


57ポイント を手に入れた。

Name: ねこ  ..熟練のプログラマー(49,245ポイント)   Date: 2009/12/06(日) 14:43   No:43518     
Title: Re:【雑談】FLASHが凄い件について    
Adobe社製品だけで10万くらいは投資してる気がするねこです。
FLASH 8, FLASH CS3(Upd), FLASH CS4(Upd), PS8
一番使うツールはVC2008なのになぁ・・・とか思います。

ちなみに学割はその製品だけ買って以後買わないならお得ですが、
新しいバージョンに変える場合に実は大差無くなります。
一度は通常ライセンス版を買わないといけないので
学割→通常→UPD
通常→UPD→UPD
の流れでUPD版は学割と同じくらいの値段なので総投資は大体同じになります。

#AEとPSE欲しいので今度CSのPRODUCTION買おうとしています。16万くらいしますorz

>たかぎさん
全てのFLASHもかは分かりませんが、自社と他三社くらいで見たところ
1.完全に見えないところ
2.ボタンを押して有効にして下さいって出るところ
3.普通に見えるところ
とありました。同セキュリティソフトでも見え方違ったのでそのあたりはソフトの設定でしょうね。
見える場合が多いのと、視覚的効果が高いのでFLASHが最善だと思います。


404ポイント を手に入れた。

Name: array [URL]  ..熟練のプログラマー(60,937ポイント)   Date: 2009/12/06(日) 15:51   No:43525     
Title: Re:【雑談】FLASHが凄い件について    
> たかぎさん
> Adobeの製品は、どこの学校のどこの学科の誰なのかを専用の書類に記入して提出する必要があります。

情報ありがとうございます。

> ねこさん

ちょっと聞いてみたい事が・・・FLASHを作成するにあたりフリーを使った事があるか分かりませんが
Adobe社製品とFLASHのフリーソフトを比べた時、Adobe社製品が優れている点はやっぱりあるのでしょうか


120ポイント を落としてしまった。

Name: ねこ  ..熟練のプログラマー(49,605ポイント)   Date: 2009/12/06(日) 20:37   No:43536     
Title: Re:【雑談】FLASHが凄い件について    
>arrayさん
paraFlaをちょっと触っただけ&随分昔なので今は勝手が違うかもしれませんが。
一概にFLASHと言ってもスクリプト・アニメーション・アニメーション+スクリプトと3択くらいになります。
単純なアニメーションであればparaFlaでもそこまで差はないと思います。

しかし最新版のCS4では3D変形・編集を簡単に扱える機能や3Dのボーンのような機能を実装していますので
作る種類によってはCS4がかなり優位になります。

スクリプトが絡むとparaFlaではどうしようもないと思います。
他のAdobe製品をお持ちだったらなんとなく分かるかもしれませんが、
多岐に渡って色々できるのがAdobe製品の特徴ですので高度な事をしようとする程フリーとの差は大きいです。

BCCとVC2008くらいのやりやすさの差と情報量の差はあるんではないかと。
こんな感じで回答になっているでしょうか。


360ポイント を手に入れた。

Name: array [URL]  ..熟練のプログラマー(60,951ポイント)   Date: 2009/12/08(火) 06:21   No:43611     
Title: Re:【雑談】FLASHが凄い件について    
> ねこさん
> 一概にFLASHと言ってもスクリプト・アニメーション・アニメーション+スクリプトと3択くらいになります。
> 多岐に渡って色々できるのがAdobe製品の特徴ですので高度な事をしようとする程フリーとの差は大きいです。

返信遅くなって申し訳ないです^^;
とても分かりやすいです。やっぱりAdobe製品を買ってみる価値がありそうですね。金に余裕が出来たら欲しいです(>_<)


14ポイント を手に入れた。



Name: rrr  ..ぴよぴよ(8ポイント)   Date: 2009/12/07(月) 12:06   No:43574       
Title: CheckHitKey関数の制御    
CheckHitKey(KEY_INPUT_RETURN)==1) a=a+1;

として場合一回のエンターキーで以上にaの値が増えてしまします。
一回のエンターキーでaを1だけふやすことは可能でしょうか?
お願いします。Dxライブラリです。


8ポイント を手に入れた。


Name: 通り  ..かけだし(1,140ポイント)   Date: 2009/12/07(月) 12:18   No:43575     
Title: Re:CheckHitKey関数の制御    
誤字が、沢山、文章も変。よく確認してから投稿しましょう。

で、入力関連はゲームプログラミングの館に書いてあります。


9ポイント を手に入れた。

Name: rrr  ..ぴよぴよ(87ポイント)   Date: 2009/12/07(月) 12:23   No:43576     
Title: Re:CheckHitKey関数の制御    
すいませんではもう一度

CheckHitKey(KEY_INPUT_RETURN)==1) a=a+1;

実行文が上のようである時、一回のエンターキーで異常にaの値が増えてしまいます。
一回のエンターキーでaを1だけふやすことは可能でしょうか?
お願いします。Dxライブラリです。


79ポイント を手に入れた。

Name: YuO  ..熟練のプログラマー(40,651ポイント)   Date: 2009/12/07(月) 12:30   No:43577     
Title: Re:CheckHitKey関数の制御    
CheckHitKeyは「押した」ことを調べる関数ではないです。
「押されている」ことを調べる関数です。

十分に長い時間が空いているならばともかく,例えば1 Frameごとに調べたのであれば,
人間が「1回押した」と思っていても,コンピューターは複数回検知します。


「現在の状態」を保持しておいて,それが押下方向へ変化した場合のみ反応するようにすれば,
やりたいことができるかと思います。


176ポイント を手に入れた。

Name: rrr  ..ぴよぴよ(114ポイント)   Date: 2009/12/07(月) 12:33   No:43578     
Title: Re:CheckHitKey関数の制御    
すいません。本当わからないで
例でいいので教えてくれると助かります。
こんな場合があるよ?とか・・・・


27ポイント を手に入れた。

Name: 通り  ..かけだし(1,157ポイント)   Date: 2009/12/07(月) 12:39   No:43579     
Title: Re:CheckHitKey関数の制御    
さっきのコメントは後ろの方が大事だったのにスルーされてる‥。

17ポイント を手に入れた。

Name: kazuoni [URL]  ..ハッカー(117,237ポイント)   Date: 2009/12/07(月) 13:49   No:43582     
Title: Re:CheckHitKey関数の制御    
>通りさん
あまり文章の事は突っ込まない方がいいかと思います。。
実際、大学でも、多くの留学生がいるのも現状ですので、
日本語能力に全員長けているとは言い切れないと思いますから^^;
(あくまで個人的な意見ですが。。)


>例でいいので教えてくれると助かります。
Yuoさんのおっしゃっていること以上うまく説明できる気がしないですが・・・
今我々が使っているパソコンはいろいろな処理がものすごい高速で、
例えば、管理人さんの作成された四聖龍神録はFPS=60で管理されています。
これはメインループを一秒間に60ループさせています。
FPSを管理していないならば、それ以上に高速になるかもしれません。
その中で、人間がキーを一回押してから離すのは早くても0.1秒はかかると思います。
(ストップウォッチを高速でstart,stopしても記録は良くて0.1秒とかですよね)
パソコンは少なくとも0.1秒間は「入力があり」の状態になるわけです。(Key[KEY_INPUT_RETURN]==1)
60*0.1=6なので、aは少なくとも6回分1が足されるわけです。

#ちなみに、管理人さんの作成された関数GetHitKeyStateAll_2はどれ位押し続けられたかを判定してくれます。


314ポイント を手に入れた。

Name: tk  ..ぴよぴよ(509ポイント)   Date: 2009/12/07(月) 15:42   No:43587     
Title: Re:CheckHitKey関数の制御    
単純に例を書いてみました。
GetHitKeyStateAll_2は使っていません。

なるべく初心者の方でもわかるように、最低限のC言語の知識だけで
分かりやすいように書いたつもりです。

SetDrawScreenとかは好き好んで使っているだけなので、無視してもいいです。



int a = 0;
BOOL Zenkai = FALSE; // 前回のキー押下状態
BOOL Konkai = FALSE; // 今回のキー押下状態

ChangeWindowMode(TRUE); // ウィンドウモード

if( DxLib_Init() == -1 ){ // エラー発生時
return -1; // 終了させる
}

SetDrawScreen( DX_SCREEN_BACK ); // 描写を裏画面に

while( TRUE ){
if( CheckHitKey( KEY_INPUT_RETURN ) == 1 ){ // エンターが押されていたら
Konkai = TRUE; // 今回の状態を押下状態に
}

if( Konkai == TRUE && Zenkai != Konkai ){ // エンターキーが押下状態 かつ
// 押下状態ではない → 押下状態 への変化のみ
a++; // aを+1する
printfDx( "現在の a の値は %d です。\n", a );
// 文字出力
ScreenFlip(); // 裏画面を表に描写
}

Zenkai = Konkai; // 今回の押下状態を前回に設定
Konkai = FALSE; // 今回の押下状態をクリア

if( CheckHitKey( KEY_INPUT_ESCAPE ) == 1 ){ // ESCキー押下時
break; // ループを抜け終了させる
}
}

DxLib_End(); // DXライブラリ終了処理

return 0;




要は、Enterが押された瞬間にaを+1して、
Enterが持続的に押されている間はaは触らないということなので、
前回のキー押下状態を保持し、次にキー判定するときに
前回と今回のキー押下状態をみて条件をつければいいだけではないでしょうか。


509ポイント を手に入れた。



Name: サバ  ..ぴよぴよ(27ポイント)   Date: 2009/12/07(月) 13:49   No:43581       
Title: いきなり最初で    
ゲームプログラミングの館の「0. (導入)DXライブラリを手に入れる。(全てはココから)」で、
ファイル(DxLib_VC) → サンプルプログラム実行用フォルダ → DxLib_VC2008_and_2005用.sln
となってますが、「DxLib_VC2008_and_2005用.sln」という名前ではなく、
「DxLib_VC2008用.sln」と「DxLib_VC2005用.sln」というのが一つずつ単独で表示されています。

どっちを使ったらいいのでしょうか


27ポイント を手に入れた。


Name: 御津凪 [URL]  ..ハッカー(128,343ポイント)   Date: 2009/12/07(月) 13:59   No:43583     
Title: Re:いきなり最初で    
自分の環境に Visual Studio はインストールされていますか?

DXライブラリ では Visual Studio 2008 と Visual Studio 2005 に対応しているのでそれぞれのファイルに分かれています。
(DXライブラリのバージョンによっては一緒のファイルだったりそうでなかったりするようです)

で、そちらの環境でインストールされている Visual Studio のバージョンが 2005 なら「DxLib_VC2005用.sln」を、
2008 なら「DxLib_VC2008用.sln」を使用してください。


165ポイント を手に入れた。

Name: サバ  ..ぴよぴよ(161ポイント)   Date: 2009/12/07(月) 14:18   No:43584 解決!     
Title: Re:いきなり最初で    
返信ありがとうございます。

一応2005も2008もインストールしています。
現在2005で3章まで進めさせて頂いてまずが、順調です。
2008の方は使わなくていいんですよね。
でしたらこのまま進めて行こうと思います。


2倍のポイントを手に入れた! 134ポイント を手に入れた。



Name: 初心者  ..熟練のプログラマー(41,589ポイント)   Date: 2009/12/05(土) 06:14   No:43412       
Title: ウインドウのアイコン    
こんにちは。前にアイコンについて教えてもらった人です。
今後はウインドウのアイコンを変更しようとして
http://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_other.html#R11N2
こちらを参考にしてみたのですが
resource.hというヘッダファイルが勝手に作成されるようなのですが、全く見当たらなくて困ってます。
これはどこに生成されてるのでしょうか?


2倍のポイントを手に入れた! 212ポイント を手に入れた。


Name: Mist  ..比類無きプログラマー(76,554ポイント)   Date: 2009/12/05(土) 08:14   No:43414     
Title: Re:ウインドウのアイコン    
開発環境を書きましょう。
VC++2008EEや2005EEのような無料版はリソースエディタが付いていないので自分で作るしかありません。
ResEditのようなフリーリソースエディタを使ってもいいですが、アイコンだけだとちょっと大げさかも。


2倍のポイントを手に入れた! 110ポイント を手に入れた。

Name: 初心者  ..熟練のプログラマー(41,614ポイント)   Date: 2009/12/05(土) 09:13   No:43415     
Title: Re:ウインドウのアイコン    
VC++2008です。自分で自作というと、
何を作成するのでしょうか?


25ポイント を手に入れた。

Name: TKOZ  ..熟練のプログラマー(42,853ポイント)   Date: 2009/12/05(土) 11:38   No:43420     
Title: Re:ウインドウのアイコン    
アイコンファイルは、Edgeというフリーソフトでも作る事が出来ます。
32×32のサイズの画像を作成して、*.icoというファイル形式で保存してください。


63ポイント を手に入れた。

Name: 初心者  ..熟練のプログラマー(41,518ポイント)   Date: 2009/12/05(土) 13:16   No:43430     
Title: Re:ウインドウのアイコン    
アイコンファイルの作成につきましては
上記URL
http://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_other.html#R11N2
で解決してます。

ResEditについてですが、
無事DLし、解凍したのですが、
resource.hというヘッダファイルを作成の仕方がわかりません。
どうしたら良いのでしょうか?


96ポイント を落としてしまった。

Name: 初心者  ..熟練のプログラマー(41,681ポイント)   Date: 2009/12/05(土) 13:58   No:43435     
Title: Re:ウインドウのアイコン    
resource.hは一体どこに生成されるのでしょう?

9ポイント を手に入れた。

Name: ひよこ  ..比類無きプログラマー(75,558ポイント)   Date: 2009/12/06(日) 07:11   No:43485     
Title: Re:ウインドウのアイコン    
resource.hは自分で作ります。
メモ帳で(拡張子 すべてのファイル)で作るなどでできると思います。


30ポイント を手に入れた。

Name: 初心者  ..熟練のプログラマー(41,805ポイント)   Date: 2009/12/06(日) 22:20   No:43543     
Title: Re:ウインドウのアイコン    
自分で作成するんですか?
作成しても
#define IDI_ICON1
みたいな文字列は存在せずに空白のままなのですが・・


29ポイント を手に入れた。

Name: MNS  ..上級者(23,239ポイント)   Date: 2009/12/06(日) 22:23   No:43545     
Title: Re:ウインドウのアイコン    
http://homepage2.nifty.com/natupaji/DxLib/dxtec.html#M2
こちらのページの方をご覧になったほうが良いと思います。


40ポイント を手に入れた。

Name: 初心者  ..熟練のプログラマー(41,856ポイント)   Date: 2009/12/06(日) 22:25   No:43546     
Title: Re:ウインドウのアイコン    
>MNSさん
その操作はもうしました。
http://www.play21.jp/board/formz.cgi?action=res&resno=42263&page=&lognum=130&id=dixq&rln=42286
その後の
http://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_other.html#R11N2
の操作ができなくて困ってます


51ポイント を手に入れた。

Name: MNS  ..上級者(23,417ポイント)   Date: 2009/12/06(日) 22:49   No:43550     
Title: Re:ウインドウのアイコン    
ああ、すいません。勘違いをしていました。
そうなると、ひよこさんの言うとおり、resource.hは自分で作る必要がありそうです。
もちろん、#define IDI_ICON1などのことは書かれてないはずなので、
これも自分で勝手に書く必要があります。
#define IDI_ICON1 101
と書いて、保存し、あとは指示通りの操作を行えば大丈夫だと思います。
この数字は(0〜79)以外であれば大丈夫みたいです。もちろん、101でも良いと思います。

※追記
どうやらVC++2008では、どうやらIDI_ICON1といった書式は古いらしく
アイコンの識別番号は二つ定められている(?)ようです。
私はあまり詳しくないので、正確なことは言えませんが、
#define IDI_SMALL
というのが、ウィンドウのアイコンの識別番号だと考えられます。


178ポイント を手に入れた。

Name: 初心者  ..熟練のプログラマー(41,963ポイント)   Date: 2009/12/06(日) 23:28   No:43553     
Title: Re:ウインドウのアイコン    
すみません。
resource.hを追加し、
#define IDI_SMALL 101
を書き、
DxLib_Init()
の前に
SetWindowIconID( 101 );
を書いて、インクルードし、実行したのですが、
変化がありませんでした。
何が原因なのでしょうか?


107ポイント を手に入れた。

Name: pooka [URL]  ..上級者(19,612ポイント)   Date: 2009/12/07(月) 01:04   No:43557     
Title: Re:ウインドウのアイコン    
>その操作はもうしました。
とありますが、Resource.rcはどのようになっていますか?

resource.hが
#define IDI_SMALL 101

のようになっているなら、Resource.rcは

#include "resource.h"
IDI_SMALL ICON "icon.ico"

のようにして、プロジェクトに追加してみてください。


70ポイント を手に入れた。

Name: 初心者  ..熟練のプログラマー(42,015ポイント)   Date: 2009/12/07(月) 01:56   No:43559     
Title: Re:ウインドウのアイコン    
#include "resource.h"を追加すると
fatal error RC1015: cannot open include file 'resource.h'.
というエラーが出たのですが、これはどうしたらいいのでしょうか?
言うの忘れましたが、45章の龍神録を改造したものでアイコンをウインドウにつけようと思ってます


52ポイント を手に入れた。

Name: pooka [URL]  ..上級者(19,654ポイント)   Date: 2009/12/07(月) 02:52   No:43561     
Title: Re:ウインドウのアイコン    
>fatal error RC1015: cannot open include file 'resource.h'
resource.hとResource.rcは同じフォルダにありますか?


42ポイント を手に入れた。

Name: 初心者  ..熟練のプログラマー(42,071ポイント)   Date: 2009/12/07(月) 02:54   No:43562     
Title: Re:ウインドウのアイコン    
すみません。パスの設定を教えていただけないでしょうか?
resource.hがある場所は
slnがある場所⇒mydatのフォルダの中⇒includeのフォルダの中にあります


56ポイント を手に入れた。

Name: 初心者  ..熟練のプログラマー(42,261ポイント)   Date: 2009/12/07(月) 03:15   No:43563     
Title: Re:ウインドウのアイコン    
すみません。自己解決しました。
皆さまのアドバイスのおかげです。本当にありがとうございました。

一つ聞きたいのですが、
Resource.rc
は.slnがある場所にあるのですが、
これは別の場所(フォルダ)に移動とかって出来るのでしょうか?
出来るならば皆さんはどの場所においておくのがいいのでしょうか?
.cppがあるフォルダがいいのか?.hがあるフォルダがいいのか?それとも新規に新しくフォルダを作成し、
そこに入れるか・・etc
アドバイスお願いします


190ポイント を手に入れた。

Name: 御津凪 [URL]  ..ハッカー(127,740ポイント)   Date: 2009/12/07(月) 10:09   No:43568     
Title: Re:ウインドウのアイコン    
私は res フォルダを用意して *.rc が参照するファイル一式を *.rc と共に置いています。
そのほうが管理が楽ですよ。
ただしプロジェクトに rc が追加されている場合は一旦プロジェクトから除外し、新しい場所に移動した後に追加しなおしてください。


102ポイント を手に入れた。



Name: 山崎  ..プログラマー(29,312ポイント)   Date: 2009/12/05(土) 13:04   No:43429       
Title: 爆発のエフェクトに関して    
いつもお世話になっております、山崎です。
今回は、皆様が「爆発」を表現するときに、どんな手法を使っているのかお伺いに参りました。

ちょっと前の「DXライブラリで炎を再現するには」の内容と
少しかぶってしまっていたら申し訳ないですが…。

現在、DXライブラリで2Dアクションゲームを作っています。
そこでそろそろ「爆発」する技や武器を作ろうかと考えています。
「爆発の表現の良さはゲーム自体の良さが表れる」のような言葉を聞いたことがあります。
爆発はちょっと凝った迫力のあるものにできればなぁ、と考えています。

そこで皆様にご質問なのですが、
皆さんは2Dのゲームで爆発を表現するときに、どのような手法を使っているのでしょうか。
あるいは、もし爆発を表現するとしたらどんな方法を用いるでしょう。

また、その爆発を表現するときに、どのような素材をどのようなアルゴリズムで用いるのでしょうか。

なお私は、爆発は主に「ミサイルや爆弾の爆発」に用いたいと思っているのですが、
他にも「敵が消滅するときのエフェクト」などにも応用したいなと思っております。

皆様の爆発の表現方法を是非とも紹介して頂きたいと思います。


275ポイント を手に入れた。


Name: Justy  ..伝説なるハッカー(472,712ポイント)   Date: 2009/12/06(日) 02:22   No:43475     
Title: Re:爆発のエフェクトに関して    

> もし爆発を表現するとしたらどんな方法を用いるでしょう

 先のスレでも書きましたが爆発といってもどんなデザインの何が爆発するのか、
爆発の規模・長さなどとかによって、作り方とか素材などは変わってきます。

 なので一概にこれ、とはいえませんが、強いていうなら、
発生から収束までのテクスチャアニメを表示でいいのではないでしょうか。
 必要なら拡大させながらでもいいですね。

 もうちょっと本格的に作るなら同じく発生から収束までの小規模な爆発アニメを用意して、
爆発の中心から毎フレームランダムな方向に飛ばし(速度はランダムで)
フレームが進む毎に急速に減速させます。
 但し広範囲で爆発するなら飛ばす代わりにランダムで位置を決め、その場でアニメーションを
します。
(うまく素材を作ればアニメでなくてもいいのかも)

 で、少し遅れて煙も出せばそれっぽくなるのではないでしょうか。


316ポイント を手に入れた。

Name: 山崎  ..プログラマー(29,569ポイント)   Date: 2009/12/06(日) 17:21   No:43529     
Title: Re:爆発のエフェクトに関して    
Justyさん
いつもご返信誠にありがとうございます。

アドバイスをもとに自分で爆発を作ってみました。
素材もまとめて添付ファイルとして圧縮してあります。

余計なコードも結構あるのでただ爆発を再現するだけにしては長いコードになってしまいました。
・爆発の中心から毎フレームランダムな方向に飛ばす
・飛ばす速度はランダム
・飛ばす速度は毎フレーム急速に減少
この3点を念頭に、自分で素材を作ってアニメーションさせてみました。
ただ、Justyさんの意図した通りかどうかはちょっと自信がないですが…。

煙の表現ですが、どう表現すればいいかすぐに思いつかなかったので
今回は割愛させて頂きました。

アドバイス頂きありがとうございました。


257ポイント を手に入れた。

Name: Justy  ..伝説なるハッカー(472,871ポイント)   Date: 2009/12/06(日) 20:38   No:43537     
Title: Re:爆発のエフェクトに関して    
 拝見しました。
 なるほど、こういう状況での爆発ならもう少し爆発範囲を狭くした方がいいですね。
 
 少しだけ手を入れたコードを添付しました。
 どう変えたのかと言いますと、移動をやめてその場で爆発するようにしたのと
爆発は連鎖しておこるものなので、一気に発生させないで時間をずらしながら
出すようにしてみました。

 爆発としては少しおとなしくなっていますが、テクスチャに合わせると
こんな感じでもいいんじゃないのかなと思います。


159ポイント を手に入れた。

Name: Justy  ..伝説なるハッカー(472,989ポイント)   Date: 2009/12/06(日) 21:00   No:43539     
Title: Re:爆発のエフェクトに関して    
 ちなみに元々想定していた爆発はこんなかんじでした(avi、要divx)。
 物は3Dですが、爆発部分のやってることは2Dでもあまり違いはないですし、
ネタ的には火と同じです。
(あ、素材の一部に龍神録のボスを借りてます)


 あとこちらに爆発系のテクスチャの作成をサポートするツールが紹介されていました。
 ご参考までに。

ツール―作成ソフト編―
http://tukiken.hp.infoseek.co.jp/muge/cr/tool/tool_A.html


118ポイント を手に入れた。

Name: 山崎  ..プログラマー(29,786ポイント)   Date: 2009/12/06(日) 22:54   No:43552 解決!     
Title: Re:爆発のエフェクトに関して    
Justyさん
ご返信誠にありがとうございます。
添付していただいたコードを実行してみました。
なるほど、画像を徐々に大きくしながらブレンドしていくんですね・・・。
それに、カウンタで1フレームずつ描画を遅らせているんですね。
これだけの差で、見え方は大きく違うものなのですか・・・。

テクスチャに爆発の仕方を合わせる、という感覚も
何となくですが少しわかったような気がします。
何の爆発でも殆ど一緒でもいいのでは、と思ってました。

添付していただいた動画ですが、
私の自宅の環境では再生できませんでしたので、
違う環境で後日拝見させてもらいますね。
わざわざありがとうございます。
また、ご紹介いただいたツールも是非とも参考にさせていただきますので!

本当に、いつも助けていただいてありがとうございます。


217ポイント を手に入れた。



Name: 初心者  ..熟練のプログラマー(41,672ポイント)   Date: 2009/12/05(土) 13:31   No:43431       
Title: グローバル変数    
#include <stdio.h>

void se(void);

int i;

int main(void)
{
   
   printf("%d\n",i);

   se();
printf("%d\n",i);

return 0;
}

void se(void)
{
   int i;
i=i+i;
   printf("%d\n",i);
}
グローバル変数があまりしてないんですが。
例えば上の例でグローバル変数iを定義してse関数内でiを定義しています。
se関数内のiとグローバル変数のiは同じですか?異なるのですか?


154ポイント を手に入れた。


Name: 通り  ..かけだし(1,131ポイント)   Date: 2009/12/05(土) 13:42   No:43433     
Title: Re:グローバル変数    
やはりこれだけ派手にpreタグを使うように表示されてても見ない人はみないね

38ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(132,667ポイント)   Date: 2009/12/05(土) 13:55   No:43434     
Title: Re:グローバル変数    
> se関数内のiとグローバル変数のiは同じですか?異なるのですか?

型と名前は同じ。
アドレスと有効範囲と生存期間は異なる。


2倍のポイントを手に入れた! 52ポイント を手に入れた。

Name: 初心者  ..熟練のプログラマー(41,701ポイント)   Date: 2009/12/05(土) 14:14   No:43436     
Title: Re:グローバル変数    
型と名前は同じってことは違うって解釈していいのかな?

例えば
グローバル変数としてiを定義して
ローカル関数内で同じ名前のiを定義したとしたら
ローカル関数内ではグローバル変数iは同じ名前だから使えないって
ことですか?
ここが良く分からないんです。


20ポイント を手に入れた。

Name: Naohiro19  ..かけだし(1,257ポイント)   Date: 2009/12/05(土) 14:58   No:43437     
Title: Re:グローバル変数    
main関数から呼ばれたiは0なので「0」と表示される。
se関数を呼び出すとiはローカル変数を宣言しただけなので不定値+1が表示されます。
結果、iの値は不定値+1です。


57ポイント を手に入れた。

Name: 初心者  ..熟練のプログラマー(41,776ポイント)   Date: 2009/12/05(土) 15:31   No:43439     
Title: Re:グローバル変数    
ありがとうございます。

区別されるのは分かりましたが、
グローバル変数でiを定義して
ロール関数で同じiを定義したとしたら
ローカル関数でグローバル変数で定義したiは使えるんですか?
ここをお願いします。


75ポイント を手に入れた。

Name: non  ..比類無きプログラマー(74,938ポイント)   Date: 2009/12/05(土) 17:53   No:43443     
Title: Re:グローバル変数    
Cでは、隠蔽されるので使えません。


16ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(132,811ポイント)   Date: 2009/12/05(土) 18:17   No:43447     
Title: Re:グローバル変数    
> ローカル関数でグローバル変数で定義したiは使えるんですか?

使えるかどうかでいえば使えます。
どう使えるかは、環境とどう使いたいのかによります。
規約に沿って情報を補足していただければ、もっと具体的な回答ができるかもしれません。


81ポイント を手に入れた。

Name: non  ..比類無きプログラマー(74,959ポイント)   Date: 2009/12/05(土) 18:36   No:43448     
Title: Re:グローバル変数    
あらら、環境によっては使えるのですか?
知らなかった。


21ポイント を手に入れた。

Name: Naohiro19  ..かけだし(1,377ポイント)   Date: 2009/12/05(土) 18:57   No:43450     
Title: Re:グローバル変数    
コンパイルして実行するとランタイムエラーが発生します。

出力ウィンドウは以下のとおりになります。
warning C4700: 値が割り当てられていないローカルな変数 'i' に対して参照が行われました。

se関数のint i;を消して実行すると以下のようになります。

0
0
0


120ポイント を手に入れた。

Name: softya [URL]  ..熟練のプログラマー(61,513ポイント)   Date: 2009/12/05(土) 18:57   No:43451     
Title: Re:グローバル変数    
>あらら、環境によっては使えるのですか?

C++でスコープ解決演算子でのグローバル参照なら出来ると思いますが、たかぎさんそういう意味ですよね?
違ったらごめんなさい。


25ポイント を手に入れた。

Name: hoge  ..入門者(3,213ポイント)   Date: 2009/12/05(土) 19:05   No:43452     
Title: Re:グローバル変数    
> C++でスコープ解決演算子でのグローバル参照なら出来ると思いますが、たかぎさんそういう意味ですよね?
> 違ったらごめんなさい。

ブロック内でextern宣言するんだと思う。




17ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(133,056ポイント)   Date: 2009/12/05(土) 19:19   No:43453     
Title: Re:グローバル変数    
さっき指摘し忘れましたが、ローカル関数というのは何でしょうか?
GCC拡張で使える

void foo(void)
{
void bar(void)
{
}
bar();
}

のようなものでしょうか?
あるいは、C++で、

void foo()
{
static local
{
static void bar()
{
}
};
local::bar();
}

のようなものでしょうか?
「ロール関数」はローカル関数の打ち間違いですよね?

どちらにしても、グローバル変数をローカル関数内で同名の変数を定義したとしても、使えるといえば使えます。

softyaさんやhogeさんの方法でもよいですし、他の方法もあります。
iという名前で参照したいのか、オブジェクトを参照できればよいのかによっても話が変わってきます。



245ポイント を手に入れた。

Name: softya [URL]  ..熟練のプログラマー(61,998ポイント)   Date: 2009/12/05(土) 19:26   No:43456     
Title: Re:グローバル変数    
>ブロック内でextern宣言するんだと思う。

あっ、その手がありますね。
ひねりすぎました(^^ゞ

>warning C4700: 値が割り当てられていないローカルな変数 'i' に対して参照が行われました。
iに初期値が無いからです。

>se関数のint i;を消して実行すると以下のようになります。
ローカル変数とグローバル変数のスコープを理解するプログラムでは無くなってしまうので、消したら意味無いですね。
int i=1;
と記述してください。これで値が割り当てられるのでエラーではなくなります。

●とにかく規約テンプレに従って、自分の学んでいる言語や状況を明確にしてください。
そうしないと話がどんどん難しい方向へ流れていって、質問者ご本人の理解できない話になってしまう可能性が高いです。

[1] 質問文
 [1.1] 自分が今行いたい事は何か
 [1.2] どのように取り組んだか(プログラムコードがある場合記載)
 [1.3] どのようなエラーやトラブルで困っているか(エラーメッセージが解る場合は記載)
 [1.4] 今何がわからないのか、知りたいのか

[2] 環境
 [2.1] OS : Windows, Linux等々
 [2.2] コンパイラ名 : VC++ 2008EE, Borand C++, gcc等々
 [2.3] 使用言語:C(90,99),C++,C#,VB,JAVA等々詳細にお願いします。

[3] その他
 ・どの程度C言語を理解しているか。言語を勉強してからの期間や自分で思う習得レベル(3ヶ月。初心者)
 ・ライブラリを使っている場合は何を使っているか


350ポイント を手に入れた。

Name: non  ..比類無きプログラマー(75,041ポイント)   Date: 2009/12/05(土) 20:18   No:43458     
Title: Re:グローバル変数    
>ブロック内でextern宣言するんだと思う。
あーこういうことですか?使ったことがないので、思いつきませんでした。

#include <stdio.h>
int i=1;
int main(void)
{
int i=2;
{
extern int i;
printf("%d\n",i);
}
printf("%d\n",i);
return 0;
}



82ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(133,502ポイント)   Date: 2009/12/05(土) 23:37   No:43468     
Title: Re:グローバル変数    
なかなか情報を補足してくれないようですが、大して急いでいないようなので、以後は質問者さんを置き去りにして話を進めます。

すでに出ている方法(::iとする、ブロック内でextern宣言する)以外にも次のようなものが考えられます。
まずは名前を参照するための方法です。

- 関数内の i は、複合文の中で定義する。
- 関数内で i を定義する前に、非局所オブジェクトの i を使う
- インラインアセンブラを使う
- (ほとんど屁理屈ですが)i を定義したローカル関数とは別のローカル関数で非局所オブジェクトの i を参照する

次にオブジェクトを参照するための方法です。

- リンカスクリプトその他の方法で、非局所オブジェクト i にエイリアスを設定する
- C++であれば、int& j = i; のように参照を作っておく
- ポインタを介してアクセスする
- 他のオブジェクトのアドレスから、i のアドレスを求める(未定義ですが、処理系によっては可能)
- i を、アドレスが特定できる特定のセクションに配置する
- i にグローバルレジスタを割付け、関数内ではレジスタを参照する処理系定義の方法を使う

といったところでしょうか?


359ポイント を手に入れた。

Name: non  ..比類無きプログラマー(75,442ポイント)   Date: 2009/12/06(日) 09:51   No:43493     
Title: Re:グローバル変数    
たかぎさん。イメージが湧きません。
もうしわけありませんが、サンプルを載せてもらえませんか?
自分なりに作ってみました。

- 関数内の i は、複合文の中で定義する。
ブロック内でローカル変数を定義したら、そのブロックの外の範囲は
グローバル変数が選択されているという意味でしょうか?

#include <stdio.h>
int i=1;
int main(void)
{
printf("%d\n",i);
{
int i=2;
printf("%d\n",i);
}
return 0;
}


- 関数内で i を定義する前に、非局所オブジェクトの i を使う
Cだと限定すると、こんな感じですか。

#include <stdio.h>
int i=1;
int main(void)
{
int a=i;
int i=2;
printf("%d\n",i);
printf("%d\n",a);
return 0;
}


- インラインアセンブラを使う
インラインアセンブラは、使ったことがありませんのでパス。

- (ほとんど屁理屈ですが)i を定義したローカル関数とは別のローカル関数で非局所オブジェクトの i を参照
これ、わからないです。ローカル関数?
サンプル下さい。

オブジェクト参照はまた、今度。


401ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(133,579ポイント)   Date: 2009/12/06(日) 10:00   No:43495     
Title: Re:グローバル変数    
nonさん
最初の2つは書かれている通りです。

インラインアセンブラの場合、asm("... i ..."); のように、多くの場合、名前で参照可能です。
ただし、_i のように、若干シンボルが加工される可能性はあります。
また、C++の場合には、マングリングが行われる可能性もあります。

> - (ほとんど屁理屈ですが)i を定義したローカル関数とは別のローカル関数で非局所オブジェクトの i を参照
> これ、わからないです。ローカル関数?
> サンプル下さい。

int i = 123;;

void foo()
{
void f()
{
int i = 456;
printf("%d\", i);
}
void g()
{
printf("%d\n", i);
}
f();
g();
}

のようなケースです。ローカル関数(入れ子関数)f で i を定義していますが、別のローカル関数 g では関数外の i を参照できます。
同じローカル関数とは書いていないので、屁理屈をいえば、こういうのもありです。




2倍のポイントを手に入れた! 58ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(133,684ポイント)   Date: 2009/12/06(日) 10:13   No:43497     
Title: Re:グローバル変数    
ちょっと補足

> - 関数内の i は、複合文の中で定義する。

については、C限定でも次のように書けます。

#include <stdio.h>
int i = 1;
int main(void)
{
{
int i = 2;
printf("%d\n", i);
}
printf("%d\n", i);
}

つまり、関数内で定義した i を使いたい範囲だけブロックで囲んでやれば、それ以外では普通に関数外の i にアクセスできます。


105ポイント を手に入れた。

Name: non  ..比類無きプログラマー(75,708ポイント)   Date: 2009/12/06(日) 13:00   No:43513     
Title: Re:グローバル変数    
これって、BCCではエラーになりますけど、BCCが悪いのですか?
GCCは職場のパソコンにしか入ってないので、試してません。

int i = 123;;

void foo()
{
void f()
{
int i = 456;
printf("%d\", i);
}
void g()
{
printf("%d\n", i);
}
f();
g();
}

ちなみに、これならうまく動きます。

int i = 123;;

void foo()
{
void f();
void g();
f();
g();
}
void f()
{
int i = 456;
printf("%d\", i);
}
void g()
{
printf("%d\n", i);
}


>ちょっと補足
>> - 関数内の i は、複合文の中で定義する。
>については、C限定でも次のように書けます。

これは理解できてます。


266ポイント を手に入れた。

Name: 初級者  ..初心者(7,114ポイント)   Date: 2009/12/06(日) 13:22   No:43515     
Title: Re:グローバル変数    
fooの中でfとgの中身を書くことはできません。
後者はそれぞれの宣言をしているだけなので、エラーは出ません。


50ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(134,090ポイント)   Date: 2009/12/06(日) 13:29   No:43516     
Title: Re:グローバル変数    
nonさん
> これって、BCCではエラーになりますけど、BCCが悪いのですか?

前述したようにGCCの独自拡張ですので、普通のCコンパイラではコンパイルできません。
GCCでもC++では使えないはずです。

手軽にGCCを使うなら、
http://files.7d9.org/mingw32-core-4_4_1-dw2-20091113.zip
を使ってみてください。
解凍してバッチを実行するだけで使えます。

「ローカル関数」というのが、Cではこれ以外には思い当たらないのです。


93ポイント を手に入れた。

Name: non  ..比類無きプログラマー(75,779ポイント)   Date: 2009/12/06(日) 14:14   No:43517     
Title: Re:グローバル変数    
たかぎさん
GCCの独自拡張ですか、なるほど。
紹介していただいたのをダウンロードし、GCCでは、うまく行きました。

関数の中に関数の本体を書くことに何かいいことがあるのでしょうか?
利点がわかりません。


71ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(134,314ポイント)   Date: 2009/12/06(日) 15:00   No:43520     
Title: Re:グローバル変数    
> 関数の中に関数の本体を書くことに何かいいことがあるのでしょうか?

関数の中で使う下請関数を入れ子にすることで、ある意味 "private" な関数を作ることができます。
具体的に分かりやすい例を挙げると、qsortやbsearchに渡す比較関数を入れ子関数にすれば、下請関数(ここでは比較関数)をファイル有効範囲に出さなくても済みます。
ただ、入れ子関数は、便利にしすぎたこともあって、使い方次第ではオーバーヘッドやその他の弊害も出ます。

本当に入れ子関数が欲しいのは、どちらかといえばC++のほうです。
アルゴリズム関数の述語にするのに使いたいのですが、GCCでもC++では入れ子関数が使えません。
ローカルクラスとしてファンクタを作ってもエラーになってしまうので、どうしようもありませんね。


224ポイント を手に入れた。

Name: non  ..比類無きプログラマー(75,957ポイント)   Date: 2009/12/06(日) 15:31   No:43523     
Title: Re:グローバル変数    
そいえば、昔昔のそのまた昔、PascalやModela-2を使ったとき手続きや関数を入れ子にできた
記憶を思い出しました。昔の言語にはそういう考えがあったのでしょう。
C++なら確かにprivateにすることに意味がありそうなのに、C++で使えなくなったのは面白いですね。
クラスの考えが出てきたときに、消滅しちゃたんでしょうね。



2倍のポイントを手に入れた! 178ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(134,346ポイント)   Date: 2009/12/06(日) 15:51   No:43524     
Title: Re:グローバル変数    
> クラスの考えが出てきたときに、消滅しちゃたんでしょうね。

そうでもありません。
C++0xではラムダ式が使えるようになりましたので、これが入れ子関数に取って代わるのかな、と考えています。


32ポイント を手に入れた。

Name: non  ..比類無きプログラマー(76,049ポイント)   Date: 2009/12/06(日) 17:47   No:43530     
Title: Re:グローバル変数    
>C++0x
初めて知りました。また、新しい標準が出るのですね。
ラムダ式・・・・?少し記事を読みましたが・・・???
まぁ、その前にC++を使いこなせるようにならないとですね。


92ポイント を手に入れた。

Name: 組木紙織  ..比類無きプログラマー(76,286ポイント)   Date: 2009/12/06(日) 20:25   No:43535     
Title: Re:グローバル変数    
前半の流れは詳しく読んでませんが、(興味があるので詳しく読みますが、)


>C++0x
nonさんが知らないなんて少し驚いてます。
これに関してはいくつかこの掲示板でもつついたことがあったと思います。(多分、私が)

>ラムダ式
関数型言語界隈ではよくつかわれている概念らしいんですけどね。
日本語では無名関数でしたっけ、boostでライブラリを実装していたとおもいます。(私は使ったことがありませんが)
最新のVSでも実装していたとおもいます。(これはどこかのblogに載ってたような記憶が。)




#2009年中に完成させるつもりで0xとつけたという話を聞いたことがあるのですが、本当に2009年中にでるんでしょうかね。




281ポイント を落としてしまった。

Name: たかぎ [URL]  ..ハッカー(134,414ポイント)   Date: 2009/12/06(日) 20:56   No:43538     
Title: Re:グローバル変数    
> boostでライブラリを実装していたとおもいます。

Boost C++ Librariesのものよりずっと使い勝手がよさそうです。
Visual C++ 2010のほか、GCC 4.5.xでも使えるはずです。

> #2009年中に完成させるつもりで0xとつけたという話を聞いたことがあるのですが、本当に2009年中にでるんでしょうかね。

今年中に出ないことは確定していますが、C++0xという仮称はそのまま使うようです。


68ポイント を手に入れた。

Name: non  ..比類無きプログラマー(76,058ポイント)   Date: 2009/12/06(日) 22:46   No:43549     
Title: Re:グローバル変数    
>>C++0x
>nonさんが知らないなんて少し驚いてます。

私、みなさんが思っている以上に、骨董品ですから・・・



9ポイント を手に入れた。



Name: ti  ..かけだし(1,102ポイント)   Date: 2009/12/05(土) 19:21   No:43455       
Title: RPG風コマンドウィンドウの表示について    
ドラクエ風のRPGを作っていてXボタンを押すと はなす や どうぐが表示されるプログラムをつくりたいのですが制御がうまくいかず困っています

仕様として
・Xボタンを押すとウィンドウが表示される
・Zボタンを押すと表示されていたウィンドウがきえて通常のフィールドや町のMAPに制御が戻るようにつくりたいです

ソースです↓


int Make_CmdWindow(int cr__x,int cr__y,int i,int j,char bname[50])//座標、座標、座標、座標、bmp名
{

LoadGraphScreen( 50 , 50 ,"BMP/cmd-win1.bmp" , TRUE ) ;//はなす〜つよさのウィンドウ表示
ScreenFlip();

if( Key[ KEY_INPUT_Z ] == 1 ){

image = LoadGraph( "BMP/1138--.bmp" ) ;
DrawRectGraph( 0, 0, i, j, 640, 640, image, TRUE, FALSE ) ;
int cr1 = LoadGraph( "BMP/cr.bmp" );
DrawRectGraph( 320, 320, 0, 0, 32, 48, cr1, TRUE, FALSE ) ;
ScreenFlip();
return 0;
}


}


これをZキーを押すまでこの関数を抜けないようにするにはどうすればいいですか?



358ポイント を手に入れた。


Name: kazuoni [URL]  ..ハッカー(116,528ポイント)   Date: 2009/12/05(土) 19:47   No:43457     
Title: Re:RPG風コマンドウィンドウの表示について    
一度入力があったら、フラグを立てて、
フラグがたっている間は対象の処理をするっということでおおむねいいかと思います。

#こっから余談ですので、参考程度に
・LoadGraphScreenは毎ループすると、かなり負担が大きいようなので、
LoadGraphしたほうがよい気がします。

・掲載されたコードでは、入力があったらLoadGraphをし、そのまま関数を抜けてしまいますが、
変数cr1の画像を解放せずにほったらかしになっているので、いつかまずいことになりそうです。
初期化関数なり用意して、一度読み込む方針をとるべきかと思います。

・ScreenFlipは管理が面倒になることや、処理の重さなどを考慮すると、
メイン関数の最後のほうに一度書くだけにした方がよいかと思います。


217ポイント を手に入れた。

Name: ti  ..かけだし(1,072ポイント)   Date: 2009/12/06(日) 18:24   No:43532 解決!     
Title: Re:RPG風コマンドウィンドウの表示について    
kazuoniさん回答ありがとうございました
おかげさまでなんとかできました


30ポイント を落としてしまった。



Name: TAB譜。  ..ぴよぴよ(153ポイント)   Date: 2009/12/06(日) 14:44   No:43519       
Title: メニューウィンドウの表示について    
こんにちは。私は今サウンドノベル風のゲームを作ろうとしています。

本編を始めた時に、メニューウィンドウを表示させたいんですが、
本編のメッセージウィンドウや背景画像を残したまま表示させるにはどうすればいいですか?
あとそのウィンドウを表示させ、閉じて本編を続ける方法も教えてください。
いまのままだと、閉じた後、本編が最初から始まってしまいます。

[2]
・OS Windows Vista BASIC
・コンパイラ:Visual C++ 2008 Express Edition
[3]
・Dxライブラリを使っています。
・C言語で簡単なプログラムを作成できるくらいはできます。

ソースはどこを乗せればいいかわからないので添付します
よろしくお願いします


122ポイント を落としてしまった。


Name: ひよこ  ..比類無きプログラマー(75,815ポイント)   Date: 2009/12/06(日) 15:01   No:43521     
Title: Re:メニューウィンドウの表示について    
本編のメッセージウィンドウや背景画像を残したまま
>>描いたまま処理をすればいいのでは?

あとそのウィンドウを表示させ、閉じて本編を続ける方法も教えてください。
>>これってセーブデータですよね。
>>ゲームプログラミングの館にのっているので参考にしてみてはどうでしょうか?

あと、Menueで毎回、LoadGraphするのはよくないです。メモリによくないです。


106ポイント を手に入れた。

Name: kazuoni [URL]  ..ハッカー(116,923ポイント)   Date: 2009/12/06(日) 16:03   No:43527     
Title: Re:メニューウィンドウの表示について    
> 本編のメッセージウィンドウや背景画像を残したまま表示させるにはどうすればいいですか?

例えばNewGame()にgameModeが移行し、BackSpaceが押されたとします。
すると、gameMode=7はとなり、NewGame()には入らなくなり、背景等の描写は消えてしまいます。
解決するには、ゲーム画面描写後にウィンドウ画面を表示すればよいです。

void NewGame(){


static bool IsPushed_BACK = false;

...; // すべてのゲーム画面の描写後

if(Key[KEY_INPUT_BACK]==1)
IsPushed_BACK = true;

if(IsPushed_BACK)
{
Window();

if(メニューが閉じられたら)
IsPushed_BACK = false;
}
}


もし、ゲーム画面のキー入力(キャラの移動など)とウィンドウ画面のキー入力(項目の選択肢移動など)が
かぶってしまう場合は、IsPushed_BACKによってキー制御を分岐してください。
まぁ、かぶらなければ問題ないんですが。

> いまのままだと、閉じた後、本編が最初から始まってしまいます。
おそらく、ロード機能ではなく、ゲーム内の自作したウィンドウを閉じたらって意味ではないですか?
どこの関数が本編と言っているのかわからないので何とも言えないですけど、
Menue()→Newgame()→Window()→NewGame()ならば問題ないのでは?
どの流れで悩んでいる問題になるのか、詳細を追記していただけませんか?

#メニュー画面のメニューは「Menue」ではなく「Menu」ですよね^^;


334ポイント を手に入れた。



Name: スウェーデン  ..ぴよぴよ(487ポイント)   Date: 2009/12/06(日) 02:52   No:43476       
Title: 困ってます    
C++の宿題で、連立一次方程式の解を解く、というプログラムを作っています。行列にみたてているのですが、割り算ができるかどうかのチェックの入れ方がわかりません。とりあえずプログラムは以下の通りです。ちなみに、nは次数、c[][]は係数行列、b[]は定数ベクトル、x[]は回のベクトルです。

//連立方程式を解く
void linearEquations (int n,double x[],double c[][10],double b[]){
int k,j,i;
for(j=1;j<=n;j++){
c[j][n+1]=b[j];
}
//前進計算(上三角化、対角要素は1)
for(j=1;j<=n;j++){
for(k=j+1;k<=n+1;k++){
c[j][k]/=c[j][j];
}
c[j][j]=1;
for(i=j+1;i<=n;i++){
for(k=j+1;k<=n+1;k++){
c[i][k]-=c[i][j]*c[j][k];
}
c[i][j]=0;
}
}
//後退計算(係数行列を単位行列化)
for(j=n;j>0;j--){
for(i=1;i<j;i++){
for(k=j+1;k<=n+1;k++){
c[i][k]-=c[i][j]*c[j][k];
}
c[i][j]=0;
}
}
for(j=1;j<=n;j++){
x[j]=c[j][n+1];
}
}

このプログラムの9行目でc[j][j]が0になった場合は、c[i][j]が0でないようなi行(j<i<=n)を見つけて、j行とi行を入れ替える、という操作を入れたいのですが、どのようにすればよいのでしょうか??初心者でとても申し訳ないのですが、コメントをお願いします。


384ポイント を手に入れた。


Name: たかぎ [URL]  ..ハッカー(133,417ポイント)   Date: 2009/12/06(日) 09:39   No:43491     
Title: Re:困ってます    
日本語で書いてある通りにコーディングすればよいだけだと思います。
貼っているコードが書けるだけの能力があるなら、そんなに難しいとは思いませんが...


1ポイント を手に入れた。

Name: スウェーデン  ..ぴよぴよ(568ポイント)   Date: 2009/12/06(日) 10:49   No:43501     
Title: Re:困ってます    
たかぎさんコメントありがとうございます。c[i][j]が0でないようなi行を見つける、というのがどういう風に表現すればいいのかがよくわからないんです・・・。教えていただけないでしょうか?

81ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(133,997ポイント)   Date: 2009/12/06(日) 11:04   No:43502     
Title: Re:困ってます    

for (int i = j + 1; i <= n; i++)
{
if (c[i][j] != 0)
{
// この時点の i を記憶
break;
}
}

これでよいのでは?

もっとC++らしい表現を望むのであれば...

class element_of_c_is_not_zero
{
int j_;
public:
explicit element_of_c_is_not_zero(int j) ; j_(j) {}
bool operator()(double* a) const { return a[j_] != 0; }
};

のようなクラスを作っておいて、

std::find_if(c + j + 1, c + n + 1, element_of_c_is_not_zero(j)) - c

とすれば、c[i][j] がゼロでないような i を求められると思います(テストしていないので、細部はミスがあるかも)。


257ポイント を手に入れた。

Name: スウェーデン  ..ぴよぴよ(578ポイント)   Date: 2009/12/06(日) 13:09   No:43514     
Title: Re:困ってます    
ありがとうございます。やってみます。

10ポイント を手に入れた。



Name: HIT  ..ぴよぴよ(254ポイント)   Date: 2009/12/05(土) 23:11   No:43465       
Title: PlayMovie関数    
もし、1キーが押されたらPlayMovie関数を使って動画を再生するってことはどうやってやるのですか?

51ポイント を手に入れた。


Name: ひよこ  ..比類無きプログラマー(75,366ポイント)   Date: 2009/12/05(土) 23:17   No:43466     
Title: Re:PlayMovie関数    
こんなかんじでいいんでしょうか?PlayMovieはよく知りませんが。
int flag=0;
switch(flag){
case 1:
PlayMovie
break;
}
みたいなものはどうですか?


45ポイント を手に入れた。

Name: HIT  ..ぴよぴよ(329ポイント)   Date: 2009/12/05(土) 23:34   No:43467     
Title: Re:PlayMovie関数    
ひよこさん解答ありがとうございます

int flag=0;
switch(flag){
case 1:
PlayMovie( "動画.avi" , 1 , DX_MOVIEPLAYTYPE_NORMAL ) ;
break;
}
としましたが、1キーを押しても反応しません

また、エラーは出ていません



75ポイント を手に入れた。

Name: kazuoni [URL]  ..ハッカー(116,562ポイント)   Date: 2009/12/06(日) 01:05   No:43471     
Title: Re:PlayMovie関数    
こんな感じかと。
bool IsPush_1;

int MovieHandle;

... // 1が押されたらフラグを立てる

if(IsPush_1)
{
if(GetMovieStateToGraph(MovieHandle)==0)
if(PlayMovie(MovieHandle,1.0,DX_MOVIEPLAYTYPE_NORMAL)!=0)
{
// 再生失敗
}
}


#FLASHが見えていないのかなぁ・・・


34ポイント を手に入れた。

Name: ひよこ  ..比類無きプログラマー(75,528ポイント)   Date: 2009/12/06(日) 07:00   No:43484     
Title: Re:PlayMovie関数    
kazuoniさん、まさか、私のことですか、まじめにソースを上げるときはpreタグ使いますが、
ちょっと、なので、掲示板にそのまま打ち込んでしまいました。
上のソースですがあせってました。KEY_INPUT_1が押された時を調べてflagを1にすればいいです


2倍のポイントを手に入れた! 162ポイント を手に入れた。

Name: HIT  ..ぴよぴよ(343ポイント)   Date: 2009/12/06(日) 12:36   No:43510 解決!     
Title: Re:PlayMovie関数    
ありがとうございます

2倍のポイントを手に入れた! 14ポイント を手に入れた。



Name: いい  ..ぴよぴよ(1ポイント)   Date: 2009/12/06(日) 11:30   No:43506       
Title: 数字を左側に伸ばしたい    
DrawFormatStringで数字を書いてその数字を上昇させていくと
数字は DrawFormatStringに示した地点の右側に伸びていきます。
(桁数が増えた時)これを地点から左側に伸びていくようにするには
どのようにしたらよいのでしょうか?
よろしくお願いします。

→→→→1 →→→→→11 ではなく

→→→→1 →→→11

したいという意味です。


1ポイント を手に入れた。


Name: MNS  ..上級者(23,199ポイント)   Date: 2009/12/06(日) 12:23   No:43508     
Title: Re:数字を左側に伸ばしたい    
最大の桁が決まっているのなら、最小フィールド幅を指定することで出来ると思います。
例:DrawFormatString(200, 100, color, "%10d", var);

もしくは、表示したい文字列の幅を取得し、文字列の右端がくるようにしたい座標(x)から
その幅を引いたところから、文字列の描画を始めるという方法もあります。
例:[右端が(600,200)にくるようにしたい]
  int w = GetDrawFormatStringWidth("%d", var);
  DrawFormatString(600-w, 100, color, "%d", var);


72ポイント を手に入れた。

Name: いい  ..ぴよぴよ(13ポイント)   Date: 2009/12/06(日) 12:33   No:43509 解決!     
Title: Re:数字を左側に伸ばしたい    
ありがとうございます。
かなり無知でした。


12ポイント を手に入れた。



Name: 南瓜  ..かけだし(1,539ポイント)   Date: 2009/12/05(土) 12:00   No:43423       
Title: 無限ループになってしまいます    
前に質問したものです。C言語のプログラムの勉強をしている所です
#include <stdio.h>

#include <time.h>
#include <stdlib.h>

int main () {
int player, computer;
int p_count = 5; /*プレイヤーの負け数残り*/
int c_count = 5; /*コンピュータの負け数残り*/

printf("[野球拳ゲーム]\n");
srand(time(NULL));
do {
printf("\n野球拳するなら\n");
printf("こういう具合にしやしゃんせ\n");
printf("アウト セーフ\n");
do {
printf("よよいのよい!\n");
printf("(グー:1 チョキ:2 パー:3を入力) > ");
player = 0;
scanf("%d", &player);
while(getchar() != '\n') { }
computer = rand()%3 + 1;
printf("コンピュータは");
if(computer == 1) {printf("グー");}
else if(computer ==2) {printf("チョキ");}
else {printf("パー");}
printf("! ");
} while((player != 0) && (computer == player));

if((player ==1 && computer == 2) ||
(player == 2 && computer == 3) ||
(player == 3 && computer ==1)) {
printf("プレイヤーの勝ち\n");
c_count--;
} else {
printf("コンピュータの勝ち\n");
p_count--;
}
} while((p_count != 0) && (c_count != 0));

printf("\n勝負あり!\n");
if(p_count == 0) {
printf("あなたの負け!");
} else {
printf("あなたの勝ち!");
}
return 0;
}


上のプログラムをコンパイルすると
yakyuuken.c:21:23: warning: multi-character character constant
と出るのでコンパイル時に-Wno-multicharでエラーが出ないようにしてますが、
すると起動してもコマンド入力時に入力しても次の結果が出ずに無限ループしてしまいます。

野球拳ゲーム]\n\n野球拳するなら\nこういう具合にしやしゃんせ
\nアウト セーフ\nよよいのよい!\n(グー:1 チョキ:2 パー:3を入力) > 3
2
1
2
3
2
1
2

これは、\nの改行がうまく行かず「\n」がそのまま出てしまうのと何か関係があるのでしょうか?
OS:Mac OS X コンパイル:gcc バージョン4.0.1


21ポイント を手に入れた。


Name: ねこ  ..熟練のプログラマー(48,841ポイント)   Date: 2009/12/05(土) 12:08   No:43425     
Title: Re:無限ループになってしまいます    
while(getchar() != '\n') { }

これいらないのでは?


29ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(132,615ポイント)   Date: 2009/12/05(土) 12:18   No:43426     
Title: Re:無限ループになってしまいます    
シフトJISでエンコーディングしていることが問題ではないでしょうか?
手元で確認したところ、 全角のバックスラッシュが入力されていました。
ことえりの設定次第ですが、opt + \またはopt + Yでどうにかなりませんか?


95ポイント を手に入れた。

Name: 南瓜  ..かけだし(1,629ポイント)   Date: 2009/12/05(土) 17:45   No:43442     
Title: Re:無限ループになってしまいます    
ねこさん ありがとうございます。
無限ループがなくなりました!

>ことえりの設定次第ですが、opt + \またはopt + Yでどうにかなりませんか?
これは、使っているテキストエディタmiの文字コードでなくてMacの文字コードを変更しなきゃ
いけないというとですよね?
opt + \またはopt + Yをやって見たんですが、mi(UTF-8)で書き込むと
エとヌがでてしまいます。
もし、Macの文字コードを変更するにはどうすればいいでしょうか?


90ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(132,730ポイント)   Date: 2009/12/05(土) 18:16   No:43446     
Title: Re:無限ループになってしまいます    
> これは、使っているテキストエディタmiの文字コードでなくてMacの文字コードを変更しなきゃ
いけないというとですよね?

そんなことはありません。

> opt + \またはopt + Yをやって見たんですが、mi(UTF-8)で書き込むと
エとヌがでてしまいます。

miでも試してみましたが、そんな風にはなりません。
状況をもっと詳しく教えてください。


63ポイント を手に入れた。

Name: 南瓜  ..かけだし(1,706ポイント)   Date: 2009/12/06(日) 09:36   No:43490     
Title: Re:無限ループになってしまいます    
mi(UTF-8)とテキストエディタ(?)で\を入力しました。
左から順番に半角\、opt + \、opt + Yです。
miで\を入力すると図のようになるのでテキストエディタで\nを入力して
そこだけ貼付けてコンパイルしています。


77ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(133,521ポイント)   Date: 2009/12/06(日) 09:45   No:43492     
Title: Re:無限ループになってしまいます    
まず、opt + Yは円記号になるはずですので、前回の私の回答が間違っていました。
それにしても、カタカナが出るのは変ですね。
UTF-8になっているのは間違いありませんか?
あと、使っているのは"ことえり"ですか? ATOKとかではありませんか?


104ポイント を手に入れた。

Name: 南瓜  ..かけだし(1,754ポイント)   Date: 2009/12/06(日) 10:20   No:43498     
Title: Re:無限ループになってしまいます    
はい。miの文字コードはUTF-8にチェックを入れています。
で、たぶんMacの方は、図のように「ことえり」だと思います。


48ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(133,740ポイント)   Date: 2009/12/06(日) 10:24   No:43499     
Title: Re:無限ループになってしまいます    
Xcodeのエディタではどうなりますか?
それで正しく入力できるのであれば、miの問題のように思います。
miの作者に問い合わせしたほうがよいのではないでしょうか?
miのバージョンによっても状況が変わるかもしれません。ちなみに、私が使っているのは2.1.8です。


56ポイント を手に入れた。

Name: 南瓜  ..かけだし(1,824ポイント)   Date: 2009/12/06(日) 11:22   No:43505 解決!     
Title: Re:無限ループになってしまいます    
バージョンが2.1.6だったので最新版にアップデートしました所
無事\がでて改行されるようになりました!
たかぎさん ありがとうございます。


70ポイント を手に入れた。



Name: 3T  ..ぴよぴよ(913ポイント)   Date: 2009/12/06(日) 04:59   No:43480       
Title: 龍神録で、DrawGraphでなくDrawRotaGraphを用いている    
こんにちは。
また、お世話になります。

龍神録で、キャラなどの描画にDrawGraphでなくてDrawRotaGraphが用いられているのですが、これには理由があるのでしょうか?
実行速度的に、DrawGraph(*1)よりDrawRotaGraphの方が良いのですかね。


(*1)
DrawGraphの場合、画像を(x,y)を(画像の左上の位置でなく)中心とする位置に表示する必要があると思われます。
中心に表示するためには、キャラなどの描画をする際にGetGraphSizeで画像の大きさを取得し、幅・高さの半分を引けば実装可能だと思われます。



よろしくお願いします。


48ポイント を手に入れた。


Name: DVDM [URL]  ..初心者(6,233ポイント)   Date: 2009/12/06(日) 06:23   No:43482     
Title: Re:龍神録で、DrawGraphでなくDrawRotaGraphを用いている    
>>3Tさん
DrawGraph と DrawRotaGraphをDxLibのリファレンスから引っ張ってきました。

int DrawGraph( int x, int y, int GrHandle, int TransFlag ) ;
x , y   : グラフィックを描画する領域の左上頂点の座標
参考URL:http://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_graph.html#R3N7


int DrawRotaGraph( int x, int y, double ExtRate, double Angle, int GrHandle , int TransFlag , int TurnFlag ) ;
x , y   : グラフィックを描画する領域の中心座標
参考URL:http://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_graph.html#R3N10


DrawRotaGraphの方には回転や拡大縮小まで引数で指定できるようです。

実際使ったわけではありませんが、リファレンスを見るとx, yは3Tさんの仰る通り
DrawGraphでは画像の左上、DrawRotaGraphは画像の中心であってると思います。


369ポイント を手に入れた。

Name: 3T  ..ぴよぴよ(933ポイント)   Date: 2009/12/06(日) 07:17   No:43486     
Title: Re:龍神録で、DrawGraphでなくDrawRotaGraphを用いている    
ご返信ありがとうございます。
確かに、その通りですね。
問題は、このどちらを使うべきか(速度的に優れているのか)ということですが……。


(DrawRotaGraphの引数のx,yについて、型がdoubleだと勘違いしてましたので、上記質問の内容を訂正しました。申し訳ございません。)
更に、見直すと色々と補足不足でした。
まず、龍神録のようなSTGにおけるキャラの表示に関する問題ということを言わなければなりませんでした。
STGですので、画像表示はキャラの位置(x,y)を中心に行われなければなりません。(もしかして別に方法がある……?)
そのため、DrawGraph関数を用いる場合には中心に表示するようにする必要がある、ということです。


20ポイント を手に入れた。

Name: 3T  ..かけだし(1,766ポイント)   Date: 2009/12/06(日) 07:30   No:43487     
Title: Re:龍神録で、DrawGraphでなくDrawRotaGraphを用いている    
DrawGraphとDrawRotaGraphを用いる場合の比較用のものを書いてみました。
キーボードのAを押すことで、DrawGraphもしくはDrawRotaGraphを2万回繰り返すものです。
これの作成にあたり、http://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=view&no=1437を参考にさせていただきました。



私の環境では、DrawGraphの方が早く動作しました。
DrawGraphが7000前後、DrawRotaGraphが8500前後でした。


(※実行にあたり、別途"0.png"が必要です。)

#include "DxLib.h"

char Key[256];
LONGLONG StartTime, EndTime;
const int DRAW_TIMES = 20000;
int GHandle;

typedef int XY;
XY x = 0, y = 0;

void Draw()
{
StartTime = GetNowHiPerformanceCount() ; // 現在経過時間を得る
for(int i=0;i<DRAW_TIMES;i++){
// 用いる関数の設定。コメントアウトで。
int w,h; GetGraphSize(GHandle, &w, &h); DrawGraph( x-w/2 , y-h/2 , GHandle , TRUE ) ; // DrawGraph
// DrawRotaGraph( x , y , 1.0f , 0.00 , GHandle , TRUE ) ; // DrawRotaGraph
}
EndTime = GetNowHiPerformanceCount() - StartTime;
}

// プログラムは WinMain から始まります
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
// ===前処理===
ChangeWindowMode(true);

if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1 ; // エラーが起きたら直ちに終了
}

SetDrawScreen( DX_SCREEN_BACK );
// ============


// 計測する
GHandle = LoadGraph("0.png");


int tmp;
while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll(Key) ){
ClearDrawScreen();

DrawFormatString( 0, 40, GetColor( 255 , 255 , 255 ), " タイム %d ", EndTime) ;

// Draw()関数を、Aを押したときのみ呼び出す仕組み
if ( Key[KEY_INPUT_A] )
++tmp;
else
tmp = 0;

if ( tmp == 1 )
Draw();



ScreenFlip();
}


DxLib_End() ; // DXライブラリ使用の終了処理

return 0 ; // ソフトの終了
}



833ポイント を手に入れた。

Name: バグ  ..ハッカー(175,874ポイント)   Date: 2009/12/06(日) 09:59   No:43494     
Title: Re:龍神録で、DrawGraphでなくDrawRotaGraphを用いている    
画像の表示位置の指定方法に関しては、中心だろうが左上だろうが関係無くありませんか?
どうしても中心位置で指定したいならば、関数を自作すればよいだけだと思いますが…

例えば…


int DrawGraphEx(int centerX, int centerY, int width, int height, int GrHandle, int TransFlag)
{
DrawGraph(centerX - width / 2, centerY - height / 2, GrHandle, TransFlag);
}



130ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,096,767ポイント)   Date: 2009/12/06(日) 10:37   No:43500     
Title: Re:龍神録で、DrawGraphでなくDrawRotaGraphを用いている    
私が回転も拡大もしない画像でよくRota関数を使っているのは

・簡単に中心に描画出来る
・実行速度もDrawGraphよりそんなに遅くならない
・エフェクト関連でこの先拡大縮小することがあれば対応しやすい

という理由からです。
自作関数で中心を示せるかもしれませんが、省ける手間は省こうという感じで。
実行速度もそこまで計算したわけではありませんでしたが、
そんなに遅くならないようです。
サーフェイスを一ピクセルずつ扱ったライブラリを作ったりしましたが、
拡大回転処理があってここまで処理時間が遅くならないのは信じられない位速いです・・。

ただしもちろん余分な処理をしている分Rotaの方が遅いのは仕方ないと思います。


153ポイント を手に入れた。

Name: 3T  ..かけだし(1,833ポイント)   Date: 2009/12/06(日) 11:15   No:43503     
Title: Re:龍神録で、DrawGraphでなくDrawRotaGraphを用いている    
>バグさん

STGでは中心でないと見た目がおかしくなってしまう気がするのですが……。
そういう画像を作れば対処できないこともないですが、スマートでない気がします。

確かに、そういう関数を作ればいいだけですが、それなら何故Dixqさんは遅いRotaを採用したのか、ということでした。



>Dixqさん

なるほど、分かりました。
確かに簡単に作れはしますね。

ありがとうございます。


67ポイント を手に入れた。

Name: 3T  ..かけだし(1,838ポイント)   Date: 2009/12/06(日) 11:16   No:43504 解決!     
Title: Re:龍神録で、DrawGraphでなくDrawRotaGraphを用いている    
解決踏

5ポイント を手に入れた。



Name: ぽんちょ  ..ぴよぴよ(643ポイント)   Date: 2009/12/06(日) 03:30   No:43477       
Title: 最高値の求め方が分かりません    

初めて質問させていただきます。
今年の4月からプログラミングを習い始めました。
現在はプログラミング初級を学んでいます。

最高気温を表示させるというプログラムなのですが
実行した時に最高気温が0.0と表示されてしまいます。
エラーは出ていないのですが出来ないので質問させていただきました。
BCC Developerを使って学んでいます。


OS:Vista
コンパイラ:bcc32


初投稿なので至らない部分があるかもしれませんがよろしくお願いします。

#include <stdio.h>

float get_max(float *tblp, int cnt);

main(void)
{
float kion[31]={22.9, 27.1, 30.0, 26.3, 24.9, 35.0, 33.7,
28.5, 30.1, 32.4, 28.9, 29.0, 29.9, 32.6,
30.5, 30.8, 31.7, 29.3, 30.8, 28.1, 29.7,
31.1, 34.6, 34.9, 31.9, 25.3, 27.8, 30.3,
32.2, 32.9, 27.1 };
int max_indx;

max_indx=get_max(kion,31);
printf("最高気温は%3.1fです\n",max_indx);
}

float get_max(float *tblp, int cnt)
{
int i,max_i;
float *wp;

wp=tblp;
max_i=0;

for(i=0;i!=cnt;i++){
if(*tblp>=*wp){
wp=tblp;
max_i=i;
}
tblp++;
}
return max_i;

}


get_max部が間違っているのではないかと思うのですが
よく解らないので教えてください。

よろしくお願いします!


643ポイント を手に入れた。


Name: kazuoni [URL]  ..ハッカー(116,589ポイント)   Date: 2009/12/06(日) 04:19   No:43479     
Title: Re:最高値の求め方が分かりません    
printf("最高気温は%3.1fです\n",kion[max_indx]);

ですね^^;


27ポイント を手に入れた。

Name: box  ..ハッカー(147,604ポイント)   Date: 2009/12/06(日) 06:29   No:43483     
Title: Re:最高値の求め方が分かりません    

提示されたソースをそのままコンパイルすると、

> float kion[31]={22.9, 27.1, 30.0, 26.3, 24.9, 35.0, 33.7

この行の最後にカンマがないため、コンパイルエラーが出ます。
よって、

>実行した時に最高気温が0.0と表示されてしまいます。

このようにはなりません。
実行したときに最高気温を0.0と表示するソースを、
そのままコピー&ペーストして提示してください。


150ポイント を手に入れた。

Name: ぽんちょ  ..ぴよぴよ(649ポイント)   Date: 2009/12/06(日) 10:05   No:43496 解決!     
Title: Re:最高値の求め方が分かりません    
>kazuoniさん
おかげで出来ました。
よく考えてみると返している値はiの部分だけだったんですね。
納得しました!
ありがとうございました!

>boxさん
コピー&ペーストはしたのですが、
打っている時に消してしまったみたいです^^;
すみませんでした。
ありがとうございました!


6ポイント を手に入れた。



Name: シノニム  ..ぴよぴよ(0ポイント)   Date: 2009/12/03(木) 12:31   No:43116       
Title: d3dx9d_37.dllが見つからない・・・(´・ω・`)    
今回はVisual Studio実行時に出たエラーについて質問します

タイトルのエラーが出てウィンドウが作成できません
DXをインストールし直したらいけるかな?と思ったんですが、これも効果ナシ・・・
言語はC++で、OSはwindowsXPです
C++といってもホントにかじり始めた程度なので、よくわからないことが多いです

それと初歩的な質問なんですが・・・コンパイラ名っていうのはどこで確認できるんでしょうか?
教えていただけたらと思います

よろしくお願いします


208ポイント を落としてしまった。


Name: Ma  ..上級者(21,963ポイント)   Date: 2009/12/03(木) 12:37   No:43118     
Title: Re:d3dx9d_37.dllが見つからない・・・(´・ω・`)    
ダウンロードして、システムフォルダだったかに、つっこめばおk。

ぐーぐるで
d3dx9d_37.dll
と検索すればDL可能。


59ポイント を手に入れた。

Name: 御津凪 [URL]  ..ハッカー(126,670ポイント)   Date: 2009/12/03(木) 12:50   No:43123     
Title: Re:d3dx9d_37.dllが見つからない・・・(´・ω・`)    
「コンパイラ名」はプログラムコードから実行可能ファイルを作ってくれるプログラムの一つです。
この場合、「Visual Studio」とあるので、「Visual Studio」の後に続く名前(Visual Studio 2008 とか)を含めれば、
こちらがそちらでどんなコンパイラを使っているかということが分かります。


d3dx9d_37.dll が見つからないとのことですが、それは DirectX SDK のインストール時に
デバッグランタイムをインストールするように指定しないとインストールされないことがあります。
(最新版のは d3dx9d_42.dll を使用するので最新版をインストール後、再度ビルドしなおす必要があります)


Ma さんの方法もできないこともないですが、ちゃんとしたところ(公式)からのほうが安全です。


2倍のポイントを手に入れた! 468ポイント を手に入れた。

Name: 御津凪 [URL]  ..ハッカー(126,753ポイント)   Date: 2009/12/03(木) 12:59   No:43126     
Title: Re:d3dx9d_37.dllが見つからない・・・(´・ω・`)    
追記:
デバッグランタイムがインストールされると、標準で下記の場所にインストールされます。

C:\Program Files\Microsoft DirectX SDK (August 2009)\Developer Runtime\x86

(DirectX SDK (August 2009) をインストールした場合)

上記のことを行ってもうまくいかなかった(d3dx9d_42.dll が見つからないなど)場合は、ここから該当する DLL を探し、
それをシステムディレクトリか実行するプログラムのあるディレクトリにつっこめばとりあえず動くはずです。


83ポイント を手に入れた。

Name: シノニム  ..ぴよぴよ(127ポイント)   Date: 2009/12/03(木) 17:28   No:43182     
Title: Re:d3dx9d_37.dllが見つからない・・・(´・ω・`)    
上記のとおりディレクトリにつっこんでみたところ、

***.exe -正しくないイメージ
アプリケーションまたはDLL c:\・・・Debug\d3dx9d_37.dllは正しいWindowsイメージではありません。これをインストールディスクのファイルと照合してください

というメッセージが表示されました
これは一体・・・(´・ω・`)


127ポイント を手に入れた。

Name: 御津凪 [URL]  ..ハッカー(126,882ポイント)   Date: 2009/12/03(木) 17:38   No:43186     
Title: Re:d3dx9d_37.dllが見つからない・・・(´・ω・`)    
そのエラーは DLL ファイルか、アプリケーションファイルが壊れていることを意味します。

どちらの方法で行いましたか?

インストールした場合ならインストールのエラーだと考えられますので、再インストールしてみる必要があります。
そうでない場合なら、正規なバージョンの DLL ではない(ニセモノ)ということになります。
(インストールされた DLL ファイルの名前を代えてやろうとしてもダメ)

それでもダメならウイルスに感染している恐れがあります。


129ポイント を手に入れた。

Name: YuO  ..プログラマー(38,832ポイント)   Date: 2009/12/03(木) 17:46   No:43188     
Title: Re:d3dx9d_37.dllが見つからない・・・(´・ω・`)    
> 上記のとおりディレクトリにつっこんでみたところ、

というのは,どのようにファイルを「つっこんだ」のですか?
表現から,Maさんの方法のように思えるのですが……。
# SDKであれば,インストールした結果,ファイルが存在するようになるので「つっこんだ」とは通常表現しません。

原則的に,Maさんの方法は推奨できません。
場合によっては,ウィルスが仕込まれている可能性すらあり得ます。
各ファイルは,信頼できる配布元から推奨された方法でインストールするのが大前提です。

で,ファイル名をググって出てきた,
WIKI: link集/DirectX - NomisoBraaan Wiki
http://www.nbrains.net/php/pukiwiki/index.php?link%BD%B8%2FDirectX
によると,March 2008版のDirectX SDKに入っているようです。

なので,
SITE: Download details: DirectX SDK - (March 2008)
http://www.microsoft.com/downloads/details.aspx?FamilyId=572BE8A6-263A-4424-A7FE-69CFF1A5B180&displaylang=en
からちゃんとSDKをダウンロードし,インストールしてみてはどうでしょうか。


73ポイント を手に入れた。

Name: シノニム  ..ぴよぴよ(319ポイント)   Date: 2009/12/03(木) 22:11   No:43240     
Title: Re:d3dx9d_37.dllが見つからない・・・(´・ω・`)    
YuOさんに見つけていただいたサイトで再インスコしてみたんですが、さきほどと同じメッセージが出ました

御津凪さんに言われてウィルスかと思い、スキャンしてみたんですが、どうやら見つけられなかったようです
さきほど見落としていたようで今気付いたんですが、

(最新版のは d3dx9d_42.dll を使用するので最新版をインストール後、再度ビルドしなおす必要があります)

再度ビルドというのはリビルドのことでしょうか・・・?(間違っていたらすみません)
一応リビルドもしてみたんですが、結果は変わりませんでした(´・ω・`)


192ポイント を手に入れた。

Name: 御津凪 [URL]  ..ハッカー(127,651ポイント)   Date: 2009/12/04(金) 09:10   No:43282     
Title: Re:d3dx9d_37.dllが見つからない・・・(´・ω・`)    
> YuOさんに見つけていただいたサイトで再インスコしてみたんですが、

ということは DirectX SDK - (March 2008) をインストールしたのですね。

たぶんですが、

C:\Program Files\Microsoft DirectX SDK (March 2008)\Developer Runtime\x86

上記のディレクトリの中に d3dx9d_37.dll があるのではないかと思います。
(実際にインストールしていないので存在しているかどうかチェックしていません)


118ポイント を手に入れた。

Name: シノニム  ..ぴよぴよ(244ポイント)   Date: 2009/12/04(金) 14:24   No:43320     
Title: Re:d3dx9d_37.dllが見つからない・・・(´・ω・`)    
御津凪さんの記述してくださった場所にファイルはあるんですが・・・

これはやっぱりウィルスなんですかね・・・?
自分のウィルスソフトがダメなのかな

それかVisual Studioにそういう設定をするところがあるんですかね?


75ポイント を落としてしまった。

Name: Mist  ..比類無きプログラマー(76,341ポイント)   Date: 2009/12/04(金) 14:34   No:43322     
Title: Re:d3dx9d_37.dllが見つからない・・・(´・ω・`)    
Direct X SDK,Visual Stuidoをアンインストールして、再インストールしてみてはどうでしょう。(時間掛かるけど)

38ポイント を手に入れた。

Name: シノニム  ..ぴよぴよ(341ポイント)   Date: 2009/12/04(金) 17:51   No:43346     
Title: Re:d3dx9d_37.dllが見つからない・・・(´・ω・`)    
Visual Studioは3度程アンインストールしてみましたが、ダメでした

DXSDKはアンインストールの方法がわからず、ググってみたんですがXPでは対応してないフリーウェアを使えと言われたので、結局program files内のファイルを削除して再インスコする形で試してみました。結果はダメでしたが・・・


97ポイント を手に入れた。

Name: 御津凪 [URL]  ..ハッカー(127,763ポイント)   Date: 2009/12/04(金) 17:57   No:43348     
Title: Re:d3dx9d_37.dllが見つからない・・・(´・ω・`)    
他の DirectX9 のサンプル(プロジェクトファイル付き)をいくつかビルドして試してみてください。
無事に実行することができれば、エラーの出てるほうのプロジェクトの設定に問題があるかもしれません。

それでもダメなら PC 側に問題があると考えても良いかもしれません。


112ポイント を手に入れた。

Name: シノニム  ..ぴよぴよ(434ポイント)   Date: 2009/12/05(土) 15:13   No:43438 解決!     
Title: Re:d3dx9d_37.dllが見つからない・・・(´・ω・`)    
プロジェクトを作り直してソースだけ移動してみた結果、なんとかなりそうです!

長々とご迷惑おかけしました!
あとは自分で頑張ってみます!

返答していただいた皆様、本当にありがとうございました


93ポイント を手に入れた。



Name: カレー屋  ..ぴよぴよ(77ポイント)   Date: 2009/12/04(金) 01:03   No:43269       
Title: アスキーコードの変換    
vista でwin32コンソールアプリケションのC++です。
C言語ははじめたばかりです。

printfのscanfでデバッグのときに
abcABC123sDFgh#"x32YY=
っていう文字をうつと
ABCabc***SdfGH**X**yy*
と表示されるようにしたいんですけど(小文字は大文字に、大文字は小文字になるようにそれ以外は*と
表示される)
アスキーコードについてまだ良く分からないので、
教えていただける方よろしくおねがいします。


77ポイント を手に入れた。


Name: sizuma [URL]  ..上級者(18,489ポイント)   Date: 2009/12/04(金) 01:32   No:43272     
Title: Re:アスキーコードの変換    
isalpha関数でアルファベットか判定
isupper関数で大文字かどうか判定し、判定が真ならばtolower関数で小文字に変換
それ以外は小文字なのでtoupper関数で大文字に変換。

というのはどうでしょうか?

アスキーコードを数字として扱って弄りたいならば、アスキーコード表を見ながら大文字アルファベットの範囲と小文字の範囲かどうかを判定して、それぞれ逆になるように数字を加減算すればいいと思います。
僕の記憶(へっぽこ)が正しければ、大文字と小文字の差は20だったと・・・


125ポイント を手に入れた。

Name: 彼ー屋  ..ぴよぴよ(57ポイント)   Date: 2009/12/04(金) 01:47   No:43273     
Title: Re:アスキーコードの変換    
大文字アルファベットの範囲と小文字の範囲かどうかを判定して、
それぞれ逆になるように数字を加減算するっていうのはどうやって
やればいいですか?


57ポイント を手に入れた。

Name: sizuma [URL]  ..上級者(18,748ポイント)   Date: 2009/12/04(金) 01:55   No:43274     
Title: Re:アスキーコードの変換    
http://e-words.jp/p/r-ascii.html
Cのchar型は、数字として扱えます。
アスキーコードっていうのは、
「0x0041は大文字のAにしよう」
みたいなのが決められてる文字を表現する規則みたいなものです。
これだけじゃ日本語とかを表現できないので、他にも文字コードはたくさんあります。

上の表をみて大文字アルファベットの数字としての範囲が分かりますよね?
そしたらいくつ足せばその文字の小文字になるかを考えてみましょう。


追記
やはりへっぽこ記憶力でしたね。
差は0x0020でした^^;
というか20ってアルファベットの総数を下回ってるという、それ以前の話・・・・
ここは上の投稿も16進数のつもりでした、ってことにしよう。
そうしよう。


259ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(131,547ポイント)   Date: 2009/12/04(金) 06:54   No:43278     
Title: Re:アスキーコードの変換    
C言語ははじめたばかりらしいですが、C++はどうなのでしょうか?

今回の中心となる処理だけ例を示してみます。
 

int c = static_cast<unsigned char>(s[i]);
if (std::isalpha(c))
s[i] = c ^ 0x20;
else
s[i] = '*';

排他的論理和を使えば、大文字小文字の変換は非常に簡単に行うことができます
ただし、これはCロケールの場合だけですので、std::setlocaleでロケールを変更するなどしていた場合は通用しません。


140ポイント を手に入れた。

Name: non  ..比類無きプログラマー(74,443ポイント)   Date: 2009/12/04(金) 08:50   No:43280     
Title: Re:アスキーコードの変換    
>排他的論理和を使えば、大文字小文字の変換は非常に簡単に行うことができます

なるほど、そうですね。初めて気がつきました。


38ポイント を手に入れた。

Name: カリーやカレー  ..ぴよぴよ(552ポイント)   Date: 2009/12/04(金) 14:14   No:43317     
Title: Re:アスキーコードの変換    
一応こんな感じでやってみたんですけど
#include <stdio.h>
int main(void)
{
char aa[100];
{
printf("99文字以下で文字列を入力してください。");
scanf("%s", aa);
printf("変換された文字列は");

}
for (aa = 0; aa <= 2; aa++)
{aa = aa + 32;
printf("%c", aa);
}
for (aa = 3; aa <= 5; aa++)
{aa = aa - 32;
printf("%c", aa);
}
for (aa = 6; aa <= 8; aa++)
{printf("*");}
for (aa = 9; aa <= 9; aa++)
{aa = aa - 32;
printf("%c", aa);
}
for (aa = 10; aa <= 11; aa++)
{aa = aa + 32;
printf("%c");
}
for (aa = 12; aa <= 13; aa++)
{aa = aa - 32;
printf("%c", aa);
}
for (aa = 14; aa <= 15; aa++)
{printf("*");
}
for (aa = 16; aa <= 16; aa++)
{
aa = aa - 32;
printf("%c", aa);
}
for (aa = 17; aa <= 18; aa++)
{printf("*");
}
for (aa = 19; aa <= 20; aa++)
{aa = aa + 32;
printf("%c", aa);
}
for (aa = 21; aa <= 21; aa++)
{
printf("*");
}
}
}
これで、デバッグなしで開始したらビルドエラーがでたんですけどそれを無視してやったらできました。
ですけど正直もっと効率のいい方法があると思うのでぜひ良かったら教えてください。
お願いします。 長くてすみません。


552ポイント を手に入れた。

Name: Mist  ..比類無きプログラマー(76,303ポイント)   Date: 2009/12/04(金) 14:27   No:43321     
Title: Re:アスキーコードの変換    
> for (aa = 0; aa <= 2; aa++)

この辺とかaaを配列としてまともに扱えていないので効率化以前の問題。



34ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(131,671ポイント)   Date: 2009/12/04(金) 17:10   No:43341     
Title: Re:アスキーコードの変換    
よく考えてみると、ASCIIに決まっているのだからロケールに依存しないようにできますね。

int c = static_cast<unsigned char>(s[i]);
int c2 = c | 0x20;
if ('a' <= c2 && c2 <= 'z')
s[i] = c ^ 0x20;
else
s[i] = '*';

ほとんど答えそのままなので、これでできるでしょう。
# またスルーされるかもしれませんが...



110ポイント を手に入れた。

Name: non  ..比類無きプログラマー(74,635ポイント)   Date: 2009/12/04(金) 18:27   No:43352     
Title: Re:アスキーコードの変換    
>これで、デバッグなしで開始したらビルドエラーがでたんですけどそれを無視してやったらできました。
何が、どうできたんでしょ?

># またスルーされるかもしれませんが...
私は、見てますよー。質問者だけが、見てるわけではありません。いつも勉強になります。


31ポイント を手に入れた。

Name: sizuma [URL]  ..上級者(19,191ポイント)   Date: 2009/12/04(金) 22:53   No:43375     
Title: Re:アスキーコードの変換    
僕も見てますー
自分で書くよりずっとスマートなコードなので勉強になります。

判定一個しかない
キャストでちゃんとstatic_castしてる
排他的論理和、かっこいい。
おそらく加減算よりもビット演算の方が早いんですよね?

たかぎさんのコードは僕が使わせていただきました。
ほとんどコピペですけど^^


117ポイント を手に入れた。

Name: box  ..ハッカー(147,406ポイント)   Date: 2009/12/04(金) 22:59   No:43377     
Title: Re:アスキーコードの変換    
パッと見て何をしているかがすぐわかるのは、
is何とか系を使っているコードだと思います。


30ポイント を落としてしまった。

Name: たかぎ [URL]  ..ハッカー(132,103ポイント)   Date: 2009/12/04(金) 23:37   No:43387     
Title: Re:アスキーコードの変換    
> パッと見て何をしているかがすぐわかるのは、
> is何とか系を使っているコードだと思います。

それは何ともいえませんよ。
見ている箇所より前で、setlocaleを呼ばれているかもしれませんからね。


32ポイント を落としてしまった。

Name: box  ..ハッカー(147,454ポイント)   Date: 2009/12/04(金) 23:45   No:43388     
Title: Re:アスキーコードの変換    
> 見ている箇所より前で、setlocaleを呼ばれているかもしれませんからね。

呼んでいてもいなくても、is何とかは「関数の名前から何をしているかが
多くの人にすぐわかる」という利点があることには変わりないと思います。


48ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(132,138ポイント)   Date: 2009/12/04(金) 23:46   No:43389     
Title: Re:アスキーコードの変換    
> 呼んでいないかもしれません。

はい。
けれども、それを見極めるには、ほぼ全ソースに目を通す必要が出てきます。


35ポイント を手に入れた。

Name: tkmakwins15  ..比類無きプログラマー(98,656ポイント)   Date: 2009/12/05(土) 00:01   No:43390     
Title: Re:アスキーコードの変換    
効率といってもさまざまな効率があります。実行速度、省メモリ、ソースコードの短さ、ソースコードの簡潔さ、そのほかにも有りますが、どの点で効率を求めるのかによってもスマートな解法は違ってきます。
たとえば、

//テーブル
const char *table="*****************************************************************"
"abcdefghijklmnopqrstuvwxyz******ABCDEFGHIJKLMNOPQRSTUVWXYZ**************************"
"************************************************************************************"
"**********************";
//変換作業
ch2=table[(unsigned char)ch1];

という風に書くこともできます、
けれども、これは実行速度の点からはスマート(とは限らないけど)でしょうけれども、メモリ使用量、ソースの短さ簡潔さの点から言ったら、全くスマートではないですよね。
逆に、

if(islower((unsigned char)ch1))ch2=toupper((unsigned char)ch1);
else if(isupper((unsigned char)ch1))ch2=tolower((unsigned char)ch1);
else ch2='*';

と書けば、ソースコードの分かりやすさという面ではスマートでしょうけれども、たかぎさんのソースコードのほうが実行速度も上でしょうし、ソースコードも短いですよね。


1ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(132,299ポイント)   Date: 2009/12/05(土) 00:04   No:43391     
Title: Re:アスキーコードの変換    
boxさん、さっきの内容書き換えました?

> 呼んでいてもいなくても、is何とかは「関数の名前から何をしているかが
> 多くの人にすぐわかる」という利点があることには変わりないと思います。

それは間違いありません。
適切な関数を呼ぶことで、コードの意図が明確になります。
ただ、厳密な動作を把握する上では必ずしも楽ではないということです。

実際の開発では頻繁にロケールを切り替えることはしませんし、今回はC++なので、仮にロケールを切り替えるとしてもsetlocaleではなくstd::localeを使うでしょうね。
自分で開発するコードはそれでよいのですが、第三者がそれを読む場合は事情が変わってきます。


161ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(132,361ポイント)   Date: 2009/12/05(土) 00:07   No:43392     
Title: Re:アスキーコードの変換    
tkmakwins15さん
> けれども、これは実行速度の点からはスマート(とは限らないけど)でしょうけれども、メモリ使用量、ソースの短さ簡潔さの点から言ったら、全くスマートではないですよね。

スマートかどうかはともかく、tolowerやtoupperは、それと同じ方法で実装されているケースが多々あります。
is系関数も多くは表引きです。


62ポイント を手に入れた。

Name: tkmakwins15  ..比類無きプログラマー(98,791ポイント)   Date: 2009/12/05(土) 00:19   No:43394     
Title: Re:アスキーコードの変換    
>たかぎさん

>tolowerやtoupperは、それと同じ方法で実装されているケースが多々あります。

はい、そのことは分かっていましたが、カレー屋さんのいう効率がどのケースに当てはまるものなのか?
ということが明確にされていないので、ここではあえて例として車輪の再発明を実行させていただきました。
それと、to系関数もロケールに依存してしまうので…

>カレー屋さん

お願いです、掲示板規約に則って
・ソースコードを<pre></pre>(<>は半角)で囲む
・同一HNを使う
の二点を守ってください。


135ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(132,520ポイント)   Date: 2009/12/05(土) 12:06   No:43424     
Title: Re:アスキーコードの変換    
可読性とロケールを両立させるのであれば...

const std::locale& loc = std::locale::classic();
char c = s[i];
if (std::islower(c, loc))
s[i] = std::toupper(c, loc);
else if (std::isupper(c, loc))
s[i] = std::tolower(c, loc);
else
s[i] = '*';

こんな風にもできますが、実行効率、空間効率ともに最悪ですね。


3ポイント を手に入れた。



Name: 寺初心者  ..かけだし(1,440ポイント)   Date: 2009/12/04(金) 11:51   No:43296       
Title: fps60にしたい    
http://dixq.net/rp/43.html

//fps
#define FLAME 60

//fpsのカウンタ、60フレームに1回基準となる時刻を記録する変数
int fps_count,count0t;
//平均を計算するため60回の1周時間を記録
int f[FLAME];
//平均fps
double ave;
============以下略===============

管理人様のfpsを60に制御するプログラムなんですが
DXライブラリでこのプログラムを一般化して使うのは可能でしょうか?変数はすべて
定義しましたが、エラーがでます。メインは以下のようにしました。

while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && Key[KEY_INPUT_ESCAPE]==0){
draw_fps(0,0);
fps_count++;
ScreenFlip();
fps_wait();
}



315ポイント を手に入れた。


Name: kazuoni [URL]  ..ハッカー(116,296ポイント)   Date: 2009/12/04(金) 12:01   No:43297     
Title: Re:fps60にしたい    
一般化とはどのようなことを指しているか明確にしてください。
また、上記だけではエラーが出ますと言われても、何のエラーなのかもわからないので、
詳細の追記をよろしくお願いします。


69ポイント を手に入れた。

Name: Dixq (管理人)  ..ウィザード(1,093,467ポイント)   Date: 2009/12/04(金) 12:15   No:43299     
Title: Re:fps60にしたい    
勿論出来ますよ^^
一般化というのは龍神録のプログラムでだけでなく自分のプログラムにもササっと導入できるようにするって事ですかね?
見た感じ問題なさそうですが、エラーが出るならそのメッセージを教えてください


64ポイント を落としてしまった。

Name: 寺初心者  ..かけだし(1,475ポイント)   Date: 2009/12/04(金) 12:24   No:43301     
Title: Re:fps60にしたい    
一般化とは単にDXライブラリで表示させるだけです。

エラーは
ポップアップで
Debug Assertion Failed
File\なんたら\printf.c
Line55

Expression( str!=NULL)

です。よろしくお願いします。環境はVC++EEです。


35ポイント を手に入れた。

Name: 寺初心者  ..かけだし(1,663ポイント)   Date: 2009/12/04(金) 12:41   No:43304     
Title: Re:fps60にしたい    
Debug Assertion Failed!

Program:...
File:fprintf.c
Line:55

Expression:(str!=NULL)

For information on how your program can cause an assertion failure,see the Visual C++ documentation on asserts

って浮かび上がります。私がファイルの定義が分からないからだと
思います。
下のかたのmouseさんとまったく同じものです。
ttp://homepage1.nifty.com/MADIA/vc/vc_bbs/200801/200801_08010003.html


188ポイント を手に入れた。

Name: 寺初心者  ..かけだし(1,807ポイント)   Date: 2009/12/04(金) 13:55   No:43315     
Title: Re:fps60にしたい    
printfの警告がでたので
fprintf(fp,"%d:%d\n",fps_count,term);
if(fps_count==600)
fclose(fp);
の部分をとったらコンパイルでき動きましたけど
fpsが250とか・・・
私には分からないですね。分かる人がいたらよろしく
お願いいたします。



2倍のポイントを手に入れた! 144ポイント を手に入れた。

Name: Libra  ..中級者(11,460ポイント)   Date: 2009/12/04(金) 15:18   No:43325     
Title: Re:fps60にしたい    
Expression:(str!=NULL)

警告の通り、文字列操作がうまく行っていないのでしょう。
表示させている部分を含む、FPS関数を載せてください。


62ポイント を手に入れた。

Name: 寺初心者  ..入門者(2,981ポイント)   Date: 2009/12/04(金) 15:49   No:43326     
Title: Re:fps60にしたい    
ちょっと長くなりますが

//fps
#define FLAME 60

//fpsのカウンタ、60フレームに1回基準となる時刻を記録する変数
int fps_count,count0t;
//平均を計算するため60回の1周時間を記録
int f[FLAME];
//平均fps
double ave;
File *fp;//私が加えたもの

//FLAME fps になるようにfpsを計算・制御
void fps_wait(){
int term,i,gnt;
static int t=0;
if(fps_count==0){//60フレームの1回目なら
if(t==0)//完全に最初ならまたない
term=0;
else//前回記録した時間を元に計算
term=count0t+1000-GetNowCount();
}
else //待つべき時間=現在あるべき時刻-現在の時刻
term = (int)(count0t+fps_count*(1000.0/FLAME))-GetNowCount();

fprintf(fp,"%d:%d\n",fps_count,term);
if(fps_count==600)
fclose(fp);
if(term>0)//待つべき時間だけ待つ
Sleep(term);
gnt=GetNowCount();
if(fps_count==0)//60フレームに1度基準を作る
count0t=gnt;
f[fps_count]=gnt-t;//1周した時間を記録
t=gnt;
//平均計算
if(fps_count==FLAME-1){
ave=0;
for(i=0;i<FLAME;i++)
ave+=f[i];
ave/=FLAME;
}
fps_count = (++fps_count)%FLAME ;
}

//x,yの位置にfpsを表示
void draw_fps(int x, int y){
if(ave!=0){
DrawFormatString(x, y,color[0],"[%.1f]",1000/ave);
}
return;
}

をヘッダーに書いて上のメインファイルで関数として使ってます。
警告文は上の通りです。
ちなみにhttp://dixq.net/g/#s6の方はうまくいっています。



2倍のポイントを手に入れた! 1,174ポイント を手に入れた。

Name: Mist  ..比類無きプログラマー(76,385ポイント)   Date: 2009/12/04(金) 16:23   No:43328     
Title: Re:fps60にしたい    
ファイルのオープンはどこでしているんですか?
ファイルオープンせず(fpが不定値のまま)、fprintfすればエラーになるのは当然ですね。


44ポイント を手に入れた。

Name: 寺初心者  ..入門者(3,041ポイント)   Date: 2009/12/04(金) 16:26   No:43329     
Title: Re:fps60にしたい    
>Mistさん
私は
fprintf(fp,"%d:%d\n",fps_count,term);
if(fps_count==600)
fclose(fp);
の部分を取ってしまいました。
仮にするならどこが適切ですか?お願いします。


60ポイント を手に入れた。

Name: Libra  ..中級者(11,484ポイント)   Date: 2009/12/04(金) 16:31   No:43330     
Title: Re:fps60にしたい    
使う関数が違います。

fprintf→sprintf


2倍のポイントを手に入れた! 24ポイント を手に入れた。

Name: Mist  ..比類無きプログラマー(76,444ポイント)   Date: 2009/12/04(金) 16:39   No:43332     
Title: Re:fps60にしたい    
いや、その三行いらないんじゃないかな。
43章ダウンロードしてみましたけど、そこのソースにはそんな処理入ってませんから(^-^;


59ポイント を手に入れた。

Name: Libra  ..中級者(11,377ポイント)   Date: 2009/12/04(金) 16:51   No:43334     
Title: Re:fps60にしたい    
やりたい事がわかりました^^;
ファイルに前フレームの時間を保存して、
それを使ってfpsを制御しようとしてたのですね。
勘違いしてました、自分の上の書き込みは無しで。
寝ぼけてました、スミマセン・・・。

値を保持したいのであればstatic変数を用いれば良いです。


107ポイント を落としてしまった。

Name: 寺初心者  ..入門者(3,142ポイント)   Date: 2009/12/04(金) 17:08   No:43340     
Title: Re:fps60にしたい    
fprintf(fp,"%d:%d\n",fps_count,term);
if(fps_count==600)
fclose(fp);
消すと実行できるんですけどfps150くらいでるんです。
staticで
static int term,i,gnt;
としても結果は同じでした。


101ポイント を手に入れた。

Name: Libra  ..中級者(11,488ポイント)   Date: 2009/12/04(金) 17:23   No:43342     
Title: Re:fps60にしたい    

ave=0;
for(i=0;i<FLAME;i++)
ave+=f[i];
ave/=FLAME;
}



この部分を

ave=0;
for(i=0;i<FLAME;i++)
ave+=f[i];
}
ave/=FLAME;


このように変更してみてはどうでしょう?


111ポイント を手に入れた。

Name: 寺初心者  ..入門者(3,167ポイント)   Date: 2009/12/04(金) 17:39   No:43345     
Title: Re:fps60にしたい    
}の場所を変えろってことですよね?
すごい数値が変化して変になりました。


25ポイント を手に入れた。

Name: Libra  ..中級者(11,857ポイント)   Date: 2009/12/04(金) 17:54   No:43347     
Title: Re:fps60にしたい    
インデント直すので失敗してました。


#define FLAME 60

//fpsのカウンタ、60フレームに1回基準となる時刻を記録する変数
int fps_count,count0t;
//平均を計算するため60回の1周時間を記録
int f[FLAME];
//平均fps
double ave;
File *fp;//私が加えたもの

//FLAME fps になるようにfpsを計算・制御
void fps_wait(){
int term,i,gnt;
static int t=0;
if(fps_count==0){//60フレームの1回目なら
if(t==0)//完全に最初ならまたない
term=0;
else//前回記録した時間を元に計算
term=count0t+1000-GetNowCount();
}
else //待つべき時間=現在あるべき時刻-現在の時刻
term = (int)(count0t+fps_count*(1000.0/FLAME))-GetNowCount();

fprintf(fp,"%d:%d\n",fps_count,term);
if(fps_count==600)
fclose(fp);
if(term>0)//待つべき時間だけ待つ
Sleep(term);
gnt=GetNowCount();
if(fps_count==0)//60フレームに1度基準を作る
count0t=gnt;
f[fps_count]=gnt-t;//1周した時間を記録
t=gnt;
//平均計算
if(fps_count==FLAME-1){
ave=0;
for(i=0;i<FLAME;i++)
ave+=f[i];
ave/=FLAME;
}
fps_count = (++fps_count)%FLAME ;
}

//x,yの位置にfpsを表示
void draw_fps(int x, int y){
if(ave!=0){
DrawFormatString(x, y,color[0],"[%.1f]",1000/ave);
}
return;
}


369ポイント を手に入れた。

Name: 寺初心者  ..入門者(3,200ポイント)   Date: 2009/12/04(金) 18:03   No:43349     
Title: Re:fps60にしたい    
Debug Assertion Failed!

Program:...
File:fprintf.c
Line:55

Expression:(str!=NULL)

先程張り付けてコンパイルしましたが
上の結果でした。いやみじゃないんですが・・・


33ポイント を手に入れた。

Name: Libra  ..中級者(11,990ポイント)   Date: 2009/12/04(金) 18:12   No:43350     
Title: Re:fps60にしたい    
上のは最初のソースをインデントを直しただけのものです。
つまり、最初のエラーが出てるままです。

自分の持ってるソースを持ってくれば、動くでしょうが、
提示されているソースをなんとか直して動かしたいと・・・・。



とりあえず、動くものを^^;


133ポイント を手に入れた。

Name: 寺初心者  ..入門者(3,254ポイント)   Date: 2009/12/04(金) 18:18   No:43351     
Title: Re:fps60にしたい    
これは動きますね。ちゃんとした結果もでます。
本当にありがとうございます。
どうしても上のソースで出来なければ、これでやってみます。


54ポイント を手に入れた。

Name: Libra  ..中級者(12,087ポイント)   Date: 2009/12/04(金) 18:52   No:43355     
Title: Re:fps60にしたい    
先程、自分の環境にDXライブラリ入れて動かしたところ、
正常に動いたのですが・・・。
FPS:59.9あたりで安定してますね。


97ポイント を手に入れた。

Name: 寺初心者  ..入門者(3,317ポイント)   Date: 2009/12/04(金) 19:56   No:43360     
Title: Re:fps60にしたい    
ありがとうございます。しかし、fpsを60に制御するとなにも
かもカクカクになってしまします。
この原因はなんなのでしょうか?
fpsを制御しないと普通にアニメーションするんですが・・・・


63ポイント を手に入れた。

Name:  ..ぴよぴよ(137ポイント)   Date: 2009/12/05(土) 11:25   No:43418     
Title: Re:fps60にしたい    
数百回やって正常だとしていたものを60回しかやってないんだからコマ落ちもする

バックバッファ使ってます?


44ポイント を手に入れた。



Name: Mist  ..比類無きプログラマー(74,516ポイント)   Date: 2009/12/03(木) 17:08   No:43177       
Title: 久しぶりの雑談スレ    
http://www.play21.jp/board/formz.cgi?action=res&resno=43020&page=&id=dixq&rln=43176&vino=61

さきほどの続きはこちらで。
もしくは他の話題でもOK (^-^b


42ポイント を手に入れた。


Name: たかぎ [URL]  ..ハッカー(130,937ポイント)   Date: 2009/12/03(木) 17:29   No:43184     
Title: Re:久しぶりの雑談スレ    
前回に関連したところから始めると...

> 英小文字から英大文字にする関数 int toupper(int c) があると思うんですが、これを使わずに同じことをするにはどんな関数を使えばよいかわかる方教えてもらえませんか???

に対して、直球勝負でそのまま答えの

> wctob(towupper(btowc(c))) とか wctob(towctrans(btowc(c), wctrans("toupper"))) とか

という回答をしたわけですが、これが遠回りと指摘されたのは予想外でした。
使用するヘッダを書いていないので、その辺のやりとりは予想していましたが...

もうひとつ、「toupperを使わずに」ということなので、フリースタンディング環境のために使えないのかとも考えましたが、「どんな関数を使えばよいか」とのことなので、それはないと判断しました。


192ポイント を手に入れた。

Name: softya  ..熟練のプログラマー(58,688ポイント)   Date: 2009/12/03(木) 17:54   No:43189     
Title: Re:久しぶりの雑談スレ    
はい、勝手な憶測で回答する一味の一人だと思われるsoftyaです。

> 英小文字から英大文字にする関数 int toupper(int c) があると思うんですが、これを使わずに同じことをするにはどんな関数を使えばよいかわかる方教えてもらえませんか???

私は、この問いかけで学校の話題でtoupperを使ってはいけないという学校の課題だと憶測しました。
なので、自前my_toupperの作り方を回答しました。

当然ながら、たかぎ様に

>とのことなので、btowc, towupper, wctobを組み合わせれば実現できると答えたのですが、いつの間にか関数を自作する話になっているようです。
>英大文字とか英小文字とか書いているところが微妙ですが、toupperと同じことをするにはロケール等も実装しなければなりません。
>完全にオリジナルなら簡単ですが、既存のtoupperの動作に合わせるとなると至難の業です。
>少なくとも処理系を特定しなければ無理です。

とのお叱りを受けました。
私としては当人が納得しているし、処理系に問題が無ければOK(EBCDICなど特殊な文字コードでなければ)かなと。緩過ぎますか?

あと勝手にJISコードのシフトの件は無視しています。なぜならtoupperでもJISコード食わせたらまずいからで、それはtoupperの問題ではなくなるからです。一言書いておきゃ良かったかなとは反省してます(^^ゞ


440ポイント を手に入れた。

Name: 御津凪 [URL]  ..ハッカー(127,268ポイント)   Date: 2009/12/03(木) 18:01   No:43190     
Title: Re:久しぶりの雑談スレ    
話を折るようですみませんが、
質問者達に規約内容を読ませやすくする一つの案を書いておきます。

(添付した画像は私のサイトで使ってる phpBB のフォーラム掲示板です)

規約と注意事項のページを、添付画像の告知トピックのようにトピック一覧内の上部に常に存在するようになれば、
心理的(統計学的?)に見てみようと思ってくれる可能性が高いような気がします。

それと、この類(規約云々)の話し合いは定期的に出やすいような気がするので、
それ専用のトピックあるいは専用の掲示板を用意し、その様子を本掲示板内で表示するような仕組みがあれば、
初めて訪れた方も興味を持って規約を見てくれる確率が高くなるかもしれません。

とはいっても、質問掲示板なのでそこまでする必要があるかは分かりませんが。

そもそもここの掲示板はそういう機能がある掲示板ではないと思いますので、
これらはあくまで一つの案、ということになります。


386ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(131,266ポイント)   Date: 2009/12/03(木) 18:45   No:43198     
Title: Re:久しぶりの雑談スレ    
softyaさん
> 当然ながら、たかぎ様に
(中略)
> とのお叱りを受けました。

私はsoftyaさんを叱ったわけではありません。
状況の整理をしたかっただけです。
それともう一つ、処理系を明確にするようことの必要性を示唆しています。

> 私としては当人が納得しているし、処理系に問題が無ければOK(EBCDICなど特殊な文字コードでなければ)かなと。緩過ぎますか?

よく分かっていない人というのは、簡単に誘導尋問にかかってしまいます。
今回は誘導尋問ではありませんが、質問の文面ではない回答を示し、それがたまたま質問者にとって"受け入れやすい"ものであった場合、正しいかどうかは別にして、その回答を鵜呑みにしてしまう危険性があります。
質問者さんが納得したように見えても、それは論点をすり替えた結果、煙に巻かれただけかもしれません。

あくまで私の方針の話ですが、そういうことは避けたいと考えています。
なお、質問内容が間違っていて、間違った回答が得られたとしても、それは質問者本人の責任です。



329ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(130,881ポイント)   Date: 2009/12/03(木) 18:55   No:43202     
Title: Re:久しぶりの雑談スレ    
御津凪さん

以前にもこの話はしたのですが、目立つように利用規約を書いていても、読まない人は読まないものです。
http://www2.realint.com/cgi-bin/tbbs.cgi?pointc のように目立つように書かれていても規約無視は多発しています。
各スレで、規約違反の指摘が多発していても読まない人が多いことからも、それほど効果はないように思います。

一番確実な方法は、新規質問スレを立ち上げる際には、アンケートフォームのような形でテンプレートを埋めることを強制することです。
それでも、preタグでソースコードを囲むなどのテンプレート以外の規約は強制できませんが、かなりましになるはずです。

ただ、私はそこまで質問者を小馬鹿にしたくありませんし、何とか自発的に規約を読み、理解し、遵守するようにしてもらいたいと考えています。
規約は守るべきルールではありますが、それと同時に、回答を得やすくするための知恵です。
知恵のない行動をした者は、相応の結果(つまり、なかなか満足のいく回答が得られないという事態)を受け入れるしかないと思います。


385ポイント を落としてしまった。

Name: 御津凪 [URL]  ..ハッカー(127,485ポイント)   Date: 2009/12/03(木) 19:12   No:43206     
Title: Re:久しぶりの雑談スレ    
> 以前にもこの話はしたのですが、目立つように利用規約を書いていても、読まない人は読まないものです。

そのことは重々承知しています。
上記の案はその上で提案した、掲示板側でできる僅かな改善策なだけです。
もちろん興味のない方は見向きもしないでしょうし、過度の提示は利用者を遠ざける要因にもなりかねません。

しかし「掲示板に質問する」という目的のうち、「注意書きを見落とす」(読まないというのは別)ということを減らすことができれば、
双方のやり取りの手間を少なからず省くことができます。

それと先の案は「規約を無視する」方は対象外と考えています。
今までも書かれてきた通り、質問者側に問題があるのですから。

そういう意味では、
> 一番確実な方法は、新規質問スレを立ち上げる際には、アンケートフォームのような形でテンプレートを埋めることを強制することです。

これが確かに確実ですね。
(以前の規約についてのトピでも確かこういう案がありましたね)


217ポイント を手に入れた。

Name: Tororo  ..ぴよぴよ(924ポイント)   Date: 2009/12/03(木) 19:46   No:43209     
Title: Re:久しぶりの雑談スレ    
何か先ほどは初心者なのにデシャバッテすみませんでした><

私が始めて投稿した時は、規約は見ましたがチョット分かり難かったです^^;
私も、強制的にテンプレ埋めした方が良いと思います。



89ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,092,356ポイント)   Date: 2009/12/03(木) 20:09   No:43213     
Title: Re:久しぶりの雑談スレ    
平日昼間見れないので、超話に乗り遅れてます管理人ですm(_ _;)m
利用規約を読まないような人にもなるべく目にしてもらうようにする工夫としてこんなんどうでしょう^^;
(現在掲示板トップにFLASHが・・見えます?)
ただちゃちゃっと作ったものなんで、もちっと色々工夫したいと思います^^


86ポイント を手に入れた。

Name: Hermit  ..プログラマー(26,768ポイント)   Date: 2009/12/03(木) 20:20   No:43215     
Title: Re:久しぶりの雑談スレ    
この書き込みを見るまで気づかなかった私(^^;


15ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(131,132ポイント)   Date: 2009/12/03(木) 20:25   No:43216     
Title: Re:久しぶりの雑談スレ    
FLASHは面白いですが、効果は疑問ですね。
まあ、あっても害はないので、しばらく様子を見てもよいでしょう。


39ポイント を手に入れた。

Name: 御津凪 [URL]  ..ハッカー(127,533ポイント)   Date: 2009/12/03(木) 20:29   No:43217     
Title: Re:久しぶりの雑談スレ    
> 利用規約を読まないような人にもなるべく目にしてもらうようにする工夫としてこんなんどうでしょう^^;

動画広告的な意味で目を引きやすいですね。
単純ながら意外と効果はあるかもしれませんね。
(ただ、来訪者が見える環境でないと意味ないですが)


48ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,092,432ポイント)   Date: 2009/12/03(木) 20:30   No:43219     
Title: Re:久しぶりの雑談スレ    
まぁ色んな事試してみてよかったものを残していきましょう〜^^;
今のままじゃダメだと思うので、見たいと思うFLASHに(そんな物作れるのか?)しないといけませんね!
とりあえずスペース的にC言語何でも質問掲示板の画像と一緒にしちゃってもよさそうですね。
今度の土日にでも作ります〜!


76ポイント を手に入れた。

Name: non  ..比類無きプログラマー(74,289ポイント)   Date: 2009/12/03(木) 20:44   No:43223     
Title: Re:久しぶりの雑談スレ    
私の案としては
1「規約と注意事項」のリンク文字をもっと大きくする。
 
2 コメントを入力するときに 「簡単タグ入力」の右上に余白があるので
その場所に「テンプレート」と「利用規約」のボタンをつける。



22ポイント を手に入れた。

Name: softya  ..熟練のプログラマー(59,212ポイント)   Date: 2009/12/03(木) 20:44   No:43225     
Title: Re:久しぶりの雑談スレ    
新しいフラッシュは、ぱっと目に飛び込んできました。
結構、気づいてもらえるのでは?
気づいて欲しい・・・。

さて、テンプレですが、
http://softyasu.net/dlcounter/?id=RyuJinXNA19
なかなか必要性を理解してもらうのは大変な様です。


62ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(131,201ポイント)   Date: 2009/12/03(木) 21:01   No:43229     
Title: Re:久しぶりの雑談スレ    
> 2 コメントを入力するときに 「簡単タグ入力」の右上に余白があるので
> その場所に「テンプレート」と「利用規約」のボタンをつける。

「簡単タグ入力」というのに今始めて気付きました。

この掲示板でできるかどうか分かりませんが、入力フォームでテンプレート使用を強制するよりもう少しソフトな方法として、テンプレートの内容を引用と同じ要領でテキストボックスに入れておくのもよいかもしれません。


69ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,093,315ポイント)   Date: 2009/12/03(木) 21:15   No:43234     
Title: Re:久しぶりの雑談スレ    
>「簡単タグ入力」というのに今始めて気付きました。

あれ、本当ですか^^;
普段特に使おうと思っていない物は近くにあっても見えていないものですね。
こりゃ規約へのリンクも全く誰も見えてないな・・。

後、cgiのカスタマイズの話が出ていますが、この掲示板レンタル掲示板なんですよねぇ;
自分でここまで高機能な掲示板作れる自信ないですし(涙

危険投稿タグ関連の知識が無いので素人が作ると大事なデータが消されたりしてしまいそうで・・。
ずっとお金払いながら掲示板レンタルし続けています^^;
実は龍神録もエアロビートも借りてるんで、普通に3倍の料金を払っている・・w


224ポイント を手に入れた。

Name: たいちう  ..プログラマー(37,584ポイント)   Date: 2009/12/03(木) 21:20   No:43235     
Title: Re:久しぶりの雑談スレ    
> (現在掲示板トップにFLASHが・・見えます?)

私も気付きませんでした。FLASHは自動的に無視しているようです。
「サイトとは関係ない間違ってクリックしてはいけない所」としてのみ認識しています。

私は少数派なのかな?普段見ているサイトが窺われてしまう?


54ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,093,384ポイント)   Date: 2009/12/03(木) 21:28   No:43236     
Title: Re:久しぶりの雑談スレ    
なるほど、FLASHだと逆に「広告」だと思われてしまうようですね・・。
PCに慣れた方であればあるほどその傾向は強いのかも;
せっかく広告は付けずにやってきたのに、このせいでこの掲示板が安っぽい印象になってしまう可能性もありますね・・。


69ポイント を手に入れた。

Name: softya [URL]  ..熟練のプログラマー(59,496ポイント)   Date: 2009/12/03(木) 21:41   No:43237     
Title: Re:久しぶりの雑談スレ    
私のホームページの掲示板では、新規投稿時だけテンプレを表示するようにしてますが、
http://softyasu.net/supportBBS/bbs.cgi#postform
この様な対応は可能でしょうか?

規約のタイトルだけでも表示出来ると良いと思うのですが。


2倍のポイントを手に入れた! 116ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,093,531ポイント)   Date: 2009/12/03(木) 21:46   No:43239     
Title: Re:久しぶりの雑談スレ    
自前cgiじゃないので、何とも・・;
ただ題名を表示する部分にタグが使えるので、今みたいにFLASHを置く事は出来るみたいです(出来ないと思ってました)
他部分のカスタマイズは出来ないみたいです・・。


82ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(131,561ポイント)   Date: 2009/12/04(金) 07:35   No:43279     
Title: Re:久しぶりの雑談スレ    
前回もいろいろアイデアが出ましたが、結局独自CGIではないので変更が難しいという話でした。
それは仕方がないことですので、掲示板のカスタマイズ以外に運用面での工夫も考える必要がありますね。


14ポイント を手に入れた。

Name: Naohiro19  ..かけだし(1,177ポイント)   Date: 2009/12/04(金) 14:19   No:43318     
Title: Re:久しぶりの雑談スレ    
Dixqさん>
FLASHだと初心者の人でも読んでくれそうな感じがしますね。


19ポイント を手に入れた。

Name: ouh  ..入門者(4,086ポイント)   Date: 2009/12/04(金) 14:53   No:43323     
Title: Re:久しぶりの雑談スレ    
いきなり失礼します

現状で充分に親切な掲示板だと思います。
どれほどのものを提供しても規約読んでくれない人は読んでくれないです。
こんなことで管理人さんの手を煩わせるのはどうかと思います。

生意気言いましたでしょうか?すみません。


104ポイント を落としてしまった。

Name: やっくん  ..中級者(14,925ポイント)   Date: 2009/12/04(金) 17:04   No:43339     
Title: Re:久しぶりの雑談スレ    
>なるほど、FLASHだと逆に「広告」だと思われてしまうようですね・・。
自分もこれ系のFLASHは「広告」だと思っているので全く気づきませんでした。
ですが、このFLASHは良い案だと思います。初めてこの掲示板を訪れる方は「どのような掲示板かな?」ってTOPを見ているうちに目にとまるかもしれないですし。
それに、今書かれている利用規約は短く簡潔でホントにわかりやすいです。

もし規約を読まずに(見落としたり)投稿されている方が居たら、「規約を読んでください」と一緒にURLでも貼る。もしくは此方から簡単に「Preで囲んでください」と指摘したり、「言語、コンパイラは何ですか」など質問するしかないかと思います。ですが自分としては後述の方法の方が良いと思います。わかってても<Pre></Pre>の付け忘れってやってしまうものです。


306ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,094,391ポイント)   Date: 2009/12/04(金) 19:27   No:43357     
Title: Re:久しぶりの雑談スレ    
多分無意識のうちに「FLASH」は見ないという行動をとってしまう人って結構PCに慣れた人だと思うんですよね。
C言語の初心者がPC自体の初心者かどうかはわかりませんが、その可能性はあるので、
初心者には見えて熟練者には見えないという何とも素敵なシステムになる可能性もあるかもしれません(笑


>>Naohiro19さん

ご意見ありがとうございます。
完全に2通りの意見になりそうですね。
人によって大きく違うようです。
FLASHにしてみるのも一つの案ですね。


>>ouhさん

いえいえ、生意気とか全然ないですから、お気軽に書き込み下さいませ^^
たかぎさんも仰ってるようにここに来る人は皆対等ですから☆
まぁ質問者が回答者に横柄だと「なんで?」って雰囲気になったりはするかもしれませんが、
その辺は出来るだけざっくばらんな感じで行きたいと思います。

そして、私は煩わしいとは思っていないので、
というか、好きでこういうHPを作っているので、それも含めて趣味なので大丈夫ですよ^^
ありがとうございます^^
もしお手が空いた時間がありましたら、質問者さん達の回答の方お願いします〜♪


>>やっくんさん

やっくんさんもPC熟練者の一人ですねw
まぁ長い間PCつかってるとそうなるのも仕方ないですね^^;
規約なんてどう頑張っても見たいとは思わせられないでしょうが、
「見てくれる規約」をなんとか作りたいと思います。


557ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(131,795ポイント)   Date: 2009/12/04(金) 19:35   No:43358     
Title: Re:久しぶりの雑談スレ    
> 「見てくれる規約」をなんとか作りたいと思います。

規約に隠された合い言葉を集めると、何かプレゼントというのもよいかもしれませんね。
あるいは熟読しないと解けないクイズに答えるとプレゼントとか...

自分勝手な人は物で釣るのが一番だったりします。
どうせ原価ゼロかそれに近い物しかプレゼントできないわけですが。


124ポイント を手に入れた。

Name: バグ  ..ハッカー(175,744ポイント)   Date: 2009/12/04(金) 19:55   No:43359     
Title: Re:久しぶりの雑談スレ    
合言葉を揃えて、規約にのっとって質問した方には、課題の答えをプレゼント…ってのは本末転倒ですな(笑)

29ポイント を手に入れた。

Name: kazuoni [URL]  ..ハッカー(116,311ポイント)   Date: 2009/12/04(金) 20:25   No:43362     
Title: Re:久しぶりの雑談スレ    
qさんブロマイド写真・・・いや、なんでもないですw

15ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,094,835ポイント)   Date: 2009/12/04(金) 22:01   No:43364     
Title: Re:久しぶりの雑談スレ    
ハイ、空回りしましたw

今の人ってこのネタ解ってくれるんだろうか^^;
ゲーセンに行ってはよく皆で盛り上がったもんだ・・。


>>たかぎさん

プレゼントってここのランクポイント位しか私にはないっすねぇ^^;
しかしそれはなかなか遊び心があっていいですねw


>>バグさん

それ私も思いましたw
確かにでもそれじゃ本末転倒だなぁ^^;


>>kazuoniさん

危ない危ない、なんてこと言うんですか。
(ノリでつい色々やっちゃう)


2倍のポイントを手に入れた! 444ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(131,886ポイント)   Date: 2009/12/04(金) 22:12   No:43365     
Title: Re:久しぶりの雑談スレ    
> (ノリでつい色々やっちゃう)

ノリまくって、Dixq特大壁紙(UXGA〜QXGAぐらい)とか、Dixq特性スクリーンセーバーとかよさそうですね。
一回作ればあとは原価ゼロですし。

あとは、作者直筆サイン入り(といっても画像)龍神録プレゼントとかもファン心をくすぐるかも。


91ポイント を手に入れた。

Name: sizuma [URL]  ..上級者(18,935ポイント)   Date: 2009/12/04(金) 22:18   No:43366     
Title: Re:久しぶりの雑談スレ    
Dixqさんの書く本、ってのはどうでしょうか?

それがだめならブロマイドでいいんじゃないですか(笑


29ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,094,917ポイント)   Date: 2009/12/04(金) 22:18   No:43367     
Title: Re:久しぶりの雑談スレ    
その需要はどこから生まれてくるんですか!w
あげましょう→いりません  になること決定ですわ〜^^;


しかしちゃんと規約を読んで投稿した人には管理人のサイン画像が送られる掲示板なんてアタラシスギル・・w


82ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,094,933ポイント)   Date: 2009/12/04(金) 22:19   No:43368     
Title: Re:久しぶりの雑談スレ    
本代と送料は一体どこから・・w
HP運営はお金がかかるのぉw


16ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(131,949ポイント)   Date: 2009/12/04(金) 22:24   No:43369     
Title: Re:久しぶりの雑談スレ    
> 本代と送料は一体どこから・・w

2、3人なら何とかなるのでは?
本が出版されたときは売るほど献本が送られてきますので、ぜひサイン入りプレゼント企画を作ってください。


63ポイント を手に入れた。

Name: sizuma [URL]  ..上級者(19,074ポイント)   Date: 2009/12/04(金) 22:28   No:43370     
Title: Re:久しぶりの雑談スレ    
それなら本代と送料はもちろん受けとる人が・・・
ついでに運営のための募金ももらいましょう!!
規約を読んで投稿した人は管理人の本を買わなくてはいけない掲示板ですね。

ある意味よくあるサイトになってしまいますね(笑
フィルタリング対象確実です。

>2〜3にんなら
僕がプレゼント対象になったら何とかなるほうに入れて欲しいな☆


139ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,095,528ポイント)   Date: 2009/12/04(金) 22:32   No:43371     
Title: Re:久しぶりの雑談スレ    
先着ですかw
しかし管理人が自らサイン入り本のプレゼント企画するのはイタ過ぎるのでご勘弁を^^;

・・ちと真面目な話に戻るのですが、この際、規約の方も修正したいと思い、見直してみました。

で、質問者用のテンプレがあるのだから回答者ようのテンプレがあってもいいんじゃ?と思いました。
と言いますのも、

「規約読め」

じゃ

「ググレ」

と質問者からしてみたら変わらないと思うんですよね。
規約なんて読みたくもない、答えが欲しいと思っている人には余計に。
「読まない人は何しても読まない」じゃなく、出来るだけその「可能性を減らす」ことをしたいと思っています。

そこで、規約のページを開かなくてもやってほしいことを簡潔に伝えるテンプレートがあってもいいんじゃないかと思ったんです。

例えば「課題の丸投げと思われる投稿にはテンプレート1を張り付ける」とかですね。

テンプレート1
● 対 宿題の丸投げ用 ●

 ・ 自分はどこまで理解しているのか、学校ではどこまで習ったのか明確にしましょう
 ・ 自分で書いたソースプログラムがあるなら提示しましょう
 ・ (提示してある場合)自分が書いたソースプログラムはどこからどこまでなのか教えて下さい
 ・ ソースコードは< pre>と< /pre>のタグで囲んでください
 詳しくはこの掲示板の使い方をご覧ください→ http://dixq.net/board/board.html



テンプレという表現はちょっとおかしいですかね。
要するに「課題の丸投げだな」と思われるトピを見つけたらこいつをぺたっと貼り付けるということです。

皆さんが色んな表現をされるより、言う事が決まっていた方が対応も統一出来るというかよい気がするんですよね。
回答が同じなら、質問者の対応も限られてきそうですし、その対応を見て、規約やテンプレートを良いものへ修正していけそうな気がします。

・・どうでしょうかね^^;
テンプレート賛成の方はそのテンプレートの文章についてもご意見いただけるとありがたいです^^


>>sizumaさん

規約も読んでくれて管理人にお金まで入る夢のシステm・・・にはならないですよね〜w


595ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(132,052ポイント)   Date: 2009/12/04(金) 22:40   No:43372     
Title: Re:久しぶりの雑談スレ    
> 要するに「課題の丸投げだな」と思われるトピを見つけたらこいつをぺたっと貼り付けるということです。

これは、一部が守られていても(例えば、とりあえずソースは貼っているなど)全部貼付けるということでよいのでしょうか?
状況に応じて取捨選択するのであれば、負担も大きいですし、結局は回答者によって貼付ける内容が変わることになります。


103ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,094,939ポイント)   Date: 2009/12/04(金) 22:52   No:43374     
Title: Re:久しぶりの雑談スレ    
私のイメージとしては臨機応変に必要な部分のみ残してもらえたらと思っていました。

手間だなと思う方は今まで通りでいいと思います。
テンプレの回答をしてもいいと思ってくださる方がいらっしゃれば、、と思いました。
結局は変わるかもしれませんが、大枠としては大体の統一感があるんじゃないかな〜と思ったんですよね。


137ポイント を手に入れた。

Name: sizuma [URL]  ..上級者(19,077ポイント)   Date: 2009/12/04(金) 23:02   No:43378     
Title: Re:久しぶりの雑談スレ    
>テンプレ
僕はいいと思います。
ですが、見てくれない人(もしくは見てもスルーする人)もいるんで、まる投げには規約に対応していないならば、なるべく答えない、とかで統一した方がいいのではないでしょうか?

答えてくれる人がいたらおそらくテンプレ張った人はスルーされると思うので・・・
もちろんそれがいい雰囲気の掲示板かといわれればNoと思います。

僕はテンプレ用意してくれればそれを利用します^^


114ポイント を落としてしまった。

Name: non  ..比類無きプログラマー(74,922ポイント)   Date: 2009/12/04(金) 23:06   No:43379     
Title: Re:久しぶりの雑談スレ    
すっごいインパクト!!


11ポイント を手に入れた。

Name: sizuma [URL]  ..上級者(19,126ポイント)   Date: 2009/12/04(金) 23:10   No:43380     
Title: Re:久しぶりの雑談スレ    
>すっごいインパクト!!
間違いない。コレで規約読んでない人は相当焦ってる人なんで、助けてあげなくては(笑


49ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(132,135ポイント)   Date: 2009/12/04(金) 23:17   No:43382     
Title: Re:久しぶりの雑談スレ    
テンプレを貼るより、↓のほうがよいかも。



83ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,095,211ポイント)   Date: 2009/12/04(金) 23:20   No:43383     
Title: Re:久しぶりの雑談スレ    
>>sizumaさん

ご意見ありがとうございます^^
私はなるべく丸投げするような人とか、嵐のように連続投稿する人とかがいても、
なるべく無視じゃなく何とかしてあげたいんですよね・・。
きっと新味になってくれた人が今までいなかったから投げやりになっている人もいるんじゃないかと、
こちらの対応次第で解ってくれる人もいるんじゃないかと思ってます
(という考えは甘すぎますかね^^;)
なのでどうしようもない人はスルーしてもらえば私があとから何とか対処します^^;


>>すっごいインパクト!!

これ今度は色づかいや雰囲気が場違い過ぎてここの規約だとは思わない可能性が浮上・・w


213ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,095,273ポイント)   Date: 2009/12/04(金) 23:21   No:43384     
Title: Re:久しぶりの雑談スレ    
>>たかぎさん

それは強烈ww
あぁ、テンプレートをFLASHにすればいいんですねw
ものすごい派手な規約説明FLASHでも作りますか(笑


62ポイント を手に入れた。

Name: Naohiro19  ..かけだし(1,200ポイント)   Date: 2009/12/04(金) 23:26   No:43385     
Title: Re:久しぶりの雑談スレ    
>>たかぎさん
某ゲームじゃないですかww
インパクト強すぎですw


23ポイント を手に入れた。

Name: softya [URL]  ..熟練のプログラマー(61,104ポイント)   Date: 2009/12/05(土) 00:15   No:43393     
Title: Re:久しぶりの雑談スレ    
>>たかぎさん

すばらしいインパクトです!!


31ポイント を手に入れた。



Name: ろろろ  ..ぴよぴよ(52ポイント)   Date: 2009/12/04(金) 12:14   No:43298       
Title: 高速フーリエ変換を用いたパワースペクトル    
こんにちは 今、高速フーリエ変換を用いたパワースペクトル表示の
プログラムでエラーが出て動きません。
環境は、VB2008使用でvistaです。
エラー文は、
.cpp(71) : error C2144: 構文エラー : 'double' は ')' によって先行されなければなりません。
.cpp(71) : error C2059: 構文エラー : ')'
.cpp(71) : error C3861: 'fft1': 識別子が見つかりませんでした
.cpp(187) : warning C4244: '=' : 'double' から 'float' への変換です。データが失われる可能性があります。
.cpp(188) : warning C4244: '=' : 'double' から 'float' への変換です。データが失われる可能性があります。
.cpp(189) : warning C4244: '=' : 'double' から 'float' への変換です。データが失われる可能性があります。
.cpp(190) : warning C4244: '=' : 'double' から 'float' への変換です。データが失われる可能性があります。
.cpp(211) : warning C4244: '=' : 'double' から 'float' への変換です。データが失われる可能性があります。
.cpp(224) : warning C4244: '=' : 'double' から 'float' への変換です。データが失われる可能性があります。
  すいません、エラー解決策があるかた助けてください。


52ポイント を手に入れた。


Name: Dixq (管理人)  ..ウィザード(1,093,571ポイント)   Date: 2009/12/04(金) 12:23   No:43300     
Title: Re:高速フーリエ変換を用いたパワースペクトル    
ろろろさん
こんにちは^^
お〜FFTですか〜、私も今FFT使って音楽から譜面を自動生成できないかな〜とか試行錯誤しているところです。

で、プログラムは携帯で見ているのでよくはわかりませんが、
カッコの数が足りないんじゃないでしょうか?
doubleを()で囲んでないとか


104ポイント を手に入れた。

Name: ろろろ  ..ぴよぴよ(141ポイント)   Date: 2009/12/04(金) 12:35   No:43302     
Title: Re:高速フーリエ変換を用いたパワースペクトル    
管理人さん、お返事ありがとうございます。
うーん、 fft1 (double real[],double e[],k,v); って書いたとこが、71行目なんですが
うまく 自分の指定した関数が動作してないのかなと思うですがプログラム知識が浅いもので
プログラム見て解決策ありましたらお願いします^^


89ポイント を手に入れた。

Name: Dixq (管理人)  ..ウィザード(1,093,834ポイント)   Date: 2009/12/04(金) 12:43   No:43305     
Title: Re:高速フーリエ変換を用いたパワースペクトル    
んん?
そこにdoubleと[]っていります?
[]は要らないと思います。で、doubleをかくなら括弧で囲んでみて下さい


56ポイント を手に入れた。

Name: ろろろ  ..ぴよぴよ(302ポイント)   Date: 2009/12/04(金) 13:07   No:43309     
Title: Re:高速フーリエ変換を用いたパワースペクトル    
管理人さん、
fft1 (double real[],double e[],k,v); から言われた通りdoubleと[]を取り除いたら
fft1 (real, e,k,v); としたら
cpp(71) : error C2144: 構文エラー : 'double' は ')' によって先行されなければなりません。
.cpp(71) : error C2059: 構文エラー : ')'
 この2つは、消えました ありがとうございます。
他のエラーも分かったら教えてください。 お願いします


161ポイント を手に入れた。

Name: Mist  ..比類無きプログラマー(76,269ポイント)   Date: 2009/12/04(金) 13:18   No:43311     
Title: Re:高速フーリエ変換を用いたパワースペクトル    
> .cpp(71) : error C3861: 'fft1': 識別子が見つかりませんでした

これはfft1のプロトタイプ宣言が無いからですね。
warningは全てdouble型変数の値をfloat型変数に入れていることによるものなので、floatを全部doubleに変えればなくなると思います。


77ポイント を手に入れた。

Name: ろろろ  ..ぴよぴよ(322ポイント)   Date: 2009/12/04(金) 13:36   No:43312     
Title: Re:高速フーリエ変換を用いたパワースペクトル    
なるほど
Mistさん、ありがとうございます。 試してみます。


20ポイント を手に入れた。

Name: ろろろ  ..ぴよぴよ(395ポイント)   Date: 2009/12/04(金) 13:58   No:43316     
Title: Re:高速フーリエ変換を用いたパワースペクトル    
fft1のプロトタイプ宣言ってこんな感じですか?
int fft1(double a_rl[],double a_im[],int ex,int inv);

あと、VB2008のプログラムに読み込みと書き込みのプログラムが入ってるんですが、読み込むためのプログラムと書き込むファイルはVBのフォルダのどこに格納すれば読み込みますか?


73ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,094,998ポイント)   Date: 2009/12/04(金) 22:58   No:43376     
Title: Re:高速フーリエ変換を用いたパワースペクトル    
そんな感じです。
ところで、VCじゃなくVBなんですか?
VC++の場合、プロジェクトがあるフォルダに入れたら大丈夫です。


59ポイント を手に入れた。



Name: SIT  ..ぴよぴよ(616ポイント)   Date: 2009/12/03(木) 18:41   No:43197       
Title: テキストファイルでの範囲指定    
ビットマップ画像からRGBの値を抽出するプログラムを作成しましたが、画像の周りの余白の部分がいらないので、画像の4隅の座標をテキストファイルで指定してその中のRGBの値を抽出するにはどうしたらいいでしょうか?

ご教授の程、よろしくお願いします。



#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#include <malloc.h>


int main( int argc, char **argv )
{
BITMAPFILEHEADER bf;
BITMAPINFOHEADER bi;
char *filename;
FILE *fp;
RGBTRIPLE *buf, **data;
unsigned char R,G,B;
int LineSize,BufferSize;
int x, y;

//ファイルを開く
if ( argc != 2){
filename = "bitmap2.bmp";
} else {
filename = argv[1];
}

//ファイルを開く
fp = fopen( filename, "rb");
fread( &bf, sizeof(BITMAPFILEHEADER), 1, fp );
fread( &bi, sizeof(BITMAPINFOHEADER), 1, fp );

if (bi.biBitCount !=24){
printf("このファイルは24bit画像専用です\n");
return 0;
}


if((bi.biWidth % 4) == 0){
LineSize = sizeof(RGBTRIPLE) * bi.biWidth ;
} else {
LineSize = sizeof(RGBTRIPLE) * bi.biWidth + (4 - (bi.biWidth * 3) % 4) ;
}
BufferSize = LineSize * bi.biHeight;


//変換元のデータ
buf = (RGBTRIPLE *)malloc( BufferSize );
data = (RGBTRIPLE **)malloc( sizeof(RGBTRIPLE *) * bi.biHeight );


//RGB別に出力する
for ( y = 0; y <= bi.biHeight; y++ ) {
data[ y ] = (RGBTRIPLE *)((char*)buf + LineSize * y);
}

fread( buf, BufferSize, 1, fp );
for ( y = 0; y <= bi.biHeight; y++ ) {
for ( x = 0; x <= bi.biWidth; x++) {


R = data[ y ][ x ].rgbtRed;
G = data[ y ][ x ].rgbtGreen;
B = data[ y ][ x ].rgbtBlue;

printf("X軸:%d,Y軸:%d, R:%d, G:%d, B:%d\n", x, y, R, G, B);

}
}


return 0;
}


616ポイント を手に入れた。


Name: GPGA  ..比類無きプログラマー(71,720ポイント)   Date: 2009/12/03(木) 19:01   No:43204     
Title: Re:テキストファイルでの範囲指定    
>for ( y = 0; y <= bi.biHeight; y++ ) {
>for ( x = 0; x <= bi.biWidth; x++) {
とりあえず、アクセス違反になりますよ


抽出っていうのはprintfで出力すればいいのかな?

struct POINT {
int x, y;
} point[4]; // この中に左上、右上、左下、右下の座標が入っているとして

for ( y = bi.biHeight - point[0].y - 1; y >= bi.biHeight - point[2].y; y-- ) {
for ( x = point[0].x; x < point[1].x; x++) {
R = data[ y ][ x ].rgbtRed;
G = data[ y ][ x ].rgbtGreen;
B = data[ y ][ x ].rgbtBlue;

printf("X軸:%d,Y軸:%d, R:%d, G:%d, B:%d\n", x, y, R, G, B);
}
}



2倍のポイントを手に入れた! 534ポイント を手に入れた。

Name: SIT  ..ぴよぴよ(815ポイント)   Date: 2009/12/04(金) 16:20   No:43327     
Title: Re:テキストファイルでの範囲指定    
GPGA様、早速のアドバイスありがとうございます。
さらに、説明不足でした事をお詫びいたします。

抽出という意味は仰る通り、printfで出力です。
コマンドプロンプトで実行してコマンドプロンプト内に表示している感じです。


画像の座標4隅をメモ帳等で座標を書いたテキストファイルを作りその座標間のRGBを出力するプログラムです。


>>for ( y = 0; y <= bi.biHeight; y++ ) {
>>for ( x = 0; x <= bi.biWidth; x++) {
>とりあえず、アクセス違反になりますよ

一応エラーは出なかったのですが、ここは間違っていますでしょうか?
ソースコード全体を書くと、どういうプログラムになりますか?


199ポイント を手に入れた。

Name: GPGA  ..比類無きプログラマー(71,900ポイント)   Date: 2009/12/04(金) 17:36   No:43344     
Title: Re:テキストファイルでの範囲指定    
>一応エラーは出なかったのですが、ここは間違っていますでしょうか?
読み込みのみなので、エラーにならなかっただけです。
以下がアクセス違反していることがわかりますか?


static const int WIDTH = 10;
static const int HEIGHT = 20;
int n[HEIGHT][WIDTH] = {0};
for (int y = 0; y <= HEIGHT ; ++y) {
for (int x = 0; x <= WIDTH; ++x) {
printf("n[%d][%d] = %d", y, x, n[y][x]);
}
}



>ソースコード全体を書くと、どういうプログラムになりますか?
最初に提示されているプログラムから、Cの基本はできていると判断しています。
テキストファイルの読み込みは、勝手にやってください。
POINT構造体の中にデータが入れば、どんなやり方でもいいです。

for以降のプログラムは最初に提示された
//RGB別に出力する
の部分を書き換えたものです。


180ポイント を手に入れた。

Name: SIT  ..ぴよぴよ(862ポイント)   Date: 2009/12/04(金) 18:37   No:43354 解決!     
Title: Re:テキストファイルでの範囲指定    
GPGA様、POINTの中にとりあえずデータを入れてご指摘の部分も直したところ
うまくできました。

アドバイス等のご教授ありがとうございました。


47ポイント を手に入れた。



Name: ジャーニー  ..入門者(2,508ポイント)   Date: 2009/12/04(金) 16:43   No:43333       
Title: 抽象クラスでの動作    
どなたか回答をお願いします.

まずは以下のプログラムを見てください.
言語はC++です.


#include <iostream>
#include <string>
#include <list>

class TestObj
{
public:
virtual void Print()=0;
virtual ~TestObj(){};
};

class TestObj2 : public TestObj
{
private:
std::string p;
public:
void Print()
{
std::cout << p << std::endl;
}

inline void SetString(std::string st){ p = st;}

};

int main(void)
{
std::list<TestObj*> to;

to.push_back(new TestObj2());
to.push_back(new TestObj2());

for(std::list<TestObj*>::iterator it = to.begin(); it != to.end(); it++)
{
((TestObj2*)to)->SetString("aaa");
(*to)->Print();
}

return 0;
}


※コンパイルエラーが出ます

上のプログラムはまずTestObjクラスで出力する純粋仮想関数Print()を定義
TestObj2ではTestObjを継承し,Print()の中身を実装.
このときTestObj2のprivate変数stringにSetStringで文字列を代入するというものです.
main関数ではTestObj*型のlistを宣言し,文字列をセットしていき,出力するというプログラムです.

ただ,普通にイテレータを使うとTestObj型なのでSetStringが使えず,上のようにキャストしてみましたがうまくいきませんでした.
どのようにすればうまくいくでしょうか.

よろしくお願いします


503ポイント を手に入れた。


Name: MNS  ..上級者(23,057ポイント)   Date: 2009/12/04(金) 16:58   No:43335     
Title: Re:抽象クラスでの動作    
((TestObj2*)to)->SetString("aaa");
(*to)->Print();
ここの記述がおかしいです。toではなくitではないでしょうか?


#include <iostream>

#include <string>

#include <list>



class TestObj

{

public:

virtual void Print()=0;

virtual ~TestObj(){};

};



class TestObj2 : public TestObj

{

private:

std::string p;

public:

void Print()

{

std::cout << p << std::endl;

}



inline void SetString(std::string st){ p = st;}



};



int main(void)

{

std::list<TestObj*> to;



to.push_back(new TestObj2());

to.push_back(new TestObj2());



for(std::list<TestObj*>::iterator it = to.begin(); it != to.end(); it++)

{

((TestObj2*)(*it))->SetString("aaa");

(*it)->Print();

}



return 0;

}


74ポイント を手に入れた。

Name: ジャーニー  ..入門者(2,540ポイント)   Date: 2009/12/04(金) 17:02   No:43337     
Title: Re:抽象クラスでの動作    
ご返事ありがとうございます.
その部分を直すと正常に動作しました.
ありがとうございました.


32ポイント を手に入れた。

Name: ジャーニー  ..入門者(2,558ポイント)   Date: 2009/12/04(金) 17:03   No:43338 解決!     
Title: Re:抽象クラスでの動作    
解決にするのを忘れていました.

18ポイント を手に入れた。



Name: 234  ..ぴよぴよ(2ポイント)   Date: 2009/12/01(火) 22:45   No:43015       
Title: 画像を点滅させる方法    
DXライブラリですけど
画像(文字)を点滅させる方法ってありますか?


2ポイント を手に入れた。


Name: softya  ..熟練のプログラマー(53,053ポイント)   Date: 2009/12/01(火) 22:50   No:43016     
Title: Re:画像を点滅させる方法    
ただ点滅させたいなら、フレーム毎に表示と非表示を切り替えるだけですよ。

28ポイント を手に入れた。

Name: 234  ..ぴよぴよ(32ポイント)   Date: 2009/12/01(火) 22:52   No:43017     
Title: Re:画像を点滅させる方法    
例えば数字をカウントして
奇数の時表示させるってことですか?


30ポイント を手に入れた。

Name: チルチル  ..比類無きプログラマー(81,540ポイント)   Date: 2009/12/01(火) 23:01   No:43018     
Title: Re:画像を点滅させる方法    
交互だと速すぎてチラチラしたりするかもしれませんが
基本はそれで良いと思いますよ

他には違う画像に変えるとか透明度を変えるとか輝度を変えるとかでも良いです


32ポイント を落としてしまった。

Name: softya  ..熟練のプログラマー(53,219ポイント)   Date: 2009/12/01(火) 23:01   No:43019     
Title: Re:画像を点滅させる方法    
>例えば数字をカウントして
>奇数の時表示させるってことですか?

その通りです。
フレーム数をカウントして、奇数で表示、偶数で表示しないだけで点滅します。
周期を変えたかったら、この様にも出来ます。

// 5回のうち2回表示する。
static int count = 0;
count=(count+1)%5;
if( count < 2 ) {
//表示
}


166ポイント を手に入れた。

Name: TKOZ  ..熟練のプログラマー(42,674ポイント)   Date: 2009/12/04(金) 16:59   No:43336     
Title: Re:画像を点滅させる方法    
奇数と偶数を判定する方法は分かりますか?
2で割り切れれば偶数です。
なので、

if(framenumber%2==0)
{
表示
}

で出来ます。


51ポイント を手に入れた。



Name: ma  ..ぴよぴよ(79ポイント)   Date: 2009/12/03(木) 18:40   No:43196       
Title: 逆順表示    
環境はvistaで、visualc++です。
char型の文字配列をキーボードで入力してうった文字列を逆順に表示するソースプログラムを
作りたいんですけど。どうすればいいですか?


79ポイント を手に入れた。


Name: kazuoni [URL]  ..ハッカー(115,808ポイント)   Date: 2009/12/03(木) 18:46   No:43199     
Title: Re:逆順表示    
若干問題文がおかしな気がしますが・・・
キーボードから入力した文字を逆順に出力するってことですかね?

文字を配列に読み込み、それを後ろから順に表示すればよいのではないでしょうか?


95ポイント を手に入れた。

Name: ma  ..ぴよぴよ(134ポイント)   Date: 2009/12/03(木) 18:52   No:43200     
Title: Re:逆順表示    
そのとおりで合っていると思うのですが、
そのやりかたも教えていただけないでしょうか?
初心者なのですみません。


55ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(130,976ポイント)   Date: 2009/12/03(木) 18:57   No:43203     
Title: Re:逆順表示    
C++なら

#include <iostream>
#include <algorithm>

int main()
{
char s[] = "abcd";
std::reverse(s + 0, s + 4);
std::cout << s << std::endl;
}

でできます。


95ポイント を手に入れた。

Name: softya  ..熟練のプログラマー(59,150ポイント)   Date: 2009/12/03(木) 19:13   No:43207     
Title: Re:逆順表示    
たぶん、C言語の質問ではないかと思いますので、テスト中のテンプレですがお答えください。
※ 規約のテンプレと微妙に違うことを書き添えておきます。
[1] 質問文
 [1.1] 自分が今行いたい事は何か
 [1.2] どのように取り組んだか(プログラムコードがある場合記載)
 [1.3] どのようなエラーやトラブルで困っているか(エラーメッセージが解る場合は記載)
 [1.4] 今何がわからないのか、知りたいのか
[2] 環境
 [2.1] OS : Windows, Linux等々
 [2.2] コンパイラ名 : VC++ 2008EE, Borand C++, gcc等々
 [2.3] 使用言語:C(90,99),C++,C#,VB,JAVA等々詳細にお願いします。
[3] その他
 ・どの程度C言語を理解しているか。言語を勉強してからの期間や自分で思う習得レベル(3ヶ月。初心者)
 ・ライブラリを使っている場合は何を使っているか
これ以外に言語の機能として使ってはいけないものがあれば、お書き添えください。
ポインタは、まだ習っていないので避けてくださいなど。


310ポイント を手に入れた。

Name: ma  ..ぴよぴよ(374ポイント)   Date: 2009/12/03(木) 19:35   No:43208     
Title: Re:逆順表示    
え〜と、たぶんprintfとscanfを使ってデバックした時にキーボードでうった文字列を逆に表示
したいんですけど…
ちなみに初めて3カ月です。

#include <stdio.h>
int main(void)
{
char aa[100];
{
printf("99文字以下で文字列を入力してください。");
scanf("%s", aa);
printf("入力された文字列は%sで,", aa);
}

っていうところまでやったんですけど、この後にprintfを使って逆順に表示したいです。
本当に分かりにくい説明ですみません。m(__)m


240ポイント を手に入れた。

Name: kazuoni [URL]  ..ハッカー(115,879ポイント)   Date: 2009/12/03(木) 19:49   No:43210     
Title: Re:逆順表示    
関数strlenで文字列の長さが分かれば、いけますよね。
char str[3] = {a,b,c}

strlen(str) = 3
str[2]→str[1]→str[0]




71ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(131,093ポイント)   Date: 2009/12/03(木) 19:55   No:43211     
Title: Re:逆順表示    
あとはこんな方法でしょうか?

void print_reverse(const char *s)
{
if (*s != '\0')
{
print_reverse(s + 1);
printf("%c", *s);
}
}

C言語歴3ヶ月だと、再帰呼び出しは習得したかしないか、ギリギリのところかと思います。


117ポイント を手に入れた。

Name: non  ..比類無きプログラマー(74,267ポイント)   Date: 2009/12/03(木) 20:11   No:43214     
Title: Re:逆順表示    
次のことにお答え下さい。
特に学校の課題なら、何を使っていいのかが重要です。

1 ポインタを習ったのか否か?

2 逆順にするのは配列の中身ではないのか?表示さえ逆順ならいいのか?



87ポイント を手に入れた。

Name: ma  ..ぴよぴよ(464ポイント)   Date: 2009/12/03(木) 22:52   No:43247     
Title: Re:逆順表示    
ポイントは習っていません。
逆順にするのは、
#include <stdio.h>
int main(void)
{
char aa[100];
{
printf("99文字以下で文字列を入力してください。");
scanf("%s", aa);
printf("入力された文字列は%sで,", aa);
}

っていうソースプログラムをデバッグしたときに例えばabcdefとうったときに
fedcbaってでるようなソースプログラムをこのあとにうちたいです。



90ポイント を手に入れた。

Name: softya [URL]  ..熟練のプログラマー(61,001ポイント)   Date: 2009/12/03(木) 23:42   No:43258     
Title: Re:逆順表示    
strlen()と配列の参照、forループ、printfでの文字の表示が分かれば組めると思います。
これらの内で使い方が分からないものはありますか?


64ポイント を手に入れた。

Name: ma  ..ぴよぴよ(573ポイント)   Date: 2009/12/03(木) 23:55   No:43259     
Title: Re:逆順表示    
すみません始めたばかりなので、

int main(void)
{
char aa[100];
{
printf("99文字以下で文字列を入力してください。");
scanf("%s", aa);
printf("入力された文字列は%sで,", aa);
}

っていうプログラムの後にどんなプログラムをうてばいいのか教えてもらえませんか。


109ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(131,392ポイント)   Date: 2009/12/04(金) 00:07   No:43262     
Title: Re:逆順表示    
> っていうプログラムの後にどんなプログラムをうてばいいのか教えてもらえませんか。

それは自分で考えるべきことです。

ヒント:後だけではダメです。前にも何らかのコードが必要です。


9ポイント を手に入れた。

Name: ma  ..ぴよぴよ(585ポイント)   Date: 2009/12/04(金) 00:18   No:43263 解決!     
Title: Re:逆順表示    
できました〜


12ポイント を手に入れた。

Name: すずめ  ..初心者(5,429ポイント)   Date: 2009/12/04(金) 00:47   No:43268     
Title: Re:逆順表示    
本当にできたんですか?

できなかったんなら ギブアップって書いたほうが良いですよ

int main(void)
{
char aa[100];
{ <= これはおかしくないですか?
printf("99文字以下で文字列を入力してください。");
scanf("%s", aa);
printf("入力された文字列は%sで,", aa);
}

char aa[100];の次の行に'{'があったらエラーが出ると思うんですが?

もっともっと粘らないと正解は教えてもらえないですよ


200ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(131,407ポイント)   Date: 2009/12/04(金) 06:42   No:43277     
Title: Re:逆順表示    
> char aa[100];の次の行に'{'があったらエラーが出ると思うんですが?

そんなことはありません。


15ポイント を手に入れた。

Name: すずめ  ..初心者(5,665ポイント)   Date: 2009/12/04(金) 10:42   No:43291     
Title: Re:逆順表示    
大変失礼しました。

#include <stdio.h>
int main(void)
{
char aa[100];
{
printf("99文字以下で文字列を入力してください。");
scanf("%s", aa);
printf("入力された文字列は%sで,", aa);
}

っていうソースプログラムをデバッグしたときに

って書いてあったので、デバックできないんじゃないかと
勘違いしました。
'{' と '}'が対応していないとおもったんですが。

質問者は初心者で始めたばかりということで、
私も独学ですがネットでいろいろなC言語講座で勉強させてもらいましたが、
char aa[100]; の次の行に突然 '{' が出てくるようなことは
はじめてだったものですから。
{ は、ないほうがいいとおもったのは私だけでしたか。

専門家の高木さんが言うんですから、間違った指摘をしたことを
お詫びします。


236ポイント を手に入れた。

Name: non  ..比類無きプログラマー(74,604ポイント)   Date: 2009/12/04(金) 10:53   No:43294     
Title: Re:逆順表示    
対応していないのはまだ、途中だから。
>{ は、ないほうがいいとおもったのは私だけでしたか。
ない方がいいと思いますよ。エラーではないだけで。


59ポイント を手に入れた。

Name: すずめ  ..初心者(5,675ポイント)   Date: 2009/12/04(金) 13:53   No:43314     
Title: Re:逆順表示    

#include <stdio.h>
int main(void)
{
char aa[100];
{
printf("99文字以下で文字列を入力してください。");
scanf("%s", aa);
printf("入力された文字列は%sで,", aa);
}
}

確かにこれならOKですね。
勉強になりました。


10ポイント を手に入れた。




 
[ 1 , ... ]
 
 
管理者画面   RSS   + Powered By 21style +