C言語何でも質問掲示板

Total hit  今日  昨日  



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

 
   Now Loading   
     ・[40376] softya 
     ・[40472] でんすけ 
   コンパイル時エラーに ....   
     ・[40401] MNS 
     ・[40469] EXTRL 
   ★うちのHPの内容が本 ....   
     ・[40073] kazuoni 
     ・[40075] Dixq (管理人) 
     ・[40076] ねこ 
     ・[40077] 御津凪 
     ・[40081] Dixq (管理人) 
     ・[40083] array 
     ・[40085] yu 
     ・[40087] Ma 
     ・[40091] Justy 
     ・[40092] ひよこ 
     ・[40093] たかぎ 
     ・[40094] non 
     ・[40096] softya 
     ・[40101] すずめ 
     ・[40103] ディア 
     ・[40104] s-rush 
     ・[40112] Dixq (管理人) 
     ・[40113] Dixq (管理人) 
     ・[40115] situmon 
     ・[40116] ラグ 
     ・[40120] 烏 
     ・[40124] uwlover 
     ・[40125] たかぎ 
     ・[40126] たかぎ 
     ・[40148] Tatu 
     ・[40158] Dixq (管理人) 
     ・[40159] Dixq (管理人) 
     ・[40162] チルチル 
     ・[40170] コメカミ 
     ・[40180] たかぎ 
     ・[40226] Dixq (管理人) 
     ・[40239] 山崎 
     ・[40264] Dixq (管理人) 
     ・[40266] こめかみ 
     ・[40272] すずめ 
     ・[40330] Dixq (管理人) 
     ・[40333] Tororo 
     ・[40339] Dixq (管理人) 
     ・[40341] 鈴仙優曇華院イナバ 
     ・[40467] Dixq (管理人) 
   時間をスリープさせて ....   
     ・[40429] softya 
     ・[40432] toyo 
     ・[40433] たかぎ 
     ・[40458] 瓜 
     ・[40460] lbfuvab 
   初DXライブラリでシュ ....   
     ・[40424] ひよこ 
     ・[40427] ようすけ 
     ・[40430] softya 
     ・[40431] ようすけ 
     ・[40439] SYALIREA 
     ・[40443] ようすけ 
     ・[40449] softya 
     ・[40455] ようすけ 
   三角関数のテーブル化   
     ・[40389] GPGA 
     ・[40397] ft 
     ・[40399] yu 
     ・[40408] ft 
     ・[40422] GPGA 
     ・[40435] たかぎ 
     ・[40436] GPGA 
     ・[40438] ft 
     ・[40441] GPGA 
     ・[40450] ft 
   東方風縦STG(の試作品 ....   
     ・[40348] 鈴仙優曇華院イナバ 
     ・[40353] こめかみ 
     ・[40354] そうは問屋の最終兵器 
     ・[40356] ぽよ 
     ・[40358] そうは問屋の最終兵器 
     ・[40359] そうは問屋の最終兵器 
     ・[40366] ひよこ 
     ・[40392] そうは問屋の最終兵器 
     ・[40414] Tatu 
     ・[40419] そうは問屋の最終兵器 
     ・[403431255695477] こめかみ 
   ボスを残像させる方法 ....   
     ・[40312] Justy 
     ・[40313] softya 
     ・[40331] kai 
     ・[40336] softya 
     ・[40350] kai 
     ・[40351] Justy 
     ・[40368] softya 
     ・[40418] Tatu 
   マップエディターQuoy ....   
     ・[40402] Justy 
     ・[40412] yskey 
     ・[40413] Justy 
   キャラの分割描画が出 ....   
     ・[40374] Mato 
     ・[40375] EXTRL 
   シューティングノベル ....   
     ・[40298] ひよこ 
     ・[40355] Ma 
     ・[40360] 撤回万公 
     ・[40365] Ma 
   キー操作無効   
     ・[40363] DVDM 
     ・[40364] @ 
   カラフルにカオス図形 ....   
     ・[40318] kazuoni 
     ・[40322] lbfuvab 
     ・[40344] ひよこ 
     ・[40346] lbfuvab 
     ・[40352] こめかみ 
   フルリンクについて   
     ・[40340] dic 
   ボード等の差し替えに ....   
     ・[40248] 通りすがり 
     ・[40250] 鈴仙優曇華院イナバ 
     ・[40324] 小夜 
     ・[40334] 鈴仙優曇華院イナバ 
   3D上の移動について   
     ・[40281] Justy 
     ・[40282] 3D初心者 
     ・[40286] Justy 
     ・[40288] 3D初心者 
   選択画面のmain   
     ・[40179] kazuoni 
     ・[40183] ディア 
     ・[40271] ディア 
     ・[40279] kazuoni 
   wave変換ソフト   
   リサージュ曲線   
     ・[40186] Mato 
     ・[40189] lbfuvab 
     ・[40193] kazuoni 
     ・[40267] こめかみ 
   配列の値を別の関数へ ....   
     ・[40254] pooka 
     ・[40255] Mato 
     ・[40261] もちもち 
   画像+音   
     ・[39391] trx 
     ・[39392] kazuoni 
     ・[39395] trx 
     ・[39396] trx 
     ・[39397] kazuoni 
     ・[39399] ねこ 
     ・[39407] trx 
     ・[39409] ねこ 
     ・[39527] trx 
     ・[39612] ねこ 
     ・[39628] trx 
     ・[39631] kazuoni 
     ・[39752] trx 
     ・[39754] pooka 
     ・[39813] trx 
     ・[39836] trx 
     ・[39841] zwi 
     ・[39884] trx 
     ・[39889] zwi 
     ・[39898] Mist 
     ・[39933] trx 
     ・[39934] zwi 
     ・[39936] trx 
     ・[39937] zwi 
     ・[39938] trx 
     ・[39939] zwi 
     ・[39940] trx 
     ・[39941] zwi 
     ・[40008] trx 
     ・[40012] softya 
     ・[40190] trx 
     ・[40191] trx 
     ・[40192] kazuoni 
     ・[40233] trx 
     ・[40243] kazuoni 
     ・[40247] trx 
   DrawPolygon3D関数につ ....   
     ・[40224] Justy 
     ・[40238] cat 
     ・[40240] Justy 
     ・[40241] Justy 
     ・[40242] Justy 
     ・[40246] cat 
   22章で困っています。   
     ・[40205] Mist 
     ・[40209] やそ 
     ・[40211] toyo 
     ・[40237] 海野鯱 
   まったく分かりません ....   
     ・[40199] kazuoni 
     ・[40200] conio 
     ・[40236] ゆーずぃ 
   無題   
     ・[40197] 通りすがり 
     ・[40201] あ 
     ・[40202] ねこ 
     ・[40203] Naohiro19 
     ・[40219] lbfuvab 
     ・[40235] ゆーずぃ 
   項目選択時に画像を表 ....   
     ・[40049] ちゃお 
     ・[40098] マウ 
     ・[40100] Ma 
     ・[40194] マウ 
     ・[40222] Ma 
     ・[400481255575127] マウ 
   フルスクリーンで遊ぶ   
     ・[40216] lbfuvab 
     ・[40221] SB 
   ショットの実装につい ....   
     ・[39935] zwi 
     ・[39959] 256bit 
     ・[39963] softya 
     ・[39967] 256bit 
     ・[39969] softya 
     ・[39972] 256bit 
     ・[39977] softya 
     ・[39988] 256bit 
     ・[39990] softya 
     ・[40000] 256bit 
     ・[40007] softya 
     ・[40038] 256bit 
     ・[40213] 256bit 
     ・[40214] ねこ 
     ・[40217] 256bit 
     ・[40218] MNS 
     ・[40220] 256bit 
   龍神録プログラム   
     ・[40099] ちゃお 
     ・[40117] piyoyo 
     ・[40150] ぽよ 
     ・[40151] conio 
     ・[40154] toyo 
     ・[40187] piyoyo 
   ミシャグジさま弾幕が ....   
     ・[39922] ちゃお 
     ・[39942] 鈴仙優曇華院イナバ 
     ・[39944] 小夜 
     ・[39958] 小夜 
     ・[39966] ディア 
     ・[39971] 小夜 
     ・[39984] ディア 
     ・[40001] 小夜 
     ・[40002] 小夜 
     ・[40014] ぽよ 
     ・[40185] 小夜 
   2点間の角度の求め方   
     ・[40178] バグ 
   汽車のレールを組み立 ....   
     ・[40097] conio 
     ・[40107] TKOZ 
     ・[40149] conio 
     ・[40176] TKOZ 
   東方紅魔郷っぽいタイ ....   
     ・[40131] mnkr 
     ・[40143] Mato 
     ・[40144] 鈴仙優曇華院イナバ 
     ・[40146] conio 
     ・[40161] 鈴仙優曇華院イナバ 
   難易度表示のプログラ ....   
     ・[40155] Dixq (管理人) 
   ボスの溜め動作につい ....   
     ・[39879] あ〜る 
     ・[39968] yrao 
     ・[40017] Ma 
     ・[40023] あ〜る 
     ・[40035] Ma 
     ・[40052] 鈴仙優曇華院イナバ 
     ・[40070] あ〜る 
     ・[40074] yrao 
     ・[40082] あ〜る 
     ・[40084] あ〜る 
     ・[40105] ももた 
     ・[40118] あ〜る 
     ・[40119] Justy 
     ・[40121] ももた 
     ・[40122] あ〜る 
     ・[40123] あ〜る 
     ・[40127] あ〜る 
     ・[40128] ももた 
     ・[40129] あ〜る 
     ・[40130] ももた 
     ・[40133] あ〜る 
     ・[40134] 127 
     ・[40135] あ〜る 
     ・[40136] ももた 
     ・[40137] あ〜る 
     ・[40138] 127 
     ・[40139] ももた 
     ・[40140] あ〜る 
     ・[40141] あ〜る 
     ・[40142] ももた 
     ・[40145] ももた 
     ・[40147] あ〜る 
     ・[398781255414843] 羽流布 
   2次元配列について   
     ・[39126] mnkr 
     ・[39131] box 
     ・[39139] くりあ 
     ・[39140] バグ 
     ・[39141] mnkr 
     ・[39142] くりあ 
     ・[39420] くりあ 
     ・[39422] ねこ 
     ・[39423] non 
     ・[39448] トントン 
     ・[39473] くりあ 
     ・[39477] non 
     ・[39485] conio 
     ・[39519] くりあ 
     ・[39559] conio 
     ・[39622] くりあ 
     ・[39623] Tatu 
     ・[39629] くりあ 
     ・[39764] くりあ 
     ・[40106] くりあ 
   サーバーがダウンして ....   
     ・[40025] あ〜る 
     ・[40028] たかぎ 
     ・[40061] Dixq (管理人) 
     ・[40063] ねこ 
     ・[40065] a 
     ・[40069] Dixq (管理人) 
     ・[40072] a 

Name: でんすけ  ..入門者(4,738ポイント)   Date: 2009/10/13(火) 14:07   No:40370       
Title: Now Loading    
今、3DゲームをDirectXで作っているのですが、
「Now Loading」のプログラムってどのようになっているのでしょうか。

アドバイスお願いします。


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


Name: softya  ..上級者(15,840ポイント)   Date: 2009/10/13(火) 16:40   No:40376     
Title: Re:Now Loading    
>「Now Loading」のプログラムってどのようになっているのでしょうか。

1.「Now Loading」の画像を表示するだけ。
先に「Now Loading」の画像だけを読んで表示する。その後他のデータを読む。

2.「Now Loading」の画像をアニメーションさせつつ読み込む。
先に「Now Loading」のアニメ画像を全て読み込む。ファイルを非同期読み込みで読みながら「Now Loading」画像のアニメーションを制御する。

3.「Now Loading」の画像をアニメーションさせつつ読み込む2。
先に「Now Loading」のアニメ画像を全て読み込む。ファイルの読み込みは全てサブスレッド側で処理。
スレッドで読んでいる間はメインループで「Now Loading」画像のアニメーションを制御する。

のどれかですね。
1が一番簡単で、2は面倒だけどマルチスレッドの知識が不要。ただし、ファイルの非同期読み込みを知っている必要があるのと結構制御が面倒。3.はマルチスレッドを理解していないと作れないけど出来上がるコードはシンプル。拡張性が高い。


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

Name: でんすけ  ..入門者(4,744ポイント)   Date: 2009/10/14(水) 21:07   No:40472 解決!     
Title: Re:Now Loading    
ありがとうございました

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



Name: EXTRL  ..かけだし(1,637ポイント)   Date: 2009/10/13(火) 21:17   No:40400       
Title: コンパイル時エラーになって困ってます。    
今、無謀ながらいきなり2Dアクションゲーム制作を試みています。
いや こういうのもいいかなーなんて思ったんです。多分後悔すると思いますが。

本題
まずコード

#include "DxLib.h"


〜〜〜〜〜〜〜〜〜〜〜〜〜〜
この辺りfps設定(60に設定)
〜〜〜〜〜〜〜〜〜〜〜〜〜〜

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){

char Key[256]; //キー情報を取得・格納するもの
int Stickman_image[8]; //画像を格納するもの

if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1;
////////////////////////////////////////////////////////単なる区切り

SetDrawScreen(DX_SCREEN_BACK);

while(1){ //この辺はfpsを表示させるコード
fps();
count++;
ScreenFlip();
wait_fanc(); } //ここまで。

LoadDivGraph("棒人間.png",8,4,2,32,70,Stickman_image); //画像を格納
 
DrawGraph(0,0,"タイトル.png",TRUE); //タイトル表示
if(Key[KEY_INPUT_Z]==1) //Zで次の画面へ
DrawGraph(0,0,Stickman_image[0],FALSE); //棒人間を描画

ScreenFlip();


////////////////////////////////////////////////////////////////////////////////
DxLib_End();
return 0;
}


※一部全角スペースが混じってるかも知れません
このコードでコンパイルすると、以下のエラーが出ます。

'char *' 型は 'int' 型に変換できない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char*,int) )

パラメータ 'GrHandle' は int 型として定義されているので char * は渡せない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )

いずれも、
DrawGraph(0,0,"タイトル.png",TRUE); //タイトル表示
の部分でエラーになってるみたいです。
ざっくり答えだけを言われても理解できないので、ヒントとかを下さい。
コンパイラはBorland+BCC Developerです。

返信は明日の午後になるかも







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


Name: MNS  ..上級者(20,312ポイント)   Date: 2009/10/13(火) 21:24   No:40401     
Title: Re:コンパイル時エラーになって困ってます。    
DrawGraphの引数は、
DrawGraph( int x, int y, int GrHandle, int TransFlag ) ;
のようになっています。
"タイトル.png"は文字列なので、int型に変換できず、エラーとなっています。
int GrHandle には画像ハンドルを入れなければならず、
画像ハンドルはLoadGraph関数を利用することによって取得できます。
他のDrawGraph関数の使い方は正しいので、
恐らく単純なミスではないでしょうか。


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

Name: EXTRL  ..かけだし(1,679ポイント)   Date: 2009/10/14(水) 20:43   No:40469 解決!     
Title: Re:コンパイル時エラーになって困ってます。    
返信遅くなってすみません。
直したらちゃんと動作しました。ありがとうございました。


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



Name: Dixq (管理人) [URL]  ..ウィザード(1,065,059ポイント)   Date: 2009/10/06(火) 22:19   No:40068       
Title: ★うちのHPの内容が本になる事になりました(ご意見募集)★    
先日出版社の方から
「ゲームプログラミングの館」や「龍神録プログラミングの館」を元に、ゲーム制作を体感しながらゲームプログラムを学ぶ本を執筆してほしいと連絡がありました。

猫でもわかる・・を尊敬して作り始めたこのHP。まだまだあのような偉大なHPには程遠い状態ではありますが、執筆は夢だったこともあり、がんばってみようと思います。
(仕事と並行してやるので、どれだけ出来るかわかりませんが;)
(DXライブラリ作者様、会社の上司等には既に許可を頂いています)

ゲームプログラミングの館はこんなことになるとは思っていなかったので、
自分の思いつきで章を立て、コードも統一性が無く、あげくのはてには誤字脱字(むしろ変な文章)が多いという
無残な姿になっています^^;
ですので、これについてご意見を・・と言っても突っ込みどころが多すぎではありますが、とりあえずその辺は置いといて・・。

C言語をほとんど知らず(知っていてもあまり経験がなく)、ゲームプログラミングの館にいらっしゃった方はいろいろ解りにくいと感じられたことが多かったのではないかと思います。
Cに精通されている方でも、あちこち解りにくいと感じられた部分は多かったと思います。
そこで、もう一度ゲームプログラミングの館を作り直すとして

1. 何に気をつけたらいいと思いますか?
2. 章の構造はどのようだと解りやすいと思いますか?
3. 簡単な説明、簡単なコード、実行結果のスクリーンショットという小さな章の集まりという書き方はどう思いますか?
4. 初めてゲームの館、龍神録の館を見たときどう感じましたか?
5. 他何でも、ご意見を。(抵抗のあった部分や解りにくかった部分、改善案など…)

などを、もしよければ、お聞きする事が出来たら幸いに思います。

堅苦しい書き込みではなく、単に雑談カキコでも構いません^^; 何か気軽にお聞かせ願えたら光栄です☆


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


Name: kazuoni [URL]  ..ハッカー(110,007ポイント)   Date: 2009/10/06(火) 22:53   No:40073     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
まぢですか・・・w
ただでさえ忙しいのに、出版とは・・・。
なんだか、いろいろな意見が飛び交いそうな気が^^;

「ゲーム制作を体感しながらゲームプログラムを学ぶ」
ってのがかなりのミソですね。
今はシューティングに傾いているなか、
「ゲームプログラミング」を主にするとなると、
広く浅くってことになるんでしょうかね?
●●歳からシリーズみたいな感じですかね?
何を執筆するかで、どのような構成がいいとか、
かなり変わってきそうですね。

一住民として、このスレの行方がとても気になりますww


最後にありきたりですが・・・がんばってください^^


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,065,572ポイント)   Date: 2009/10/06(火) 23:04   No:40075     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
>>kazuoniさん

う〜・・マジで時間が欲しいです・・。1年位お休みを頂きたい・・orz

>「ゲームプログラミング」を主にするとなると、

龍神録の内容も結構入れていきたいんですけど、そうなると色々・・・ね・・・。
問題が起きてくるので、そういうトラブルをどう対処していこうかなと思ってます^^;
もう完全オリジナルにするか、恐れ多くも作者様に相談させて頂くか・・。

14才からの〜はきちんと読んだことないので、今度読んでみますね。
amazonで見る限り、どうもゲームの館と龍神録の館をくっつけただけじゃ似たようなものになってしまいそうですね。
ここはうちの本でなければ見せられない部分をみせないといけないですねぇ・・。
って、、どんなんだ・・。


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

Name: ねこ  ..熟練のプログラマー(45,345ポイント)   Date: 2009/10/06(火) 23:08   No:40076     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
まずは、おめでとうございます。そして頑張ってください〜。

このHPではサンプル内容で言えばある程度のC言語は習得した人向けになっていると思います。
色々な書籍ではC言語基礎前提、とはなっていても1章程使って簡単に解説してますが
そこをfor文はファイル読み込みをサンプルにしたりすると基礎章をフォローしつつ、
「ゲームを作っている」という実感は残した形での内容になるのではないかと感じます。

何気にDXLIB関数の絡みもあってどこにフォーカスを当てて執筆していくのかがイメージしにくいですね・・・


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

Name: 御津凪 [URL]  ..ハッカー(116,558ポイント)   Date: 2009/10/06(火) 23:11   No:40077     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
まずはおめでとうございます。
そして執筆頑張ってください。(より多忙になってしまいますね^^)

どの範囲を対象にした本なのかによりますが、
一切のC言語初心者に対しての本を執筆する、という意味ならば、
今までの入門書でも理解するべき部分が足りなかったり等(「ここはおまじないだから」とか)して、
必ずしも読んだ人全員が満足に理解するというようなことはほとんどなかったようです。
(「猫でも〜」の本でも挫折した人がいるようですし)

そういう意味でも、誰もが理解できる文章量かつ購読者が満足の行く本にするには、
100 ページも 200 ページも足りないかもしれませんね。(予測)

…ということで、時間があればここの掲示板の今までの質問などを読み返して、
それを反映してみるのはどうでしょうか?

それと章として内容を分ける場合、やはり起承転結を生かした方が読みやすいと思いますし、
本全体としても起承転結に合わせると、ゲームを一から製作するというストーリーを本に組み立てることが出来るかもしれません。

逆に章ごとに独立してしまうと、そこで読者は段差があるかのようにつまづき、
読み留まってしまうかもしれません。

章の流れとしては、起承転結にならうと、

・環境の導入(起)
・C言語の基礎知識(承)
・ゲーム基礎構築(転)
・全体の組み立て(結)
・知っておくと役立つ小技の章(その他)

大体こんな感じで、これが王道かなと思います。
あとは上記に書いたようにここの掲示板のログなどを反映すれば、

> うちの本でなければ見せられない部分

となりますね。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,065,985ポイント)   Date: 2009/10/06(火) 23:30   No:40081     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
>>猫さん

ありがとうございます。
これも皆様のお力添えあってこそだと思っております。
本当に感謝致します^^

>そこをfor文はファイル読み込みをサンプルにしたりすると基礎章をフォローしつつ、
>「ゲームを作っている」という実感は残した形での内容になるのではないかと感じます。

そうですね、Cの勉強も出来、ゲームプログラミングも出来・・そういうのが理想ですね。
それであって、
おそらく一つ一つ着実に進むという進み方ではやりにくい人がこの本を手に取ってくれると思うので、
まずは作る楽しさを味わって頂きたいですね。

>>御津凪さん

ありがとうございます^^
私も実は猫でもの本持ってます。
猫でもはあのたまにはいるジョークが面白いのに本ではそれがなくて残念です^^;
そうだな〜、私自身いろんな参考書を読んでみて自分で本のわかりにくい部分を見つけていくのも手かもしれませんね。
文量としては400ページ前後になるんじゃないかなと思います。

>…ということで、時間があればここの掲示板の今までの質問などを読み返して、 それを反映してみるのはどうでしょうか?

なるほど、そういう意味ではここの過去ログは宝庫ですね。探してみます。

>起承転結

確かにそうですね。王道はやはりその道が一番良いから王道なんでしょうしね。
その辺意識したいと思います。


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

Name: array [URL]  ..熟練のプログラマー(57,847ポイント)   Date: 2009/10/06(火) 23:36   No:40083     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
おめでとうございます♪
全力で支援します^^

とりあえず、本の趣旨というか方向性は
1.「言語初心者でも分かるゲームプログラミング」
2.「ある程度プログラムは分かる人向けの始めてのゲームプログラミング」
3.「ゲームプログラミング経験者向けのゲームプログラミング」

といった形が考えられるのでしょうか

私は完成度の高いゲームを最初に紹介して、このゲームを作ろうというスタンスで執筆してもらえれば
嬉しかったりします。

ようするに、ゲームプログラミングのアルゴリズムを紹介する内容ではなく
ゲームを作成しながら、自然にゲームプログラミングのアルゴリズムが覚えれたって方が
目的もはっきりしているので、良いのではないかと思います。


追記・・・何か手伝えそうなことがあれば気軽に言って下さい


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

Name: yu  ..熟練のプログラマー(40,064ポイント)   Date: 2009/10/06(火) 23:57   No:40085     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
おぉ、すごいですね。おめでとうございます
このサイトに書いてあることはすばらしい情報なのでより多くの人達に知ってもらえるのはいいですね
大変だと思いますが頑張ってください!

自分は龍神録の館がきっかけでプログラミングを始めたので
Dixq様にはとても感謝しています

自分が龍神録に引かれた理由は
初めてサイトを目にした時、完成しているゲームがとても素晴らしくて
ここのコードを全部理解できたらこんなのが作れるのか!と思ったからです
ゲームプログラミングの館はあまり見ていませんでした;


あくまで個人的な龍神録の館の感想ですが

※良かったところ
・目に見えて機能等が増えていくのが面白く、理解もできた
・ゲームができていくのを体験できた

※抵抗があったところ
・ソースコードで、スペースが無く、詰められていたところ
( 10 + 50 → 10+50 等)
・数式が分からなかった(これは仕方無いかもしれませんが...)
(レーザーの当たり判定の時に使われていた外積とかです)


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

Name: Ma  ..中級者(11,591ポイント)   Date: 2009/10/07(水) 00:51   No:40087     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
おめでとうございます!!
すごいですねー!いままで親しんできたサイトなので、読者としてもうれしいお知らせです。

さて、いままでの感想としては、とても分かりやすく解説してある部分が大半でとても満足しております。
初心者なりのアドバイスですが、レーザーのところが少し面倒でしたね。(外積は学ぶしかないとしても)
レーザーの所でもっと短く計算できる考え方以前思いついたまま進言していなかったので、この機会に参考にしていただければと思います。



現在、レーザーのあたり判定は
>1 円の中に長方形の頂点が無いか
>2 長方形の中に円が入り込んでいないか
>3 円の中心と辺との距離が半径以内か

このように三部構成になっています。
これを参考にして、私が考えたあたり判定は長方形と点のあたり判定にしぼりました。
龍神録のコードを使っていないので、サンプルをそのまま張ることができませんが、説明だけしてみます。

長方形の頂点は、長さ、幅、角度、中点(重点) の4つから計算されていますが、
これを、長さ+対象の円の半径、幅+対象の円の半径、角度、中点(重点) にし、2番の計算をだけで判定します、
そうすると、1番と3番の可能性も考慮して2番だけで計算できることになります。


って、言葉じゃ分かりにくいので画像を用意してみました。


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

Name: Justy  ..伝説なるハッカー(435,515ポイント)   Date: 2009/10/07(水) 03:27   No:40091     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
 初期の館の頃から見ていますが、書籍化されるとは思ってもいませんでした。
 すごいですね。びっくりです。
 発売が早くも楽しみです。



>何に気をつけたらいいと思いますか?

 内容面に関してはターゲットだったり、ページ数などに左右されるので
なかなか言及しづらいのですが、Webと書籍では媒体が違うのである程度ページレイアウトも
念頭におかないといけないのかな、と。

 載せるコードも長いすぎるとページをめくるだけになってしまいますし、
ネストの深いコードがあると読みづらくなりますし。



>小さな章の集まりという書き方

 いいと思いますよ。
 見開き2ページ、或いは4ページとかで1章的な構成だと
シンプルでいいかもしれません。
(ぎっちり詰まりすぎてるのはOUTですが)


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

Name: ひよこ  ..熟練のプログラマー(54,349ポイント)   Date: 2009/10/07(水) 06:24   No:40092     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
すごいですね。出版ですか・・・がんばってください。
自分が考えたことを素直に書きます。

1. 何に気をつけたらいいと思いますか?
わかりやすくするために、後、誰でも読めるためにC言語を
最初の3ページくらい勉強できると
いいかもしれません。

2. 章の構造はどのようだと解りやすいと思いますか?
マップで行けるか行けないを作ろう。みたいにして、

キャラの向きに合わせてその先に壁があるか?調べる関数を作り、
その答えをもとに行けるか行けないかを判定します。

まずは、キャラの向きに合わせてその先に壁があるか?調べる関数です。
ソース・・・・・・・・・・・みたいな感じがいいと思います。
これならゲームの館は一章3ページくらいになると思いますが・・
3. 簡単な説明、簡単なコード、実行結果のスクリーンショットという小さな章の集まりという書き方はどう思いますか?

上のようにすればいいと思います。(参考になるとうれしいです。

4. 初めてゲームの館、龍神録の館を見たときどう感じましたか?
やっぱりC言語が勉強できてないと難しいと思いました。
難しいと思いながら読んで理解?しました。

5. 他何でも、ご意見を。(抵抗のあった部分や解りにくかった部分、改善案など…)
レーザのソースのコメントを増やしてほしいです。
まだよく読んでませんが、見た感じ、難しいです。
できたら引数Pのアドレスをさす変数Qをつくります。
みたいな書き方もいいと思います。


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

Name: たかぎ [URL]  ..ハッカー(112,108ポイント)   Date: 2009/10/07(水) 07:14   No:40093     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
私の経験からしても、書籍化は時間の問題だと思っていました。
大変なのは分かっているので、今の時点ではあえて「おめでとう」とはいいません(店頭に並んでからですね)。
査読ぐらいはやりますので、よければお声かけください。
# 私が書いている本も誰か査読してほしいところです。


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

Name: non  ..熟練のプログラマー(64,125ポイント)   Date: 2009/10/07(水) 08:52   No:40094     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
おめでとうございます。
1冊の本にすべての情報を載せようというのは無理だと思います。
C言語の入門書は「猫」に譲って、(別に猫でなくてもいいけど)
ゲームを中心に進めた方がいいと思います。
基本はホームページとのリンクという形式で。
インターネットに接続できる環境を持っている読者を前提に執筆して
いいのではないでしょうか?フォローはすべてHPという形式。
執筆者と読者の距離が近い本を目指して欲しいとおもいます。


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

Name: softya  ..中級者(12,928ポイント)   Date: 2009/10/07(水) 09:54   No:40096     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
おめでとうございます。
かなり大変だと思いますが、がんばってください。
80ページぐらいのマニュアルしか書いた事が無いんですが、数百ページは想像するだに恐ろしいです。

1. 何に気をつけたらいいと思いますか?
「ゲームプログラマになる前に覚えておきたい技術」の様に言語説明なしでぶっちぎるなんて無茶は出来ないと思いますので、私としてはページの頭にまとまって説明があるより、ゲームの説明に合わせて出てくるC言語の機能を軽く説明したほうが良いんじゃないかと思ったりします。コラム的な扱いですね。

2. 章の構造はどのようだと解りやすいと思いますか?
今のままで十分良いと思うのですが、大きな章のまとまりってのは欲しいです。

3. 簡単な説明、簡単なコード、実行結果のスクリーンショットという小さな章の集まりという書き方はどう思いますか?
これが良いんだと思いますよ。

4. 初めてゲームの館、龍神録の館を見たときどう感じましたか?
丁寧に説明してあるなって思いました。

5. 他何でも、ご意見を。(抵抗のあった部分や解りにくかった部分、改善案など…)
細かい話なんですが、移植していて思った事で値が説明も無く書いてある場所があるんで#defineで定義するか、enumを使って出来るだけ定数は分かりやすくしてほしいです。
あとflagが0,1だったり、でもDXlibはTRUE,FALSEだったりするのが気になったり、関数の配列は説明が大変なのでswitch〜caseで書いたほうが良いかもなぁと思ったりしてます。

後、本であったら良いなぁと思うけどあまり取り上げられていないのが、ゼルダ的アクションRPG(ページ&時間が足らないですよね〜)とか有るとうれしいです。ファミコンのディスク版の1ステージ分ぐらいで「ゲームプログラミングの館」の近い部分も有りますので、もう少し踏み込んでもらえると。


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

Name: すずめ  ..入門者(4,228ポイント)   Date: 2009/10/07(水) 12:42   No:40101     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
龍神録の館がメインだと思いますので、初心者としての要望です。
2面へ移行しゲームクリアーまで、つまり一つのゲームが
完了するまでの工程を書いて欲しいです。

弾幕も新しく何種類か公開して欲しいです。
掲示板で質問があったくねくねレーザーとかいろいろなレーザーも
まとめてサンプルとして書いて欲しいです。

あとは独り言ですが、龍神録の館はほぼ理解できたので、C++のclassで
書き換えてみたいと思っているんですが全くできません。
龍神録のC++版の本も欲しいです。DirectX版もあれば欲しいです。
まあこれはありえないので少しずつ挑戦したいと思います。

発売される日を楽しみにしています。




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

Name: ディア  ..初心者(5,497ポイント)   Date: 2009/10/07(水) 14:59   No:40103     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
出版ですか!!
すごいですね!


>>3. 簡単な説明、簡単なコード、実行結果のスクリーンショットという小さな章の集まりという書き方はどう思いますか?

いいと思います。
ただ、最初にスクリーンショットを出したほうがいいかと思います。
「ここの章ではこんなことをやるよ〜」
みたいな感じで紹介し、
そこから説明していくというのはどうでしょうか。


ここのHPなら、C言語初心者でも進めていけば
なんとなく出来るを思います。

それから、オリジナルを加えていく段階で
「これはこういう意味だったのか!」
みたいに学んでいければいいんじゃないかと思います。


あと、ここの質問板でよくある質問とかをまとめて書いたりはどうでしょう。


とりあえず、思いついたのはこのくらいです。
頑張ってください!





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

Name: s-rush  ..熟練のプログラマー(57,348ポイント)   Date: 2009/10/07(水) 16:23   No:40104     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
書籍化おめでとうございます><
ご多忙だとは思いますが、頑張ってください。
店頭に並ぶことを心待ちにしてますね^^


私の意見が参考になるかどうかはわかりませんが、感じたことを書かせていただきます。

私自身、ゲームプログラミングに関する書籍を2冊購入して一読しましたが、
C言語(あるいはC++)を完全にマスターしていることが前提になっているような気がしました。
また、私自身もあるていどC言語には精通しているつもりなのですが、
それでもコードが難しく、わかりづらいものが多いものでした。
(単に私の実力不足ではありますが^^;)
中には、ゲームを作りたくてプログラムの勉強を始める人も多いと思います。
初歩中の初歩から入れ込む必要はないとは思いますが、
かる〜くそういった内容も組み込めば、初心者の読者にとっては喜ばれるのではないでしょうか?

サンプルコードも無駄に長いと、解析にも時間がかかってしまったりと
あまり好まれないかもしれません。
ゲームプログラミングの館に載せられている程度がいいかもしれません。


書籍が発売されたら、ぜひ購入させていただきますね^^


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,066,783ポイント)   Date: 2009/10/07(水) 20:18   No:40112     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
>>arrayさん

>おめでとうございます♪

ありがとうございます^^ 全力で頑張ります〜☆

>私は完成度の高いゲームを最初に紹介して、このゲームを作ろうというスタンスで執筆してもらえれば嬉しかったりします。

なるほど。
今現在あるゲームプログラム紹介本は初心者向けだと簡単なゲームしか作れず、読んでも結局一つのゲームが作り上げられるようにならない。
中級者以上向けだと難しすぎて初心者が手に取れない。
そんな状態にある気がします。
何とか「初心者でも簡単にこんなゲームが作れるよ!」ってところアピールしたいですね。

>追記・・・何か手伝えそうなことがあれば気軽に言って下さい

心強いです^^ ありがとうございます☆


>>yuさん

>おぉ、すごいですね。おめでとうございます

ありがとうございます^^

>自分は龍神録の館がきっかけでプログラミングを始めたので

あ、そうでしたね。というかプログラミング未経験の状態であそこまで本格的に作り上げられるとは本当に素晴らしいと思います^^;

>自分が龍神録に引かれた理由は初めてサイトを目にした時、完成しているゲームがとても素晴らしくてここのコードを全部理解できたらこんなのが作れるのか!と思ったからです

「完成品」が明確にわかれば目標となるものも目指しやすく、
「この本読み終えたらこんなの完成するんだ!」と思えればやる気もあがるかもしれませんね。

>・ソースコードで、スペースが無く、詰められていたところ
( 10 + 50 → 10+50 等)
>・数式が分からなかった(これは仕方無いかもしれませんが...)
(レーザーの当たり判定の時に使われていた外積とかです)

なるほど、ソースコードはブラウザで見ることを考慮し、なるべく右に広くならないようにしようとしたんですよね。
今度は見やすくなるように、気を配りたいと思います。
ソースコードからウェブ上で見やすい形に変換するツールなるものを作ったので次回から大丈夫のはずですw


>>Maさん

>すごいですねー!いままで親しんできたサイトなので、読者としてもうれしいお知らせです。

身に余る御言葉恐縮です^^ ありがとうございます。

>レーザーの所でもっと短く計算できる考え方以前思いついたまま進言していなかったので、この機会に参考にしていただければと思います。

あれはあちこち無駄な計算が多いので作り直さなければ〜・・と思っているのですが、
ん〜なかなか出来ていない状態です;
作りながら「こんなん誰が読むんだ・・」と思っていたので次回からその辺気をつけようと思います^^;

図まで用意していただきありがとうございます。
あの方法だと長方形の端が丸くないと若干誤差が出そうですが、近い計算は確かにできそうですね。
あのページを書いた直後にま〜くさんからすごく簡単に計算出来る方法教えてもらったのでしばらくは

orz

となっていました^^;
次回書き直す時はもっとわかりやすいように努力しますね;
ありがとうございました^^


>>Justyさん

>初期の館の頃から見ていますが、書籍化されるとは思ってもいませんでした。すごいですね。びっくりです。

これもJustyさんのお力添えあってのことだと思いますので、本当に感謝しております^^;
最初は3人しか常連さんいらっしゃらなかったですけど、ダッシュさん、yukemuriさんがいらっしゃらなくなった現在HP開設当時からいらっしゃるのは、Justyさんだけですね。
ダッシュさんはたまにメールは来るのですが、ゲームを作る夢はまだお持ちのようであるものの、
プログラム方向ではなく、素材、シナリオの方に専念されているようです^^;
yukemuriさんは何か他の方から気に障る書き込みがあったと怒って去っていってしまいましたし・・。

>なかなか言及しづらいのですが、Webと書籍では媒体が違うのである程度ページレイアウトも念頭におかないといけないのかな、と。

そうですね。本はソースコードが長いと立ち読みすらする気にならなくなってしまいますよね。
なるべく完結かつ解りやすく書く努力が必要そうですね。
しかしコードが薄いと内容も薄くなる・・。
トレードオフの戦いになりそうですが、がんばります^^;


>>ひよこさん

>わかりやすくするために、後、誰でも読めるためにC言語を最初の3ページくらい勉強できると

3ページですか?!
復習ページみたいなものですかね?
基本的なCの使い方の一覧みたいなものでしょうかね。
なるべくCがほとんどできない方にも抵抗なく入って頂けるように努力するつもりです。


>>たかぎさん

>査読ぐらいはやりますので、よければお声かけください。

これは心強いです!
ただたかぎさんにOKが出していただけるような本を執筆するには後10年位修行が必要そうな気がします^^;
とりあえず国語の力が低いので・・。文章の書き方からまず勉強しようと思います。
修士論文書く前に「わかりやすい文章の書き方」を人間工学の視点からとらえた本読んだことあるんですが、
そういうのいいですよね。なるべく読む人の負担が減るように、知識をまず蓄えてから執筆に挑もうと思います。

># 私が書いている本も誰か査読してほしいところです。

たかぎさんにご意見が出せる方が何人いらっしゃるか・・。
私もいつか(読むだけ)拝見させて頂こうと思います^^


>>nonさん

ありがとうございます^^

>1冊の本にすべての情報を載せようというのは無理だと思います。

そうですねぇ。
ゲームの館、龍神録の館、それぞれ満足するまで書こうとするときっと一冊ずつ位になってしまうと・・。
C言語の基本から始めるとそれこそ本が全て別々になりそうですね。

>基本はホームページとのリンクという形式で。インターネットに接続できる環境を持っている読者を前提に執筆して

そういうの私もいいなと思います。
本ってコンパイラにコピペ出来ないって欠点があるんですよね。
CDとかよく付いてきますけど、あれって使う気になれないんですよね・・。
読みながらその場でその都度コピペしたいですよね。
私は売上本数とか全く気にしないので、HP上に本の内容がまんまあってもいいと思います。
読者がその方がいいのならそうしたいと思ってます。
それは出版社的にどうなのかは知りませんが^^;
まぁどうなるかはまだ具体的に決まってないので、その辺も編集者さんと話してみようと思います。

>執筆者と読者の距離が近い本を目指して欲しいとおもいます。

そうですね。最近掲示板が疎かになってしまっていますが・・。
いつも出来るだけアットホームなサイトを目指したいと思っています。



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

Name: Dixq (管理人) [URL]  ..ウィザード(1,065,121ポイント)   Date: 2009/10/07(水) 20:18   No:40113     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    

>>softyaさん

>かなり大変だと思いますが、がんばってください。
>80ページぐらいのマニュアルしか書いた事が無いんですが、数百ページは想像するだに恐ろしいです。

そうですね〜1年はかかるんじゃないかと思っています。
仕事しながらってのが大変ですね;
大学院時代にこの話が来ればよかったのに・・。

>ゲームの説明に合わせて出てくるC言語の機能を軽く説明したほうが良いんじゃないかと思ったりします。

そうですね。ゲーム作りを通してCの力も身に付くなんてのが理想です。
なるべく難しい構文は使わず、可能な限り簡単な書き方で本格的っぽいゲームが作れるようにしたいと思います。

>今のままで十分良いと思うのですが、大きな章のまとまりってのは欲しいです。

そうですね。大きな章のまとまりは作ろうと思います。

>細かい話なんですが、移植していて思った事で値が説明も無く書いてある場所があるんで#defineで定義するか...

そうですね〜統一性が無いですね;
flagにたまに2が入ったり「それフラグじゃないよ!」って突っ込まれそうな使い方もしてありますしね^^;

>ゼルダ

いいですね〜。
これは2冊目というk・・(ry
いや〜気が早すぎますけど、今回の執筆が終わったら本に付属する教育支援ソフトみたいなの作りたいな〜と思ってるんですよね。
クイックソート解説アプリの本格的バージョンとでもいいますか・・。
やっぱゲームプログラムって実行結果に動きがあるじゃないですか、本じゃ説明しにくいんですよね・・。

あ〜時間が欲しい!
朝から晩まで自分が好きな物作りたい!
・・・出来ることならこっちの世界で食べていきたい・・。
・・が、そんなことになると今までフリー公開だったものが全部シェア公開というイジキタイナイサイトになりそうだ・・・。


>>すずめさん

>龍神録の館がメインだと思いますので、初心者としての要望です。2面へ移行しゲームクリアーまで、つまり一つのゲームが

そうですね〜。「ここまではわかったけど、結局完成までどうやって持っていくの?」それが解説本を読んだ後の乾燥ですよね。
ただ、龍神録をそのものが出来るまで紹介するときっと300章位になりそうですし・・。
とりあえず編集者さんからは「1面が出来る位の解説まで持っていってほしいが、内容は400ページ位に抑えてほしい」ということでした。
確かに全てを説明したいんですが、ページ数的制限があるんですよね;
多分龍神録1章から始めたら可能かもしれませんが、
「C言語とは」に近い部分から入るのでなかなか難しいかもしれません・・。
しかし館で追加する事は出来ますね。ありがとうございます。時間を見つけて追加していきたいと思います。

>弾幕も新しく何種類か公開して欲しいです。

あれから4〜5個作ってみたので、入れてみたいと思います。


>>ディアさん

ありがとうございます^^

>ただ、最初にスクリーンショットを出したほうがいいかと思います。

そうですね〜解説を読み終わってからどのようなものが出来上がるのかがわかるより、先にあった方がいいかもしれませんね。
その辺考慮したいと思います。

>あと、ここの質問板でよくある質問とかをまとめて書いたりはどうでしょう。

なるほど、そう考えるとここの質問過去ログは改善点のデータベースのようなものですね。
ありがとうございます。やってみます^^


>>s-rushさん

>書籍化おめでとうございます>< ご多忙だとは思いますが、頑張ってください。

ありがとうございます。がんばります^^

>私自身、ゲームプログラミングに関する書籍を2冊購入して一読しましたが、
>C言語(あるいはC++)を完全にマスターしていることが前提になっているような気がしました。

そうですね、あまりに入門レベルのものだと大したものは作れないし、
それ以上だと急にハードルがあがるといった印象がありますよね。

>サンプルコードも無駄に長いと、解析にも時間がかかってしまったりとあまり好まれないかもしれません。

そうですね。コードばかり並んでいる本なんて読もうと思いませんもんね^^;
とりあえず書店に行って沢山本を読んでみて、
どのような本が読みにくかったか、読みやすかったかを見てきたいと思います。
よいものはパk・・いや吸収し、良いものが作れるように頑張りたいと思います!


1,662ポイント を落としてしまった。

Name: situmon  ..熟練のプログラマー(46,997ポイント)   Date: 2009/10/07(水) 20:46   No:40115     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
売られたら早く買いたい!!!
がんばってください。
見やすい本は。。。
画像がたくさんあったりするといいかもです。


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

Name: ラグ  ..中級者(10,736ポイント)   Date: 2009/10/07(水) 21:05   No:40116     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
書籍化おめでとうございます。
前々から2,3万円くらい出してでも買いたい内容が書いてあって素晴らしいなぁと思ってました。
ご多忙だとは思いますが、本が店頭に並ぶ日を心待ちにしております。

では僭越ながら私の感じたことを書かせていただきます。

1. 何に気をつけたらいいと思いますか?
龍神録の館ですが、ウェブページのサンプルをそのままコピペするだけだとエラーが起きる章が大半でした。
落としたプロジェクトはちゃんと動くので、これはきっとコピペするだけじゃなく、自分でソースを読み解いていかないといけないんだな、と思いました。今となってはとても勉強になったと感じています。
ただ、書籍化するなら可能な限り間違いがないようにするといいと思います。

2. 章の構造はどのようだと解りやすいと思いますか?
今の構成で充分わかりやすいとは思います。

3. 簡単な説明、簡単なコード、実行結果のスクリーンショットという小さな章の集まりという書き方はどう思いますか?
全くの初心者の私でもわかりやすいと思いました。

4. 初めてゲームの館、龍神録の館を見たときどう感じましたか?
ツクールでしかゲームを作れなかったのに、ここに書かれていることに従っていけば本当に作れるのか、すごいなぁと思いました。
ここに出会わなければプログラミングなども一生縁がなかったかもしれません。

5. 他何でも、ご意見を。(抵抗のあった部分や解りにくかった部分、改善案など…)
このサイトにたどり着くまでに何冊もゲームプログラミングの本を買いました。本が悪いわけではないでしょうが、私がそれを読んでゲームが作れるようにはなれませんでした。
といっても未だに龍神録を改造している程度ですが、50章までを通してなんとなくやり方がわかった気がします。
かなり泥臭いとは思いますが、ゲームの一連の処理を作ることができました。これも全て管理人様のおかげです。
上でも書きましたが私にとっては、何千円もするような本より龍神録の館のほうが数十倍も数百倍も有益です。


まとまりのない文章になってしまいましたが、本当におめでとうございます。
これからもひっそりと応援します。


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

Name:  ..初心者(8,317ポイント)   Date: 2009/10/07(水) 21:39   No:40120     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
執筆おめでとうございます

1.普通で申し訳ないのですが、見る方ができるだけ途中で投げ出す確立が低くなるような書き方をできるだけ目指すだと思います。とても難しいですが・・・

2.今のままでいいと思います。

3.私は挙げられている書き方が

1. 何に気をつけたらいいと思いますか?
 普通で申し訳ないのですが、見る方ができるだけ途中で投げ出す確立が低くなるような書き方をできるだけ目指すだと思います。とても難しいですが・・・

2. 章の構造はどのようだと解りやすいと思いますか?
 今のままでいいと思います。

3. 簡単な説明、簡単なコード、実行結果のスクリーンショットという小さな章の集まりという書き方はどう思いますか?
 私としてはとてもよいと思います。

4. 初めてゲームの館、龍神録の館を見たときどう感じましたか?
 初めはテトリスしか作ったことがなかったので、自分でもできるかどうか不安になりましたが、進んでいくうちに不安も消えて先が楽しみになりました。

5. 他何でも、ご意見を。(抵抗のあった部分や解りにくかった部分、改善案など…)
 もう挙げられていますが、2面以降の作り方もあるといいと思いました。

未熟な意見で申し訳ないです。
執筆がんばってください。


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

Name: uwlover  ..入門者(3,805ポイント)   Date: 2009/10/07(水) 22:19   No:40124     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
何はともあれ、まずはおめでとうございます。
1.用語の解説漏れがないように心がけるといいかと。初心者の挫折理由で主なものは、「説明のない用語が普通に使われていて分からない」「用語の説明が初心者に分かりにくい表現でいっぱい(値を返す、制御を返す、など)」だと思われます、というか現在進行形で初心者の私のことですがねw
しかし、だからといって冗長な説明になると400ページどころじゃ済まなくなりますしね…難しいとこですな。

2.ハッカーさんの提案と同じく。

3.一つの方法としては十分でしょうが、痒いところに手が届かなくなるデメリットもあるのでそこはDixqさんの手腕にかかっているかと。

4.中々本格的な説明サイトがあるもんなんだなぁ、とまずは驚愕しましたね。更に驚いたのは、この掲示板の活況ぶりですね。正直に言うと、ゲームプログラミングの世界がこんなに盛んだとは知りませんでした。

5.ゲームを作る以上、様々なアルゴリズムを開発していくことになりますが、文字だけの説明だと文系野郎にはちんぷんかんぷんになりますので、図解を多く取り入れるのがいいと思います。(2変数の値の入れ替えアルゴリズムさえもう1つの入れ替え用変数が必要な理由がなかなか分からなかったほどです^^;)
C言語の解説だと、大きな山場になるのが、「関数」、「ポインタとメモリの仕組み(この2つはセットで学習しないとマスターするのはきついです)」、「構造体」、「ファイル制御」でしょう。この辺りの解説を詳細に行うといいのではないでしょうか。

長々となりましたが、書籍の発売日を楽しみに待っています。


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

Name: たかぎ [URL]  ..ハッカー(112,395ポイント)   Date: 2009/10/07(水) 22:30   No:40125     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
商業出版の場合は、必ずしも書きたい本が書けるわけではないのが辛いところです。
(書きたいように書くなら自費出版しかありません)
出版社としては、当然売れる本を書いてほしいわけで、ある程度は期待に応えておくほうがよいでしょうね。

素人向けの本のほうが市場のパイが大きいので、ゲームを作りながらC++を学べるというのが妥当だと思います。
あと、書籍として完結していることは大前提ですので、ウェブサイトで補完するようなものは難しいと思います。
せいぜい、正誤表、Q&A、ソースコードのダウンロードぐらいが限度ですね。

それと、これは担当者のかたと相談しないと何とも言えないでしょうが、現在のコンテンツを再編集するぐらいで、サクッと原稿ができあがることを期待している可能性があります。
現状のコンテンツをブラッシュアップするぐらいにとどめたほうがよいかもしれませんね。
(それだけでも結構大変でしょうが...)



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

Name: たかぎ [URL]  ..ハッカー(112,514ポイント)   Date: 2009/10/07(水) 22:34   No:40126     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
書き忘れました。
デビュー作は、とりあえず売れる本を目指しておいて、実績を付けてから2作目以降で書きたいものを書いていくのもひとつの手です。
2作目以降をにらんでおけば、1冊に詰め込もうとして中途半端になることもないでしょうから。


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

Name: Tatu  ..中級者(12,161ポイント)   Date: 2009/10/08(木) 00:36   No:40148     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
本についての意見です。

環境の導入について
マイクロソフトのサイトを初めて利用する人でもわかるように、
VisualC++2008のインストールのやり方を詳しく説明するようにしたらよいと思います。
C言語についての知識を本や学校などで得ていても自分用の開発環境を持っているとは限らないからです。
URLだけかいて「ここからダウンロードしてください」というだけのやり方は不親切な気がします。
DXライブラリについては、本家にかかれていることをそのままかいても問題ないと思います。

本の形式について
このサイトと同様の形(解説+ソース+スクリーンショット+手本や素材(CD))でいいと思います。

「CDについたプロジェクトは使いたくならないだろうけどコピペはできるようにしたい」
そのためにホームページにリンクさせるくらいならば、同じ内容のファイルをCDにいれてしまったほうがよいかもしれません。
もしこの手段を使った場合は、重たい本を本棚から取り出す必要が減り、
コピペはしたいのに何らかの事情でネットにつなげないといった状況におちいっても困らないようになるでしょう。
じゃあ本の意味はということになりますが、紙媒体なので保存がきくということでよいのではないでしょうか。

本の中身について
ゲームプログラミングの館のような各処理を別々に書いていく方式よりも、
一つのゲームを作る過程がわかりやすい龍神録プログラミングの館のような形をとったほうがよいと思います。
ゲームプログラミングの館では「こういう処理をするにはどうしたらよいか」はわかりますが、
それだけでは「ゲーム全体の中でどうかけばよいか」はよくわからないからです。



以下、紹介する機会がなかったので私自身のことについてかきます。

私がC言語にふれたのは親が
「ゲーム作りに興味があるのなら、C言語について知っておくと役立つだろう」と、
ブルーバックス B-1349 見てわかるC言語入門 CD-ROM付き(著:板谷雄二 発行:講談社)を
買ってくれたのがはじめてです。これはCDだけでも学習できるというもので、
中身はprint文から自作関数、構造体、ファイル処理までの内容をまとめたhtmlファイルとそのhtmlファイル上で作動する
独自のシミュレーター(コードを一行ずつ実行し、変数の動きがわかりやすく表示される。
また、コードは初めから書かれてあり、書き換えることもできる)です。基礎的な部分は本にものせてあります。
しかし、買ってくれた当時は英語に対する知識もあまりなかったのでよくわかりませんでした。
そして、しばらくの間は勉強やらなんやらでC言語に触れるということは特になく、
市販されているゲーム作りの本を立ち読みしてみてもC++やDirectXを知らないため、
ソースの意味が全く分からない状態が続いてました。

しばらくして、東方2次創作の「東方遊夜雀」というフリーゲームを見つけ、
原作の東方projectや東方風STGにはどういうものがあるのだろうかとおもって色々みたところ、
このサイトの「四聖龍神録」に出会い、
「C言語とDXライブラリを使って簡単にゲームを作ることができる」ということにひかれて
ゲームプログラミングの館、龍神録の館を見て、これなら自分でもゲームを作ることができると思ったので、
先ほど書いたC言語入門書でC言語の復習をして最初はコピペでVisualC++の使い方になれ、
関数がどのような働きをするか(行ごとの処理ではなく、関数全体で)を知り、
だいたいわかってきたら手本通りに自分で打ってみること(タイピングの練習にもなる)で
それぞれの行がどういう役割を果たしているのかを学びました。

その後、しばらくの間は弾幕の関数を変えることで遊んでいましたが、
youtubeでみた「東方靈異伝」のプレイ動画が面白そうで、それがほぼ入手不可で再現したものもあまりないし、
それっぽいものなら作れると思ったので「星と陰陽玉」を作成しました。
そして先日、マップエディタつきマ○オ風スクロールアクション「星追う旅人」をつくりました。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,066,698ポイント)   Date: 2009/10/08(木) 10:26   No:40158     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
>>situmonさん

ありがとうございます。

>画像がたくさんあったりするといいかもです。

そうですね、なるべく実行結果や写真を増やしたいと思います。


>>ラグさん

>前々から2,3万円くらい出してでも買いたい内容が書いてあって素晴らしいなぁと思ってました。

ありがとうございます、恐縮です^^;

>書籍化するなら可能な限り間違いがないようにするといいと思います。

そうですね。あの部分は私もすごく気になっています。時間を見つけてなおそうと思います。

>このサイトにたどり着くまでに何冊もゲームプログラミングの本を買いました。
>本が悪いわけではないでしょうが、私がそれを読んでゲームが作れるようにはなれませんでした。

私も色んな書籍は買いましたが、その本を買ってスキルが上がったかと聞かれたらYesとは言い難かったです。
やはり演習で身に付くもので、自分でいろいろいじったり作ったりしないと読んだだけではわからないですよね。
数学の教科書をただひたすら読んだだけで数学が得意になるかと聞かれたらNoであるように、
プログラムも沢山演習をやったり経験してみてわかるものだと思います。
また、入門書はゲームが実際に完成出来るところまでは解説していない場合が多く、
読んでも「結局このあとどうすればいいの?」って場合が多いように思います。

>これからもひっそりと応援します。

ありがとうございます^^
頂いたご意見を元に頑張っていこうと思います☆


>>烏さん

ありがとうございます^^

>1.見る方ができるだけ途中で投げ出す確立が低くなるような書き方

ですよね。言い方は悪いですが「コツコツ勉強する」というスタイルでは無理な人が手に取る確率が多いのではないかと思います。
ですから、とにかく先にゲーム制作の楽しみをしってもらうような章立てにするととっかかりがいいかもしれませんね。

>2. 2面以降の作り方もあるといいと思いました。

なるほど・・。
ただ拡張性を持たせるとそれだけコードが複雑になり、また、2面以降を作るとなると、最後まで解説してほしいということになりそうですが、
そうなると、ページ数の制限以内で書けるだろうか・・という気がしてしまいます;
拡張できる形にしておいて、もっと勉強したい人は「龍神録の館2へ」みたいな感じでサイトに誘導してもいいのかもしれませんね^^;


>>uwloverさん

ありがとうございます☆

>1.用語の解説漏れがないように心がけるといいかと。

そうですね。読んでてひとつでも解らないままなものがあると気持ち悪い!って人もいらっしゃるでしょうし、
だからといってわざわざ調べるのも面倒だという人もいるでしょうね。
用語集みたいなものをつけてみようと思います。

>2.ハッカーさんの提案と同じく。

ハッカーはランクで、お名前ではないのですが、どなたのものでしょう^^;
まぁ既出ということですね。

>4.中々本格的な説明サイトがあるもんなんだなぁ、とまずは驚愕しましたね。更に驚いたのは、この掲示板の活況ぶりですね。
>正直に言うと、ゲームプログラミングの世界がこんなに盛んだとは知りませんでした。

私も、ゲームプログラム解説サイトはあまり多くなく、そこまで需要があるものではないと思っていました。
最近特にゲーム、龍神録の館の質問が増えてきましたよね。
掲示板分けた方がいいのかもしれません・・。
・・が、どちらかが過疎化してしまうのも避けたいんですよね。
また、掲示板が自作ではなく、レンタルなので、ポイント共通だとか、
好きな仕様にカスタマイズ出来ないこともあり・・。

>5.図解を多く取り入れるのがいいと思います。
>「関数」、「ポインタとメモリの仕組み」、「構造体」、「ファイル制御」

なるべくポインタは使わないようにしようと思いましたが、龍神録の方では案外使ってるんですよね;
使わないと汎用的な関数が作れないし・・。
言葉は悪いですが、細かい難しい部分はなるべく誤魔化して(?)、キッチリ勉強していくのではなく、
少し勉強しただけで「俺でもこんなにわかるじゃん!」っていう気にさせるような本にしたいですね。


>>たかぎさん

>商業出版の場合は、必ずしも書きたい本が書けるわけではないのが辛いところです。
>出版社としては、当然売れる本を書いてほしいわけで、ある程度は期待に応えておくほうがよいでしょうね。

そうですね、向こうから話がもちかかった以上、また、自費製作ではない以上向こうの期待にこたえるべきことは当然のことですよね。

>素人向けの本のほうが市場のパイが大きいので、ゲームを作りながらC++を学べるというのが妥当だと思います。
>あと、書籍として完結していることは大前提ですので、ウェブサイトで補完するようなものは難しいと思います。

なるほど、確かDXライブラリの本も最初ピュアCで、2冊目がC++ですね。ウェブサイトでの補完は難しいですか。
確かに本を読んだだけでは内容が解らないような本は無いですよね。
コピペが面倒にならないよう、コードをコピペ出来る程度でしょうか。

>それと、これは担当者のかたと相談しないと何とも言えないでしょうが、
>現在のコンテンツを再編集するぐらいで、サクッと原稿ができあがることを期待している可能性があります。

そうですね、あまり時間がかかるのもあちらに迷惑がかかってしまいますよね。
一応執筆期間や、内容などの話はさせて頂いたのですが、
向こう側としては今あるものを基盤としつつも1から作ってほしいといった感じでした。
1年位をめどにやってみようと思います。

>デビュー作は、とりあえず売れる本を目指しておいて、実績を付けてから2作目以降で書きたいものを書いていくのもひとつの手です。
>2作目以降をにらんでおけば、1冊に詰め込もうとして中途半端になることもないでしょうから。

そうですよね。デビュー作から注文色々付けてたんじゃ偉そう過ぎますね^^;
まずは出版社の方の期待にこたえられるようにすることが先決ですね。
2作目は解説アプリを同梱したいなぁ・・。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,068,028ポイント)   Date: 2009/10/08(木) 10:26   No:40159     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    


>>Tatuさん

>VisualC++2008のインストールのやり方を詳しく説明するようにしたらよいと思います。

そうですね、環境を揃えるところで躓くって場合が多いですもんね。
今は便利になりましたけど、以前は環境変数の設定とか、初心者にはつまずきやすいことも多く、
私もそこで躓いた人間の一人なのでよく解ります。

>そのためにホームページにリンクさせるくらいならば、同じ内容のファイルをCDにいれてしまったほうがよいかもしれません。

なるほど、ソースコードだけじゃなく、そっくりそのまま同梱した方が解りやすいですね。

>一つのゲームを作る過程がわかりやすい龍神録プログラミングの館のような形をとったほうがよいと思います。

そうですね、出版社の方も同じことをおっしゃっていました。
ゲームの館を本にしたって「じゃ、結局ここからどうやってゲーム作るの?」って話になりますもんね。
うまく2つを融合出来たらなと考えています。

>以下、紹介する機会がなかったので私自身のことについてかきます。

なるほど、そのような経緯を辿られたのですね。
実は私も初めてCを学ぼうとした時、「MissonC」というプログラム解説ソフトを購入しました。
本に付属されるものですが、ほとんど内容はソフトです。
ただもう出版されていないようです・・。
一応わかったような気にはさせてくれましたが、一方的に聞くだけだったので、
ソフトをやり終えて、いざさぁプログラムを書こうとしても出来ないという状態でした。

>しばらくして、東方2次創作の「東方遊夜雀」というフリーゲームを見つけ、

あ〜あの携帯アプリですね。私の携帯にもはいっています。
しかしあちらから知って東方をご覧になるとはなかなか稀なパターンですね^^;
どういう経緯で龍神録をご覧頂けているか、色んなパターンがありそうですね。

そうですね〜、本を読むことでCの基礎知識がつき、かつ、ゲーム制作の面白さがわかり、
「本が無くても独力でこの先続けられる」ようになれるような本を目指したいです。
ご意見ありがとうございました。


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

Name: チルチル  ..熟練のプログラマー(61,464ポイント)   Date: 2009/10/08(木) 11:15   No:40162     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
執筆とは凄いですね、おめでとうございます
そういう依頼って来る時は来るんですね

プログラムの本を買った事はないのでよく知らないんですが

個人的には本に書いてあるコードってエディタに書き写すのが凄く面倒だと思うんですよね
なので書いてあるコードと同じ物がCDに入ってたりすると嬉しい気がします

あと自機とかボスの構造は何となくわかる事が多いですが
その2つの関係性って言うのは良くわからない事が多いと思います

自機の処理とボスの処理はどういう関係なのか
選択画面の処理とゲーム画面の処理はどう繋がっているのか
などを重点的に説明してくれるとわかりやすいかもしれません

で龍神録の館の個人的な感想ですが

まず構造体のメンバが1行にまとめられているのは見にくい気がします
上に変数の意味が書かれていますが
全角文字の方が幅を取るので注釈が右に行ってしまって
どの変数の説明なのかが見にくいです
私としては変数ごとに改行して欲しいですね

あと英単語を略す事が多いですがcountをcntにしたりするのは
かなりわかりにくいと思います
慣れてくればcntの方が式が短くなって見やすいかもしれませんが
初心者向けという事ならば単語は略さない方が良いかと

それと変数名などが小文字だけだと区切りがわかりにくいので
先頭の文字は大文字にすると良いかもしれません

それからDXライブラリは非公開関数が多いので
CDに全部の非公開関数を紹介したリファレンスを入れておくと凄く便利になると思います
私も非公開関数を調べる方法がわからなくて困る事が多いので・・

あとは全体的に注釈を増やして欲しいですね
それでいてゴチャゴチャしないと良いです

私はそんなに詳しくないので
的外れな事を言っていたらすいません


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

Name: コメカミ  ..ぴよぴよ(278ポイント)   Date: 2009/10/08(木) 15:24   No:40170     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
C言語やプログラミングについては意見できませんけど、
日本語のチェックぐらいなら微力ながら手伝いたいです。
漢字検定準二級(しょぼい)のうでがなるぜー

レイアウトは柴田望洋さん形式(解説が次のページにまたがらない)を希望しまーす。

今年度は卒業研究でもうずっと忙しいので。四月以降ならお手伝いできるかも知れません。

手伝いとか言いつつ出版前の原稿を先んじて読むと言う役得狙いなのは内緒。



それと、あとひとつだけ。
私がゲームプログラムの館及びC言語をはじめたころ、
最も攻略の難しかった事象は、
ゲームや、プログラミングと言う概念に理解のない家族や周囲との折り合いをつけることでした。
PCの前にずっと喰らいついてる姿は、
引き篭もってゲームをしているだけの不健康な人間と映っていたようで、
当時は、とにかく何かゲーム作ってしまい、
それを見せる事さえ出来れば自分のやっていることの一端でも理解してもらえると信じて行動していたものの、
なかなか出口が見えず、
時間をいくらかけてもなかなか思うようにゲームをつくれなかった自分に少々焦りや苛立ちを覚えていました。もちろんそれ以上に楽しかったですよ!
今思えば、私の時間管理能力と計画性がないのが原因だったように思います。

そこで提案なのですが、
プログラムの解説項目ごとに、
推奨コーディング時間と言うかなんというか、
「ここを理解、実行するのに大体これくらいの時間がかかります」
というような目安があると、
計画的に学んでいける良書にならないかなぁと思います。
もちろん、理解にかかる時間には個人差が大幅にある、との注釈つきで。

自分で計画をたてられる人には逆にわずらわしい項目であるとも思います。
参考意見として聞いてください。


ともかく、執筆がんばってくださいー。
著者名は"Dixq"?それとも本名?(ww


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

Name: たかぎ [URL]  ..ハッカー(112,565ポイント)   Date: 2009/10/08(木) 16:39   No:40180     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
> C言語やプログラミングについては意見できませんけど、

読んでみて、分からないところがあれば「分からない。何とかしろ」というだけでも著者は助かるものです。
自分だけであれこれ考えていると、その書き方で伝わるのかどうかが分からなくなてしまいますので。

> 著者名は"Dixq"?それとも本名?(ww

将来、自分の名前を出して活動する可能性がほんの少しでもあるなら、本名で出したほうがよいでしょうね。
10年以上経っていても、本を出したことがあるといえば、それだけでハクがつきます。
本名で出していなければ、本人かどうか確認するすべがありませんので。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,069,464ポイント)   Date: 2009/10/10(土) 02:54   No:40226     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
>>チルチルさん

ありがとうございます^^

>個人的には本に書いてあるコードってエディタに書き写すのが凄く面倒だと思うんですよね
>なので書いてあるコードと同じ物がCDに入ってたりすると嬉しい気がします

多分そうなると思います。
ただ、CD入っててもなかなかパソコンに入れてくれる人は少ないと思うんですよね。
その辺うまく解決したいと思います。

>自機の処理とボスの処理はどういう関係なのか選択画面の処理とゲーム画面の処理はどう繋がっているのか
>などを重点的に説明してくれるとわかりやすいかもしれません

了解です。貴重なご意見ありがとうございます。

>まず構造体のメンバが1行にまとめられているのは見にくい気がします

そうですね。フォーマットを決め、見やすい形で統一したいと思います。

>あと英単語を略す事が多いですがcountをcntにしたりするのはかなりわかりにくいと思います

わかりました。なるべく初心者にも抵抗が無い命名規則で行っていきたいと思います。

>それからDXライブラリは非公開関数が多いのでCDに全部の非公開関数を紹介したリファレンスを入れておくと凄く便利になると思います
>私も非公開関数を調べる方法がわからなくて困る事が多いので・・

そうですね。ただ非公開にしているのは意味があってされているので、その辺も考えて執筆しようと思います。


>>コメカミさん

>日本語のチェックぐらいなら微力ながら手伝いたいです

ありがとうございます。お力添え感謝致します☆

>レイアウトは柴田望洋さん形式(解説が次のページにまたがらない)を希望しまーす。

いいですよね。私も柴田さんの本は好きで同じ本2冊も持っています。
参考にしたいと思います。

>「ここを理解、実行するのに大体これくらいの時間がかかります」というような目安があると、

そうですね。何かしら目標や目安をつかみやすいものがあった方がいいですね。

>著者名は"Dixq"?それとも本名?(ww

実名です。あまりハンドルネームしか書いてない本って見かけない気が・・。
私としてもどこの誰が書いたのか解らないような本はあまり買いたくないですし・・。


>>たかぎさん

>読んでみて、分からないところがあれば「分からない。何とかしろ」というだけでも著者は助かるものです。

そうなんですよね。私もHPを作り始める時は解りやすく書こうと思うものの、
作っているうちに読む人はどこが知りたいんだろう・・と思ってしまったりよくします。
それに案外自分には想像もつかなかったところが読者にとって重要だったりすることも。
また、「デフォルト」とか理系しかあまり知らない言葉でも普通に使ってしまったりすることもありますしね^^;
読者によっては知らない言葉が出てきただけで読む気がしなくなる人もいるかも・・。


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

Name: 山崎  ..プログラマー(27,567ポイント)   Date: 2009/10/10(土) 10:56   No:40239     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
いやぁ、おめでとうございますっ!!
学会から帰ってきて早速この掲示板をチェックしていたところ、
こちらのサイトが本になると聞いて思わず「まじか!」と声を上げて喜んでしまいましたよ〜!
お世話になっているサイトが本になるなんて、自分のことのように嬉しいです!

それでは、中級者くらいの立場から、私も少し意見を述べさせて頂きますね。
といっても、他の皆さんの意見に似たものや、ありきたりなことしか言えないのですが・・・。



1. 何に気をつけたらいいと思いますか?
読者に「こんな関数の説明今まであったっけ?」と前のページをずっと探させることが無いようにしてほしいなぁ、と思います。
それまでの章で既出で説明済みの関数にも注釈などで「○○する関数。××ページ参照」とかふってほしいですね。

2. 章の構造はどのようだと解りやすいと思いますか?
現在のプログラミングの館や龍神録の館のような感じがよいのでは。

3. 簡単な説明、簡単なコード、実行結果のスクリーンショットという小さな章の集まりという書き方はどう思いますか?
是非ともそういった書き方がいいと思います。
説明もサンプルも、短いもので初心者に十分にわかるのであれば短いに越したことはないと私は考えています。
初心者も熱心とは限りませんからね、長いコードを見ると「うへぇ」と思うものです。
何ページにもわたる長いサンプルコードを見ると、難しくないコードでもモチベーションが下がっちゃいますからね。
簡単な説明、コード、実行結果に加え、「簡単なタイトル」も重要だと思います。
「ああいうことをしたいんだけど、どうやってやるんだったっけ」と本の中から探すとき、
目次から端的なタイトルで探せれば便利かな、と思います。

4. 初めてゲームの館、龍神録の館を見たときどう感じましたか?
順を追った丁寧な説明だなと感じました。
ただ、私はシューティングを作らないのであまり龍神録の方は見ないのですが・・・。

5. 他何でも、ご意見を。(抵抗のあった部分や解りにくかった部分、改善案など…)
私が最も気になる点は、プログラムの内容の説明とかではなくて、環境のことですね。
「プログラムがわからない」ことが原因で挫折する初心者も多いかと思いますが、
「プログラミング環境を使いこなせない」ことが原因で混乱する人も多いと思うのです。
特にVisual Studioの場合です。いろんな機能がごちゃごちゃとありすぎて、初心者には非常に辛い・・・。
間違えて知らない機能のボタンをクリックしてしまったときなど・・・。
Visual Studioのことを書こうとすると別の本が一冊書けてしまうのであまり深くは突っ込めないとは思いますが・・・。

それと、「よくあるエラー」なども是非とも載せてほしいな、と思います。
特に、DXライブラリの読み込みエラーなどですね。
全く意味のわからないエラーが一気に40個以上出ると、ものすごくモチベーションが下がってしまいますからね。
プログラムに慣れてる人は、なぜエラーなのかはエラーメッセージを読めばわかりますが、
初心者はエラーの原因がエラーメッセージにそのまま書かれていてもわからないものです。
「こんなエラーが出たら」なーんて項があると便利かもしれませんね。

関数や用語の索引も是非充実させてほしいと思います。
プログラミング関係の本で一番見るところは、巻末の索引じゃないかと感じます。
探したい言葉が索引に載っていないと結構がっかりしますよね・・・。



大体私の意見はこんな感じです。参考にしてくださると非常に嬉しいです!
本が発売されましたら、もう是非とも発売日当日に購入させていただきますのでっ!!
おそらく、執筆は非常に大変かと思いますが、応援していますね!


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,070,763ポイント)   Date: 2009/10/10(土) 23:15   No:40264     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
>>山崎さん

>いやぁ、おめでとうございますっ!!

ありがとうございます^^ また、学会お疲れ様です☆

>読者に「こんな関数の説明今まであったっけ?」と前のページをずっと探させることが無いようにしてほしいなぁ、と思います。

そうですね、読者が疑問に思いそうな所は吹き出しなどで補足し、
コードについては、説明が書いてある章番号などをふっておこうと思います。

>私が最も気になる点は、プログラムの内容の説明とかではなくて、環境のことですね。

そうですね。VSは初心者にとってはプロジェクトを作るだけでも一苦労な感じがしますもんね。
私も初めてVSでコンパイル出来るようになるまでしばらく時間がかかったように思います。
その辺の説明はなるべく詳しくするつもりです。

>それと、「よくあるエラー」なども是非とも載せてほしいな、と思います。

なるほど、加えてQ&A的なものもいいかもしれませんね。

>全く意味のわからないエラーが一気に40個以上出ると、ものすごくモチベーションが下がってしまいますからね。

なるほど。extern系を間違うとダブルクリックしただけじゃ解らないエラーメッセージが出たりすることもありますもんね。
最初のうちはダブルクリックでエラーの場所に飛ばないエラーは解決できない可能性がありますしね。

>関数や用語の索引も是非充実させてほしいと思います。

解りました。

>本が発売されましたら、もう是非とも発売日当日に購入させていただきますのでっ!!
>おそらく、執筆は非常に大変かと思いますが、応援していますね!

ありがとうございます。
ご期待に添えられる本が執筆出来るよう努力していきます^^


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

Name: こめかみ  ..熟練のプログラマー(50,072ポイント)   Date: 2009/10/11(日) 01:26   No:40266     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
推敲が足りなかったです、まとまりの無い文章失礼しました。


>>C言語やプログラミングについては意見できませんけど、

>読んでみて、分からないところがあれば「分からない。何とかしろ」というだけでも著者は助かるものです。
>自分だけであれこれ考えていると、その書き方で伝わるのかどうかが分からなくなてしまいますので。

相手が目の前にいる一対一のレクチャーと違って普遍的な解説は大変ですねぇ。。
私は(このサイトに限らず)読んでわからない時は基本的に自分の知識不足だと思うようにしてたのですが、
それを補おうとするせいでよく脱線しているので、
今後は臆せずに著者さん筆者さんにコンタクトをとってみようと思います。
・・・ですが、館の解説を読みなおす時間さえ無ぇのです。
配属された研究室の卒研以外の仕事も充実しまくりなのです(T_T)。
や、忙しいのはいいことなんですけどね。

>「分からない。何とかしろ」
まずdixqというハンドルネームの意味がわからなくぁすぇrftgyふじこlp;:@(おまえがいうな)
でも実際、サイト訪れた時から真面目に疑問です・・・意味あるんですか?あ、あったとしても解説はしなくてもいいです。むしろしないでくださいお願いします!
意味が在るのか無いのかに興味があるだけなので。それすら秘密でも謎くてイイですけど。

勉強してたの一年以上前ですが、
ゲーム館の解説に関して言えば、わからないところはこの掲示板で質問してるのでそれを見ていただければ。
探すの大変そ〜

>実名です。あまりハンドルネームしか書いてない本って見かけない気が・・。
>私としてもどこの誰が書いたのか解らないような本はあまり買いたくないですし・・。

技術書ってペンネームの人少ないんでしょうか?
漫画や小説と違って情報発信は責任の重さが違うんだろうなぁ。


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

Name: すずめ  ..入門者(4,512ポイント)   Date: 2009/10/11(日) 11:51   No:40272     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
大胆な提案をひとつ。

目玉として”四聖竜神録plus”のソースをCDで公開する。
そうすると話題になり、初心者だけでなくベテランの方、サイトに
アクセスしている方、四聖竜神録plusをダウンロードした方、
専門学校でゲームを勉強している方など、需要はかなり増えると思います。

”四聖竜神録plus”が広告塔となり、本の売り上げに貢献すれば
無料公開したことも実が結ぶと思われます。

初めて龍神録の館を見たとき、これほどまで惜しげもなく教えてくれるのかと
感動しました。サイトがこれほど賑わっているのもそのあたりにあると思います。

管理人さんにもいろいろ思うところがあると思いますので、
ひとつの提案と思ってください。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,073,254ポイント)   Date: 2009/10/12(月) 16:23   No:40330     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
>>こめかみさん

>まずdixqというハンドルネームの意味がわからなく
>でも実際、サイト訪れた時から真面目に疑問です・・・意味あるんですか?
>あ、あったとしても解説はしなくてもいいです。むしろしないでくださいお願いします!

もちろんありますが、特に深い意味はありません。
私が好きなライブラリは何か、情報数学的にどうすればIDの重なる可能性が下がるか・・
みたいな視点から見て頂ければ自ずと意味が分かるかもしれません^^

>ゲーム館の解説に関して言えば、わからないところはこの掲示板で質問してるのでそれを見ていただければ。

ここの過去ログはそういう意味では情報の宝庫ですね。ありがとうございます。

>技術書ってペンネームの人少ないんでしょうか?

う〜ん、技術書は本名が一般的じゃないですかね〜?


>>すずめさん

>目玉として”四聖竜神録plus”のソースをCDで公開する。

ソースは公開してもいいんですが、素材が営利目的が絡む状態で同梱出来ないものがあるので、
実行して確認する事ができません・・・。となると同梱する意味があまりなくなってしまいますよね。
なるべくゲームは、素材関連がクリア出来、かつ完全に近い形まで持って行けるように努力します。
・・とはいえ、解りやすさ最重要でいくので、極力派手なエフェクトは無くなってしまうかと思います。

ちょっと今どうすればいいのか悩んでるんですよね。
例えばAerobeatでいえば、あのメニュー。
エフェクト一切無しにすれば、30分あれば出来そうなもんですが、
あのメニュー画面には何か月もかかっています。(素材作ってる時間もありますが)
エフェクトや切り替わりシーンなどに凝り始めるとどこまでも難しく、面倒になるんですよね。
いったいどの辺まで本の中でこだわればいいのか悩んでいます。
エフェクト関連は理論難しくないのに説明すると難しく見えてしまいますしねぇ・・。

>専門学校でゲームを勉強している方など、需要はかなり増えると思います。

そうですね。現時点で複数の専門学校で使っていただいているみたいです。
これからはもう少し信用出来そうなサイト作りに力を入れたいと思います;

ご意見ありがとうございます^^


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

Name: Tororo  ..ぴよぴよ(639ポイント)   Date: 2009/10/12(月) 17:02   No:40333     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
出版おめでとうございます〜☆
無論発売したら買いますよ〜(笑)

ただ出版したらきっとこのHPの
アクセスが増えて繋がり難くなりませんかね??
それが一番心配ですね〜

まぁとりあえず出筆頑張ってください!!


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,073,740ポイント)   Date: 2009/10/12(月) 17:53   No:40339     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
>>Tororoさん

ありがとうございます^^
今回の件で、皆様にご迷惑をおかけしました。
ここ1週間たびたびつながらなくなることがあったかと思います。
レンタルサーバーの契約を上位にするとか、もっと高アクセスに耐えられるようにしたいと思います。


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

Name: 鈴仙優曇華院イナバ  ..かけだし(2,329ポイント)   Date: 2009/10/12(月) 18:12   No:40341     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
遅くなりましたが本当におめでとうございます!

エフェクト面について解説するのであれば
簡単なものだけにすればいいんじゃないかなと思います。
例えば、敵を倒した時に、爆発するエフェクトというような最低限のもので十分だと思います。
初心者ってこれだけでも難しく感じると思うので…
自分がそうでした…w

と長々と書きましたがDixqさんの執筆を応援しています!


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,076,492ポイント)   Date: 2009/10/14(水) 20:39   No:40467     
Title: Re:★うちのHPの内容が本になる事になりました(ご意見募集)★    
>鈴仙優曇華院イナバさん

ありがとうございます^^
そうですね、エフェクトは自分が詳しくなってからこればいい分野ですよね
その説明があるが上に人が遠ざかってしまっては本末転倒ですね。
ご意見参考にさせて頂きます。ありがとうございます。


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



Name: keiko  ..ぴよぴよ(190ポイント)   Date: 2009/10/13(火) 20:28   No:40395       
Title: 時間をスリープさせて動くプログラムをつくりたい    
今晩は、宜しくお願いします。
 ランダムに*を発生させて、動いているようなプログラムをつくりたいと思って、下のようなコードをかいて時間をスリープさせてやりましたが、何故か単に表示が遅くなるだけで、実際に*がRand関数
により発生して、ゆれるような表示ができません.
 どこをどのように修正してやればよいのでしょうか。

宜しくご教示お願い致します。
=============================================================

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
char str[20] ;
int pos = 10 ;
int j ;
srand( time( NULL ) ) ;
do
{
Sleep(500);
for(j = 1 ; j < pos ; j ++ )
{
putchar(' ');
}
putchar('*');
putchar('\n');
switch ( rand() %3 )
{
case 0:
continue ;
break;
case 1:
pos = pos + 1 ;
break; default :
pos = pos - 1 ;
break;
}
} while(pos > 0 && pos < 1000 );
return 0 ;
}


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


Name: softya  ..上級者(17,790ポイント)   Date: 2009/10/14(水) 08:59   No:40429     
Title: Re:時間をスリープさせて動くプログラムをつくりたい    
どこが、問題なのでしょうか?
Sleep(500);
と書かれていますので、0.5秒周期で画面が更新されます。
これは意図されて書かれたものでは無いのでしょうか?
それと*自身は左右に揺れて表示されますので、意図通り動いているみたいなのですが。


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

Name: toyo  ..熟練のプログラマー(41,951ポイント)   Date: 2009/10/14(水) 09:58   No:40432     
Title: Re:時間をスリープさせて動くプログラムをつくりたい    
時間をスリープ == 表示が遅く
ですがスリープに期待している動作は何でしょうか
あと実行環境は何でしょう(OSやコンパイラー等)


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

Name: たかぎ [URL]  ..ハッカー(112,604ポイント)   Date: 2009/10/14(水) 10:47   No:40433     
Title: Re:時間をスリープさせて動くプログラムをつくりたい    
必要な情報を出さなければ、どこで質問しても同じです。
http://oshiete1.goo.ne.jp/qa5357892.html


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

Name:  ..かけだし(1,250ポイント)   Date: 2009/10/14(水) 18:44   No:40458     
Title: Re:時間をスリープさせて動くプログラムをつくりたい    
0.5秒置きに表示されて、揺れているように思いますよ。
とりあえず#include <Windows.h>を





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

Name: lbfuvab  ..上級者(22,547ポイント)   Date: 2009/10/14(水) 18:56   No:40460     
Title: Re:時間をスリープさせて動くプログラムをつくりたい    
こういう事がしたかったのかな?

環境はVC++ 2008 Exp Edition で WinXP Proと仮定しています。
#include <stdio.h>

#include <stdlib.h>
#include <time.h>
#include<string.h>
#include<windows.h>

#define MAX (1000)

int main(){
int pos=10,i;

srand((unsigned)time(NULL));

while(pos> 0 && pos< MAX){
system("cls");
for(i=0;i<MAX;i++)
putchar((i==pos)?'*':' ');

pos += rand()%3 - 1;

Sleep(500);
}
return 0;
}


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



Name: ようすけ  ..初心者(6,376ポイント)   Date: 2009/10/13(火) 22:24   No:40410       
Title: 初DXライブラリでシューティングつくりました。    
こんばんわ。

DXライブラリというものを使って、STG作ってみました。

DXライブラリ使用歴二週間ぐらいなので、使いこなせてない関数とか
たくさんあるんですが、さくっと1面だけ作ってみました。


アップローダさん

http://kissho2.xii.jp/20/src/2yoshi10342.zip.html

DLkey 0111(半角で)

全キャラは3つです。

また、ウィンドウモードのみでのプレイです。

感想、バグなどありましたら、よろしくお願いします。



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


Name: ひよこ  ..熟練のプログラマー(54,902ポイント)   Date: 2009/10/14(水) 06:49   No:40424     
Title: Re:初DXライブラリでシューティングつくりました。    
なんか懐かしい世界に行った気分でした。
敵の動きとかが目新しくてよかったです。
そして難しいので難易度選択がほしいです。
制作お疲れ様でした。

ちょっと思ったのですが実行ファイルの容量的にデバッグの実行ファイルですか?
違うんだったらすいません。


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

Name: ようすけ  ..初心者(6,540ポイント)   Date: 2009/10/14(水) 08:41   No:40427     
Title: Re:初DXライブラリでシューティングつくりました。    
ひよこさん、遊んで下さりありがとうございます。

難易度高いですかね?
ちなみに、弾が少し早めなのは仕様です。
EASYとかHARDなどの選択は作るつもりはないので、
全体的に調整を考えてみますね。


>ちょっと思ったのですが実行ファイルの容量的にデバッグの実行ファイルですか?

すいません、これはどういうことでしょうか?
まだDXライブラリ使って間もないので・・(汗






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

Name: softya  ..上級者(17,919ポイント)   Date: 2009/10/14(水) 09:08   No:40430     
Title: Re:初DXライブラリでシューティングつくりました。    
プログラム(exe)には、デバッグビルドとリリースビルドがあります。
デバッグビルドはデバッグ情報他余分な情報が沢山くっついていますのでファイルサイズが巨大になります。
それと開発環境の入っているPCでしか動作しません。
なので、配布する場合はリリースビルドで行うのが普通です。

VisualStudioでしたら、[ビルド]-[構成マネージャ]でReleaseに変更してください。


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

Name: ようすけ  ..初心者(6,688ポイント)   Date: 2009/10/14(水) 09:29   No:40431     
Title: Re:初DXライブラリでシューティングつくりました。    
softyaさん

>デバッグビルドはデバッグ情報他余分な情報が沢山くっついていますのでファイルサイズが巨大になります。
それと開発環境の入っているPCでしか動作しません。

マ、マヂですか?
とても良い事を教えてもらえました。
ありがとうございます。

ということは、開発環境が入ってなくて(プログラムとかに興味なくて)、ただ単にゲームをやりたくて
DLした人はプレイできないってことですよね?


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

Name: SYALIREA  ..ぴよぴよ(98ポイント)   Date: 2009/10/14(水) 12:21   No:40439     
Title: Re:初DXライブラリでシューティングつくりました。    
このサイトの皆様初めまして。おとといからここで勉強始めました。

そしてさっそくようすけ氏の作品を落として試用してみました。
1945的な世界でとても懐かしいと思いました。

ところで。
Zボタンで攻撃は出るのですが
“押すのが一瞬だと発射音だけで弾が出ない”という状態に出くわしました。
基本的に押しっぱなしなので実用的には何の問題もないのですが、
解決を目指してくださいませ。

こちらの環境はWINXP、USBキーボード接続です。
改善頑張ってくださいませ。


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

Name: ようすけ  ..初心者(6,854ポイント)   Date: 2009/10/14(水) 13:30   No:40443     
Title: Re:初DXライブラリでシューティングつくりました。    
SYALIREAさん、遊んで下さりありがとうございます。

>1945的な世界でとても懐かしいと思いました。

お〜、ストライカーズ1945のことですか?
もしそうなら、あのような名作と世界観が似てると
言われれば光栄です☆

>“押すのが一瞬だと発射音だけで弾が出ない”という状態に出くわしました。

ありがとうございます。改善してみます。





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

Name: softya  ..上級者(18,025ポイント)   Date: 2009/10/14(水) 14:20   No:40449     
Title: Re:初DXライブラリでシューティングつくりました。    
>ということは、開発環境が入ってなくて(プログラムとかに興味なくて)、ただ単にゲームをやりたくて
>DLした人はプレイできないってことですよね?

そうです。
VisualStudioの無い環境では、エラーで起動できない事になります。


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

Name: ようすけ  ..初心者(7,280ポイント)   Date: 2009/10/14(水) 15:19   No:40455     
Title: Re:初DXライブラリでシューティングつくりました。    
すいません、今Releaseでビルドしてみたら以下のエラーが
出て、実行ファイルが出来ませんでした。

Error: 外部シンボル '_keymatch' が未解決(C:\USERS\****\MUSIC\DESKTOP\skysoldier2\LIBJPEG.LIB|jpegtran が参照)
Error: 外部シンボル '_read_scan_script' が未解決(C:\USERS\****\MUSIC\DESKTOP\skysoldier2\LIBJPEG.LIB|jpegtran が参照)
Error: 外部シンボル '_read_stdin' が未解決(C:\USERS\****\MUSIC\DESKTOP\skysoldier2\LIBJPEG.LIB|jpegtran が参照)
Error: 外部シンボル '_write_stdout' が未解決(C:\USERS\****\MUSIC\DESKTOP\skysoldier2\LIBJPEG.LIB|jpegtran が参照)
Error: 外部シンボル '_jcopy_markers_setup' が未解決(C:\USERS\****\MUSIC\DESKTOP\skysoldier2\LIBJPEG.LIB|jpegtran が参照)
Error: 外部シンボル '_jtransform_request_workspace' が未解決(C:\****\NOBORU\MUSIC\DESKTOP\skysoldier2\LIBJPEG.LIB|jpegtran が参照)
Error: 外部シンボル '_jtransform_adjust_parameters' が未解決(C:\****\NOBORU\MUSIC\DESKTOP\skysoldier2\LIBJPEG.LIB|jpegtran が参照)
Error: 外部シンボル '_jcopy_markers_execute' が未解決(C:\USERS\****\MUSIC\DESKTOP\skysoldier2\LIBJPEG.LIB|jpegtran が参照)
Error: 外部シンボル '_jtransform_execute_transformation' が未解決(C:\USERS\****\MUSIC\DESKTOP\skysoldier2\LIBJPEG.LIB|jpegtran が参照)


環境はボーランドC++コンパイラ、BCCDeveloperです。

何が原因なのでしょうか?



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



Name: ft  ..入門者(2,730ポイント)   Date: 2009/10/13(火) 18:09   No:40384       
Title: 三角関数のテーブル化    
こんにちは。龍神録を参考にPSPにて弾幕シューを再現しようと考えております。
龍神録プログラミングの館でいうと第14章あたりなのですが、敵弾の描画が増えると処理落ちをしてしまいます。
以前質問をした際に皆様のご回答を参考に除算やfloatや画像の処理方法などを変えていき、多少良くなりました。
しかしどうやらshot.c内の以下の計算において三角関数がネックとなっていると思われ、弾が増えると落ちてしまいます。
(試しにsin、cosを1、0にして弾を真下へ撃たせた場合は結構な数が描画できたので、恐らく三角関数がネックとなっていると考えました)

void shot_calc(int n){
int i,max=0;
if(enemy[shot[n].num].flag!=1)//敵が倒されたら
shot[n].flag=2;//それ以上ショットを登録しないフラグに変える
for(i=0;i<SHOT_BULLET_MAX;i++){//n番目の弾幕データの弾を計算
if(shot[n].bullet[i].flag>0){//その弾が登録されていたら
shot[n].bullet[i].x+=cos(shot[n].bullet[i].angle)*shot[n].bullet[i].spd;
shot[n].bullet[i].y+=sin(shot[n].bullet[i].angle)*shot[n].bullet[i].spd;
shot[n].bullet[i].cnt++;
if(shot[n].bullet[i].x<-60 || shot[n].bullet[i].x>FMX+60 ||
shot[n].bullet[i].y<-60 || shot[n].bullet[i].y>FMY+60){//画面外に外れたら
if(shot[n].bullet[i].till<shot[n].bullet[i].cnt)//最低消えない時間より長ければ
shot[n].bullet[i].flag=0;//消す
}
}
}
//現在表示中の弾が一つでもあるかどうか調べる
for(i=0;i<SHOT_BULLET_MAX;i++)
if(shot[n].bullet[i].flag>0)
return;
//現在表示中の弾が一つもなければ
if(enemy[shot[n].num].flag!=1){
shot[n].flag=0;//終了
enemy[shot[n].num].flag=0;
}
}

そこで三角関数をテーブル化することで計算を高速化できると聞いたのですが、私プログラミング初心者でして、独自にファイルを追加して計算をさせる方法が思いつきませんでした。
具体的にどのようにすればいいのでしょうか?よろしくお願いします。
ファイル構成などは龍神録さんのサンプルとほぼ同じようになっているので、できればこのサンプルに倣った方法で教えてもらえるとありがたいです。


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


Name: GPGA  ..熟練のプログラマー(68,756ポイント)   Date: 2009/10/13(火) 19:11   No:40389     
Title: Re:三角関数のテーブル化    

static const int cosTable[] =
{
65536, 65534, 65531, 65524, 65516, 65505, 65491, 65475,
65457, 65436, 65412, 65386, 65358, 65327, 65294, 65258,
65220, 65179, 65136, 65091, 65043, 64992, 64939, 64884,
64826, 64766, 64703, 64638, 64571, 64501, 64428, 64353,
64276, 64197, 64115, 64030, 63943, 63854, 63762, 63668,
63571, 63473, 63371, 63268, 63162, 63053, 62942, 62829,
62714, 62596, 62475, 62353, 62228, 62100, 61971, 61839,
61705, 61568, 61429, 61288, 61144, 60998, 60850, 60700,
60547, 60392, 60235, 60075, 59913, 59749, 59583, 59414,
59243, 59070, 58895, 58718, 58538, 58356, 58172, 57986,
57797, 57606, 57414, 57219, 57022, 56822, 56621, 56417,
56212, 56004, 55794, 55582, 55368, 55152, 54933, 54713,
54491, 54266, 54040, 53811, 53581, 53348, 53114, 52877,
52639, 52398, 52155, 51911, 51665, 51416, 51166, 50914,
50660, 50403, 50146, 49886, 49624, 49360, 49095, 48828,
48558, 48288, 48015, 47740, 47464, 47186, 46906, 46624,
46340, 46055, 45768, 45480, 45189, 44897, 44603, 44308,
44011, 43712, 43412, 43110, 42806, 42501, 42194, 41885,
41575, 41263, 40950, 40636, 40319, 40002, 39682, 39362,
39039, 38716, 38390, 38064, 37736, 37406, 37075, 36743,
36409, 36074, 35738, 35400, 35061, 34721, 34379, 34036,
33692, 33346, 32999, 32651, 32302, 31952, 31600, 31247,
30893, 30538, 30181, 29824, 29465, 29105, 28745, 28383,
28020, 27656, 27291, 26925, 26557, 26189, 25820, 25450,
25079, 24707, 24334, 23960, 23586, 23210, 22833, 22456,
22078, 21699, 21319, 20938, 20557, 20175, 19792, 19408,
19024, 18638, 18253, 17866, 17479, 17091, 16702, 16313,
15923, 15533, 15142, 14751, 14359, 13966, 13573, 13179,
12785, 12390, 11995, 11600, 11204, 10807, 10410, 10013,
9616, 9218, 8819, 8421, 8022, 7623, 7223, 6823,
6423, 6023, 5622, 5222, 4821, 4420, 4018, 3617,
3215, 2814, 2412, 2010, 1608, 1206, 804, 402,
0,
};

/*!
* @brief cosを求める
*/
int mycos(int num)
{
num &= 0x3ff;
if (num < 256) return cosTable[num];
if (num < 512) return -cosTable[512-num];
if (num < 768) return -cosTable[num-512];
if (num < 1024) return cosTable[1024-num];

return 0;
}

/*!
* @brief sinを求める
*/
int mysin(int num)
{
return -mycos(num - 256);
}

一周を1024、返す値は-65536〜65536にした三角関数テーブルです。
上記のプログラムに適応させると

const int angle = shot[n].bullet[i].angle * 1024 / 6.283185307179586476925286766559; // angleをラジアンから1周1024の値に変換
shot[n].bullet[i].x += (__int64)mycos(angle) * shot[n].bullet[i].spd >> 16; // 通常のcosは-1〜1が返ってくるのに対して
// mycosは-65536〜65536が返ってくるため
// 最後に65536で除算する( >> 16 の処理、シフト演算子のほうが÷より処理速度が速い)

となります。
 


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

Name: ft  ..入門者(3,089ポイント)   Date: 2009/10/13(火) 20:47   No:40397     
Title: Re:三角関数のテーブル化    
GPGAさん有難うございます。

static const int cosTable[] =

}
>一周を1024、返す値は-65536〜65536にした三角関数テーブルです。
の直前までの部分をvoid shot_calc(int n)の直前に書き、そして

void shot_calc(int n){
int i=0;
const int angle = shot[n].bullet[i].angle * 1024 / 6.283185307179586476925286766559;
if(enemy[shot[n].num].flag!=1)//敵が倒されたら
shot[n].flag=2;//それ以上ショットを登録しないフラグに変える
for(i=0;i<SHOT_BULLET_MAX;i++){//n番目の弾幕データの弾を計算
if(shot[n].bullet[i].flag>0){//その弾が登録されていたら
shot[n].bullet[i].x += (float)mycos(angle) * shot[n].bullet[i].spd/65536;
shot[n].bullet[i].x += (float)mysin(angle) * shot[n].bullet[i].spd/65536;
shot[n].bullet[i].cnt++;
if((shot[n].bullet[i].x<-50 || shot[n].bullet[i].x>FIELD_MAX_X+3 ||
shot[n].bullet[i].y<-50 || shot[n].bullet[i].y>FIELD_MAX_Y+3 )&&shot[n].bullet[i].till<shot[n].bullet[i].cnt){//画面から外れたら
shot[n].bullet[i].flag=0;//消す
}
}
}
//現在表示中の弾が一つでもあるかどうか調べる
for(i=0;i<SHOT_BULLET_MAX;i++)
if(shot[n].bullet[i].flag>0)
return;
if(enemy[shot[n].num].flag!=1){
shot[n].flag=0;//終了
enemy[shot[n].num].flag=0;
}
}

(__int64)やシフト演算はうまくビルドしてくれないため取りあえず除いてしまいました。
このようにしてみたところ、敵弾が全部真横にしか飛ばない状態になりました。
どこを間違えてしまったのでしょうか?


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

Name: yu  ..熟練のプログラマー(40,254ポイント)   Date: 2009/10/13(火) 21:10   No:40399     
Title: Re:三角関数のテーブル化    

shot[n].bullet[i].x += (float)mycos(angle) * shot[n].bullet[i].spd/65536;
shot[n].bullet[i].x += (float)mysin(angle) * shot[n].bullet[i].spd/65536;


ではなくて

shot[n].bullet[i].x += (float)mycos(angle) * shot[n].bullet[i].spd/65536;
shot[n].bullet[i].y += (float)mysin(angle) * shot[n].bullet[i].spd/65536;


ではないですか?


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

Name: ft  ..入門者(3,227ポイント)   Date: 2009/10/13(火) 22:17   No:40408     
Title: Re:三角関数のテーブル化    
ご指摘ありがとうございます。
すみません、ケアレスミスでした;

直したところ、自機を狙うようになったのですが、後の弾も初弾が狙いをつけた場所に撃つようになってしまいました。
登録している弾幕は常に自機狙いのはずなのですが、他の箇所がおかしいのかもしれないので少し見直してみます。


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

Name: GPGA  ..熟練のプログラマー(68,667ポイント)   Date: 2009/10/14(水) 02:07   No:40422     
Title: Re:三角関数のテーブル化    
>(__int64)やシフト演算はうまくビルドしてくれないため取りあえず除いてしまいました。
bcc使用ですか。
shot[n].bullet[i].x += (float)((long long)mycos(angle) * (long long)shot[n].bullet[i].spd >> 16);
に変更してみてください。

>後の弾も初弾が狙いをつけた場所に撃つようになってしまいました。
const int angle = shot[n].bullet[i].angle * 1024 / 6.283185307179586476925286766559;
の位置がおかしい



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

Name: たかぎ [URL]  ..ハッカー(112,637ポイント)   Date: 2009/10/14(水) 11:07   No:40435     
Title: Re:三角関数のテーブル化    
> bcc使用ですか。

PSPとのことなので、GCCでは?
それなら、long long型を使うのが妥当です。
最近はVisual C++でもBorland C++ Compilerでも(5.5.1はダメですが)long longを使えるので、__int64を使う必要性はほとんどありません。


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

Name: GPGA  ..熟練のプログラマー(68,746ポイント)   Date: 2009/10/14(水) 11:53   No:40436     
Title: Re:三角関数のテーブル化    
>PSPとのことなので、GCCでは?
すっかり見落としていました。

PSPでやるなら、以前にも回答した通り、全て固定小数で行うか
FPU命令を使用しないとまともな速度が出ないと思うのですがねぇ。


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

Name: ft  ..入門者(3,382ポイント)   Date: 2009/10/14(水) 12:16   No:40438     
Title: Re:三角関数のテーブル化    
GPGAさんありがとうございます。
まずbccがよく分からないのでこれに対する物か分かりませんが、
使用しているのはVisual C++ 2008 Express EditionとPSPSDKとDXLibraryPortableです。
次に、
>shot[n].bullet[i].x += (float)((long long)mycos(angle) * (long long)shot[n].bullet[i].spd >> 16);
のようにしてみたところエラーは消えました。また、
>const int angle = shot[n].bullet[i].angle * 1024 / 6.283185307179586476925286766559;
の位置が結局よくわからなかったため、

//n番目のショットを登録した敵と自機との角度を返す
float shotatan2(int n){
return atan2(ch.y-enemy[shot[n].num].y,ch.x-enemy[shot[n].num].x)* 1024 / 6.283185307179586476925286766559;
}

のようにshotatan2に直接書きました。
以上のようにしてみたのですが、弾は左下方向に直進したりする状態となりました。


そこでshotatan2をそのままに、
shot[n].bullet[i].x += (float)((long long)mycos(angle) * (long long)shot[n].bullet[i].spd >> 16);
の部分を
shot[n].bullet[i].x +=mycos(shot[n].bullet[i].angle) * shot[n].bullet[i].spd /65536;
のように戻してみたところ自機を狙うようになり、所望の動作が得られました。(sinは方向が逆転していたので-をつけました)
ただ偶然この動作になったてくれただけで、また特にこのようにした理由もなく、計算処理も勝手に変えてしまっている箇所があるので良いとは思えません。


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

Name: GPGA  ..比類無きプログラマー(70,747ポイント)   Date: 2009/10/14(水) 13:09   No:40441     
Title: Re:三角関数のテーブル化    

とりあえず、atan2も内部でsinやcos使ってたと思うので結構重いです。
そっちもテーブル化してしまうほうが処理速度は稼げます。

static const int atanTable[] =
{
0, 40, 81, 122, 162, 203, 244, 285,
325, 366, 407, 447, 488, 529, 569, 610,
651, 691, 732, 772, 813, 853, 894, 934,
974, 1015, 1055, 1096, 1136, 1176, 1216, 1256,
1297, 1337, 1377, 1417, 1457, 1497, 1537, 1576,
1616, 1656, 1696, 1735, 1775, 1814, 1854, 1893,
1933, 1972, 2011, 2051, 2090, 2129, 2168, 2207,
2246, 2285, 2323, 2362, 2401, 2439, 2478, 2516,
2555, 2593, 2631, 2669, 2708, 2746, 2784, 2821,
2859, 2897, 2935, 2972, 3010, 3047, 3084, 3122,
3159, 3196, 3233, 3270, 3307, 3343, 3380, 3416,
3453, 3489, 3526, 3562, 3598, 3634, 3670, 3706,
3742, 3777, 3813, 3848, 3884, 3919, 3954, 3989,
4024, 4059, 4094, 4129, 4164, 4198, 4233, 4267,
4301, 4335, 4369, 4403, 4437, 4471, 4505, 4538,
4572, 4605, 4638, 4671, 4704, 4737, 4770, 4803,
4836, 4868, 4901, 4933, 4965, 4997, 5029, 5061,
5093, 5125, 5156, 5188, 5219, 5251, 5282, 5313,
5344, 5375, 5406, 5436, 5467, 5497, 5528, 5558,
5588, 5618, 5648, 5678, 5708, 5738, 5767, 5797,
5826, 5855, 5884, 5913, 5942, 5971, 6000, 6028,
6057, 6085, 6114, 6142, 6170, 6198, 6226, 6254,
6282, 6309, 6337, 6364, 6391, 6419, 6446, 6473,
6500, 6527, 6553, 6580, 6606, 6633, 6659, 6685,
6711, 6737, 6763, 6789, 6815, 6841, 6866, 6892,
6917, 6942, 6967, 6992, 7017, 7042, 7067, 7092,
7116, 7141, 7165, 7190, 7214, 7238, 7262, 7286,
7310, 7333, 7357, 7381, 7404, 7428, 7451, 7474,
7497, 7520, 7543, 7566, 7589, 7611, 7634, 7657,
7679, 7701, 7724, 7746, 7768, 7790, 7812, 7833,
7855, 7877, 7898, 7920, 7941, 7963, 7984, 8005,
8026, 8047, 8068, 8089, 8109, 8130, 8151, 8171,
};
int atan2_(int x, int y) {
if (x == 0) return 0;
return atanTable[(int)(((long long)y << 8) / x)];
}
int atan1_(int x, int y) {
if (x == y) return (1 << 13);
if (y > x) return (1 << 14) - atan2_(y, x);
return atan2_(x, y);
}
int atan0_(int x, int y) {
if (x < 0) return atan1_(y, -x) + (1 << 14);
return atan1_(x, y);
}


/*!
* @brief atanを求める
*/
int myatan(int x, int y)
{
if (x == 0 & y == 0) {
return 0;
}
if (y < 0) {
return (atan0_(-x, -y) + (1 << 15)) >> 6;
}

return atan0_(x, y) >> 6;
}

int shotatan2(int n){
const int x = ch.x - enemy[shot[n].num].x;
const int y = ch.y - enemy[shot[n].num].y;
return myatan(x, y);
}


>shot[n].bullet[i].x += (float)((long long)mycos(angle) * (long long)shot[n].bullet[i].spd >> 16);
>の部分を
>shot[n].bullet[i].x +=mycos(shot[n].bullet[i].angle) * shot[n].bullet[i].spd /65536;
>のように戻してみたところ自機を狙うようになり、所望の動作が得られました。
shot[n].bullet[i].spdがfloatだからですね。shot[n].bullet[i].xもfloatだし。
浮動小数を使うとビット演算子は使用できないので、個人的には座標もスピードも固定小数推奨ですが
作りが多少面倒になるし、/ 65536で処理速度として問題なければ、今のままでもいいと思います。
 


2,001ポイント を手に入れた。

Name: ft  ..入門者(3,431ポイント)   Date: 2009/10/14(水) 14:22   No:40450 解決!     
Title: Re:三角関数のテーブル化    
>>GPGAさん
わざわざ助かります。
個人的に一通り問題点の原因と改善法が纏まってきたので、
ご助言くださいました固定小数による計算も含めて組み直してみたいと思います。
本当にありがとうございました!


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



Name: そうは問屋の最終兵器  ..ぴよぴよ(449ポイント)   Date: 2009/10/12(月) 18:24   No:40343       
Title: 東方風縦STG(の試作品)できました    
龍神録およびシューティングゲームの館を参考に作らせていただいた東方風STGが、一応遊べるレベルまで到達したので公開させていただきました。
1ステージのみでExtraステージもない簡素な造りですが遊んでいただければ幸い、感想バグ報告等いただくと作者が小躍りします。

http://www.dotup.org/uploda/www.dotup.org252618.zip.html
パスワードはshootingです

ゲーム内容ですが、タシチョウという名の棒人間が主人公だったり敵がダシチョウという名の棒人間だったり会話が支離滅裂だったりするので、そういうのが苦手な方は避けた方が無難かもしれません…。

なお最後になりましたが、今回このSTGを作る機会を与えてくださった管理人のDixq様、ならびに掲示板の皆様にこの場を借りて厚くお礼申しあげます。


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


Name: 鈴仙優曇華院イナバ  ..かけだし(2,416ポイント)   Date: 2009/10/12(月) 20:57   No:40348     
Title: Re:東方風縦STG(の試作品)できました    
遊ばせて頂きました。
ボスのスペルカードが2つともかっこよかったです!
中ボス撃破後の雑魚敵が何気にミジャクジ弾幕使ってきてて
吹きましたw
続編作る予定ありましたらまた、遊ばせて頂きたいです。

試作品というか完成度高すぎですよ
自分もここまで完成させたいわ…


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

Name: こめかみ  ..熟練のプログラマー(51,895ポイント)   Date: 2009/10/12(月) 23:35   No:40353     
Title: Re:東方風縦STG(の試作品)できました    
バグ報告?です。
ゲームの操作音はするのですが画像が一切出てきません。

ウィンドウモードでもフルスクリーンモードでも同じです。

>感想バグ報告等いただくと作者が小躍りします。
さあ!小躍りしていただきましょうかっ(何様)


ログファイルも一応コピペしておきますね。


0:システムの情報を出力します
1: DXライブラリ Ver3.00a
2: OS WindowsXP ( Build 2600 Service Pack 3 )
103: CPU動作速度:大体2.76GHz
103: MMX命令を使用します
104: SSE命令が使用可能です
105: SSE2命令が使用可能です
105: CPUベンダ:GenuineIntel
109: CPU名: Intel(R) Pentium(R) D CPU 2.80GHz
109:COMの初期化... 成功しました
111:メモリ総量:2045.46MB 空きメモリ領域:879.81MB
112:タイマーの精度を検査します
113:精度結果 更新回数 マルチメディアタイマー:1 パフォーマンスカウンター:60
114: パフォーマンスカウンターを使用します タイマー分解能 : 2793500.000000 KHz
115: ソフトの二重起動検査... 二重起動はされていませんでした
117:ウインドウクラスを登録します... 登録に成功しました
118:ウインドウモード起動用のウインドウを作成します
126:ウインドウの作成に成功しました
142:IMEを無効にしました
345:ウインドウスタイルをウインドウモード用に変更します... 完了
347:DirectInput関係初期化処理
348: DirectInput7 の取得中... 成功
394: 引き続き初期化処理... 初期化成功
421: ジョイパッドの初期化...
488: 入力装置を見つけました
504: デバイスの登録名:PS TO USB convert cable
505: デバイスの製品登録名:PS TO USB convert cable
697: ジョイパッドの追加は正常に終了しました
698: ジョイパッドの初期化は正常に終了しました
698: マウスデバイスの初期化... 初期化成功
700: キーボードデバイスの初期化... 初期化成功
702:DirectInput 関連の初期化は正常に終了しました
703:DirectSound の初期化を行います
703:DirectSound インターフェースの取得を行います.... 成功
708:引き続きインターフェースの初期化処理... 成功
887: DirectSound デバイスを列挙します
893: モジュール名: ドライバ記述:プライマリ サウンド ドライバ
893: モジュール名: ALCXWDM.SYS ドライバ記述:Realtek AC97 Audio
894: モジュール名: Envy24HF.sys ドライバ記述:Envy24 Family Audio (WDM)
895: 最大サンプリングレート:192.00KHz 最小サンプリングレート:0.10KHz
895: 総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB

896: 利用可能サンプリング精度
896: プライマリ 16bit = OK 8bit = OK
897: セカンダリ 16bit = OK 8bit = OK

897: 利用可能チャンネル
898: プライマリ MONO = OK STEREO = OK
900: セカンダリ MONO = OK STEREO = OK

901:DirectSound の初期化は正常に終了しました
912:DirectDraw オブジェクトの取得を行います.... 成功
919:引き続き初期化処理... 初期化に成功しました
925:IDirect3D9 オブジェクトを取得します.... 成功
939:IDirect3DDevice9 オブジェクトを取得します.... ハードウエア頂点演算を使用します
1007:成功
1007:画面のフォーマットは D3DFMT_X8R8G8B8 です
1008:Zバッファのフォーマットは D3DFMT_D16 です
1008:16bit カラーフォーマットは D_D3DFMT_R5G6B5 です
1009:32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です
1009:アルファ付き 16bit カラーフォーマットは D_D3DFMT_A4R4G4B4 です
1010:アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です
1011:アルファテスト用 16bit カラーフォーマットは D_D3DFMT_A1R5G5B5 です
1012:アルファテスト用 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です
1013:DXT1テクスチャフォーマットは D_D3DFMT_DXT1 です
1013:DXT2テクスチャフォーマットは D_D3DFMT_DXT2 です
1014:DXT3テクスチャフォーマットは D_D3DFMT_DXT3 です
1015:DXT4テクスチャフォーマットは D_D3DFMT_DXT4 です
1015:DXT5テクスチャフォーマットは D_D3DFMT_DXT5 です
1016:描画用 16bit カラーフォーマットは D_D3DFMT_R5G5B5 です
1016:描画用 32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です
1017:描画用アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です
1018:Zバッファを作成します.... 成功
1025:プログラマブルシェーダーを使用します

1040:フォントの初期化を行います
1044:フォントの初期化は正常に終了しました
1044:文字コードバッファの初期化を行います... 完了しました
1819:グラフィックファイル Sh/img/talk/player1.png がありません
1819:グラフィックファイル Sh/img/talk/boss1-1.png がありません
2283:グラフィックファイル Sh/img/talk/boss1-1.png がありません
5620:フォントの初期化を行います
5624:フォントの初期化は正常に終了しました
5641:DirectInput 関連の終了処理... 完了
5752:DirectSound の終了処理は正常に終了しました
5784:ウインドウを閉じようとしています
5793:ウインドウが破棄されようとしています
5795:フォントの初期化を行います
5796:フォントの初期化は正常に終了しました
5797:ソフトを終了する準備が整いました
5803:
5804:Alloc memory dump
5804: Total size:0(0.000kb) Alloc num:0
5806:
5818:フォントハンドル値が異常です



遊べてる方もいるようですので、私が何か変なことをしてるのかも。
起動するときの注意点など何かありませんでしょうか?


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

Name: そうは問屋の最終兵器  ..ぴよぴよ(883ポイント)   Date: 2009/10/13(火) 00:20   No:40354     
Title: Re:東方風縦STG(の試作品)できました    
>>鈴仙優曇華院イナバ様

プレイしていただいてありがとうございます。
棒人間を許容してくださる方がいてなんだかほっとしました。

>ボスのスペルカードが2つともかっこよかったです!

ありがとうございます、そう言っていただけるとボツになった20数個のスペルもどきも報われると思います。
あと、もしよろしければ、ログのプログラマブルシェーダーの項目が「使用する」になっているか否か教えていただけると幸いです。

>>こめかみ様

バグ報告ありがとうございます。
小躍り…しました…。内心は戦々恐々としていましたが…。
張っていただいたログを拝見させていただいたところ、大きな違いは、
「1025:プログラマブルシェーダーを使用します」
の部分がこちらのログでは、「使用しない」になっていたことでした。
よくわからなかったのでGoogleで調べてみたところ「プログラマブルシェーダー」は描画に関わる部分らしいのでもしかするとこれが原因かもしれません。
とりあえずもう少し詳しく調べて、解決策を模索してみたいと思います。
重ね重ね報告ありがとうございました。


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

Name: ぽよ  ..かけだし(1,141ポイント)   Date: 2009/10/13(火) 00:45   No:40356     
Title: Re:東方風縦STG(の試作品)できました    
 横から失礼します
ちょっと今時間がないので詳しい説明は省きますがDXライブラリ Ver3.00aの不具合だと思われます。
ライブラリを最新版にしてビルドしなおす事で解決出来るかもしれません。


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

Name: そうは問屋の最終兵器  ..ぴよぴよ(927ポイント)   Date: 2009/10/13(火) 01:07   No:40358     
Title: Re:東方風縦STG(の試作品)できました    
>>ぽよ様

情報ありがとうございます。
さっそくビルドし直してみたいと思います。
直ってくれ…!


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

Name: そうは問屋の最終兵器  ..ぴよぴよ(786ポイント)   Date: 2009/10/13(火) 01:44   No:40359     
Title: Re:東方風縦STG(の試作品)できました    
ぽよ様のアドバイスを基にDXlib Ver3.00cを用いてビルドし直しました。
DXlibのページを参照したところVer3.00aには一部の環境で画像が全く描画されないバグが存在する旨が書かれていたので、おそらくこれで直ると思うのですが…。

http://www.dotup.org/uploda/www.dotup.org254930.zip.html
パスワードは前と同じくshootingです。

こめかみ様、その他同じ症状が出ていた方どうでしょう?
引き続き感想、バグ報告等お待ちしております。


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

Name: ひよこ  ..熟練のプログラマー(54,824ポイント)   Date: 2009/10/13(火) 06:38   No:40366     
Title: Re:東方風縦STG(の試作品)できました    
遊ばせてもらいました。
弾幕が目新しくてよかったです。
あのシンプルなゲーム感がよかったです。(背景、キャラ、敵の攻撃など
あと、そんなに試してないのですが、リプレイを保存を押したときにデータができてなかったです。
制作お疲れ様でした。次回作も楽しみにしてます。


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

Name: そうは問屋の最終兵器  ..ぴよぴよ(949ポイント)   Date: 2009/10/13(火) 20:13   No:40392     
Title: Re:東方風縦STG(の試作品)できました    
>>ひよこ様

プレイしていただいてありがとうございます。

>あのシンプルなゲーム感がよかったです。

頑張ってコンパクトにまとめたので評価していただけて嬉しいです。
もう少し機能の追加を…。とかも思っていたのですが、色々やりすぎなかったのが逆に功を奏した感じです。

>リプレイを保存を押したときにデータができてなかったです。

バグ報告ありがとうございます。
次回公開する機会があればその時までに必ず直しておきたいと思います。


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

Name: Tatu  ..中級者(12,219ポイント)   Date: 2009/10/13(火) 23:22   No:40414     
Title: Re:東方風縦STG(の試作品)できました    
lunaticクリアしました。

このゲーム、アイテムの引きによってかなり難しさが変わりますね。
特にホーミングと高速連射の組み合わせが強いです。


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

Name: そうは問屋の最終兵器  ..かけだし(1,175ポイント)   Date: 2009/10/14(水) 00:36   No:40419     
Title: Re:東方風縦STG(の試作品)できました    
>>Tatu様

プレイしていただいてありがとうございます。

>lunaticクリアしました。

そこまでやりこんでいただけると感無量です。もしかしてノーミスノーボムでしょうか…?

>アイテムの引きによってかなり難しさが変わりますね。

ショット変化のシステムを導入する際、一番危惧していた部分です…。もう少し装備毎に大きな特性を付けて(装備毎にボムや移動速度が異なるとか)優劣をぼかした方がいいかもしれませんね。


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

Name: こめかみ   Date: 2009/10/16(金) 21:17   No:403431255695477     
Title: Re:東方風縦STG(の試作品)できました    
ありゃ、ファイル流れてますね。遅かった。。




Name: kai  ..初心者(7,255ポイント)   Date: 2009/10/12(月) 01:35   No:40307       
Title: ボスを残像させる方法2    
何度もすみません。
http://www.play21.jp/board/formz.cgi?action=res&resno=39822&page=&lognum=122&id=dixq&rln=39828
の続きなんですが


struct.h内に追加

typedef struct{
int PlayerX[ AFTIMAGENUM ], PlayerY[ AFTIMAGENUM ] ;
}boss_t;


graph.cpp内変更

#define AFTIMAGENUM 65;
for(i = AFTIMAGENUM - 1 ; i >= 0 ; i -= 8 ){
SetDrawBlendMode( DX_BLENDMODE_ALPHA, 255 - 255 * i / AFTIMAGENUM) ;//αブレンドする
DrawRotaGraphFdF(boss.PlayerX[i],boss.PlayerY[i],//ボスを描画
1.0f,0.0f,img_dot_boss01[0],TRUE);
SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 0 );//ブレンドモードをリセットする。
}
// 残像データを一つづつずらす
for( i = AFTIMAGENUM - 1 ; i > 0 ; i -- ){
boss.PlayerX[i] = boss.PlayerX[i-1] ;
boss.PlayerY[i] = boss.PlayerY[i-1] ;
}

と修正してみたのですが、これでも残像できなかったのですが
どこが原因で残像できなくて困ってます。どうしたらできるかアドバイス再びお願いします・・


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


Name: Justy  ..伝説なるハッカー(440,499ポイント)   Date: 2009/10/12(月) 11:36   No:40312     
Title: Re:ボスを残像させる方法2    

>どこが原因で残像できなくて困ってます

 どううまくいっていないのかわかりませんが、
ボスの最新座標(現在の座標)はどこに入っていますか?


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

Name: softya  ..中級者(13,288ポイント)   Date: 2009/10/12(月) 11:51   No:40313     
Title: Re:ボスを残像させる方法2    
まず、問題点の調べ方を教えます。
1.boss.PlayerX[0]とかちゃんと表示できる座標になっているか確認してください。
2.同様にboss.PlayerY[0]についても調べます。
3.さらに[1]〜[3]あたりまで調べてみましょう。

質問です。boss.PlayerX[0]とboss.PlayerY[0]は、正しい値でしたか?
正しく無い場合は、原因は何だと思いますか?
[1]〜[3]の値は正しいですか?
boss.PlayerX[0]とboss.PlayerX[AFTIMAGENUM-1]では、どちらが元の位置に近い残像でしょうか?

ちなみにboss.PlayerX,Yは意味的にかなり変なので、
boss.ImageX,Yあたりに変更する事をお勧めします。


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

Name: kai  ..初心者(7,118ポイント)   Date: 2009/10/12(月) 16:26   No:40331     
Title: Re:ボスを残像させる方法2    
ボスの最新座標はboss_shot.cpp内のcalc_boss()に
int i;
// キャラクターの位置をセット
for( i = 0 ; i < AFTIMAGENUM ; i ++ ){
boss.PlayerX[i]=int(boss.x);
boss.PlayerY[i]=int(boss.y);
}
と入れてるのですが、これだと
上下に動くものボス+動かないボスが表示されるだけで困ってます。(薄くもなってません)
ましてや左右の移動は残像していません・・


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

Name: softya  ..中級者(14,700ポイント)   Date: 2009/10/12(月) 17:38   No:40336     
Title: Re:ボスを残像させる方法2    
すいません質問の答えになっていません。

(1)質問です。boss.PlayerX[0]とboss.PlayerY[0]は、正しい値でしたか?
(2)正しく無い場合は、原因は何だと思いますか?
(3)[1]〜[3]の値は正しいですか?
(4)boss.PlayerX[0]とboss.PlayerX[AFTIMAGENUM-1]では、どちらが元の位置に近い残像でしょうか?
にそれぞれお答えください。値も書いてくださいね。
ここをちゃんと理解しないと残像は作れませんよ。


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

Name: kai  ..初心者(7,200ポイント)   Date: 2009/10/12(月) 21:06   No:40350     
Title: Re:ボスを残像させる方法2    
すみません。No:40331はJustyさんに対しての回答です。
>softyaさん
(1)boss.PlayerX[0]とboss.PlayerY[0]の値の調べ方が分からないのですが
 具体的にどうすればいいのでしょうか?
 またboss.PlayerX[0]とboss.PlayerY[0]というプラグラムを使ってないのですが
 使えということでしょうか?


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

Name: Justy  ..伝説なるハッカー(440,932ポイント)   Date: 2009/10/12(月) 21:29   No:40351     
Title: Re:ボスを残像させる方法2    

>calc_boss()に〜と入れてるのですが

 boss.PlayerXや boss.PlayerYの役割は「過去の座標の履歴」です。

 ですがこれは、配列全体を最新のボスの座標で塗りつぶしてしまっていますね。

 これを行うのは最初の1回目としては初期化と考えればわかるのですが、
2回目以降もこの処理を行っているとすれば、この配列は「過去の座標の履歴」にならず、
「残像データを一つずつずらす」処理も全く意味のないものになってしまいます。

 残像データを一つずつずら」しているのは AFTIMAGENUM+1フレーム前の座標を忘れ、
新しい最新の座標を受け入れる為の処理です。

 その上で softyaさんの質問 (4)に関連しますが、ボスの最新の座標を毎フレーム
配列のどこか1カ所に入れれば「過去の座標の履歴」は完成します。



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

Name: softya  ..上級者(15,457ポイント)   Date: 2009/10/13(火) 09:15   No:40368     
Title: Re:ボスを残像させる方法2    
>(1)boss.PlayerX[0]とboss.PlayerY[0]の値の調べ方が分からないのですが
> 具体的にどうすればいいのでしょうか?

デバッガで変数の値を調べる事ができます。
実行中のプログラムを目的の場所で止めるにはブレークポイントを使います。
下記サイトを参考にしてください。
たぶん、VC6.0用の説明なので、分からないところがあれば聞いてください。
http://www.nitoyon.com/vc/tutorial/debug/

あるいは、下記のようなコードを埋め込む事でVisualStudioの出力ウィンドウに変数の内容を表示することが出来ます。

{
TCHAR strbuf[256];
sprintf( strbuf, _T("boss.PlayerX[0]=%d boss.PlayerY[0]=%d\n"), boss.PlayerX[0], boss.PlayerY[0] );
OutputDebugString( strbuf );
}



> またboss.PlayerX[0]とboss.PlayerY[0]というプラグラムを使ってないのですが
> 使えということでしょうか?

Justyさんの解説にもありますが、配列をうまく使わないと残像を作り出す事は出来ません。
そもそも残像ってどういう仕組みなんだって根本の話になりますので、前回の質問の回答をよく読みなおしてみてください。
あるいは、理解しやすくするために、もっとシンプルにして1つ前の位置の残像だけだすプログラムを作ってみるのも一つの手です(配列は使いません)。


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

Name: Tatu  ..中級者(13,528ポイント)   Date: 2009/10/14(水) 00:16   No:40418     
Title: Re:ボスを残像させる方法2    
サンプルコードを作ってみたので参考にしてみてください。


#include "DxLib.h"

char stateKey[256];//キーがおされているかを格納する配列

//キャラの構造体
typedef struct{
//座標と速度
int x,y,vx,vy;
}ch_t;

//残像用の構造体
typedef struct{
//座標
int x,y;
}zanzou_t;

int i;//for文カウンタ用変数
int img_ch;//キャラの画像変数
int func_state;//状態変数 0:初期化 1:通常処理
ch_t ch;//キャラ
zanzou_t zanzou[64];//64個の残像
int color;//色変数

//ループで必ず行う3大処理
int ProcessLoop(){
if(ProcessMessage()!=0)return -1;//プロセス処理がエラーなら-1を返す
if(ClearDrawScreen()!=0)return -1;//画面クリア処理がエラーなら-1を返す
GetHitKeyStateAll(stateKey);//現在のキー入力処理を行う
return 0;
}

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
ChangeWindowMode(TRUE);//ウィンドウモード
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化

while(ProcessLoop()==0){//メインループ
//初期化
if(func_state==0){
//画像読み込み(画像は自分で用意してください)
img_ch=LoadGraph("ch.png");
//白色の用意
color=GetColor(255,255,255);
//キャラの位置初期化
//グローバル変数は自動的に0になるため速度は書かなくてよい
ch.x=320;
ch.y=240;
//残像の初期化
for(i=0;i<64;i++){
zanzou[i].x=ch.x;
zanzou[i].y=ch.y;
}
//以降は通常処理へ
func_state=1;
}
//通常処理
else{
//矢印キーによりキャラの速度を変化させる
if(stateKey[KEY_INPUT_RIGHT]){
ch.vx++;
}
if(stateKey[KEY_INPUT_DOWN]){
ch.vy++;
}
if(stateKey[KEY_INPUT_LEFT]){
ch.vx--;
}
if(stateKey[KEY_INPUT_UP]){
ch.vy--;
}
//速度が大きすぎるときは小さくする
if(ch.vx<-640) ch.vx=-640;
if(ch.vx>640) ch.vx=640;
if(ch.vy<-480) ch.vy=-480;
if(ch.vy>480) ch.vy=480;
//移動させる
ch.x+=ch.vx;
ch.y+=ch.vy;
//画面枠を超えたら画面の反対に移動させる
if(ch.x<0) ch.x+=640;
if(ch.x>640) ch.x-=640;
if(ch.y<0) ch.y+=480;
if(ch.y>480) ch.y-=480;
//残像を動かす
//添え字が小さいほど後ろ側にある
//この処理は前(キャラ)側から引っ張るのではなく、
//後ろから押すような感じ
for(i=0;i<63;i++){
zanzou[i].x=zanzou[i+1].x;
zanzou[i].y=zanzou[i+1].y;
}
//いちばん前の残像はキャラの位置に合わせる
zanzou[63].x=ch.x;
zanzou[63].y=ch.y;
//アルファブレンドモードにセット
SetDrawBlendMode(DX_BLENDMODE_ALPHA,32);
//残像を描画
for(i=0;i<64;i++){
DrawRotaGraph(zanzou[i].x,zanzou[i].y,1,0,img_ch,TRUE);
}
//描画モードを元に戻す
SetDrawBlendMode(DX_BLENDMODE_NOBLEND,0);
//キャラを描画
DrawRotaGraph(ch.x,ch.y,1,0,img_ch,TRUE);
//キャラの速度を表示する
DrawFormatString(0,0,color,"vx=%d",ch.vx);
DrawFormatString(0,16,color,"vy=%d",ch.vy);
}
if(stateKey[KEY_INPUT_ESCAPE])break;//エスケープが入力されたらブレイク
ScreenFlip();//裏画面反映

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


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



Name: yskey  ..入門者(2,822ポイント)   Date: 2009/10/13(火) 18:33   No:40385       
Title: マップエディターQuoyle08の.map読み込み    
どうもお世話になっていますm(_ _)m
現在DxLibで、戦術級シュミレーションゲームを制作中です。
マップ制作にQuoyle08を使用させてもらっているのですが、出てくるマップデータファイルの読み込みに戸惑っています。
.map形式のファイルを使い、二次元配列に数値を読み込んでいくのですが、ちゃんと読み込むことができません。
マップチップは4枚なのに二次元配列に読み込んで、確認のためにDrawFormatString関数で出力すると771や-1などおかしい数値が入ってしまいます。
http://inu.harisen.jp/index.html
のサイト様を参考にさせてもらっているのですが、この関数では無理でしょうか?
添付されているファイルに問題があるのでしょうか?
Quoyle08でデータを生成するときに間違っているのでしょうか?


--------------------------------構造体Mapの中身
struct Map{
int chip[CHIP]; //チップ画像のハンドル
int chip_num; //読み込んだチップの枚数

int data[LYER][27][27]; //マップデータ レイヤーn枚分 64x64
int data_x_num; //マップデータのチップ枚数X
int data_y_num; //マップデータのチップ枚数Y
};
--------------------------------
int LoadMapData(const char *name)
{
int fh = 0;
int buf[2] = {NULL};

fh=FileRead_open(name);

for(int i=0;i<2;i++)FileRead_read(&buf[i], sizeof(BYTE), fh);
map.data_x_num=((buf[1] & 0xff) << 8) | (buf[0] & 0xff);

for(int k=0;k<2;k++)FileRead_read(&buf[k], sizeof(BYTE), fh);
map.data_y_num=((buf[1] & 0xff) << 8) | (buf[0] & 0xff);

FileRead_seek(fh,16,SEEK_SET);

for(int q=0;q<LYER;q++){
for(int y=0;y<map.data_y_num;y++){
for(int x=0;x<map.data_x_num;x++){
for(int m=0;m<2;m++){
buf[m]=FileRead_getc(fh);
}
map.data[q][y][x]=buf[0]|(buf[1]<<8);
}
}
}

FileRead_close(fh);
return 0;
}




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


Name: Justy  ..伝説なるハッカー(441,805ポイント)   Date: 2009/10/13(火) 21:24   No:40402     
Title: Re:マップエディターQuoyle08の.map読み込み    
 なんというか。

 ツールから出力される mapファイルは

    + 0x00   2byte  横サイズ
    + 0x02   2byte  縦サイズ
    + 0x04   2byte  チップ横サイズ
    + 0x06   2byte  チップ縦サイズ
    + 0x08   1byte  レイヤー数
    + 0x09   1byte  マップチップ数上限フラグ
    + 0x10   Xbyte  データ

というフォーマットなのですが、このサイト上にあるコードは

ttp://inu.harisen.jp/scene_1/14.html
    + 0x00   2byte  横サイズ
    + 0x02   2byte  縦サイズ
    + 0x04  20byte  ?
    + 0x18   Xbyte  データ



ttp://inu.harisen.jp/scene_1/17.html
    + 0x00   2byte  横サイズ
    + 0x02   2byte  縦サイズ
    + 0x04  16byte  ?
    + 0x14   Xbyte  データ

の2種類あります。

 データの位置が途中で変わっているにもかかわらず、ツールから出力されるデータとは
どちらも一致しない……。

 う〜ん、ツール側のフォーマットが変わったりしたんでしょうか……。



>添付されているファイルに問題があるのでしょうか

 ファイルサイズ的には大丈夫そうです。


>この関数では無理でしょうか

 目視で見る限り、だめですね。
 といっても何カ所か変えるだけで動くとは思いますが。

・ シーク量 (FileRead_seek) が違う
 そのマップの縦横サイズを取得した後、16バイト移動していますが、
マップデータの先頭は 16バイト後ろではありません。

・ マップチップ数上限を確認してください
 マップデータの読み取りに2バイト読み取ってはシフトして数値を組み立てていますが、
それは「マップチップ数上限」が2バイト(最大65536個)だったときの話です。

 添付されたマップデータは1バイト(最大256個)のものなので、
2バイト読み取ってはシフトする必要はありません。

 きちんと上限が1バイトなのか2バイトなのか読み取って処理をわけてください。
(最悪決め打ちで1バイトとしてしまってもいいかもしれませんが、
その場合2バイトのデータが読み込まれたらエラーにした方がいいでしょう)

・ LYERは決め打ちしないで正しくファイルから読み取ってください
 ファイルフォーマットはツールのマニュアルにも書いてありますし、
簡易なのは上にも書いてあるので、正しくレイヤー数はファイルの数値を使ってください。


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

Name: yskey  ..入門者(3,025ポイント)   Date: 2009/10/13(火) 22:58   No:40412 解決!     
Title: Re:マップエディターQuoyle08の.map読み込み    
>>Justyさん
ややこしい話にもかかわらず大変ご丁寧な返信ありがとうございます。
「最大65536個に設定してチップの情報量が2バイト分になる」ということが理解できていませんでした。

「シーク量 (FileRead_seek) が違う」というのは
最大65536個設定にするとマップデータ位置は最初から16バイト目
では、256個なら8バイト目ということですね。

汎用性を高めるためにLYERもちゃんと読み込みたいと思います。

自分で悩んでいてもずっと解決してませんでした。
どうもありがとうございました。m(_ _)m


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

Name: Justy  ..伝説なるハッカー(442,120ポイント)   Date: 2009/10/13(火) 23:14   No:40413     
Title: Re:マップエディターQuoyle08の.map読み込み    

>256個なら8バイト目ということですね

 いえ違います。
 それはマップデータの1つあたりの情報量です。

 「マップチップ数上限」が1バイトだろうが2バイトだろうが、
マップデータの先頭はファイルの先頭から 0x10バイト目で固定なんですよ。

 最初に縦横サイズ読み込んでいるので、既に4バイト分進んでいることになります。
 結果、0x10-4で、0xcバイト分後ろにシークするとそこがマップデータの先頭になります。

 ただ上の助言通りやると、今までは読み飛ばしていましたが
レイヤー数だったりマップチップ数上限を読み込むことになるので、
シーク量も変わってきます。


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



Name: EXTRL  ..ぴよぴよ(591ポイント)   Date: 2009/10/13(火) 15:51   No:40373       
Title: キャラの分割描画が出来ません    
初めまして。EXTRLと言います。

C++言語入門程度の知識しかなく、C言語を勉強せずに入りました。
タイトルの通り、キャラを分割しての描画ができません。
使っている画像は(png)の、全部で幅128×縦140、分割すると、
幅32×縦70(32×70で合ってる?)の8つ分です。
ゲームプログラミングの館の17節を参考にしましたが、
館で使われる画像は正方形なのでよく分かりません。
コンパイルではエラーは出ずに実行でき、しかし描画されないといった具合です。
エスケープキーや右上の×で閉じると、Windowsから「xxxxxxxxxは動作を停止しました。・・・」
と出ます。 コンパイラ(?)はBorland+BCCDeveloperです。
何か不足があったら付け足します。

以下コード

#include "DxLib.h"


int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){

int image[8];
char Key[156];

if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1;

SetDrawScreen(DX_SCREEN_BACK);
LoadDivGraph("棒人間.png",8,4,2,32,70,image);

while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]){

DrawGraph(320,240,image[0],TRUE);
ScreenFlip();

}

DxLib_End();
return 0;
}



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


Name: Mato  ..ぴよぴよ(210ポイント)   Date: 2009/10/13(火) 16:00   No:40374     
Title: Re:キャラの分割描画が出来ません    
なんだろう……。
とりあえず気になったのは、
char Key[156];
という部分です。
恐らく156でなく256だったと思います。


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

Name: EXTRL  ..ぴよぴよ(630ポイント)   Date: 2009/10/13(火) 16:37   No:40375 解決!     
Title: Re:キャラの分割描画が出来ません    
( ゜д゜)

すいません。タイプミスでした。
直したところ、ちゃんと動作しました。
回答ありがとうございました。お騒がせしました。





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



Name: Ma  ..中級者(12,107ポイント)   Date: 2009/10/11(日) 22:12   No:40295       
Title: シューティングノベルゲーム作ってみました。    
こちらのサイトでいつも勉強させていただいているMaです。(本当はMasao)
先日、作成していたシューティングノベルゲーム「シエル・ソルシエールズ」を完成させましたので、感想等お聞かせください。


売りは、
・フルボイス
・シューティングにランキングシステムあり。
・プレイスクリーンが大きい。
など。

ダウンロードは、こちらのページから。

http://www.nakadora-net.com/ciesol/

ただ、ノベル部分に時間がめちゃくちゃかかったので、
シューティングのクオリティはDixqさんの何枚もしたですが^^;

バグ等、あるとは思いますが報告していただけるとうれしいです。



*追記
ところで、あまり関係ないですが、最近PC買い換えて
英語OS Vista Home Premium でプレイしてみたらバグばかりになっていましたorz
(ほかの市販ゲームとかは起動できない始末…)


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


Name: ひよこ  ..熟練のプログラマー(54,636ポイント)   Date: 2009/10/11(日) 22:43   No:40298     
Title: Re:シューティングノベルゲーム作ってみました。    
よくできてます。まだまだ進んでませんが楽しんでます。
ノベル関係はよく出来てました。
シューティングのほうは、まだこういうスタイルは慣れてないので苦労してますが、楽しいです。


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

Name: Ma  ..中級者(12,190ポイント)   Date: 2009/10/13(火) 00:21   No:40355     
Title: Re:シューティングノベルゲーム作ってみました。    
>ひよこさん
プレイしていただいてありがとうございます^^
 >ノベル関係はよく出来てました。
ノベル系は結構苦労したので、うれしいです。
シューティングはHPがあるので、ちょっと違う感覚かもですね。


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

Name: 撤回万公  ..ぴよぴよ(163ポイント)   Date: 2009/10/13(火) 02:23   No:40360     
Title: Re:シューティングノベルゲーム作ってみました。    
すみませんm(_ _)m
先に謝っておきます。

あっ、シューティングは楽しかったです。
ご馳走様でした!

ところで、バグ報告というわけではなさそうなのですが・・・
マナのボイスだけノイズが入ってるのは仕様ですか?
非常にラブリーなキャラなので気になります(>_<)

変な投稿で失礼しました!

p.s:
こういうことはBBSで書くべきでしたかね。
以後、気をつけます。。。


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

Name: Ma  ..中級者(12,204ポイント)   Date: 2009/10/13(火) 06:20   No:40365     
Title: Re:シューティングノベルゲーム作ってみました。    
>マナのボイスだけノイズが入ってるのは仕様ですか?
すいません。
CV様の録音環境が原因ですので、仕様となります。


#追記
ランキングシステムが正常に動作しておりませんでした。
もうしわけございません。
先ほど修正しましたので、現在は問題ありません。


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



Name: @  ..ぴよぴよ(395ポイント)   Date: 2009/10/13(火) 03:51   No:40361       
Title: キー操作無効    
ちょっと聞きたいのですが、
龍神録でキー操作不能にする関数って
どんな関数なんでしょうか?
自機が死んだとき、じょじょに自機が
上にあがってくる動作のときに
キー操作無効にするようにしたいのですが、
誰か分かる方がいたら教えてください


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


Name: DVDM [URL]  ..入門者(3,605ポイント)   Date: 2009/10/13(火) 04:18   No:40363     
Title: Re:キー操作無効    
>>@さん
キー入力処理の関数が存在していると思いますので
自機が死んだ場合などにフラグを立てたりするなどして
そのキー入力を受け付けている関数を呼ばなければキー操作を無効にすることができます。


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

Name: @  ..ぴよぴよ(416ポイント)   Date: 2009/10/13(火) 04:36   No:40364 解決!     
Title: Re:キー操作無効    
夜半遅くに回答ありがとうございます。
アドバイスのおかげで無事できました。ありがとうございます。


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



Name: lbfuvab  ..上級者(22,080ポイント)   Date: 2009/10/12(月) 05:30   No:40309       
Title: カラフルにカオス図形描画    
カラフルにカオス図形を描くプログラムを組んでみました。
前回と打って変わって今回はかなりカオスです。
添付しきれないのでロダを使います。

http://www1.axfc.net/uploader/Sc/so/44769.zip&key=Chaos

 ・・・5:30だしそろそろ寝よう
\               /
     <⌒/ヽ-、___
   /<_/____/


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


Name: kazuoni [URL]  ..ハッカー(110,936ポイント)   Date: 2009/10/12(月) 13:22   No:40318     
Title: Re:カラフルにカオス図形描画    
1.85
20

でプログラムが落ちます^^;

にしても・・・カオス・・・です。
初期値というのが何のパラメータか分かりませんが・・・
こんな図形もあるんですね・・・orz


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

Name: lbfuvab  ..上級者(22,322ポイント)   Date: 2009/10/12(月) 15:10   No:40322     
Title: Re:カラフルにカオス図形描画    
>1.85
>20

>でプログラムが落ちます^^;

ありがとうございます。なんとか修正しました↓
http://www1.axfc.net/uploader/He/so/247980.zip&key=Chaos


>にしても・・・カオス・・・です。

Cキーで色を変えてみるともっとカオスになるかもしれません。


>初期値というのが何のパラメータか分かりませんが・・・

あ、書くの忘れてた。すいません。readmeに書いておきます。

>こんな図形もあるんですね・・・orz

しかもパラメータを変えるだけでどんどん変わりますね。




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

Name: ひよこ  ..熟練のプログラマー(54,698ポイント)   Date: 2009/10/12(月) 18:25   No:40344     
Title: Re:カラフルにカオス図形描画    
カラフルでめちゃくちゃ怖すぎます・・・・・・・・・・・
点滅が特に怖いです。
でも、こんな図形がプログラムで書けるなんて驚きです。
lbfuvabさん
すごい図形ありがとうございます。
お疲れ様でした。


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

Name: lbfuvab  ..上級者(22,357ポイント)   Date: 2009/10/12(月) 19:52   No:40346     
Title: Re:カラフルにカオス図形描画    
スクリーンショット付けてみます。

自分的に色の偏りが出て面白い部分です。


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

Name: こめかみ  ..熟練のプログラマー(50,211ポイント)   Date: 2009/10/12(月) 22:56   No:40352     
Title: Re:カラフルにカオス図形描画    
カオスww

プログラムで特殊な図形を表示させるのも楽しそうですね

私もフラクタルの描画とかしてみたいです
ただ数学的な理論の理解に時間がかかるので優勢順位は後回しになってしまうorz


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



Name: min  ..ぴよぴよ(474ポイント)   Date: 2009/10/12(月) 15:48   No:40326       
Title: フルリンクについて    
こんにちは、どうにも頭が痛くなる問題が起きたので質問します。
環境はXPで、VS2008です。


まずはじめの状態として、作成したプログラムをビルドし実行すると正常に動作します。
ここで終了し、後日もう一度ビルドすると正常に動作します。
ところが、僅かにでもプログラムを変更すると、以下のようなメッセージがでて、

「1>LINK : 前回のインクリメンタル リンクで .\Debug/DxLib.exe が見つからなかったか、ビルドされませんでした。フル リンクを行います」

コンパイルエラーにはならずに実行されるのですが、画像がどんどん消えていくよくわからない現象がおきます。また、僅かに変更した部分を変更する前に修正しても同様の状態になります。

僅かにでもというのは、 int m=0;(宣言はすれど、変数mをプログラム自体で使用していない) や、単なる改行を一つ増やすなど、実行結果に影響しないと思われることです。

何か解決法が思い当たる方、よろしくお願いします。



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


Name: dic  ..プログラマー(34,333ポイント)   Date: 2009/10/12(月) 18:05   No:40340     
Title: Re:フルリンクについて    
修正ファイル(サービスパック?)がでてるようですね

Microsoft Visual Studio 2008 Service Pack 1 (インストーラ)
http://www.microsoft.com/downloads/details.aspx?FamilyID=fbee1648-7106-44a7-9649-6d9f6d58056e&displaylang=ja



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



Name: 小夜  ..中級者(9,244ポイント)   Date: 2009/10/10(土) 13:12   No:40245       
Title: ボード等の差し替えについて    
こんにちは!

只今、龍神録プログラミングの館にて勉強をさせて頂いています。
そこで疑問に思ったのですが
ボードやステージタイトル、BGMの差し替えって出来るのでしょうか?
出来るのであれば、その方法を教えてください!

よろしくお願いします!


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


Name: 通りすがり  ..上級者(17,800ポイント)   Date: 2009/10/10(土) 14:10   No:40248     
Title: Re:ボード等の差し替えについて    
普段の投稿から察するに意味を理解せずに結果だけ得ようとしているように思われます。
意味を理解し、コードの内容を把握していれば、画像を変更する事が出来るかどうかなどという疑問は生まれてきません。
画像を変更する、または画像を読み込むことができなければどんなゲームも作れません。

まずは少しずつ自分なりに理解してみましょう。
では、ボードや、ステージタイトルの画像を読み込んでいる部分はどこですか?
その場所がわかるならどうすれば差し替えられると思いますか?


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

Name: 鈴仙優曇華院イナバ  ..かけだし(1,879ポイント)   Date: 2009/10/10(土) 15:57   No:40250     
Title: Re:ボード等の差し替えについて    
龍神録の1章から見ていけばすぐに、どこを変更すればいいかなどが
わかります。
その中に画像系やサウンド系を制御している関数についてしっかり書かれていますよ。


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

Name: 小夜  ..中級者(9,600ポイント)   Date: 2009/10/12(月) 15:35   No:40324     
Title: Re:ボード等の差し替えについて    
通りすがりさん、優曇華さんのご意見を参考に探してみると、
変更する場所はわかりました!
そこで、ペイントを使ってPNG保存をし 50章あたりに反映させると
画像は出たのですが、白い背景が出てしまいます。
これを消す方法とかってあるのでしょうか?
それともう一つ、
ボードやキャラ画は、自分で新規にPNGで保存しても同じように反映されるのでしょうか?
(元々ある画像を参考に新規に作る、ということです)
ヒントだけでも構いません。回答よろしくお願いします。


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

Name: 鈴仙優曇華院イナバ  ..かけだし(2,108ポイント)   Date: 2009/10/12(月) 17:26   No:40334     
Title: Re:ボード等の差し替えについて    
白い背景が出るというのはたぶんですが
透過されていないのではないかと思います。
あと、
DrawRotaGraph( 320 , 240 , 1 , 0 , GHandle , TRUE ) ;
上の関数のような画像描画関数のTRUEというところがFALSEに
なってたりするとそういう背景がでてきます。(透過する=TRUE)
(差し替えということですので、おそらくTRUEのままかと思いますが。)

透過ソフトを使って、PNG画像を透過してみてください。
http://search.yahoo.co.jp/search?p=%E9%80%8F%E9%81%8E+PNG&ei=UTF-8&fr=msie7&x=wrt


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



Name: 3D初心者  ..ぴよぴよ(1ポイント)   Date: 2009/10/11(日) 13:49   No:40278       
Title: 3D上の移動について    
3Dの座標や移動の計算練習に添付したプログラムを作ってみたのですが、どうしてもうまくいかないことがあります。

矢印キーまたはゲームパッドの右スティックでカメラ位置を動かし、「W・A・S・D」または左スティックでplayerオブジェクトを動かせます。

オブジェクトを動かすときカメラの位置によって進行方向が変わる、という風にしたいのですがどうしてもうまくいきません。

初期状態(angleXZ=180)やangleXZ=0のときは正常な挙動をするのですが、angleXZ=90または270のときA・Dキーの進行方向が逆、パッドはすべて逆(いずれもキャラの向きは正常)という状態になってしまいます。

どうすれば正しい移動をさせることが出来るでしょうか?



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


Name: Justy  ..伝説なるハッカー(439,209ポイント)   Date: 2009/10/11(日) 14:33   No:40281     
Title: Re:3D上の移動について    
 特定の角度でおかしくなるということは符号がおかしいのかもしれませんね。

 多分

        if(CheckHitKey(KEY_INPUT_D))
            PlayerPos=VSub(PlayerPos,VGet(cos(angleXZ*PI/180),0,-sin(angleXZ*PI/180))),angleWA=(angleXZ-90);
        if(CheckHitKey(KEY_INPUT_A))
            PlayerPos=VAdd(PlayerPos,VGet(cos(angleXZ*PI/180),0,-sin(angleXZ*PI/180))),angleWA=(angleXZ-270);

かな?


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

Name: 3D初心者  ..ぴよぴよ(127ポイント)   Date: 2009/10/11(日) 14:59   No:40282     
Title: Re:3D上の移動について    
-sinにしてみたところうまくいきました。
これでキー操作は大丈夫です。ありがとうございます。

後はパッドの動作だけなのですが…
軸で条件分岐、キーと条件式を同様にしてみたところ動作はうまいったのですが、自分のやりたい「細かい角度の移動」が出来ません。(斜め移動がすべて45度になるため)
どうすればよいでしょうか?


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

Name: Justy  ..伝説なるハッカー(438,747ポイント)   Date: 2009/10/11(日) 15:23   No:40286     
Title: Re:3D上の移動について    

>パッドの動作だけなのですが

 あー、パッドですね。
 結局符号とかの問題ですので、


        if(InputY!=0||InputX!=0)
        {
            angleWA=angleXZ-(int)(GetJoypadAngle(-InputX,InputY)*180/PI);
            float jpAngle = GetJoypadAngle(-InputX,-InputY);
            PlayerPos=VSub(PlayerPos,VGet(10*sin(jpAngle+angleXZ*PI/180),0,10*cos(jpAngle+angleXZ*PI/180)));
        }

とか

        if(InputY!=0||InputX!=0)
        {
            angleWA=angleXZ-(int)(GetJoypadAngle(-InputX,InputY)*180/PI);
            float jpAngle = GetJoypadAngle2(-InputX,-InputY);
            PlayerPos=VAdd(PlayerPos,VGet(-10*sin(jpAngle+angleXZ*PI/180),0,-10*cos(jpAngle+angleXZ*PI/180)));
        }

とかうごくのではないか、と。


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

Name: 3D初心者  ..ぴよぴよ(176ポイント)   Date: 2009/10/11(日) 15:40   No:40288 解決!     
Title: Re:3D上の移動について    
if文内を変えてみたところしっかりと動作しました。

結局全部符号の問題だったんですね…
今度から、符号もしっかりチェックしようと思います。
ありがとうございました。


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



Name: ディア  ..初心者(5,547ポイント)   Date: 2009/10/08(木) 16:04   No:40174       
Title: 選択画面のmain    
添付のようなソースでmain.cppをつくったのですが、
実行してみても画面になにも表示されません。
原因とか間違ってる箇所があったら教えてください。





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


Name: kazuoni [URL]  ..ハッカー(110,311ポイント)   Date: 2009/10/08(木) 16:27   No:40179     
Title: Re:選択画面のmain    
とりあえず、key[KEY_INPUT_Z]==1のときのみ、switch文
を実行しており、もし、キー監査関数GetHitKeyStateAll_2が
ゲームプログラミングの館と同じならば、
一瞬だけ表示(char_disp関数が実行される)されるかと思います。
keyの値は、そのキーが押されたループの分だけインクリメントされる仕様です。

#ちなみにですけど、ProcessLoop()は毎ループ行うと書いていますけど、
今のままだと、最初の1ループ目だけ実行され、
ゲーム(?)中は実行せず、
while(ProcessMessage()==0 && ...
を抜けたら、再度通って、
while(ProcessMessage()==0 && ...
を実行しなおして・・・
これは意図したような組み方でしょうか?


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

Name: ディア  ..初心者(5,571ポイント)   Date: 2009/10/08(木) 20:17   No:40183     
Title: Re:選択画面のmain    
はい。一瞬だけ出てきます。

あと、ProcessLoop()のところは意図してませんでした・・・


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

Name: ディア  ..初心者(5,598ポイント)   Date: 2009/10/11(日) 11:48   No:40271     
Title: Re:選択画面のmain    
えーと・・・


どう修正したらいいでしょうか?


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

Name: kazuoni [URL]  ..ハッカー(110,673ポイント)   Date: 2009/10/11(日) 14:27   No:40279     
Title: Re:選択画面のmain    
Zキーが押されたらメニュー画面を表示していますが、
どのような意図でこうしているのでしょうか?
必要なければその条件分岐を消せば良いです。

whileも、
while(ProcessLoop()==0 && Key[KEY_INPUT_ESCAPE]==0)//メインループ

と統一すればよいです。

#10/13 3:58 プレタグ修正^^;


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



Name: あ〜る  ..中級者(14,456ポイント)   Date: 2009/10/11(日) 12:12   No:40274       
Title: wave変換ソフト    
こんにちは、あ〜るです
結構前に、BGMの作り方を教えて貰い、プログラムも一段落着いて来たのでDominoでのBGM作りに着手し始めました
その中で、質問というよりも教えて頂きたい事があるのでお願いします

@、Timidi95というソフトでwaveファイルに変換してるんですけど、これよりももっと良いソフトがあるよ、っていうソフト
A、初めたばかりでよくわからないので、とりあえずこれ使っとけば大丈夫、っていうサウンドフォント

あんまCに関係無いですけど、ここには作曲してる方も居て、ゲームについての質問ということでここで質問させて貰いました
よろしくお願いします


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




Name: lbfuvab  ..上級者(22,106ポイント)   Date: 2009/10/08(木) 17:50   No:40181       
Title: リサージュ曲線    
↑を描画するプログラムを組んでみました。
見てるとボーっとしてくるので気分転換にどうぞ。

http://www1.axfc.net/uploader/Sc/so/43653.zip


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


Name: Mato  ..ぴよぴよ(159ポイント)   Date: 2009/10/08(木) 22:09   No:40186     
Title: Re:リサージュ曲線    
 すごく……リサージュです……。

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

Name: lbfuvab  ..上級者(22,024ポイント)   Date: 2009/10/09(金) 02:11   No:40189     
Title: Re:リサージュ曲線    
>>Matoさん
ところで俺のおれの改良版を見てくれ。こいつをどう思う?


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

Name: kazuoni [URL]  ..ハッカー(110,412ポイント)   Date: 2009/10/09(金) 08:36   No:40193     
Title: Re:リサージュ曲線    
すごくすごく……リサージュです……。

でも、こういう曲線ができる数式って
偶然の発見もあるんだろうけど、
なんだか不思議な世界に自分は感じます。
ただの数式じゃん?って言われたらそれまでなんですが、
なんだか、ロマンがあるというか・・・。


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

Name: こめかみ  ..熟練のプログラマー(50,140ポイント)   Date: 2009/10/11(日) 01:32   No:40267     
Title: Re:リサージュ曲線    
数学の教科書の静止画で見たときは何も感じませんでしたが
動いてるのを見ると面白いですねぇ。
そういえばあれもベーシックでプログラムを組んでみよう的な内容だった気がします。
授業でやってくれれば面白かっただろーになー


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



Name: もちもち  ..かけだし(1,394ポイント)   Date: 2009/10/10(土) 20:31   No:40253       
Title: 配列の値を別の関数へ渡したい。    

タイトルにあるように配列の値を関数へ渡したいのですがエラーがでてしまいます。


例として下にブログラム文を書きます。


void nantoka(int *,int *);

int main(void)
{
int a[3];

a[0] = 1;
a[1] = 2;

nantoka(a[0],a[1])

}


適当にプログラム書きましたが、nantokaの部分に配列をいれてしまうとエラーがでてしまいます。

ポインタとして扱いたいのですが、どうすればよろしいでしょうか?

皆さんよろしくお願いします。






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


Name: pooka [URL]  ..上級者(17,939ポイント)   Date: 2009/10/10(土) 20:48   No:40254     
Title: Re:配列の値を別の関数へ渡したい。    
nantoka(a[0],a[1])

nantoka(&a[0],&a[1]);
のようにしてください。


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

Name: Mato  ..ぴよぴよ(247ポイント)   Date: 2009/10/10(土) 20:49   No:40255     
Title: Re:配列の値を別の関数へ渡したい。    
 nantokaが定義されていないというのが1つありますが、それは無視していいんですよね多分
ポインタ的(?)には、a[n]は普通のintと同じです。
ですので、ポインタ渡しの“&a[n]”としたらいいんじゃないでしょうか。

 この例ですと、
nantoka(&a[0], &a[1]);
ですね。


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

Name: もちもち  ..かけだし(1,402ポイント)   Date: 2009/10/10(土) 22:20   No:40261 解決!     
Title: Re:配列の値を別の関数へ渡したい。    
pookaさん、Matoさんありがとうございます。

おかげでできました。


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



Name: trx  ..初心者(7,858ポイント)   Date: 2009/09/20(日) 02:54   No:39390       
Title: 画像+音    
たびたびすみませんが、
前回の問題は、解決しました。
皆様、どうも有り難うございました。
ですが、また問題が出てきました。
今度は、音は出ますが、画像が出てきません。
プログラムの順番を変えると、今度は、音が出ないで、画像だけが出てきます。
audio.cppを上にして、音だけ出るファイルにしたいのですが、何処を取り除けば良いのか解らなくて...
何度も投稿してすみません。
これで最後のこのプログラムに関する、新規投稿、にするつもりです。
audio.cppを添付しました。


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


Name: trx  ..初心者(7,867ポイント)   Date: 2009/09/20(日) 02:55   No:39391     
Title: Re:画像+音    
Graphic.cppです。

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

Name: kazuoni [URL]  ..ハッカー(106,387ポイント)   Date: 2009/09/20(日) 03:02   No:39392     
Title: Re:画像+音    
前回の続きで質問でいいかと思いますよ^^;
とりわけ質問内容が変わるわけではないので。

気になるのは、 ken[61] = 207;です。
何を表示しようとしているのですか?
DrawGraph()はLoadGraph()で得られたグラフィックハンドルが必要です。


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

Name: trx  ..初心者(7,949ポイント)   Date: 2009/09/20(日) 07:23   No:39395     
Title: Re:画像+音    
kazuoniさん、回答ありがとうございます。
ken[61] = 207;は、省き忘れていました。
有難う御座いました。
それと一つ、言い忘れていましたが、現在のファイルを実行すると、全面モードになってしまいます。
ChangeWindowMode(TRUE)ですのに、なぜなのですか?
回答よろしくお願いします。
audio.cppを添付しました。


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

Name: trx  ..初心者(7,984ポイント)   Date: 2009/09/20(日) 07:25   No:39396     
Title: Re:画像+音    
ChangeWindowMode(FALSE)から
ChangeWindowMode(TRUE)に変えた
Graphic.cppです。


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

Name: kazuoni [URL]  ..ハッカー(106,626ポイント)   Date: 2009/09/20(日) 10:33   No:39397     
Title: Re:画像+音    
少なくとも、Graph.cppはウィンドウモードになると思いますよ。
(実行してませんが。)
SetGraphMode( 1479 , 600 , 32 ) ;
をif文の前に持っていかないと、
640*480のウィンドウが描写されるのでは?

audio.cppにはChangeWindowModeが記述されていませんが?


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

Name: ねこ  ..熟練のプログラマー(41,863ポイント)   Date: 2009/09/20(日) 11:16   No:39399     
Title: Re:画像+音    
ちょっと確認したいのですが「audio.cpp」と「graph.cpp」はもしかして同じプロジェクトにありますか?
そうだとしたらWinMainが2個存在するのがおかしいです。
もしそうでないならウィンドウモードの設定はDXLIBの機能なので、関数が正常に動いてない可能性があります。
本家の掲示板で調べるかグラボの情報と共に管理人さん向けに質問すると良いです。

で、前も同じ事言った気がしますがphを描画しようとしてますが、画像読んでません。


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

Name: trx  ..初心者(8,471ポイント)   Date: 2009/09/20(日) 14:41   No:39407     
Title: Re:画像+音    
回答有難う御座います。
SetGraphMode( 1479 , 600 , 32 ) ;
をif文の前に持ってくると言うのは、
if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1;
の前のことですか?
前に持ってきましたが、一瞬で消えてしまいます。
ただ今の状態は、ウィンドーモードのはずなのに、全面モードみたいに、上の罰点などがある、バーが在りません。でも全面には、成っていません。これも一つの問題ですが、マイナーな問題だと思いましたので、気にしていませんでした。もしかしたらこれが原因ですか?
「audio.cpp」と「graph.cpp」は同じプロジェクトに在ります。
説明が不十分ですみませんでした。
WinMainを一個にするには、何処の何を改良るれば良いのですか?
>グラボの情報と共に管理人さん向けに質問すると良いです。
どう言う意味ですか?
メールを管理人さんに、する事ですか?
>画像読んでません。
と言うのは、画像が出てこないと言うことですか?
phは、でています...

回答よろしくお願いします。
少し変えた、graphic.cppを添付します。


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

Name: ねこ  ..熟練のプログラマー(42,061ポイント)   Date: 2009/09/20(日) 16:48   No:39409     
Title: Re:画像+音    
<「audio.cpp」と「graph.cpp」は同じプロジェクトに在ります。
全体的な改良になるので、どっちかのソースをもう一方に移植した方が早そうです。

<グラボ関連
単にWinMain2個ある問題のようなので無視して良いです。

<ph
恐らくtrxさんはAudio.cppのphとGraphc.cppにあるphとを「同じ物」と認識しているのではないでしょうか?
それぞれの関数内で宣言しているphは別物ですので、それぞれで必要な画像を読み込む必要があります。
audio.cpp側のphは宣言しているだけなので画像が出ません。


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

Name: trx  ..初心者(8,614ポイント)   Date: 2009/09/23(水) 13:20   No:39527     
Title: Re:画像+音    
回答有難う御座います。
ソースコードを別にしたのには、訳があるので一つには出来ません。
audio.cppは、GetHitKeyStateAll_2
graphic.cppは、GetHitKeyStateAllを使っています。
ですので、二つで動く方法を教えてください。
phは、前にGraphic.cppとAudio.cppが一つに成っていた時から消し忘れていました。
phなどを消した、audio.cpp


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

Name: ねこ  ..熟練のプログラマー(43,151ポイント)   Date: 2009/09/25(金) 20:34   No:39612     
Title: Re:画像+音    
えーっと、「GetHitKeyStateAll_2」関数は「GetHitKeyStateAll」に1回押し、押し時間対応した関数という認識で、分ける意味が分からないのですが・・・

何故分けてるのでしょうか?
そこが分からないと組み合わすにも手が出せません。


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

Name: trx  ..初心者(8,734ポイント)   Date: 2009/09/26(土) 12:12   No:39628     
Title: Re:画像+音    
回答有難う御座います。
分けるのは、前に誰かに分けた方が良いと言われたので分けています。
ですが、一つにできるのでしたら、一つにしてみます。


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

Name: kazuoni [URL]  ..ハッカー(108,932ポイント)   Date: 2009/09/26(土) 15:55   No:39631     
Title: Re:画像+音    
>前に誰かに分けた方が良い
関数化し、機能を分割するっという意味合いが強いかと思いますよ。
もしくは分割コンパイルとか。

一度、入門ページの「関数」の復習をされることをお勧めします。


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

Name: trx  ..中級者(9,292ポイント)   Date: 2009/09/29(火) 11:09   No:39752     
Title: Re:画像+音    
回答有難う御座います。
一個にまとめたのですがエラーが...
エラー E2034 C:\MyC\piano2\audio.cpp 105: 'char *' 型は 'int *' 型に変換できない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
エラー E2342 C:\MyC\piano2\audio.cpp 105: パラメータ 'KeyStateBuf' は int * 型として定義されているので char * は渡せない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )

charをintに変えると今度はまた別の問題が...
エラー E2034 C:\MyC\piano2\audio.cpp 296: 'int *' 型は 'char *' 型に変換できない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
エラー E2342 C:\MyC\piano2\audio.cpp 296: パラメータ 'KeyStateBuf' は char * 型として定義されているので int * は渡せない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
どうすればよいのでしょうか。
回答よろしくお願いします


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

Name: pooka [URL]  ..上級者(17,695ポイント)   Date: 2009/09/29(火) 13:54   No:39754     
Title: Re:画像+音    
1個にまとめたということですが
105行目ではGetHitKeyStateAll_2(KeyBuf)
296行目ではGetHitKeyStateAll(KeyBuf)
と同じ変数でGetHitKeyStateAllとGetHitKeyStateAll_2が使われています。
GetHitKeyStateAllはchar型の配列、GetHitKeyStateAll_2はint型の配列を使用しなければならないので、
KeyBufの型を変えてもどちらかでエラーが発生します。

あと現在while文が2つあり、上の方は画像が表示されず音だけが鳴り、エスケープキーを押した後下の方で画像だけが表示されるという風になっています。

やはり分けた方が良いというのは、kazuoniさんが書かれているようなことだと思いますので、
音を鳴らす関数、画像を表示する関数に分けて、1つのwhile文でそれぞれの関数を呼ぶようにすればいいのではないでしょうか?


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

Name: trx  ..中級者(9,424ポイント)   Date: 2009/10/01(木) 06:42   No:39813     
Title: Re:画像+音    
回答有難う御座います。
kazuoniさんが書かれているように分けるのでしたら、一個にまとめた方と、分けてある方、どっちを元にした方が良いのでしょうか?
あとずいぶん前に質問した事なのですが、なぜフルスクリーンモードになってしまうのですか?
回答よろしくお願いします。


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

Name: trx  ..中級者(9,504ポイント)   Date: 2009/10/02(金) 07:29   No:39836     
Title: Re:画像+音    
後もう一つ問題を言い忘れていました。
二つに分ける場合、Winmainが二つ存在してしまいます。
WinmainをAudio.cppから消したいのですが、どうすれば良いのでしょうか?
ただ単に、消すだけでは、エラーばかり出てしまいます。
この事も前に質問した事ですが、回答が来なかったのでよろしくお願いします。


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

Name: zwi  ..初心者(8,094ポイント)   Date: 2009/10/02(金) 11:37   No:39841     
Title: Re:画像+音    
色々と混乱されているみたいですが、とりあえずファイルを分けるのは後回しにして1つのファイルにまとめるのが良いかと思います。
まとめる場合は、2つのソースの同じところは捨てて違う部分だけを移植します。ソースを見た感じからAudio.cppをGraphic.cppに統合するのが良いかと思います。
その場合、whileループ前、中、後に分けてそれぞれ合成してください。つまりwhileループの中身はwhileループの中身と合成する必要があります。
KeyStateBufの問題については、KeyStateBufをKeyStateBuf1とKeyStateBuf2に分けてはどうでしょうか?
GetHitKeyStateAll_2にはKeyStateBuf2を使い、GetHitKeyStateAllにはKeyStateBuf1を使います。

その他にも直したいところは沢山あるのですが、これ以上言っても混乱されると思いますのでこれまでとしておきます。
ちゃんとしたプログラムにしたい場合は、Cの関数、ファイル分割、モジュール化の手法、データ構造、アルゴリズムの勉強をされる事をお勧めします。特にif文が大量に羅列している部分は、テーブル化したらものすごくすっきりしますよ。何事も基本を疎かにしては成り立ちません。

>あとずいぶん前に質問した事なのですが、なぜフルスクリーンモードになってしまうのですか?
この件については、うまくウィンドウモードになるはずですがとしか言えません。
SetGraphMode( 1479 , 600 , 32 ) ;
と言うやたら横にデカイ画面サイズが関係するのかも知れませんので、サイズを変えるとか色々実験してみてください。


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

Name: trx  ..中級者(9,636ポイント)   Date: 2009/10/03(土) 09:04   No:39884     
Title: Re:画像+音    
回答有難う御座います。
KeyStateBufをKeyStateBuf1とKeyStateBuf2に分けたらできました。
有難うございました。
DrawBox(0, 0, 1470, 600, 00000, TRUE);
を消したら、ウィンドーモードに成りました。
ですが、画像を置いていない所は、透明に成ってしまっています。
それと、ウィンドーモードの罰点を押しても閉じませんので、Alt+F4を押さないと消えません。
そこをどうにかしたいのですが...
回答よろしくお願いします。
今の段階のものを添付します。


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

Name: zwi  ..中級者(9,456ポイント)   Date: 2009/10/03(土) 10:12   No:39889     
Title: Re:画像+音    
まず、ソースの問題からwhileループ中にScreenFlip()が2回出てきますが1つしか要りません。
各関数の意味と言うか役目を調べてなぜ必要か理解するようにしてくださいね。

>DrawBox(0, 0, 1470, 600, 00000, TRUE);を消したら、ウィンドーモードに成りました。ですが、画像を置いていない所は、透明に成ってしまっています。
このDrawBox()の意味は理解されていますか?背景をクリアするために存在します。
なので、消したら透明になるのは当たり前なんですよ。
で、DrawBox(0, 0, 740, 600, 00000, TRUE);
と書いたらどうですか?ウィンドウモードで半分だけクリアされますでしょうか?
もしOKなら、
DrawBox(740, 0, 740, 600, 00000, TRUE);
を付け加えてみてください。
これでもウィンドウモードでしょうか?実験をお願いします。
前から疑問なんですが、お使いのパソコンのデスクトップは横幅が1480ドット以上あるんでしょうか?
いや、あるなら問題ないです。ないなら、それが問題なのではと思います。

>それと、ウィンドーモードの罰点を押しても閉じませんので、Alt+F4を押さないと消えません。
そこをどうにかしたいのですが...
とりあえず、終了できるはずですが・・。
ALT+F4に反応するならXを押しても終了するはずなんですけどね。
あとECSキーで終了するか試してみてください。


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

Name: Mist  ..熟練のプログラマー(68,544ポイント)   Date: 2009/10/03(土) 13:29   No:39898     
Title: Re:画像+音    
これが原因かどうかはわかりませんが、DrawBoxに限らずColorに渡す値はGetColorの戻り値を使用するべきだと思いますが。

DrawBox(0, 0, 1470, 600, GetColor(0,0,0), TRUE) ;

DXライブラリのリファレンスをよく読んで、各関数の機能や使い方を十分理解されるべきではないでしょうか 。


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

Name: trx  ..中級者(9,894ポイント)   Date: 2009/10/04(日) 01:58   No:39933     
Title: Re:画像+音    
添付して在るのは、
DrawBox(0, 0, 740, 600, 00000, TRUE);
を試してみた結果です。
ウィンドーモードに成らないと言うより、ウィンードーが被さっている、と言う方が適切だったと思います。
あと、
DrawBox(740, 0, 740, 600, 00000, TRUE);
は、何もでないでただ透明に成りました。
一応、ウィンドーモードです。
パソコンのデスクトップは横幅が1480ドット以下だった場合は、SetGraphModeの値を減らせば良いのでしょうか?ですがこうした場合、右端が切れてしまいます。
この状態で、
DrawBox(740, 0, 740, 600, 00000, TRUE);
を試してみたらウィンードーが被さっている、状態に成りました。


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

Name: zwi  ..中級者(9,686ポイント)   Date: 2009/10/04(日) 07:06   No:39934     
Title: Re:画像+音    
DrawBoxを入れている位置が間違っている気がしますが?
while直後に入れていますか?

>パソコンのデスクトップは横幅が1480ドット以下だった場合は、SetGraphModeの値を減らせば良いのでしょうか?ですがこうした場合、右端が切れてしまいます。

デスクトップサイズを超えるサイズのウィンドウは作れませんから、ウィンドウサイズを合わせるしかありません。端が切れるなら、表示するグラフィックを小さなものにしてデスクトップのサイズ以下になるように変更してください。
将来的に他の人に配布を考えているのなら横幅1000ドットが限界だと思います。


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

Name: trx  ..中級者(9,915ポイント)   Date: 2009/10/04(日) 07:36   No:39936     
Title: Re:画像+音    
while文の、直前、中、直後、どれに入れても結果は、変わりませんでした。

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

Name: zwi  ..中級者(9,832ポイント)   Date: 2009/10/04(日) 08:27   No:39937     
Title: Re:画像+音    
では、デバッグの基本に則って問題の原因を絞り込みましょう。
まず、次の組み合わせで実験してみてください
(1)SetGraphMode( 740 , 600 , 32 );と定義。DrawBox(0, 0, 740, 600, 00000, TRUE); をwhile直後に。
(2)SetGraphMode( 740 , 600 , 32 );と定義。DrawBoxはなし。
で、(1)と(2)で問題は出ますでしょうか?


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

Name: trx  ..中級者(10,034ポイント)   Date: 2009/10/04(日) 09:17   No:39938     
Title: Re:画像+音    
実行中には、何も違いも在りませんでしたが、
(1)は、閉じた後、黒い四角DrawBox(0, 0, 740, 600, 00000, TRUE);
の後が残りました。
それと、前と比べると(1440 , 600 , 32 の時)、罰点で消える様になりました。


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

Name: zwi  ..中級者(9,930ポイント)   Date: 2009/10/04(日) 09:24   No:39939     
Title: Re:画像+音    
であれば、状況から推察できる事はひとつ。
ウィンドウサイズがデスクトップサイズを超えているのが全ての原因でしょう。
これは、たぶん解決しようが無いのでデスクトップサイズを超えないように作るしかないです。


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

Name: trx  ..中級者(10,109ポイント)   Date: 2009/10/04(日) 09:30   No:39940     
Title: Re:画像+音    
色々と試してみて、出た自分なりの結論は、
SetGraphModeの、( X , Y , Z)
の、Xの値が、1440以下、1431以上
の場合、変なウィンドーモード、
1440以上の場合、透明
1431以下の場合、正常


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

Name: zwi  ..中級者(9,856ポイント)   Date: 2009/10/04(日) 09:40   No:39941     
Title: Re:画像+音    
どうしても納得できない&気になるようでしたらDXライブラリ配布もとの本家サイトでお尋ねください。
http://homepage2.nifty.com/natupaji/DxLib/
こちらでは根本的解決はできませんので。


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

Name: trx  ..中級者(10,190ポイント)   Date: 2009/10/05(月) 08:23   No:40008     
Title: Re:画像+音    
別の質問なのですが、
SetPanSoundMemなどで、
サウンドハンドルを入れる所に、
配列で、ken[0]〜ken[60]まで入れたいのですが、
for文で、どの様に、書けば良いのでしょうか?
回答よろしくお願いします。


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

Name: softya  ..中級者(11,593ポイント)   Date: 2009/10/05(月) 12:53   No:40012     
Title: Re:画像+音    
int i;
for( i=0 ; i<60 ; i++ ) {
SetPanSoundMem( 0, ken[i] );
}
って意味の質問ですか?
もし、このレベルが分かんないと流石にC言語の勉強をしないとまずいと思いますよ。
勉強しないと、このままプログラムを作っていく事は難しいです。
前から勉強の話だけは、何のコメントもしていらっしゃらないのでどうお考えなんでしょうか?

下記サイトでの勉強をお勧めします。
http://homepage3.nifty.com/mmgames/c_guide/
http://www5c.biglobe.ne.jp/~ecb/c/c00.html
http://www.geocities.jp/ky_webid/c/index.html



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

Name: trx  ..中級者(10,227ポイント)   Date: 2009/10/09(金) 07:01   No:40190     
Title: Re:画像+音    
何方か、音声の、waveを変える関数、知りませんか?
回答よろしくお願いします。


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

Name: trx  ..中級者(10,251ポイント)   Date: 2009/10/09(金) 07:03   No:40191     
Title: Re:画像+音    
後、もう一つ、音声の音量(amplitude)をチェックする、関数は在りますか?

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

Name: kazuoni [URL]  ..ハッカー(110,336ポイント)   Date: 2009/10/09(金) 08:30   No:40192     
Title: Re:画像+音    
>音声の、waveを変える関数
??

>音声の音量(amplitude)をチェックする

ChangeVolumeSoundMem

ですかね。
DxLib.hを見ると結構公式ページに載ってない関数
があります。

#このスレの行方は・・・?


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

Name: trx  ..中級者(10,349ポイント)   Date: 2009/10/10(土) 04:10   No:40233     
Title: Re:画像+音    
ChangeVolumeSoundMemは、再生中か再生中ではないかを調べる関数なのでは?
今、知りたい関数は、再生中の音声の音量を調べる関数です。
Waveと言うのは、響き具合と言えば良いのでしょうか?
Waveは、音の波の、間隔です。
ちょっと違うのですが、図が在りました。


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

Name: kazuoni [URL]  ..ハッカー(110,754ポイント)   Date: 2009/10/10(土) 12:53   No:40243     
Title: Re:画像+音    
>再生中か再生中ではないかを調べる関数
それはCheckSoundFileです。

詳しくは本家をご覧下さい。
ttp://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_sound.html


>Waveは、音の波の、間隔です。
Waveは波を指すのであって、間隔を指すものではありません。
っというか、音の間隔は少しあいまいな表現です。
音の大きさ=波の振幅
音の高さ=波の周波数
今回知りたいのは、振幅ですよね。
自分もかなり興味があるのですが、
まだ、ゴリゴリ解析をしたことがありません。
最善の方法ではないかもしれませんが、
以下のサイトの基本はまずおさえなくてはいけませんね。
WisdomSoft -マルチメディア API
ttp://wisdom.sakura.ne.jp/system/winapi/media/index.html

もしもっと音声関連で知識が欲しいなら、
書籍がたくさんあります。
「サウンドプログラミング」
で探せばいろいろあるかと。
時間がある時に、自分もやろうかと思います。
DirectXが便利な気がしますけどね^^;


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

Name: trx  ..中級者(10,384ポイント)   Date: 2009/10/10(土) 14:09   No:40247 解決!     
Title: Re:画像+音    
回答有難うございます。
ですが、先が長い話みたいなので、諦めます今は...
今まで皆様、どうも有り難う御座いました。


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



Name: cat  ..ぴよぴよ(79ポイント)   Date: 2009/10/09(金) 18:41   No:40208       
Title: DrawPolygon3D関数について    
DrawPolygon3D関数を使って画像を傾けさせる関数を作っているのですが、座標の計算がどうしても出来ません。
仕様は、
・画像の角度を0度にすると今までどおりに表示。
・角度を0度以上にすると画像の右側を奥側にする。
・角度を0度以下にすると画像の左側を奥側にする。
・また、別角度を入力し、上下にも適用させる。
という風ににしたのですが、角度に元ずく計算がどうしてもわかりません。
どうすればよいでしょうか?


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


Name: Justy  ..伝説なるハッカー(436,334ポイント)   Date: 2009/10/10(土) 02:37   No:40224     
Title: Re:DrawPolygon3D関数について    

>角度に元ずく計算がどうしてもわかりません

 画像(ポリゴン)の初期状態がカメラの方を向いている、と仮定した状態で
右や左を奥に(Y軸回転)するには CreateRotationYMatrix()を使って
指定した角度だけY軸で回転させた行列を作り、SetTransformToWorld()に
ワールド行列として設定し DrawPolygon3D()で描画、でいいと思います。

 X軸回転も同様に CreateRotationXMatrix()で指定できますが、
これと CreateRotationYMatrix()を併用する場合は
2つの行列を CreateMultiplyMatrix()で掛け合わせてワールド行列と
して下さい。



 テストはしていませんが、だいたいこんな感じです。

    MATRIX  matResult, m;
    
    // 移動
    CreateTranslationMatrix(&matResult, pos.x, pos.y, pos.z);
    
    // 回転Y
    CreateRotationYMatrix(&m, rotateY);
    CreateMultiplyMatrix(&matResult, &m, &matResult);
    
    // 回転X
    CreateRotationXMatrix(&m, rotateX);
    CreateMultiplyMatrix(&matResult, &m, &matResult);
    
    // 描画
    SetTransformToWorld(&matResult);
    DrawPolygon3DBase(vertex, 4, DX_PRIMTYPE_TRIANGLESTRIP, mg, FALSE);


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

Name: cat  ..ぴよぴよ(151ポイント)   Date: 2009/10/10(土) 09:46   No:40238     
Title: Re:DrawPolygon3D関数について    
角度に元ずく計算は行列を使えばよいというのはわかりましたが、その行列を座標(VERTEX_3D)に変換するにはどうすればよいのでしょう?

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

Name: Justy  ..伝説なるハッカー(436,616ポイント)   Date: 2009/10/10(土) 12:19   No:40240     
Title: Re:DrawPolygon3D関数について    

>その行列を座標(VERTEX_3D)に変換するにはどうすればよいのでしょう?

 なるほど。
 つまり、角度を指定して表示はしたいけど、SetTransformToWorld()を使わないで
あえて VERTEX_3Dの方を変更して表示したいのですね。

 だとするとオリジナルの頂点情報は別途保持しておかないといけなくなりますが、
先で求めた行列を使って

    VERTEX_3D orgVer[4] = { };  // 元の頂点情報
    VERTEX_3D destVer[4];       // 表示の時に使う頂点情報
    for(int n=0; n<4; ++n)
        VectorTransform(&destVer[n].pos, &orgVer[n].pos, &matResult);

のように VectorTransform()を使って変換できます。


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

Name: Justy  ..伝説なるハッカー(438,317ポイント)   Date: 2009/10/10(土) 12:32   No:40241     
Title: Re:DrawPolygon3D関数について    
 さくっとサンプルを作ってみました。
(表示には適当なテクスチャ "test.png"が必要です)

 左(DrawTransRotatePolygon1)に表示されているのは一般的な SetTransformToWorld()を
使って表示したもので、右(DrawTransRotatePolygon2)に表示されているものは VERTEX_3Dを
直接変更して表示したものです。

 キーボード上下左右で回転します。


#include "DxLib.h"
#include <cstdlib>

// 行列計算
void CalcRotateMatrix(MATRIX *pMatResult, const VECTOR& pos, const VECTOR &rot)
{
    // 移動
    MATRIX m;
    CreateTranslationMatrix(pMatResult, pos.x, pos.y, pos.z);

    // 回転Z
    CreateRotationZMatrix(&m, rot.z);
    CreateMultiplyMatrix(pMatResult, &m, pMatResult);

    // 回転Y
    CreateRotationYMatrix(&m, rot.y);
    CreateMultiplyMatrix(pMatResult, &m, pMatResult);

    // 回転X
    CreateRotationXMatrix(&m, rot.x);
    CreateMultiplyMatrix(pMatResult, &m, pMatResult);
}

// ワールド行列を変更して表示
void DrawTransRotatePolygon1(int img, VERTEX_3D *vertex, int vertexNum, const VECTOR& pos, const VECTOR &rot)
{
    // 行列計算
    MATRIX  matResult, matOrgWorld;
    CalcRotateMatrix(&matResult, pos, rot);
    GetTransformToWorldMatrix(&matOrgWorld);

    // 描画
    SetTransformToWorld(&matResult);
    DrawPolygon3DBase(vertex, vertexNum, DX_PRIMTYPE_TRIANGLESTRIP, img, FALSE);
    SetTransformToWorld(&matOrgWorld);
}

// 頂点を変更して表示
void DrawTransRotatePolygon2(int img, VERTEX_3D *vertex, int vertexNum, const VECTOR& pos, const VECTOR &rot)
{
    // 行列計算
    MATRIX  matResult;
    CalcRotateMatrix(&matResult, pos, rot);

    // 座標計算
    VERTEX_3D *v = (VERTEX_3D*)std::malloc(sizeof(VERTEX_3D) * vertexNum);
    if(v == NULL)   return;

    for(int n=0; n<vertexNum; ++n)
    {
        v[n] = vertex[n];
        VectorTransform(&v[n].pos, &v[n].pos, &matResult);
    }

    // 描画
    DrawPolygon3DBase(v, vertexNum, DX_PRIMTYPE_TRIANGLESTRIP, img, FALSE);

    std::free(v);
}

// カメラ設定
void SetDefaultCamera()
{
    MATRIX cam;
    VECTOR vCamPos = { 0, 0, 100 }, vCamAt = { 0, 0, 0 }, vCamUp = { 0, 1, 0 };
    CreateLookAtMatrix(&cam, &vCamPos, &vCamAt, &vCamUp);
    SetTransformToView(&cam);
}

// 頂点情報
const float basePosX = 0.f, basePosY = 0.f, basePosZ = 0.f, baseLengh = 20.f;
VERTEX_3D   vertex[] =
{
    { basePosX - baseLengh, basePosY + baseLengh, basePosZ, 255, 255, 255, 255, 0.f, 0.f },
    { basePosX - baseLengh, basePosY - baseLengh, basePosZ, 255, 255, 255, 255, 0.f, 1.f },
    { basePosX + baseLengh, basePosY + baseLengh, basePosZ, 255, 255, 255, 255, 1.f, 0.f },
    { basePosX + baseLengh, basePosY - baseLengh, basePosZ, 255, 255, 255, 255, 1.f, 1.f },
};

 長いので、次に続きます。


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

Name: Justy  ..伝説なるハッカー(438,937ポイント)   Date: 2009/10/10(土) 12:32   No:40242     
Title: Re:DrawPolygon3D関数について    

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hP, LPSTR lpC, int nC)
{
    //  初期化
    ChangeWindowMode(TRUE);
    if(DxLib_Init() == -1) return(-1);
    SetDrawScreen(DX_SCREEN_BACK);

    int img = LoadGraph("test.png");
    const float pi = 3.1415926535f, offsetRotate = 1.f * pi / 180.f;
    VECTOR p1 = { 20, 0, 0 }, p2 = { -20, 0, 0 }, rot = { 0 };
    
    // カメラ設定
    SetDefaultCamera();

    //メインループ
    while(ProcessMessage() == 0)
    {
        char key[256];
        GetHitKeyStateAll(key);
        if(key[KEY_INPUT_ESCAPE])   break;

        if(key[KEY_INPUT_DOWN])     rot.x += offsetRotate;
        if(key[KEY_INPUT_UP])       rot.x -= offsetRotate;
        if(key[KEY_INPUT_LEFT])     rot.y += offsetRotate;
        if(key[KEY_INPUT_RIGHT])    rot.y -= offsetRotate;

        ClearDrawScreen();
        DrawTransRotatePolygon1(img, vertex, 4, p1, rot);
        DrawTransRotatePolygon2(img, vertex, 4, p2, rot);
        ScreenFlip();
    }

    DxLib_End();
    return 0;
}


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

Name: cat  ..ぴよぴよ(236ポイント)   Date: 2009/10/10(土) 14:09   No:40246 解決!     
Title: Re:DrawPolygon3D関数について    
すごいです!
ちょうどこのような機能を持たせたかったのですが、自分ではうまくいきませんでした。

行列にはこのような使い方もあるんですね。
ありがとうございました。


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



Name: 海野鯱  ..ぴよぴよ(129ポイント)   Date: 2009/10/09(金) 16:18   No:40204       
Title: 22章で困っています。    
はじめまして、うみの しゃち と言います。
今回勉強のために、四聖龍神録のサンプルプログラムを打っていたのですが
22章の「ボムを撃ってみよう」のところで困ったところがでてしまったので質問させてください。


void graph_main(){
if(bright_set.brt!=255)SetDrawBright(bright_set.brt,bright_set.brt,bright_set.brt);

graph_back_main();//背景描画メイン
graph_effect(0);//敵が死ぬエフェクト
graph_enemy();//敵の描画
graph_cshot();//自機ショットの描画

if(bright_set.brt!=255)SetDrawBright(255,255,255);

graph_ch();//自機の描画

if(bright_set.brt!=255)SetDrawBright(bright_set.brt,bright_set.brt,bright_set.brt);

graph_bullet();//弾の描画

if(bright_set.brt!=255)SetDrawBright(255,255,255);

graph_effect(1);//ボムのエフェクト
graph_effect(2);//ボム線のエフェクト
graph_effect(3);//ボムキャラのエフェクト
graph_board();//ボードの描画
}

graph_main関数にある、graph_effect()の()内に数字があるのですが
その数字を入れると
graph.cpp(81) : error C2660: 'graph_effect' : 関数に 1 個の引数を指定できません。
というエラーが4つ分出てきます。

ためしに()内の数字を抜いてビルドしたところ、動くのですが
添付した画像のように、弾が画面に向かってくるのみ、キャラクターは、下から上に動かず
弾が打ち終わるとパッと消えてしまうような感じです。

graph_effect関数を変えればよいのかとも思ったのですが、
どこをどう変更すればよいのかもわかりません。

ちなみに、graph_effect関数は

void graph_effect(){
for(int i = 0; i < EFFECT_MAX; i++){
if(effect[i].flag > 0){
if(effect[i].eff == 1)//エフェクトが光エフェクトなら
SetDrawBlendMode(DX_BLENDMODE_ADD, effect[i].brt);

DrawRotaGraphF(effect[i].x + FIELD_X, effect[i].y + FIELD_Y, effect[i].r, effect[i].ang, effect[i].img, TRUE);

if(effect[i].eff == 1)
SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0);
}
}
}

こうなっています。

使っているOSはwindowsXP、コンパイラは
visual C++ 2008 Express Editionです。

どうか、お力を貸していただけないでしょうか?よろしくお願いします。


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


Name: Mist  ..熟練のプログラマー(68,918ポイント)   Date: 2009/10/09(金) 17:30   No:40205     
Title: Re:22章で困っています。    
一括ダウンロードした22章のソースファイルでは以下のようになってますよ。


void graph_effect(int knd){
for(int i=0;i<EFFECT_MAX;i++){
if(effect[i].flag>0 && effect[i].knd==knd){
if(effect[i].eff==1)//エフェクトが光エフェクトなら
SetDrawBlendMode( DX_BLENDMODE_ADD, effect[i].brt) ;
if(effect[i].eff==2)//エフェクトがαエフェクトなら
SetDrawBlendMode( DX_BLENDMODE_ALPHA, effect[i].brt) ;
DrawRotaGraphF(effect[i].x+FIELD_X+dn.x,effect[i].y+FIELD_Y+dn.y,effect[i].r,effect[i].ang,effect[i].img,TRUE);
if(effect[i].eff==1 || effect[i].eff==2)
SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 0) ;
}
}
}



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

Name: やそ  ..比類無きプログラマー(98,909ポイント)   Date: 2009/10/09(金) 18:57   No:40209     
Title: Re:22章で困っています。    
海野鯱さんの作られたgraph_effect()関数では受け取るための引数が指定されていないようです。

それじゃあ、いくら引数与えても
graph.cpp(81) : error C2660: 'graph_effect' : 関数に 1 個の引数を指定できません。
となるのは当たり前のような気がします。

Mistさんの示してくれた(館の)ソースとを元にもう一度考え(修正し)てみて下さい。


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

Name: toyo  ..熟練のプログラマー(41,917ポイント)   Date: 2009/10/09(金) 19:29   No:40211     
Title: Re:22章で困っています。    
サイトの解説では抜けている箇所があるようなので一括ダウンロードのソースを参考にして進めていくとよいでしょう。


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

Name: 海野鯱  ..ぴよぴよ(234ポイント)   Date: 2009/10/10(土) 08:47   No:40237 解決!     
Title: Re:22章で困っています。    
みなさんのおかげで直りました!
どうやら、Mistさんの指摘したところが間違っていたようです。
あと、一括ダウンロードした22章を参考にしたらほかのところも直りました!
ボムが上に行くのは、calc_effect関数の座標計算をしていたところでeffect[i].yを
effect[i].xにしていたようです;;


皆さん本当にありがとうございました!とても助かりました!


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



Name:  ..かけだし(1,086ポイント)   Date: 2009/10/09(金) 11:59   No:40196       
Title: まったく分かりません。    
とある架空の携帯電話会社では、
基本料金の1,000円に、一ヶ月の
通話の合計時間によって通話料が
加算される(1分あたり10円)。
また、1ヶ月の料金は基本料金込みで
10,000円以上は通話料が無料になるものとする。
このとき、1ヶ月の合計通話時間を入力すると
請求される料金を表示するプログラムを作成せよという問題なんですがまったく分かりません。

=== プログラム ===
#include <stdio.h>
int main()
{
/* ほげほげ */
}
=== プログラムの実行結果 ===
 
無知なもので教えてもらえたらうれしいです。


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


Name: kazuoni [URL]  ..ハッカー(110,505ポイント)   Date: 2009/10/09(金) 13:06   No:40199     
Title: Re:まったく分かりません。    
まず、一応ですが、丸投げは禁止ですので、
一つ一つ解決していきましょう。

・入力時間を入力して、その時間を変数に代入する
・通話時間から料金を確定する
・通話料金が一万円を超えているか分岐
・料金出力

こんな順番で^^;


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

Name: conio  ..熟練のプログラマー(60,888ポイント)   Date: 2009/10/09(金) 13:59   No:40200     
Title: Re:まったく分かりません。    
プログラムの前に、どうやって料金を求めるのかを考えたほうが良いのではないでしょうか。

例えば、1ヶ月の合計通話時間が30分だったとします。

この場合は、料金はいくらでしょうか?
また、料金を出す計算式はどうなるでしょうか?

単純な 掛け算と足し算 なので、プログラムは書けなくても、
これの計算自体は出来るでしょう。




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

Name: ゆーずぃ  ..入門者(2,992ポイント)   Date: 2009/10/10(土) 05:36   No:40236     
Title: Re:まったく分かりません。    
あ さんは恐らく学生さんでしょうか?

せっかく学べる環境に身を置いていて、しかもc言語なんて普通科授業で勉強するなんて聞いたことがないのでwどこぞの専門学校に通っているか、選択授業を取っているのではないですか?
でしたら自分で少しでも興味を持って学びの門を叩いたのですから、たった一冊だけ初心者向けのc言語勉強本を読了してみてください。この課題くらいなら簡単に作れるほどの実力は充分つきます。

もしc言語に全く興味がなく、必須科目等で仕方なくやっている。その課題として出されたから提出用に教えて!というのであれば友達のソースを丸写しして、変数の名前や、変数や関数の宣言の順序を変えて提出されることをお勧めします。
そうしたいけど順番の変え方が分からない、というのであればそのソースを晒してくれれば1、2行並び変えるくらいなら親切な方がやってくれるでしょう。0から あ さんの為にソースを書くよりよっぽど楽ですから。

私たちがソースを書くのは簡単ですし、それを丸写しするのはもっと簡単ですが、それでは全く意味がありません。
もし本当にc言語を扱えるようになりたいのであれば、「これはintでいいのか?」とか、「returnと”}”はどっちが先?」など、そんな質問でも優しいここの住人の方々は答えてくれます。もちろん私も力になれるところは力になります。ですので、せっかく何でも気兼ねなく聞けるこの場所を知っているのですからもっと自分の力を伸ばす方に活用してみて下さい。大切な学校生活で「あぁC言語とかやったなぁ。でも覚えてないや。」なんて数年間を無駄にしないで、しっかりモノにできるよう努力をしてみて下さい。ここはそんな頑張る人たちの為のサイトだと思います。回答する皆さんの優しさは、丸投げされた質問に対する模範解答を作ることではないということを忘れないでください。
では、同じCを学ぶものとして、お互い精進していきましょう(o^―^o)


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



Name:  ..かけだし(1,114ポイント)   Date: 2009/10/09(金) 11:55   No:40195       
Title: 無題    
scanf を用いて、5個の数を入力すると合計と平均を計算し出力するプログラムを作成するのが分かりません。
=== プログラム ===
#include <stdio.h>
int main()
{
/* ほげほげ */
}
=== プログラムの実行結果 === 教えてもらえたらうれしいです。



 



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


Name: 通りすがり  ..上級者(17,751ポイント)   Date: 2009/10/09(金) 12:28   No:40197     
Title: Re:無題    
ググる癖をつけましょう^^

http://www.google.co.jp/search?hl=ja&q=scanf+%E3%82%92%E7%94%A8%E3%81%84%E3%81%A6%E3%80%815%E5%80%8B%E3%81%AE%E6%95%B0%E3%82%92%E5%85%A5%E5%8A%9B%E3%81%99%E3%82%8B%E3%81%A8%E5%90%88%E8%A8%88%E3%81%A8%E5%B9%B3%E5%9D%87%E3%82%92%E8%A8%88%E7%AE%97%E3%81%97%E5%87%BA%E5%8A%9B%E3%81%99%E3%82%8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E3%81%AE%E3%81%8C%E5%88%86%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82&lr=lang_ja


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

Name:  ..かけだし(1,432ポイント)   Date: 2009/10/09(金) 14:35   No:40201     
Title: Re:無題    
#include <stdio.h>

int main(void)
{
char str[20];
int num1;
int num2;
int num3;
int num4;
int num5;
int sum;

puts( "整数を5回入力して下さい。" );
fgets( str, 20(str), stdin );
sscanf( str, "%d", &num1 );
fgets( str, 22(str), stdin );
sscanf( str, "%d", &num2 );
fgets( str, 24(str), stdin );
sscanf( str, "%d", &num3 );
fgets( str, 26(str), stdin );
sscanf( str, "%d", &num1 );
fgets( str, 28(str), stdin );
sscanf( str, "%d", &num1 );
/* 合計を求める */
sum = num1 + num2 + num3 + num4+ num5;

/* 合計と平均値を出力する */
printf( "合計: %d\n", sum );
printf( "平均: %d\n", sum / 5 );

return 0;
}
これでどうですか?


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

Name: ねこ  ..熟練のプログラマー(45,755ポイント)   Date: 2009/10/09(金) 15:17   No:40202     
Title: Re:無題    
何故fgetsやsscanfが・・・
普通に「scanf( "%d", &num1 );」とかでいいと思います。他気になった点は
1.num3以降が全部num1
2.平均は5で割ってますがint型なので整数(75.5点とかは出せない)になる
3.現在そのソースを実行できる環境の有無は?これを書いておくと「試せば?」って言われなくなります。
無ければcodepadってググると実行結果を出してくれるブラウザでのツールもあります。
scanf等は多分未対応なのでprintf絡みのチェックにしか使えませんが・・・


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

Name: Naohiro19  ..ぴよぴよ(256ポイント)   Date: 2009/10/09(金) 15:45   No:40203     
Title: Re:無題    

#include <stdio.h>
#define COUNT 5

int main()
{
int i;
double num[COUNT] = {0}, t = 0;
for(i =0; i < COUNT; i++){
scanf("%f", &num[i]);
t += num[i];
}
printf("total:%f, average:%f\n", t, t / COUNT);
return 0;
}


このほうがすっきりするかと思います


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

Name: lbfuvab  ..上級者(22,192ポイント)   Date: 2009/10/09(金) 22:48   No:40219     
Title: Re:無題    
#include<stdio.h>


int main(){
int i;
double ave=0,input;

for(i=0;i<5;i++){
scanf("%lf",&input);
ave += (input-ave) / (i+1);
}
printf("sum:%g ave:%g\n",ave*5,ave);
return 0;
}


どうでしょう。


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

Name: ゆーずぃ  ..かけだし(1,492ポイント)   Date: 2009/10/10(土) 05:03   No:40235     
Title: Re:無題    
>Naohiro19さん

初めまして。横槍を失礼します。
>> scanf("%f", &num[i]);
うっかりだとは思いますが、それでは計算結果がNaNになるのではないでしょうか? %lf にしたほうが良いかと。

>lbfuvabさん

初めまして。横槍を失礼します。
>> ave += (input-ave) / (i+1);
のくだりですが、初心者さんに教えるにはちょっと式が難しすぎると思います。特に初心者じゃ0除算対策はぱっと見では分かりませんし(^^;)
無理に平均から作らない方がすっきりするし分かり易くていいかと思います。


偉そうな事を言ってすみません。口だけだと何なので自分のソースも晒しますw

#include <stdio.h>

#define COUNT 5

void main(void)
{
int i;
double num[COUNT] = {0}, sum = 0.0;

for(i = 0; i < COUNT ; i++ ){
scanf(" %lf",&num[i]);
sum += num[i];
}
printf("合計 => %g , 平均 => %g ",sum , sum / COUNT);
}


テストしていないのでどこかおかしいかも知れませんw


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



Name: マウ  ..入門者(3,877ポイント)   Date: 2009/10/06(火) 12:32   No:40048       
Title: 項目選択時に画像を表示するには    
タイトル通り、矢印キーで項目を選ぶと画像が切り替わって表示させるにはどうすればいいのでしょうか。

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


Name: ちゃお  ..かけだし(1,686ポイント)   Date: 2009/10/06(火) 13:01   No:40049     
Title: Re:項目選択時に画像を表示するには    
項目を切り替えたときにフラグも切り替えることでできると思います。

矢印がy=200の位置にあるとき(項目1のところ)フラグ=1を代入
矢印がy=300の位置にあるとき(項目2のところ)フラグ=2を代入ってして、

if(フラグ=1なら)
この画像を描画
else if(フラグ=2なら)
 この画像を描画

ってすればできます。
他にも方法は色々あると思います。


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

Name: マウ  ..入門者(4,035ポイント)   Date: 2009/10/07(水) 10:36   No:40098     
Title: Re:項目選択時に画像を表示するには    

if(y==60){
LoadGraphScreen( 410 , 50 , "丸1.bmp" , TRUE );
y+=30;
}else if(y==90){
LoadGraphScreen( 410 , 50 , "丸2.bmp" , TRUE );
}

よくわからないのですが、最初の画像は表示できてるのですが切り替えされません。
プログラム自体が変なのはわかっているのですがどうすればいいのでしょうか。


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

Name: Ma  ..中級者(11,463ポイント)   Date: 2009/10/07(水) 11:06   No:40100     
Title: Re:項目選択時に画像を表示するには    
どこを修正したらいいかと聞かれたら、つっこみどころ満載ですが、

一番指摘するべきところは、ループを使っているのか分からないところです。
while 等を使ってループしないといけないでしょう。

次に、LoadGraphScreen 自体使わない方がいいです。

LoadGraph と、 DrawGraph を使うべきですよ。

これについての詳細は、ゲームプログラミングの館に書かれてあります。
>14. メモリに画像を読み込んで表示する。
http://dixq.net/g/#14

まずはこの館をすべて読破したほうがいいですよ。

*質問に具体的に答えると…

1. 現在の選択中の項目は何番目か記録するint型変数を作っておく。
2. キーが押されるたびに、その変数を1づつ上昇や減少させる。
3. 変数の値に応じて、画像を表示する。

擬似コードです。


int max = 選択項目数-1;
int selection = 0;//選択中の項目
while(〜〜〜){
if(上キーが押されて1フレーム){
selection++;
if(selection > max)
selection = 0;
}
else if(下キーが押されて1フレーム){
selection--;
if(selection < 0)
selection = max;
}
if(selection == 0){
選択項目0 描画
}
else if(selection == 1){
選択項目1 描画
}
……

}


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

Name: マウ  ..入門者(4,061ポイント)   Date: 2009/10/09(金) 10:56   No:40194     
Title: Re:項目選択時に画像を表示するには    
上キーが押されて1フレームとはどういうのでしょうか。

key[〜〜]みたいなのではないのですか?


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

Name: Ma  ..中級者(11,887ポイント)   Date: 2009/10/10(土) 00:35   No:40222     
Title: Re:項目選択時に画像を表示するには    
>上キーが押されて1フレームとはどういうのでしょうか。
>key[〜〜]みたいなのではないのですか?

そういうことです。
上キーが押されてから、1フレーム(GetHitKeyStateAll系の関数を)経過した。
言い方を変えれば、今その瞬間に押された。という意味です。

もし、
40a. 「キーがどれ位押されたか」を判定する関数
http://dixq.net/g/#40
このページの方法で、計算しているならば、

上キーが押されて1フレーム


Key[KEY_INPUT_UP]==1

になります。


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

Name: マウ   Date: 2009/10/15(木) 11:52   No:400481255575127     
Title: Re:項目選択時に画像を表示するには    
返事遅くなりましたが上のプログラムをint WINAPI WinMain()のなかじゃなく、

void()のなかに入れる場合はwhile(〜〜〜)をどうすればいいのでしょうか。




Name: SB  ..ぴよぴよ(334ポイント)   Date: 2009/10/09(金) 22:00   No:40212       
Title: フルスクリーンで遊ぶ    
質問すみません。ダウンロードしたファイルをいろいろ改良しているんですがフルスクリーンモードで起動させる方法がわかりません。初歩的な質問だと思うのですが回答して頂けましたら幸いです。またフルスクリーンモードで起動した場合、解像度が変わりますよね?シューティングゲームをフルスクリーン前提で遊ぶには最初からフルスクリーンサイズに合わせた画像を用意すべきなんでしょうか?意味不明な質問かもしれませんが宜しくお願いします。

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


Name: lbfuvab  ..上級者(22,074ポイント)   Date: 2009/10/09(金) 22:35   No:40216     
Title: Re:フルスクリーンで遊ぶ    
いえ、(プログラミング的には)解像度は変わりません(640x480)
DxライブラリならWinMain関数内の
ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OKをなくせば良いです。


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

Name: SB  ..ぴよぴよ(362ポイント)   Date: 2009/10/09(金) 23:18   No:40221 解決!     
Title: Re:フルスクリーンで遊ぶ    
回答ありがとうございます。指示通りやってみたらフルスクリーンモードできました。
ありがとうございます。解像度のことも教えていただきありがとうございます。参考になりました。


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



Name: 256bit  ..かけだし(1,789ポイント)   Date: 2009/10/04(日) 01:11   No:39932       
Title: ショットの実装について    
 ナムコの「バトルシティ」のような2Dアクションゲームを制作しています。
 プログラミング初心者で、ゲームプログラミングの館の項目24「4方向移動〜2D〜」に項目26のショット「シューティングの基本」のプログラムを実装したいのですが、キャラクターが動かなくなったりしてうまくいきません。
 24項目に26項目のプログラムの組み方を教えてくれませんか?
 
 上記の図のように4方向に弾を飛ばすことを現在実装しています。


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


Name: zwi  ..中級者(9,791ポイント)   Date: 2009/10/04(日) 07:14   No:39935     
Title: Re:ショットの実装について    
24項目までのソースコードの一行一行の意味は、どのぐらい理解できていますか?
それと例えば歩く処理の中で実際にキャラクタの座標を変えているのはどの部分でしょうか?
私の質問の答えと今現在のうまく動かないソースコードを見せてくださいね。


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

Name: 256bit  ..かけだし(2,035ポイント)   Date: 2009/10/04(日) 15:28   No:39959     
Title: Re:ショットの実装について    
 >>zwiさんへ

 キャラクタの座標を変化させる部分の答えを掲示します。

 歩くフラグ(ch.walking_flag)が立っているかつ各キー入力のいづれかでch.mukiを動かすと、変数の値が増減してキャラを動かすことができる。

if(ch.walking_flag==1){ //歩くフラグが立っていたら //1P
if (ch.muki==0) //上向きならch.y座標を減らす
ch.y=ch.y-2;
else if(ch.muki==1) //左向きならch.x座標を減らす
ch.x=ch.x-2;
else if(ch.muki==2) //下向きならch.y座標を増やす
ch.y=ch.y+2;
else if(ch.muki==3) //右向きならch.x座標を増やす
ch.x=ch.x+2;
}
 

  


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

Name: softya  ..ぴよぴよ(239ポイント)   Date: 2009/10/04(日) 16:26   No:39963     
Title: Re:ショットの実装について    
zwi改め、softyaです。
そこまで理解されているのであれば、KEY_INPUT_RETURNで弾が発射される時にch.xとch.yをtama[i].xとyにコピーするだけです。
そのとき、tama構造体にもmukiを持たせてキャラの向きをコピーするようにしてください。
で、26章では上方向しか弾の処理がありませんので、tama構造体のmukiに合わせて4方向の処理を作ります。
よろしいでしょうか?ソースを見せていただければ、もう少し具体的な説明が出来たのですが。


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

Name: 256bit  ..かけだし(2,075ポイント)   Date: 2009/10/04(日) 17:19   No:39967     
Title: Re:ショットの実装について    
 >>softyaさん

 コードが長いと書き込めないので、どこからどこまでのコードを掲示したほうがいいですか?


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

Name: softya  ..ぴよぴよ(266ポイント)   Date: 2009/10/04(日) 18:05   No:39969     
Title: Re:ショットの実装について    
ソースコードは、この掲示板の添付機能で添付できると思いますので添付でお願いします。

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

Name: 256bit  ..かけだし(2,101ポイント)   Date: 2009/10/04(日) 18:37   No:39972     
Title: Re:ショットの実装について    
 >>softyaさん

 昨日いじってたソースを送ります。


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

Name: softya  ..中級者(10,193ポイント)   Date: 2009/10/04(日) 19:33   No:39977     
Title: Re:ショットの実装について    
ソース見ましたけで、弾が下から発射されるだけで、自キャラには何も問題ないはずですけど。
ためしに、弾関係を
#if 0
#endif
でコメントアウトして問題が再現するか試してみてください。
デバッグの基本中の基本ワザです。
で少しずつ弾処理のコードを有効にしていって問題点が再現する場所を見つけましょう。


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

Name: 256bit  ..かけだし(2,153ポイント)   Date: 2009/10/04(日) 21:18   No:39988     
Title: Re:ショットの実装について    
 >>softyaさん

 実行すると、方向キーどちらか押した状態でエンターで弾を撃つとキャラの動きが止まります。押し続けると、キャラも弾に化けます。


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

Name: softya  ..中級者(11,289ポイント)   Date: 2009/10/04(日) 21:39   No:39990     
Title: Re:ショットの実装について    
ごめんなさい。DOCファイルから取り出したらタブが乱れてしまいました。
今度からtxtファイルで添付してくださいね。

で、下記のコメントアウト状態でも同じですか?

#if 0
if(counter<5) //前にエンターを押してから5カウント未満なら
counter++; //カウントアップ

else if( Key[ KEY_INPUT_RETURN ] == 1 ){//5カウント以上たっていたら
counter=0; //カウンターを戻す
for(i=0;i<10;i++){
if(tama[i].flag==0){ //発射していない玉を探し、
tama[i].flag=1; //発射フラグを立てる
break;
}
}
}
for(i=0;i<10;i++){
if(tama[i].flag==1){ //発射している玉なら
tama[i].y-=4; //座標を8減らす
DrawGraph( tama[i].x , tama[i].y , image2[1] , TRUE );//玉を描画
if(tama[i].y < -32){ //もし画面外まで来たら
tama[i].y=ch.y; //初期値に戻し、
tama[i].x=ch.x; //初期値に戻し、
tama[i].flag=0; //発射フラグを戻す
}
}
}
#endif

これでENTERキーの影響があるはず無いんですが。


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

Name: 256bit  ..かけだし(2,195ポイント)   Date: 2009/10/04(日) 23:04   No:40000     
Title: Re:ショットの実装について    
 >>softyaさん
 わかりました。今後プログラムは、txtファイルで添付します。A^_^;)
 ショットのコードを上記の文に置き換えましたら、キャラが正常に動きました(^_^)。
 


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

Name: softya  ..中級者(11,409ポイント)   Date: 2009/10/05(月) 07:36   No:40007     
Title: Re:ショットの実装について    
今朝ソースを見たら問題点に気づきました。
tamaの配列が、
struct shot tama[2];
と宣言されているのに使うときは、
for(i=0;i<10;i++){
と配列を添え字が9まで参照したり変更してますよね。
つまり、配列外のメモリを参照したり破壊したりしてます。
なので異常が起きているんですが、異常終了しなかったのが不思議なくらいです。
struct shot tama[10];
に戻して置いてください。
あとは、前に書いた事に注意して組み直してもらえば弾がちゃんと飛ぶはずです。


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

Name: 256bit  ..かけだし(2,284ポイント)   Date: 2009/10/06(火) 02:14   No:40038     
Title: Re:ショットの実装について    
 >>softyaさん
 
 ありがとうございます。
 昼間アクセスできなかったので、今返信書きました。
 tama[10]に直したましたら、移動中でもしっかり打てました。


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

Name: 256bit  ..かけだし(2,243ポイント)   Date: 2009/10/09(金) 22:06   No:40213     
Title: Re:ショットの実装について    
 >>softyaさん

 弾が4方向に飛ぶようになりました。^_^b
 しかし、右と下にショットを撃つと初期化されません。
 もう一度プログラムを見てもらってもいいですか?


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

Name: ねこ  ..熟練のプログラマー(45,770ポイント)   Date: 2009/10/09(金) 22:30   No:40214     
Title: Re:ショットの実装について    
if(tama[i].y < 32){
if(tama[i].x < 32){
判定のここ不等号が逆じゃない?「>」だと思う


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

Name: 256bit  ..かけだし(2,248ポイント)   Date: 2009/10/09(金) 22:41   No:40217     
Title: Re:ショットの実装について    
>>ねこさん

 逆にするとショットが飛びませんでした。><


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

Name: MNS  ..上級者(18,883ポイント)   Date: 2009/10/09(金) 22:46   No:40218     
Title: Re:ショットの実装について    
if(tama[i].y < 32){
if(tama[i].x < 32){

if(tama[i].y > 480){
if(tama[i].x > 640){
ではないでしょうか?


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

Name: 256bit  ..かけだし(2,329ポイント)   Date: 2009/10/09(金) 23:03   No:40220 解決!     
Title: Re:ショットの実装について    
 >>みなさん

 本当ありがとうございます。 ^_^b
 4方向しっかり弾が初期化され、ショットが完全実装できました。
 また何かありましたら、よろしくおねがいします。m(__)m


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



Name: piyoyo  ..ぴよぴよ(92ポイント)   Date: 2009/10/06(火) 23:24   No:40079       
Title: 龍神録プログラム    
龍神録プログラムで”敵にショット撃たせよう”の項目でSHOT_BULLET_MAXが定義されてないとでます。
見直しても説明通りできている見たいなんですがなぜでしょう?
エラーメッセージは↓のように出ました。

\test project\project\1章\mydat\include\struct.h(58) : error C2065: 'SHOT_BULLET_MAX' : 定義されていない識別子です。


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


Name: ちゃお  ..かけだし(1,790ポイント)   Date: 2009/10/07(水) 10:56   No:40099     
Title: Re:龍神録プログラム    
define.hの方にSHOT_BULLET_MAXを定義していないからだと思います。

あと、struct.hでSHOT_BULLET_MAXを使っているなら、それ以前にdefine.hを宣言してください。


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

Name: piyoyo  ..ぴよぴよ(215ポイント)   Date: 2009/10/07(水) 21:20   No:40117     
Title: Re:龍神録プログラム    
うーん
define.hでは定義されています。
struct.hの宣言は#include "define.h"でいいんですか?
すると↓のようなエラーがでます。
test project\project\1章\mydat\include\define.h(10) : fatal error C1014: インクルード ファイルが多すぎます : 深さ = 1024


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

Name: ぽよ  ..ぴよぴよ(651ポイント)   Date: 2009/10/08(木) 01:23   No:40150     
Title: Re:龍神録プログラム    
ちゃおさんがおっしゃっているのはdefine.hにおいて
>#include "struct.h"
↑のまえに
>#define SHOT_BULLET_MAX 1000
↑を書く必要がある、ということだと思います。

おそらく問題があるであろうdefine.hの一例を添付しました。確認してください
いちおう言っておきますが、あなたの書いたstruct.hの#include "define.h"は消してくださいね。
龍神録プログラムの館ではソースを公開していますのでそれをダウンロードしておき、わからない時はまずそちらを確認する事をおすすめします。


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

Name: conio [URL]  ..熟練のプログラマー(56,925ポイント)   Date: 2009/10/08(木) 01:50   No:40151     
Title: Re:龍神録プログラム    
>>すると↓のようなエラーがでます。
>>test project\project\1章\mydat\include\define.h(10) : fatal error C1014: インクルード ファイルが多すぎます : 深さ = 1024

そのエラーは多分、無限インクルードをしているのではないでしょうか。
(名前は勝手に付けました)


下記のような構成になっているとします。
----------<Test.h>-------------
#include"Test.h"
#define SHOT_BULLET_MAX 1000
-------------------------------
----------<Main.cpp>-----------
#include<stdio.h>
#include"Test.h"

int main(void)
{

return(0);
}
-------------------------------

#includeは基本、単純な文字列置換をします。
なので、インクルードをすると、下記の様に変化します。
---------------------------------------
#include<stdio.h>
#include"Test.h"
#define SHOT_BULLET_MAX 1000


int main(void)
{

return(0);
}
---------------------------------------
で、また#include"Test.h"が出てくるので、さらに置換します。
---------------------------------------
#include<stdio.h>
#include"Test.h"
#define SHOT_BULLET_MAX 1000

#define SHOT_BULLET_MAX 1000

int main(void)
{

return(0);
}
---------------------------------------
さらにもう一度。
---------------------------------------
#include<stdio.h>
#include"Test.h"
#define SHOT_BULLET_MAX 1000

#define SHOT_BULLET_MAX 1000
#define SHOT_BULLET_MAX 1000

int main(void)
{

return(0);
}
---------------------------------------
見れば分かりますが、永遠に置換され続けます。
よって、深さが1024を超えてしまい、エラーとなります。


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

Name: toyo  ..熟練のプログラマー(41,869ポイント)   Date: 2009/10/08(木) 09:04   No:40154     
Title: Re:龍神録プログラム    

--- define.h に以下を追加 ---

//敵1匹が持つ弾の最大数
#define SHOT_BULLET_MAX 1000

//一度に画面に表示できる敵の弾幕の最大数
#define SHOT_MAX 30

//ショットの種類の最大数
#define SHOT_KND_MAX 1

//効果音の種類の最大数
#define SE_MAX 100

//敵の行動パターンの最大数
#define ENEMY_PATTERN_MAX 11

↑をdefine.hに書いている
#include "struct.h"
の下に追加しているのではないでしょうか

#include "struct.h"
をdefine.hの一番下の行に移動しましょう


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

Name: piyoyo  ..ぴよぴよ(223ポイント)   Date: 2009/10/08(木) 23:37   No:40187 解決!     
Title: Re:龍神録プログラム    
toyoさんのやり方でやったら成功しました。皆さんご迷惑おかけしましたありがとうございます。

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



Name: 小夜  ..初心者(8,189ポイント)   Date: 2009/10/03(土) 22:26   No:39920       
Title: ミシャグジさま弾幕が出来ません    
こんばんは。
以前皆様にして頂いたアドバイスを基に、
どうにかミシャグジさま弾幕までたどり着きました。(16章です)

みょんの弾幕は出来たのですが、なぜかミシャグジさまの弾幕が上手くいきません.....
なぜか、画像のように 何体かの人形が
大きい弾幕を撃ってくるだけなのです。原因はなんなのでしょうか?
「16章」のフォルダを開いて見比べてみても違う所はありません。
エクセルデータの保存場所が間違っているということも無いと思うのですが....

分かる方はアドバイスよろしくお願いします!


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


Name: ちゃお  ..ぴよぴよ(290ポイント)   Date: 2009/10/03(土) 22:36   No:39922     
Title: Re:ミシャグジさま弾幕が出来ません    
エクセルのショットパターンの値が違うとか?
ミシャクジ様のショットパターンを打つように値を変更してないからか?


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

Name: 鈴仙優曇華院イナバ  ..ぴよぴよ(83ポイント)   Date: 2009/10/04(日) 10:48   No:39942     
Title: Re:ミシャグジさま弾幕が出来ません    
ちゃおさんのおっしゃる通りエクセルの値を変更していないからだと思います。
自分がそうだったという経験があるので


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

Name: 小夜  ..初心者(8,226ポイント)   Date: 2009/10/04(日) 12:49   No:39944     
Title: Re:ミシャグジさま弾幕が出来ません    
皆様回答ありがとうございます!
エクセルの値の変え方がよく分からないのですが.....
エクセルを開いて表示されているようにすればいいのでしょうか?


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

Name: 小夜  ..初心者(8,399ポイント)   Date: 2009/10/04(日) 15:20   No:39958     
Title: Re:ミシャグジさま弾幕が出来ません    
すみません、値の変更方法は分かりました^^;
しかし、どのデータを変更すればいいのか分かりません。
「dat」の中にある「csv」の 何章のを変更すればいいのですか?
「14章」は みょん弾幕のデータですよね?
一度 試しに変更してみたのですが実行結果は変わらず、
みょん弾幕も出なくなったので戻しました。
解決方法が分かる方、回答よろしくお願いします!


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

Name: ディア  ..入門者(4,940ポイント)   Date: 2009/10/04(日) 16:54   No:39966     
Title: Re:ミシャグジさま弾幕が出来ません    
16章ですよ

エクセルの記述は
60、9、0、 200、150、0、60、8、0、100、0、1200、0、-1、-1、-1、-1、-1

の順で、それ以外の記述は / から始まる説明のみです。



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

Name: 小夜  ..初心者(8,465ポイント)   Date: 2009/10/04(日) 18:23   No:39971     
Title: Re:ミシャグジさま弾幕が出来ません    
ディアさん>回答ありがとうございます!
csvフォルダの中には16章のフォルダは無いのですが.....
新規作成するのでしょうか?


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

Name: ディア  ..初心者(5,090ポイント)   Date: 2009/10/04(日) 20:16   No:39984     
Title: Re:ミシャグジさま弾幕が出来ません    
新規に作るか、既存の物の中身を書き換えてください。

タイトルなどはなんでも平気です。
ちゃんと龍神録プログラミングの館16章の最後に
書いてあるエクセルの内容の写し、
load.cppでちゃんと呼び出して下さい。

//敵の出現情報をエクセルから読み込んで格納する関数
void load_story(){
int n,num,i,fp;
char fname[32]={"ここ.csv"};
int input[64];
char inputc[64];




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

Name: 小夜  ..初心者(8,893ポイント)   Date: 2009/10/04(日) 23:34   No:40001     
Title: Re:ミシャグジさま弾幕が出来ません    
やってみましたがどうも上手くいきません......
エクセルデータも変え、loadでも呼び出したはずなのですが...
一応貼ってみます。(load.cppから)

//敵の出現情報をエクセルから読み込んで格納する関数
void load_story(){
int n,num,i,fp;
char fname[32]={"../dat/csv/16章/storyH0.csv"};
int input[64];
char inputc[64];

(csvの中に「16章」を新規作成しています。)
違う所がありましたら、ご指摘お願いします。


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

Name: 小夜  ..中級者(9,057ポイント)   Date: 2009/10/04(日) 23:48   No:40002     
Title: Re:ミシャグジさま弾幕が出来ません    
何度もすみません、色々イジっていると成功しました;
しかし、なぜか色がオレンジ色なんです。
どうしてなのでしょうか?
16章の解説では水色でしたよね?
これは やはりエクセルデータの違いから来ているものなのでしょうか?


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

Name: ぽよ  ..ぴよぴよ(473ポイント)   Date: 2009/10/05(月) 14:30   No:40014     
Title: Re:ミシャグジさま弾幕が出来ません    
16章shotH.cppの//ミシャグジさまの↓の部分
>shot[n].bullet[k].col =4;//4番の色
について
>左から0番目を含めて4番目が水色なので、色は4を指定します。
と書いてあるようですが、実際に
project/dat/img/bullet/b8.png
を確認してみると4番はオレンジ色ですね
上で引用しているソースの4の所を1にすれば水色になると思います



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

Name: 小夜  ..中級者(9,199ポイント)   Date: 2009/10/08(木) 21:37   No:40185 解決!     
Title: Re:ミシャグジさま弾幕が出来ません    
ぽよさん>ありがとうございます!!
     1だったんですね^^;
     変更したら出来ました!


皆様本当にありがとうございました!


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



Name: 狼太郎  ..入門者(3,337ポイント)   Date: 2009/10/08(木) 15:35   No:40172       
Title: 2点間の角度の求め方    
こんにちは
ホーミングミサイルなどを作る際に、2点間の角度を求める必要があると知ったのですが。
数学の知識に疎い自分にはsinやcosなどは大体分かったのですが・・アークタージェントだとかatan2、などがさっぱり分かりません・・
考え方や使い方だけでも教えてくださると幸いです。


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


Name: バグ  ..ハッカー(170,965ポイント)   Date: 2009/10/08(木) 16:14   No:40178     
Title: Re:2点間の角度の求め方    
参考になりそうなHPのURLを載せておきますね(^-^)

http://homepage1.nifty.com/gfk/sin-cos.htm
http://ab.sinryow.net/lesson/sankaku.html


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



Name: TKOZ  ..プログラマー(31,933ポイント)   Date: 2009/10/07(水) 09:17   No:40095       
Title: 汽車のレールを組み立てるパズルゲームなんですが…    
おはようございます。いつも、お世話になっています。
TKOZです。ネットカフェからの書き込みです。
今、「汽車ポッポ」という、列車のレールを組み立てる
パズルゲームを作っています。

パズルゲームアルゴリズムマニアックスという本を参考に
プログラミングしていたのですが、プログラムが上手く動作しません。

具体的には、汽車がレールの上を上手く走ってくれないんです。

ソースファイルを添付しました。

開発環境は、VisualC++6.0で、WindowsXPです。

どうか、誰か、アドバイスを下さい。よろしくお願いします。


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


Name: conio  ..熟練のプログラマー(54,288ポイント)   Date: 2009/10/07(水) 10:09   No:40097     
Title: Re:汽車のレールを組み立てるパズルゲームなんですが…    

>>具体的には、汽車がレールの上を上手く走ってくれないんです。
もう少し具体的にして欲しかったです。
「上手く走らない」と言っても、
------------------------------------------------------------
【1】初めから汽車が動かない
【2】レールの画像と一致しない方向へすすむ
【3】汽車が、レールの画像の座標から 微妙にズレた場所を走る
【4】次のレールへ移動しようとする際に、汽車がとまる
【5】レールの画像が無い場所を進み始める
【6】汽車の走るスピードが変化したり、意図しないスピードになったりする
------------------------------------------------------------
など、色々と考えられます。

あと、汽車がどう動くかの前に、エラーが出て実行できませんでした。

下記のコードでは、最初 Time = 0、CONNECTED_RAIL_TIME = 1なので
if文が実行されます。(Time++;)

そして、その後DrawFormatStringで、初期化されていないdirを表示しようとするので
エラーが出て止まります。
(cx,cyも初期化されてないです。)
---------------------------------------------------------------------------
int Move()
{
int dir;
int cx,cy;
if (Time<CONNECTED_RAIL_TIME){
Time++;
} else {
cx=CX+CONNECTED_RAIL_VX[Dir];
cy=CY_+CONNECTED_RAIL_VY[Dir];
if ( cx>=0 && cx<20 && cy>=0 && cy<15)
{
dir=CONNECTED_RAIL_DIR[Get(cx,cy)][Dir];
if (dir!=4)
{
CX=cx;
CY_=cy;
Dir=dir;
Time=0;
}
}
}

DrawFormatString(0 ,0 , GetColor(255,0,0) ,
"dir=%d" , dir ) ;
DrawFormatString(0 ,32 , GetColor(255,0,0) ,
"cx=%d:cy=%d" , cx,cy ) ;
DrawFormatString(0 ,64 , GetColor(255,0,0) ,
"Dir=%d" , Dir ) ;
---------------------------------------------------------------------------


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

Name: TKOZ  ..プログラマー(32,000ポイント)   Date: 2009/10/07(水) 16:55   No:40107     
Title: Re:汽車のレールを組み立てるパズルゲームなんですが…    
>>conioさんへ

>もう少し具体的にして欲しかったです。
分かりました。今後、気をつけます。

あと、指摘された部分を直して、

DrawCar()内の

DrawRectGraph( Car.x*32, Car.y*32,
(Car.move_angle/30)*32, 0, 32, 32,
SubGraphicHandle, TRUE, FALSE ) ;

で、Car.xとCar.yを32倍したら、カクカクですが、レールの上をきちんと
移動が出来ました。

しかし、滑らかに動かすにはどうすればいいのでしょうか?


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

Name: conio [URL]  ..熟練のプログラマー(56,233ポイント)   Date: 2009/10/08(木) 01:22   No:40149     
Title: Re:汽車のレールを組み立てるパズルゲームなんですが…    
とりあえず、簡単に作ってみました。
また、#if の横にある数字を0か1にしてマップを切り替えられます。

流れとしてはこんな感じです。
【1】現在、列車の居るレールの情報を調べる。
【2】レールに応じて、動く方向のフラグを立てる。
【3】1ドットずつ、フラグに応じて増減させる。(++x,--x,++y,--yなど)
【4】次のマス(レール)に到着した時に、動く方向のフラグを消す。
【5】1へ戻る

--------------------------------------------------------------------------------------
#include "DxLib.h"

int Key[256];
int GetHitKeyStateAll_2(int KeyStateBuf[]){
char GetHitKeyStateAll_Key[256];
GetHitKeyStateAll( GetHitKeyStateAll_Key );
for(int i=0;i<256;i++){
if(GetHitKeyStateAll_Key[i]==1) KeyStateBuf[i]++;
else KeyStateBuf[i]=0;
}
return 0;
}

#if 0
int Map[5][6] = { {1,1,1,1,1,4},
{1,1,1,1,4,4},
{3,1,1,0,4,4},
{3,3,2,2,2,4},
{3,2,2,2,2,2}, };
#else

int Map[5][6] = { {4,1,1,1,1,4},
{4,3,2,4,2,2},
{4,1,3,4,1,1},
{4,3,2,4,3,2},
{1,1,3,1,1,3}, };
#endif

enum MoveID{
MOVE_NONE,
MOVE_RIGHT,
MOVE_LEFT,
MOVE_UP,
MOVE_DOWN,
MOVE_MAX
};

typedef struct{
MoveID mflag;
char* c;
}Cell;

const Cell cell[MOVE_MAX] = { {MOVE_NONE,"×"},
{MOVE_RIGHT,"→"},
{MOVE_LEFT,"←"},
{MOVE_UP,"↑"},
{MOVE_DOWN,"↓"}
};
typedef struct{
int x;
int y;
int Exist;
MoveID mflag;
}Train;

Train train = {0,0,1,MOVE_NONE};
int BaseX = 100;
int BaseY = 100;

void MoveTrain(void)
{
if(train.mflag == MOVE_NONE){
if(train.x >= 0 && train.y >= 0 && train.y/20 < (sizeof(Map)/sizeof(Map[0])) && train.x/20 < (sizeof(Map[0])/sizeof(Map[0][0]))){
switch(cell[Map[train.y/20][train.x/20]].mflag)
{
case MOVE_RIGHT:train.mflag = MOVE_RIGHT;break;
case MOVE_LEFT: train.mflag = MOVE_LEFT;break;
case MOVE_UP: train.mflag = MOVE_UP;break;
case MOVE_DOWN: train.mflag = MOVE_DOWN;break;
default:break;
}
}else{
train.Exist = 0;
}
}
if(train.mflag != MOVE_NONE){
switch(train.mflag)
{
case MOVE_RIGHT:++train.x;break;
case MOVE_LEFT: --train.x;break;
case MOVE_UP: --train.y;break;
case MOVE_DOWN: ++train.y;break;
}
if((train.x % 20 == 0) && (train.y % 20 == 0))
train.mflag = MOVE_NONE;
}
}

void DrawMap(void)
{
int White = GetColor( 255, 255, 255 );

for(int i = 0, count = sizeof(Map) / sizeof(Map[0]); i < count; i++){
for(int j = 0, count2 = sizeof(Map[0]) / sizeof(Map[0][0]); j < count2; j++)
{
if(Map[i][j] == 0)
DrawString(BaseX + j*20, BaseY + i*20, cell[Map[i][j]].c, White);
else
DrawString(BaseX + j*20, BaseY + i*20, cell[Map[i][j]].c, White);
}
}
}
void DrawTrain(void)
{
int Yellow = GetColor( 255, 255, 0 );
int Red = GetColor( 255, 0, 0 );

if(train.Exist == 0)
DrawString( BaseX + train.x - 35, BaseY + train.y - 20, "\脱線!!/", Red);
DrawString( BaseX + train.x, BaseY + train.y, "●", Yellow);
}

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE );

if(DxLib_Init() == -1 ) return -1;
SetDrawScreen( DX_SCREEN_BACK );

while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0 ){
MoveTrain();
DrawMap();
DrawTrain();
ScreenFlip();
}
DxLib_End();
return 0;
}
--------------------------------------------------------------------------------------


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

Name: TKOZ  ..プログラマー(31,917ポイント)   Date: 2009/10/08(木) 16:12   No:40176 解決!     
Title: Re:汽車のレールを組み立てるパズルゲームなんですが…    
conioさん、ありがとうございます。
参考になりました。
無事、ゲームは完成しました。
後、もう少し微調整が必要ですが、あとは大丈夫です。
ありがとうございました。


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



Name: 鈴仙優曇華院イナバ  ..かけだし(1,045ポイント)   Date: 2009/10/07(水) 20:34   No:40114       
Title: 東方紅魔郷っぽいタイトル画像の移動について    
タイトルの画像「12345」を分割して読み込んで、その画像をある位置からある位置まで移動させて停滞させる(東方紅魔郷のタイトル画像の動きを見て頂くとわかると思います)を再現したいと思い、プログラムを
組んでみましたが、エラーはなしでしたが、実行しても画面が真っ暗なままでした。

1を座標(-30,50)→(200,50)
2を座標(680,130)→(200,130)
3を座標(-30,210)→(120,210)
4を座標(680,290)→(120,290)
5を座標(-30,370)→(120,370)
汚いですがどんな感じかの画像も添付しました。


void mozi_calc(){
int j,ix,iy;
for(j=0;j<5;j++){
if(titlemove[j].flag==0){
if(j=0){
ix=-30;
iy=50;
}
if(j=1){
ix=680;
iy=130;
}
if(j=2){
ix=-30;
iy=320;
}
if(j=3){
ix=680;
iy=290;
}
if(j=4){
ix=-30;
iy=370;
}
titlemove[j].flag=1;
titlemove[j].x=ix;
titlemove[j].y=iy;
break;
}
}

for(j=0;j<5;j++){
if(titlemove[j].flag==1){
if(j=0){
titlemove[j].x+=7;
if(titlemove[j].x>=200){
titlemove[j].x=200;
}
}

if(j=1){
titlemove[j].x-=10;
if(titlemove[j].x<=200){
titlemove[j].x=200;

}
}
if(j=2){
titlemove[j].x+=7;
if(titlemove[j].x>=120){
titlemove[j].x=120;
}
}
if(j=3){
titlemove[j].x-=10;
if(titlemove[j].x<=120){
titlemove[j].x=120;
}
}
if(j=4){
titlemove[j].x+=7;
if(titlemove[j].x>=120){
titlemove[j].x=120;
}
}
titlemove[j].flag=0;
}
}


}
void mozi_move(){
int i;
for(i=0;i<5;i++){
if(titlemove[i].flag==1)
DrawGraph(titlemove[i].x,titlemove[i].y,title_m[i],TRUE);
}
}

WinMain内にこの2つの関数を放り込んでいます。

プログラムはhttp://dixq.net/s/8.html
を参考にしています。

titlemove[]は
typedef struct{
int flag;
double x,y;
}title_t;
という構造体で宣言しています。

title_mはload()で
LoadDivGraph("img/title0.png",5,5,1,82,90,title_m);で読み込んでいます。

どうかよろしくお願いいたします。


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


Name: mnkr  ..入門者(2,531ポイント)   Date: 2009/10/07(水) 22:55   No:40131     
Title: Re:東方紅魔郷っぽいタイトル画像の移動について    
あまり詳しくないですが、
最初のforで画像の初期位置をセット、
次のforで画像を動かす処理だと思いますが、
2つ目のforで移動したあと、処理を一巡させてまたmozi_calcを読み込んで
1つ目のforに戻ってきたときに、
位置が初期化されるから画像が表示しない、のかな。。。

最後のほうにある
titlemove[j].flag=0;
の一文を削除したら動くような気がします。
間違っていたらゴメンナサイ


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

Name: Mato  ..ぴよぴよ(139ポイント)   Date: 2009/10/07(水) 23:42   No:40143     
Title: Re:東方紅魔郷っぽいタイトル画像の移動について    
とりあえず、
if(j=0)
というのが気になりました。
うどんげさんの意図は
if(j==0)
かと思われましたが、勘違いでしたらごめんなさい。。。


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

Name: 鈴仙優曇華院イナバ  ..かけだし(1,801ポイント)   Date: 2009/10/07(水) 23:57   No:40144     
Title: Re:東方紅魔郷っぽいタイトル画像の移動について    
mnkrさん
なるほど!そうでした。初期化が何回も繰り返されていたようです。。
フラグを使って、1回目初期化したら後は、フラグに1代入して
以後初期化処理を行わないようにしました。
あと、titlemove[j].flag=0も消してみると表示されました。
ありがとうございます!

Matoさん
ああ…初歩的なミスをしてしまいました…
お恥ずかしい…
ありがとうございます!

お二人方の意見を参考にコードを修正しました。
画像は表示されましたが、動かないという状況になってしまいました。
東方紅魔郷風に動かす以前の問題になっちゃいました…


void mozi_calc(){
int j,ix,iy,f=0;
if(f==0){
for(j=0;j<5;j++){
if(titlemove[j].flag==0){
if(j==0){
ix=-30;
iy=50;
}
if(j==1){
ix=680;
iy=130;
}
if(j==2){
ix=-30;
iy=320;
}
if(j==3){
ix=680;
iy=290;
}
if(j==4){
ix=-30;
iy=370;
}
titlemove[j].flag=1;
titlemove[j].x=ix;
titlemove[j].y=iy;
break;
}
}
f=1;
}

for(j=0;j<5;j++){
if(titlemove[j].flag==1){
if(j==0){
while(titlemove[j].x<=200)
titlemove[j].x+=1;
}
if(j==1){
while(titlemove[j].x>=200)
titlemove[j].x-=1;
}
if(j==2){
while(titlemove[j].x<=120)
titlemove[j].x+=1;
}
if(j==3){
while(titlemove[j].x>=120)
titlemove[j].x-=1;
}
if(j==4){
while(titlemove[j].x>=120)
titlemove[j].x+=1;
}
}
}
}


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

Name: conio [URL]  ..熟練のプログラマー(54,348ポイント)   Date: 2009/10/08(木) 00:15   No:40146     
Title: Re:東方紅魔郷っぽいタイトル画像の移動について    

>>タイトルの画像「12345」を分割して読み込んで、その画像をある位置からある位置まで移動させて停滞させる
こんな感じでしょうか?
(画像は使っていませんが)
-----------------------------------------------------------------------------------------
#include "DxLib.h"

int Key[256];
int GetHitKeyStateAll_2(int KeyStateBuf[]){
char GetHitKeyStateAll_Key[256];
GetHitKeyStateAll( GetHitKeyStateAll_Key );
for(int i=0;i<256;i++){
if(GetHitKeyStateAll_Key[i]==1) KeyStateBuf[i]++;
else KeyStateBuf[i]=0;
}
return 0;
}

typedef struct{
int x;
int y;
char* c;
}MY_POINT;

const MY_POINT TitleLogo[5] = { {300,100, "【1】"},
{300,120, "【2】"},
{300,140, "【3】"},
{300,160, "【4】"},
{300,180, "【5】"}
};

void DrawTitleGraphics(void)
{
int White = GetColor( 255, 255, 255 );
static int dif = 50;

for(int i = 0, count = sizeof(TitleLogo) / sizeof(TitleLogo[0]); i < count; i++){
if(i % 2 == 0)
DrawString( TitleLogo[i].x - dif, TitleLogo[i].y, TitleLogo[i].c, White);
else
DrawString( TitleLogo[i].x + dif, TitleLogo[i].y, TitleLogo[i].c, White);
}
if(dif > 0){
--dif;
}
}


int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE );

if(DxLib_Init() == -1 ) return -1;
SetDrawScreen( DX_SCREEN_BACK );

while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0 ){

DrawTitleGraphics();
ScreenFlip();
}
DxLib_End();
return 0;
}
-----------------------------------------------------------------------------------------


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

Name: 鈴仙優曇華院イナバ  ..かけだし(1,831ポイント)   Date: 2009/10/08(木) 11:05   No:40161     
Title: Re:東方紅魔郷っぽいタイトル画像の移動について    
conioさん
無事思い通りの描画ができました!
本当にありがとうございます!


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



Name: kai  ..初心者(6,945ポイント)   Date: 2009/10/08(木) 06:24   No:40152       
Title: 難易度表示のプログラムについて    
東方で一番最初に上部に表示される、
難易度についてのプログラムについて教えてください。
表示や点滅させるは分かるのですが、
この難易度の表示が消えて右に移動するとき
NORMALは上と下に押しつぶされる感じで消え、
右に表示するときは、今度は逆に
中央から上下に広がる感じ表示されるのですが
これはどういったプログラムで
消してるのでしょうか?改造して遊ばさせてもらってる
龍神録で実装してみたいと思ってるのですが、
分かる方がいたら教えてください><


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


Name: Dixq (管理人) [URL]  ..ウィザード(1,065,207ポイント)   Date: 2009/10/08(木) 09:20   No:40155     
Title: Re:難易度表示のプログラムについて    
画像を自由な形に変形するときは、DrawModiGraphを使用します。
これを使用すると、画像の描画する4点が指定出来るので、どのような形にでも変形出来ます。

左上、右上座標を徐々に下げ、左下、右下座標を徐々に上げて渡してあげればつぶれ、逆だと広がります。



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



Name: yrao  ..初心者(5,271ポイント)   Date: 2009/10/02(金) 23:12   No:39878       
Title: ボスの溜め動作について    
ボスのエフェクトについての質問です。
東方では、ボスが弾幕やアシストを出すときに『溜め動作』のような事をすることがあると思います。(光がボスに向かって集まっていくようなエフェクトです)
あのエフェクトはどのように実装されているのでしょうか?


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


Name: あ〜る  ..中級者(12,376ポイント)   Date: 2009/10/02(金) 23:21   No:39879     
Title: Re:ボスの溜め動作について    
龍神録のコードでゲームを作ってますか?
もしそうならエフェクトについては、ボムのエフェクトや敵の消滅するエフェクトで作り方を理解していれば簡単に実装出来る筈です

どっちにせよ、考え方としてはボスの座標から規定(若しくはランダム)の距離離れた場所にエフェクトの画像を表示して、あとはatan関数なんかを使ってボスへの角度を求めてやればいいと思います
その時最初大きめに描画して、だんだん小さくなるようにしてやれば、それっぽくなります


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

Name: yrao  ..初心者(5,354ポイント)   Date: 2009/10/04(日) 17:39   No:39968     
Title: Re:ボスの溜め動作について    
了解しました

エフェクト処理を書いていってみようと思います。

プログラムの書き方について疑問が出てきたら、また質問させて下さい。

ありがとうございましたm(__)m


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

Name: Ma  ..中級者(11,215ポイント)   Date: 2009/10/05(月) 17:03   No:40017     
Title: Re:ボスの溜め動作について    
サンプル的なものはないでしょうか?

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

Name: あ〜る  ..中級者(12,531ポイント)   Date: 2009/10/05(月) 21:29   No:40023     
Title: Re:ボスの溜め動作について    
一応僕が作ったのがあります
ありますが、自分で作った方がその人の為にもなるかなぁ?って思ってコードは乗せませんでした

で、今要望があるなら書こうかなぁって思ったんですが、なんかサイトにパソコンからアクセスしようと思ったら出来ないみたいなんで……
なんででしょう?僕のパソコンだけでしょうか?携帯でも出来なかったんですけど……


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

Name: Ma  ..中級者(11,220ポイント)   Date: 2009/10/06(火) 01:47   No:40035     
Title: Re:ボスの溜め動作について    
よろしくお願いします

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

Name: 鈴仙優曇華院イナバ  ..ぴよぴよ(106ポイント)   Date: 2009/10/06(火) 15:06   No:40052     
Title: Re:ボスの溜め動作について    
僕もできればコードを見させて頂きたいです。
どうしてもうまくいかなくて…


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

Name: あ〜る  ..中級者(13,387ポイント)   Date: 2009/10/06(火) 22:25   No:40070     
Title: なんちゃって龍神録プログラミングの館 番外4章 ボスのチャージエフェクト    
すいません遅れました;;
コード載せます。

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

☆function.hに以下を追加

//effect.cpp
GLOBAL void enter_charge();

☆effect.cppのcalc_effect関数内に以下を追加

case 5://魔力チャージエフェクト
effect[i].cnt++;
effect[i].r-=0.07;//段々小さく
if(effect[i].cnt>30)
effect[i].flag=0;//30カウントで消す
  effect[i].x-=((effect[i].x-boss.x)/30);
  effect[i].y-=((effect[i].y-boss.y)/30);
break;

☆effect.cppに以下の関数を追加


//適当な位置
double random_pos(int i){//iが0の時はx座標、1の時はy座標を返す
double pos,pos_x,pos_y;
double ang=rang(PI2);
pos=100+(GetRand(100));
pos_x=pos*cos(ang);
pos_y=pos*sin(ang);
if(i==0)return pos_x;
if(i==1)return pos_y;
}

//溜めエフェクト登録
void enter_charge(){
int k;
if(boss_shot.cnt%3==0){//3カウントに一個
if((k=search_effect())!=-1){
effect[k].flag=1;
effect[k].x=boss.x+random_pos(0);
effect[k].y=boss.y+random_pos(1);
effect[k].cnt=0;
effect[k].knd=5;
effect[k].brt=255;
effect[k].spd=0;
effect[k].r=2.8;//最初は少し大きめに描画
effect[k].img=img_etc[49];
effect[k].eff=0;
}
}
}

☆graph.cppのgraph.main内に以下を追加

graph_effect(5);

☆サンプル弾幕

void boss_shot_bulletH020(){
#define TM020 200
int k,i,t=boss_shot.cnt,t2=boss_shot.cnt%TM020;
if(t2<80)enter_charge();
if(t2==100){
for(i=0;i<36;i++){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].knd=0;
boss_shot.bullet[k].col=0;
boss_shot.bullet[k].flag=1;
boss_shot.bullet[k].angle=PI2/36*i;
boss_shot.bullet[k].x=boss.x;
boss_shot.bullet[k].y=boss.y;
boss_shot.bullet[k].cnt=0;
boss_shot.bullet[k].spd=3;
boss_shot.bullet[k].state=0;
}
}
}
}

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

多分これでOKのはずです。
画像は自分で適当な物を用意してください(僕は21*21のサイズの画像を使ってます)
ボスの所に集まるように移動させる、角度の求め方を失敗して面倒臭くなっちゃったんで、なんか変な移動のさせ方してますが悪しからず。。。
もうちょっと良いやり方があるような気がするんですが、結構前に1〜2時間程度でちょちょいっと作ったものなんで、まぁ参考程度にしてもらえれば光栄です。


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

Name: yrao  ..初心者(5,406ポイント)   Date: 2009/10/06(火) 23:01   No:40074     
Title: Re:なんちゃって龍神録プログラミングの館 番外4章 ボスのチャージエフェクト    
あ〜るさんありがとうございます。

自分も手詰まりになってしまって、質問しようと思っていたところだったのですが、サンプルまで作って頂いていたとは…

助かりました<(__)>


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

Name: あ〜る  ..中級者(13,435ポイント)   Date: 2009/10/06(火) 23:35   No:40082     
Title: Re:ボスの溜め動作について    
いえいえ、夏休みに作ったのにコメント書いてコピペしただけですので(^-^)
今見直してみたら、ちょっと数が多過ぎたかもしれません;;
まぁスピードとか数は好みで弄ってやって下さい


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

Name: あ〜る  ..中級者(13,489ポイント)   Date: 2009/10/06(火) 23:44   No:40084     
Title: Re:ボスの溜め動作について    
というかミス発見…
enter_charge関数内で、cntを使って色々やってますが、正しく動きません
直しときました
すいません…


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

Name: ももた  ..中級者(13,074ポイント)   Date: 2009/10/07(水) 16:40   No:40105     
Title: Re:ボスの溜め動作について    
分からないことがあったのですが、
サンプルを試してみたのですが、なぜか描画されません。
enter_charge内のeffect[k].imgは直したのですが、どうやら
そこが原因ではないようで困ってます。
また、double random_pos(int i)内で
warning C4715: 'random_pos' : 値を返さないコントロール パスがあります。
という警告が発生し、消したいのですがどうしたら消えるか、誰かアドバイスお願いします。


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

Name: あ〜る  ..中級者(13,540ポイント)   Date: 2009/10/07(水) 21:28   No:40118     
Title: Re:ボスの溜め動作について    
もしかしたらコンパイラが違うからかもしれません
僕が使ってるコンパイラはBorlandC++なんで、そのせいかもしれません
原因の方はわかりません…すいません…


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

Name: Justy  ..伝説なるハッカー(435,632ポイント)   Date: 2009/10/07(水) 21:36   No:40119     
Title: Re:ボスの溜め動作について    

>という警告が発生し、消したいのですがどうしたら消えるか

 メッセージの通りです。
 random_pos関数で i=0と i=1の時は returnで値を戻していますが、
それ以外の時はどうしていますか?


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

Name: ももた  ..中級者(13,260ポイント)   Date: 2009/10/07(水) 21:59   No:40121     
Title: Re:ボスの溜め動作について    
なるほど
return -1;
を付け加えたら警告が消えました。ありがとうございます。

//適当な位置
double random_pos(int i){
double pos,pos_x,pos_y;
double ang=rang(PI2);
pos=100+(GetRand(100));
pos_x=pos*cos(ang);
pos_y=pos*sin(ang);
if(i==0){
return pos_x;
}
if(i==1){
return pos_y;
}
return -1;
}

描画されないのは何が原因なのでしょうか?
それとvoid enter_charge()内の
int iは意味はあるのでしょうか?一度も使われていないという警告が出たので
消したのですが、もしかして必要だったのでしょうか?


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

Name: あ〜る  ..中級者(13,704ポイント)   Date: 2009/10/07(水) 22:09   No:40122     
Title: Re:ボスの溜め動作について    
なるほど!
じゃあ

if(i==0){
return pos_x;
}else if(i==1){
return pos_y;
}else{
printfDx("引数error");
}

というようにしてやれば大丈夫でしょうか?
引数は自分で入力するものだからと安心して想定外の数字の場合の処理をしてませんでした、申し訳無いです…
というかコメントで引数の意味を書いとけば良かったですね、すいません、直しときます
携帯からなんで↑のプログラムが変になってたらすいません


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

Name: あ〜る  ..中級者(13,773ポイント)   Date: 2009/10/07(水) 22:17   No:40123     
Title: Re:ボスの溜め動作について    
ありゃ、被ったorz
iは意味無いですね、癖で使うかもしれない変数を最初に宣言して掲示板に書く時に消すの忘れてました
描画され無い事についてはよくわかりませんが、ロードが上手く出来てない、若しくはハンドルが間違ってたりはしませんか?


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

Name: あ〜る  ..中級者(13,816ポイント)   Date: 2009/10/07(水) 22:36   No:40127     
Title: Re:ボスの溜め動作について    
あ、あとサンプル弾幕の関数でenter_charge関数を呼んでいるところの記述は合ってますか?

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

Name: ももた  ..中級者(13,304ポイント)   Date: 2009/10/07(水) 22:40   No:40128     
Title: Re:ボスの溜め動作について    
間違ってないです・・
ちょっと聞きたいのですが、あ〜るさんは
effect[k].eff=0;のとき
graph.cpp内のvoid graph_effectの中はどうなっているのでしょうか?


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

Name: あ〜る  ..中級者(13,837ポイント)   Date: 2009/10/07(水) 22:42   No:40129     
Title: Re:ボスの溜め動作について    
ここは何にも弄ってないんで、龍神録の館の通りです

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

Name: ももた  ..中級者(13,258ポイント)   Date: 2009/10/07(水) 22:49   No:40130     
Title: Re:ボスの溜め動作について    
そうですか。あとは念のため聞きたいのですが
void boss_shot_bulletH020()についてですが
これはeffect.cpp内に記述するのではなく
boss_shotH.cpp内に記述するんですよね?


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

Name: あ〜る  ..中級者(13,919ポイント)   Date: 2009/10/07(水) 22:59   No:40133     
Title: Re:ボスの溜め動作について    
はい、そうです
エフェクトが描画されないだけで、弾の方は描画されるんですよね?


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

Name: 127  ..ぴよぴよ(20ポイント)   Date: 2009/10/07(水) 23:03   No:40134     
Title: Re:ボスの溜め動作について    
自分は弾は描画されますが、エフェが描画されないです。
ソースコードはあ〜るさんが修正した後のものと同じです。


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

Name: あ〜る  ..中級者(13,983ポイント)   Date: 2009/10/07(水) 23:04   No:40135     
Title: Re:ボスの溜め動作について    
あと、enter_charge関数の中で、printfDxで何か文字を書くとかして、enter_charge関数が呼ばれているかどうかも調べてみて下さい

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

Name: ももた  ..中級者(13,684ポイント)   Date: 2009/10/07(水) 23:08   No:40136     
Title: Re:ボスの溜め動作について    
そうです。
修正したのはあと、enter_charge()内の
if(boss_shot_cnt%3==0){//3カウントに一個
の部分ですがboss_shot_cntは定義してなかったので
boss_shot.cntに直したくらいです。
念のためse_flag[14]=1;//キュイーン音を
追加してみましたところ、ボスが弾幕発射するとき、
音は鳴りましたので、描画だけ何かおかしいと・・


//溜めエフェクト登録
void enter_charge(){
int k;
if(boss_shot.cnt%3==0){//3カウントに一個
if((k=search_effect())!=-1){
effect[k].flag=1;
effect[k].x=boss.x+random_pos(0);
effect[k].y=boss.y+random_pos(1);
effect[k].cnt=0;
effect[k].knd=5;
effect[k].brt=255;
effect[k].spd=0;
effect[k].r=1.5;//最初は少し大きめに描画
effect[k].img=img_eff_bom[0];
effect[k].eff=0;
se_flag[14]=1;//キュイーン音
}
}
}


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

Name: あ〜る  ..中級者(14,060ポイント)   Date: 2009/10/07(水) 23:13   No:40137     
Title: Re:ボスの溜め動作について    
わかりました!
多分、graph_mainにgraph_effect(5)を書いてないと思います
これを適当な場所に書けば描画されると思います
追加に書き忘れてました、本当に申し訳無いです…


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

Name: 127  ..ぴよぴよ(62ポイント)   Date: 2009/10/07(水) 23:19   No:40138     
Title: Re:ボスの溜め動作について    
無事描画されました。
あ〜るさん本当にありがとうございます。
すげえクオリティで驚きです。


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

Name: ももた  ..中級者(13,727ポイント)   Date: 2009/10/07(水) 23:19   No:40139     
Title: Re:ボスの溜め動作について    
描画されました。
ありがとうございます。
ボスの中心に向かうようにすれば完璧ですね。


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

Name: あ〜る  ..中級者(14,119ポイント)   Date: 2009/10/07(水) 23:22   No:40140     
Title: Re:ボスの溜め動作について    
迷惑掛けて本当に申し訳無いです;;

>>中心に向かえば完璧
ちゃんと中心に向かうようになってる筈ですが……?


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

Name: あ〜る  ..中級者(14,180ポイント)   Date: 2009/10/07(水) 23:34   No:40141     
Title: Re:ボスの溜め動作について    
さっきももたさんが載っけたコードの中で倍率を弄っるみたいなんで、case文の中にあるだんだん小さくする値を変えるか、速さを変えないと、ボスの中心座標に辿り着く前に消えちゃうと思います

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

Name: ももた  ..中級者(13,807ポイント)   Date: 2009/10/07(水) 23:38   No:40142     
Title: Re:ボスの溜め動作について    
すみません。よくみたら中心に向かってました。
ありがとうございます。
ただ、一つ気になったのですが
ボスの中心の"周り"に集まって消えるのですが、
これを
完璧にボスの座標中心に集まってから消えるようにする方法とかないでしょうか?


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

Name: ももた  ..中級者(13,746ポイント)   Date: 2009/10/08(木) 00:00   No:40145     
Title: Re:ボスの溜め動作について    
effect[i].x-=((effect[i].x-boss.x)/40);
effect[i].y-=((effect[i].y-boss.y)/40);
の40の値を小さくしたらいけました!
ほんとあ〜るさんに感謝です。
ありがとうございました!


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

Name: あ〜る  ..中級者(14,274ポイント)   Date: 2009/10/08(木) 00:26   No:40147     
Title: Re:ボスの溜め動作について    
喜んで貰えてなによりです(^-^)
僕のミスで無駄な時間を使わせてしまってほんと申し訳無いです
僕も今回色々と自分のプログラムの粗いところがわかりました…
これからも精進していくんでお互い頑張りましょう!


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

Name: 羽流布   Date: 2009/10/13(火) 15:20   No:398781255414843     
Title: Re:ボスの溜め動作について    
ためさせてもらったのですが、これはすごいですね。驚きました!
これを利用してボスが死ぬエフェクトとかって作れないでしょうか?




Name: くりあ  ..ぴよぴよ(253ポイント)   Date: 2009/09/11(金) 23:53   No:39124       
Title: 2次元配列について    
これでいいのですかね……。プログラミングも初心者で……
書き込みとか初めてでよくわからないのですが、間違ったりしていたらすいません。
あの、とりあえずテキストファイルから文字を読み込みたいんですけど、
charを二次元配列にして、
fgets (mozi[a][b],50,fp)
の、ようなことをしたいのですが、出来ないようで……
これを実現するにはどうしたらいいのでしょうか?
要領を得ない質問で本当に申し訳ありません。

あと、できたら、もう1つ質問なのですが、fgetsって、上から順に1行ずつ読み込んでいくと
思っているのですが、どの行をも見込むのとか、自分で指定出来るんですかね?
今8行目を本当だったら読み込むけど、3行目を読み込むようにするとか。


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


Name: mnkr  ..かけだし(1,152ポイント)   Date: 2009/09/12(土) 01:00   No:39126     
Title: Re:2次元配列について    
あまり詳しくありませんが、
fgetsって、上から順に1行ずつ読み込んでいくもので大体あっていると思います。
(読み込むのは改行毎か、指定文字数か、です。指定文字数を大きくすれば改行毎になるかと。)

新しくsiteiというような変数を作り、
ループにfgets処理を記入し、
siteiが処理したい行と同じ数までカウントされたらfgets処理を行うようにすれば良いのかな。。。

>今8行目を本当だったら読み込むけど、3行目を読み込むようにするとか。
1行目→2行目→3行目→・・・・→6行目→7行目→3行目
というふうに読み込みたいのでしょうか。。。


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

Name: box  ..ハッカー(143,498ポイント)   Date: 2009/09/12(土) 07:18   No:39131     
Title: Re:2次元配列について    
> charを二次元配列にして、
> fgets (mozi[a][b],50,fp)
> の、ようなことをしたいのですが、出来ないようで……

まずは、起きていることを正確に伝えることから始めましょう。

できないとは、何ができないのでしょうか?
コンパイルができないのですか? 実行時に思った結果が得られないのですか?

何かメッセージが出ているのでしたら、
 ・何をしたときに
 ・どんなメッセージが出たか
を、ソースコード全体とともに載せてください。


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

Name: くりあ  ..ぴよぴよ(876ポイント)   Date: 2009/09/12(土) 13:09   No:39139     
Title: Re:2次元配列について    
返事が遅れてしまいすいません。
お応えしていただいてありがとうございました。
boxさん、ご指摘ありがとうございました。
申し訳ありませんでした。出来るだけ正確に伝えられるように努力します。
あまり文才がないもので。


#include "stdafx.h"
#include <stdlib.h>

int _tmain(int argc, _TCHAR* argv[])
{
int i;
FILE *fp;
char mozi[50][8];
fp=fopen("tesuto.txt","r");
if (fp == NULL){
printf("ファイルオープンエラー\n");
exit(1);
}

for (i=0;i<8;i++){
fgets (mozi[50][8],50,fp);
printf("%s",mozi[50][8]);
}

fclose(fp);
return 0;
}




これを実行すると、

'fopen' の宣言を確認してください。
error C2664: 'fgets' : 1 番目の引数を 'char' から 'char *' に変換できません。
整数型からポインタ型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。

とエラーが出て来ます。

関数に二次元配列は渡せない?と調べたら書いてあったのですが。
その記事を読んでも理解できなかったので投稿しました。

mnkrさん回答ありがとうございます。
はい、そのような感じで読み込みたいのです。
ということは、いったん7行目まで読み込んだら、
どこまで読み込んだかをリセットしないといけないのでしょうか?
そうならば、どうやってリセットすればいいのでしょうか?

相変わらず読みにくい文章で申し訳ありません。







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

Name: バグ  ..ハッカー(170,423ポイント)   Date: 2009/09/12(土) 13:26   No:39140     
Title: Re:2次元配列について    
fopenを使用するにはstdio.hをインクルードする必要があったような…

#include <stdio.h>

を先頭の行に追加してみてください。


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

Name: mnkr  ..かけだし(1,350ポイント)   Date: 2009/09/12(土) 14:05   No:39141     
Title: Re:2次元配列について    
ファイルの読み込み方ですが、
一度適当な配列にファイルの中身を全部読み込んで、

for (i=0;i<8;i++){
if (i == 7){ //8行目になったら、3行目に戻す
i = 2;
}
printf("%s",yomikomi[i];);
}

とすると無限ループになっちゃいますね。。。
読み込むのは
1〜7、3〜7、3〜7・・・・という繰り返しでよかったのでしょうか。。。


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

Name: くりあ  ..かけだし(1,248ポイント)   Date: 2009/09/12(土) 14:25   No:39142     
Title: Re:2次元配列について    
バグさん、mnkrさん、回答ありがとうございます。

ファイルルオープンは、いちおできているようです。charを、
通常?の1次元配列にしてみると、警告は出ますが、いちお開いて文字が出力されました。

fgetsをリセットッしたりする方法はやはりないのでしょうか?

これでやりたいことは、ゲームのセリフをテキストから読み込んで画面に表示してみたいのです。
先ほどは、テストで、char mozi[50][8]と書きましたが、メッセージボックスに表示したいのです。
メッセージボックスが4行分なので、[8]のところを[4]もして4行、
文を読み込んで、表示、読み込んで、表示、ということをしたいのです。
あと、表示させるところは、別の関数?サブルーチン?を作ってそこに読み込んだものを渡したいのですが、
可能でしょうか?

これより効率のいいものもたくさんあると思うですが、今はこれで行こうと思っています。
ですが、もしあるのであれば、教えてくださると助かります。

お早い返事ありがとうございました。


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

Name: くりあ  ..かけだし(1,423ポイント)   Date: 2009/09/21(月) 01:26   No:39420     
Title: Re:2次元配列について    
連続ですいません。
上に書いたのは何となく解決したのですが、
char tesuto[28]をつくってそれをポインタのtesutopにしてfgets(tesutop,28,fp)
でテキストファイルから文字列を読み込んだのですが、
「ああああああああああああああああああああ」という文を読み込んで
出力すると
「ああああああああああああああ・
・ああああああ」
と、途中に改行が入ってその両脇が「・」
になってしまっているようです。
どういった理由が考えられるのでしょうか?




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

Name: ねこ  ..熟練のプログラマー(42,083ポイント)   Date: 2009/09/21(月) 08:59   No:39422     
Title: Re:2次元配列について    
二次元配列の添え字が逆です。
char mozi[4][50];


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

Name: non  ..熟練のプログラマー(62,705ポイント)   Date: 2009/09/21(月) 09:15   No:39423     
Title: Re:2次元配列について    
推測ですが、
27バイト目は、'あ'の1バイト目ですので、1バイト目まで読み込まれたあとに、'\0'が
2バイト目に書き込まれた。出力の時、27バイト目+28バイトが'・’と表示されたと
考えたいのですが、「ああああああああああああああ・ 」では、'あ'が1個多いですね。

試しにchar tesuto[29]; にして、fgets(tesutop,29,fp) にしたときの結果を知らせて下さい。
それから、コンパイラは何でしょうか?
それに、改行された後に「・ああああああ」が出力される理由もこのままではわかりません。
fgetsは1回しかしていないのは間違いないですか?whileで回してませんか?



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

Name: トントン  ..ぴよぴよ(312ポイント)   Date: 2009/09/21(月) 23:32   No:39448     
Title: Re:2次元配列について    
はじめまして、横からスイマセン。
「ああああああああああああああああああああ」
を読み込んだプログラムは、
結果をどうしたいのか、どのようなプログラムでそうなったのかがわからないので
答えられませんがその前のプログラムの方を答えてみようと思います。
解決していたらスイマセン。

>'fopen' の宣言を確認してください。
これは、古いプログラムだから出ると聞いたことがあります。
たしか、代わりのものがあったような…。
とりあえず、これは気にしなくて良かったかと。

>1 番目の引数を 'char' から 'char *' に変換できません
そのままの意味でポインタとして渡されていないからではないでしょうか。
mozi[50][8] だとアドレスではなく中身を渡してるせいだと思います。
あと…、mozi[50][8]って何気に配列の限界を超えて指定してますよね…。
これは危険なのでは…。

fgetsの読み込む文字数は、1行分の文字数だと思うので指定する範囲は8だと思います。

printfの%sは文字列を表示なはずなので、文字を表したい時は%cですね。
文字列を表示させるならmozi[x][y]だと不味いですね。


2次元配列で文字列表示が出来るならfgetsへの渡し方もできると思います。
説明へたくそでスイマセン。


僕自身も、大して詳しくないので間違っていたら指摘お願いします。


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

Name: くりあ  ..かけだし(1,261ポイント)   Date: 2009/09/22(火) 18:38   No:39473     
Title: Re:2次元配列について    
返事が遅れて申し訳ありません。
ちょっと頭がこんがらがってよく分からないこともあるのですが、
頑張ってみます。コンパイラ?は、Microsoft Visual C++ 2008 Express Editionを使っています。
書いていなくて申し訳ありませんでした。

ねこさん
添え字が逆ですか、すいません。
文字が50個入る物を、8個作りたいときは、
mozi [4][50] でしょうか?先に何個作るかを指定して、文字数を決めるということでしょうか?

nonさん
27バイト目とかよくわからないんですが、「あ」の数間違えてました。すいません。
whileで回してます……29で実行してみると、改行はされましたが、「・」は消えました。
「・」と改行が入らないようにするにはどのようにしたらいいのでしょうか?

トントンさん
とりあえず、ポインタにすればいいのでしょうか?
ポインタもよくわかっていなくて、すいません。
ポインタって、読み込むもとと、読み込む2つの変数の型を、一緒にしないといけないのですかね?
char mozi[5]
char *mozip=&mozi[5]
こうしないといけないんですけね?

本当にぐちゃぐちゃで申し訳ありません。



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

Name: non  ..熟練のプログラマー(63,088ポイント)   Date: 2009/09/22(火) 19:42   No:39477     
Title: Re:2次元配列について    
>nonさん
>27バイト目とかよくわからないんですが、「あ」の数間違えてました。すいません。
>whileで回してます……29で実行してみると、改行はされましたが、「・」は消えました。
>「・」と改行が入らないようにするにはどのようにしたらいいのでしょうか?

そうですか。それなら、私の推論通りだったということですね。
通常全角文字は2バイトです。fgetsで指定した文字数より、ファイルの1行の文字数が
長い場合は、指定文字数-1バイト読み込まれて、最後に'\0'が格納されます。
ですから、fgets(tesutop,28,fp) では、27バイト読み込まれます。すると、'あ'の
1バイト目まで読み込まれて、2バイト目は読み込まれないため、「・」が表示された
わけです。
また、次の行に「・ああああああ」と表示されたのは2回目のfgetsで先ほどの続きから
読み込まれたせいです。改行は恐らく、プログラムで自分でしていると思います。
プログラムを見ないとなんとも言えません。

さて、解決策ですが、1行に充分なだけの配列を用意して、(例えば81とか)fgetsも
fgets(tesutop,81,fp)のようにして、行の途中まで読むようなことをしないことです。
ファイルも細かく改行して80文字を越えないように作っておきます。



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

Name: conio [URL]  ..熟練のプログラマー(49,029ポイント)   Date: 2009/09/22(火) 20:52   No:39485     
Title: Re:2次元配列について    

>>文字が50個入る物を、8個作りたいときは、
>>mozi [4][50] でしょうか?先に何個作るかを指定して、文字数を決めるということでしょうか?
何故、8個 作りたいのに添え字が4なのでしょうか?
8個作りたいのであれば mozi[8][50]です。

ついでに、mozi[4][6]に
"abcde"
"fghij"
"klmno"
"pqrst"

の、4つの文字列を入れた場合は下記の様になります。
-----------------------------------------------------------------------------
mozi[0][0] = 'a' mozi[1][0] = 'f' mozi[2][0] = 'k' mozi[3][0] = 'p'
mozi[0][1] = 'b' mozi[1][1] = 'g' mozi[2][1] = 'l' mozi[3][1] = 'q'
mozi[0][2] = 'c' mozi[1][2] = 'h' mozi[2][2] = 'm' mozi[3][2] = 'r'
mozi[0][3] = 'd' mozi[1][3] = 'i' mozi[2][3] = 'n' mozi[3][3] = 's'
mozi[0][4] = 'e' mozi[1][4] = 'j' mozi[2][4] = 'o' mozi[3][4] = 't'
mozi[0][5] = '\0' mozi[1][5] = '\0' mozi[2][5] = '\0' mozi[3][5] = '\0'
-----------------------------------------------------------------------------

左側の添え字が、文字列の種類 (4種類)
右側の添え字が、文字列の最大文字数(6文字)になってます。
※ナル文字も必要なので、上記の場合 実際に入れられる数は5文字までになります。

それと、文字列を表示させたい場合は下記の様にします。
--------------------------------------------------------------------
#include<stdio.h>
int main(void)
{
char str[5][10] = {"ringo","mikan","nasi","meron","suika"};

printf("%s\n", str[0]); //ringo
printf("%s\n", str[1]); //mikan
printf("%s\n", str[2]); //nasi
printf("%s\n", str[3]); //meron
printf("%s\n", str[4]); //suika

return(0);
}
--------------------------------------------------------------------


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

Name: くりあ  ..かけだし(1,504ポイント)   Date: 2009/09/23(水) 01:33   No:39519     
Title: Re:2次元配列について    
質問に答えていただいてありとうございます。

nonさん
20個「あ」を表示させたいのならば、最低41個の配列を作ればいいのでしょう?
あの、テキストファイルなどから読み込む場合、最後が改行されていたら、
やっぱり、改行も1文字文で代入されるのでしょうか?
読み込んだものをDXライブラリのDrawStringで画面に表示すると、文章の最後に点が打たれるのですが、
これも消したいのですが・・・

conioさん
丁寧な回答ありがとうございました。4はミスです。すいませんでした。
三次元の配列を作る場合は、真中に添え字を書き足せばいいのでしょうか?


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

Name: conio [URL]  ..熟練のプログラマー(49,795ポイント)   Date: 2009/09/24(木) 00:25   No:39559     
Title: Re:2次元配列について    

>>丁寧な回答ありがとうございました。4はミスです。すいませんでした。
>>三次元の配列を作る場合は、真中に添え字を書き足せばいいのでしょうか?

真ん中とか、左とか関係なく、3つ並んでいれば3次元配列になります。

--------------------------------------
mozi[3][3] //2次元配列

mozi[3][3][5] //3次元配列
mozi[3][5][3] //3次元配列
mozi[5][3][3] //3次元配列
--------------------------------------
ただ、配列の構造がそれぞれ違うので、文字を入れたりする時は注意したほうが良いと思います。
まぁ、普通は2次元配列で問題ないと思います。

例えば表示する文字列を8種類から 20種類に変更したい場合は、下記の様にすれば事足りるでしょう。
--------------
mozi[8][50]

mozi[20][50]
--------------


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

Name: くりあ  ..かけだし(1,813ポイント)   Date: 2009/09/26(土) 04:26   No:39622     
Title: Re:2次元配列について    
conioさん回答ありがとうございました。
文字列の配列の時は、文字の長さにあたる部分は常に一番右に来ると思っていいのですね。

2次元配列と関係のない話なのですが、
Microsoft Visual C++ 2008 Express Editionと、DXライブラリを使っているのですが、
ウィンドウの左上のアイコンを変えてみようかと思い、DXライブラリのリファレンスページに

ミニテクコーナーの一連の作業を行った場合、VisualC++ はプロジェクトの フォルダに勝手に『resource.h』というヘッダファイルを作成します。

と書いてあるのですが、一連の作業と書いてあることは、普通にできたのですが、
『resource.h』というヘッダファイルが生成されません。リファレンスページには、
このファイルが出来ている事前提で書かれているのでどうしていいのか分かりません。
どなたか分かる方がいらっしゃいましたら、教えてください。


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

Name: Tatu  ..中級者(9,965ポイント)   Date: 2009/09/26(土) 08:33   No:39623     
Title: Re:2次元配列について    
私が使っているのもMicrosoft Visual C++ 2008 EEですが、
resource.hは生成されませんでした。
そこで、リファレンスページに書かれていたBorland C++の場合での
やり方を試してみたらうまくいきました。


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

Name: くりあ  ..かけだし(1,834ポイント)   Date: 2009/09/26(土) 12:28   No:39629     
Title: Re:2次元配列について    
Tatuさん
成功しました。ありがとうございました。


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

Name: くりあ  ..かけだし(1,997ポイント)   Date: 2009/09/30(水) 01:25   No:39764     
Title: Re:2次元配列について    
また、2次元配列と関係ない事なんですが、
よくPCゲームとかやると、マウスのアイコン?の絵が変わったりするじゃないですが、
あれってどうやってるんですかね?
実際に変えてるわけじゃなくて、マウスの座標だけ取得してマウスのアイコンは非表示にして、
こちら側で用意したアイコンをその場所に置き換えて表示してるんですかね?


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

Name: くりあ  ..かけだし(2,066ポイント)   Date: 2009/10/07(水) 16:48   No:40106 解決!     
Title: Re:2次元配列について    
話が、タイトルと食い違いすぎているので、
また、後日マウス操作関係の所作ろうと思います。
ここまで答えて下さった方、ありがとうございました。


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



Name: Dixq (管理人)  ..ウィザード(1,062,894ポイント)   Date: 2009/10/05(月) 22:01   No:40024       
Title: サーバーがダウンしている件で    
現在HPがアクセス出来なくなっています。
これはニコニコからの大量のアクセスがあったため制限がかかってしまったようです。
現在サーバー管理会社と連絡は取れず、昼は私が不在の為、すぐに復旧が出来るかわかりません。
ご不便をおかけし、申し訳ありません。
今暫くお待ち下さい。


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


Name: あ〜る  ..中級者(12,632ポイント)   Date: 2009/10/05(月) 22:16   No:40025     
Title: Re:サーバーがダウンしている件で    
あっ、やっぱですか
まぁあれだけのクオリティのゲームがフリーで公開されてたらそりゃ殺到しますよね(笑)
僕のパソコンが壊れてないってわかって安心しました
頑張り過ぎない程度に復旧頑張って下さい(^-^)


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

Name: たかぎ [URL]  ..ハッカー(111,996ポイント)   Date: 2009/10/05(月) 23:41   No:40028     
Title: Re:サーバーがダウンしている件で    
まあ、仕方ないですね。
値段相応ということです。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,063,101ポイント)   Date: 2009/10/06(火) 20:49   No:40061     
Title: Re:サーバーがダウンしている件で    
アクセスすら出来なくなるんですね〜。
時々0になったり何故かカウンターの動きも変だし・・;
まぁこの値段でこれだけのサービス受けてるんだからしょうがないですよね^^;

ただせっかく見ていただけている肝心な時にHPが表示できないというのも、う〜ん・・・。


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

Name: ねこ  ..熟練のプログラマー(44,313ポイント)   Date: 2009/10/06(火) 21:01   No:40063     
Title: Re:サーバーがダウンしている件で    
ニコ動のランキングにも居るレベルですから、レンタル鯖にてミラーアップをして負荷分散してみてはどうでしょうか?

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

Name: a  ..かけだし(1,073ポイント)   Date: 2009/10/06(火) 21:26   No:40065     
Title: Re:サーバーがダウンしている件で    
メールフォームからも送ってみたけど、うちでよければAerobeatのミラーなるよー

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

Name: Dixq (管理人) [URL]  ..ウィザード(1,065,293ポイント)   Date: 2009/10/06(火) 22:22   No:40069     
Title: Re:サーバーがダウンしている件で    
>>ねこさん

ありがとうございます^^
途中そう思ったのですが、以前龍神録の時、新たにサーバーを借りるとまたそちらもすぐ落ちてしまったんですよね;
今回はビットマップ!・・・とかいろいろ直さなければならないこともあり;
修正してアップしなおそうと思います^^;

>>aさん

ありがとうございます。
今メールの方拝見いたしました。
お申し出感謝いたします。
何とかうちで対処出来るように努力したいと思います。
ありがたいお言葉本当に感謝致します。


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

Name: a  ..かけだし(1,084ポイント)   Date: 2009/10/06(火) 22:46   No:40072     
Title: Re:サーバーがダウンしている件で    
了解です。早めの公開おまちしますー

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




 
[ 1 , ... ]
 
 
管理者画面   RSS   + Powered By 21style +