C言語何でも質問掲示板


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

 
   シューティングゲーム ....   
     ・[32704] チルチル 
     ・[32707] Dixq (管理人) 
     ・[32709] ひよこ 
     ・[32715] situmon 
     ・[32718] チルチル 
     ・[32721] situmon 
     ・[32726] Mikan 
     ・[32727] 叉奈 
     ・[32729] situmon 
     ・[32730] じゃが 
     ・[32733] チルチル 
     ・[32737] BEMANI 
     ・[32744] situmon 
     ・[32748] situmon 
     ・[32757] situmon 
   背景の素材が・・   
     ・[32667] Dixq (管理人) 
     ・[32672] 匿名 
     ・[32673] Dixq (管理人) 
     ・[32676] 匿名 
     ・[32679] yu 
     ・[32680] 匿名 
     ・[32682] yu 
     ・[32685] 匿名 
     ・[32690] Dixq (管理人) 
     ・[32693] 匿名 
     ・[32694] 匿名 
     ・[32695] Dixq (管理人) 
     ・[32696] 匿名 
     ・[32697] Dixq (管理人) 
     ・[32698] チルチル 
     ・[32703] チルチル 
     ・[32706] Dixq (管理人) 
     ・[32717] チルチル 
     ・[32745] Dixq (管理人) 
     ・[32747] チルチル 
     ・[32749] Dixq (管理人) 
     ・[32750] チルチル 
     ・[32751] チルチル 
     ・[32753] Dixq (管理人) 
     ・[32754] チルチル 
   描画順について   
     ・[32554] SooA 
     ・[32597] クロウ 
     ・[32602] SooA 
     ・[32603] SooA 
     ・[32746] クロウ 
   自作STG作ってみま ....   
     ・[32591] situmon 
     ・[32604] ひよこ 
     ・[32606] バグ 
     ・[32609] Mato 
     ・[32630] bitter_orange 
     ・[32650] ひよこ 
     ・[32658] 叉奈 
     ・[32662] dic 
     ・[32669] Dixq (管理人) 
     ・[32671] ひよこ 
     ・[32674] じゃが 
     ・[32675] BEMANI 
     ・[32686] 烏 
     ・[32688] ひよこ 
     ・[32692] 烏 
     ・[32700] situmon 
     ・[32701] situmon 
     ・[32705] ひよこ 
     ・[32716] situmon 
     ・[32728] Mikan 
     ・[32736] チルチル 
     ・[32743] ひよこ 
   無題   
     ・[32711] pooka 
     ・[32713] yuki 
     ・[32714] あ〜る 
     ・[32719] yuki 
     ・[32722] pooka 
     ・[32724] toga 
     ・[32738] yuki 
   ポインタ   
     ・[32576] 初級者 
     ・[32578] 研修生 
     ・[32579] ouh 
     ・[32580] Mist 
     ・[32581] 研修生 
     ・[32582] ouh 
     ・[32583] 研修生 
     ・[32584] Mist 
     ・[32585] 研修生 
     ・[32586] ouh 
     ・[32588] 草なぎ剛容疑者 
     ・[32731] Naohiro19 
   配列とポインタ   
     ・[32652] 初級者 
     ・[32653] march3 
     ・[32665] dic 
     ・[32668] box 
     ・[32689] dic 
   リストについて   
     ・[32607] Hermit 
     ・[32677] hamanov 
   教えてください   
     ・[32639] バグ 
     ・[32641] OA 
     ・[32642] 御津凪 
     ・[32644] 御津凪 
     ・[32645] たかぎ 
     ・[32646] バグ 
     ・[32647] たかぎ 
     ・[32649] たかぎ 
   strcmp   
     ・[32627] バグ 
     ・[32628] 研修生 
     ・[32629] 研修生 
     ・[32631] バグ 
     ・[32632] たかぎ 
     ・[32633] バグ 
     ・[32634] バグ 
     ・[32636] Hermit 
     ・[32640] 研修生 
     ・[32643] たかぎ 
   scanfについて   
     ・[32618] バグ 
     ・[32619] march3 
     ・[32621] バグ 
     ・[32622] toyo 
     ・[32623] bitter_orange 
     ・[32624] バグ 
     ・[32626] march3 
     ・[32637] toyo 
   環境が変わると動きま ....   
     ・[32547] Justy 
     ・[32553] box 
     ・[32555] toyo 
     ・[32568] io 
     ・[32571] 御津凪 
     ・[32577] 初級者 
     ・[32590] Justy 
     ・[32620] io 
   strcpy   
     ・[32611] バグ 
     ・[32612] 研修生 
     ・[32613] 研修生 
     ・[32614] バグ 
     ・[32615] 初級者 
     ・[32616] 研修生 
   無題   
     ・[32608] 御津凪 
   弾の形成の補完?   
     ・[32560] SooA 
     ・[32564] Ma 
     ・[32567] 御津凪 
     ・[32589] yu 
     ・[32600] Ma 
   タイトル画面の選択肢 ....   
     ・[32522] pooka 
     ・[32599] hamanov 
   アシストを動かす式   
     ・[32383] situmon 
     ・[32384] pooka 
     ・[32387] 匿名 
     ・[32444] situmon 
     ・[32445] kazuoni 
     ・[32446] 匿名 
     ・[32447] situmon 
     ・[32448] situmon 
     ・[32463] 木霊 
     ・[32500] 匿名 
     ・[32506] Tatu 
     ・[32515] 匿名 
     ・[32592] situmon 
     ・[32596] 匿名 
   弾の画像の書き方2   
     ・[32344] SooA 
     ・[32345] situmon 
     ・[32346] SooA 
     ・[32348] situmon 
     ・[32350] 御津凪 
     ・[32353] BEMANI 
     ・[32355] 御津凪 
     ・[32381] situmon 
     ・[32407] めいらる 
     ・[32413] situmon 
     ・[32415] s-rush 
     ・[32420] めいらる 
     ・[32438] situmon 
     ・[32441] あ〜る 
     ・[32442] SooA 
     ・[32443] situmon 
     ・[32593] situmon 
   OSについて   
     ・[32531] たかぎ 
     ・[32549] 初心者 
     ・[32556] たかぎ 
     ・[32573] 初心者 
   C言語での文字列につい ....   
     ・[32563] Mist 
     ・[32565] 御津凪 
     ・[32566] march3 
     ・[32569] 御津凪 
     ・[32570] hoge 
     ・[32572] march3 
   C言語での文字列につい ....   
     ・[32558] たかぎ 
     ・[32561] march3 
   メインCCPについて   
     ・[32513] Kou 
     ・[32517] さといも 
     ・[32541] Kou 
     ・[32545] さといも 
   【雑談】 バレーゲー ....   
     ・[32186] SooA 
     ・[32190] Mikan 
     ・[32193] kerotan0820 
     ・[32194] Mikan 
     ・[32195] ひよこ 
     ・[32196] kerotan0820 
     ・[32203] dic 
     ・[32204] SooA 
     ・[32211] Mikan 
     ・[32270] 叉奈 
     ・[32271] kazuoni 
     ・[32290] Mikan 
     ・[32298] バグ 
     ・[32300] Mikan 
     ・[32403] こめかみ 
     ・[32405] Mikan 
     ・[32419] 叉奈 
     ・[32421] 叉奈 
     ・[32429] TKOZ 
     ・[32461] Mikan 
     ・[32467] yu 
     ・[32470] Mikan 
     ・[32542] Mikan 
     ・[32543] バグ 
     ・[32544] Mikan 
   constオブジェクト   
     ・[32536] 御津凪 
     ・[32538] 研修生 
     ・[32539] 研修生 
     ・[32540] 研修生 
   グラディウスのアシス ....   
     ・[32534] 御津凪 
     ・[32537] Huzzy 
   ソースの書き換え   
     ・[32523] yu 
     ・[32526] 芽衣子 
     ・[32527] yu 
     ・[32528] 芽衣子 
   C言語のプログラミング ....   
     ・[32510] バグ 
     ・[32514] non 
     ・[32516] たいちう 
     ・[32521] 通りすがり 
     ・[32524] たいちう 
     ・[32525] たいちう 
   壊れてる   
     ・[32505] hss12 
     ・[32511] NoName 
   タイトル画面について ....   
     ・[32454] ひよこ 
     ・[32455] array 
     ・[32464] 氷水華 
     ・[32465] SooA 
     ・[32466] SooA 
     ・[32486] 氷水華 
     ・[32494] 御津凪 
     ・[32502] 氷水華 
     ・[32507] 御津凪 
     ・[32508] 氷水華 
   リンカツールエラー   
     ・[32469] SooA 
     ・[32503] yoichineji 
   アリゴリズムの参照渡 ....   
     ・[32473] Blue 
     ・[32474] hss12 
     ・[32475] BEMANI 
     ・[32476] hss12 
     ・[32483] mossa 
     ・[32484] Blue 
     ・[32501] 初級者 
   関数に渡す引数で   
     ・[32487] Mist 
     ・[32488] バグ 
     ・[32489] Kou 
     ・[32490] Mist 
     ・[32492] Mist 
     ・[32493] Mist 
     ・[32495] バグ 
     ・[32497] バグ 
     ・[32498] toyo 
     ・[32499] Kou 
   無限ループ?   
     ・[32496] ざこ 
   無題   
     ・[32479] 御津凪 
     ・[32480] ひで 
     ・[32481] ひで 
     ・[32482] 御津凪 
   文字の扱いについて   
     ・[32434] kazuoni 
     ・[32435] lbfuvab 
     ・[32436] SooA 
     ・[32437] あ 
     ・[32439] kazuoni 
     ・[32440] バグ 
     ・[32451] スレ主です 
     ・[32452] スレ主です 
     ・[32453] array 
     ・[32456] スレ主です 
     ・[32457] バグ 
     ・[32458] kazuoni 
     ・[32459] kazuoni 
     ・[32460] Mist 
     ・[32462] kazuoni 
     ・[32471] バグ 
   画像の作り方   
     ・[32426] BEMANI 
     ・[32428] TKOZ 
     ・[32449] yuki 
   無題   
     ・[32392] SooA 
     ・[32395] kazuoni 
     ・[32430] ウサギ 
     ・[32432] SooA 
     ・[32433] kazuoni 
   3Dエンジン作成につい ....   
     ・[32427] TKOZ 
   敵キャラが動かない   
     ・[32424] yu 
     ・[32425] shalot 
   スクリーンセーバーの ....   
     ・[32401] スー 
     ・[32417] スー 
     ・[32418] スー 
   ジャンプ中の変化(慣 ....   
     ・[32394] SooA 
     ・[32396] バグ 
     ・[32409] ひよこ 
     ・[32412] sood 
     ・[32414] SooA 
   レバーコントロール上 ....   
   PSP起動方法!!   
     ・[32406] Ma 
     ・[32410] toyo 
   csvファイルの読み込み ....   
     ・[32221] non 
     ・[32223] kazuoni 
     ・[32225] box 
     ・[32227] ラジオ 
     ・[32297] ラジオ 
     ・[32315] kazuoni 
     ・[32318] たかぎ 
     ・[32328] non 
     ・[32357] ラジオ 
     ・[32366] たかぎ 
     ・[32368] non 
     ・[32369] toyo 
     ・[32370] non 
     ・[32373] たかぎ 
     ・[32393] ラジオ 
     ・[32398] kazuoni 
     ・[32399] SooA 
   無題   
     ・[32391] SooA 
   無題   
   POCOのビルドでC2664エ ....   
     ・[32250] Justy 
     ・[32292] tkmakwins15 
     ・[32307] Justy 
     ・[32347] tkmakwins15 
     ・[32360] Justy 
     ・[32389] tkmakwins15 
   コンパイルについて。   
     ・[32285] box 
     ・[32339] 若名 
     ・[32343] toyo 
     ・[32352] Justy 
     ・[32377] 若名 
     ・[32378] 若名 
     ・[32379] 若名 

Name: situmon  ..上級者(24,525ポイント)   Date: 2009/04/25(土) 14:29   No:32699       
Title: シューティングゲームを作りました!    
シューティングの館のゲームコードを利用して
シューティングゲームを作りました。
下からダウンロードできます!
やってくれたり感想をくれるだけで本当にうれしいです!
PASSはsitumonです!

http://down11.ddo.jp/uploader/download/1240661157/attach/%E5%B1%B1%E5%B2%B3%E9%81%8A%E6%AD%A9%E9%81%93%20ver%201.01.zip

よろしくお願いします。


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


Name: チルチル  ..ぴよぴよ(705ポイント)   Date: 2009/04/25(土) 15:28   No:32704     
Title: Re:シューティングゲームを作りました!    
situmonさんは方程式が好きなんですか?

プレイしてみましたが、素材が全体的に同じ雰囲気でまとまっていていいと思います。

ちなみに弾が空中で消えるのと弾が進行方向を向いていないのは演出でしょうか?

それとボスの体力メーターの残っている部分をもう少し明るい色にしてみてはどうでしょうか。

あとはエフェクトを表示するようにすればきれいになると思います。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,016,256ポイント)   Date: 2009/04/25(土) 17:06   No:32707     
Title: Re:シューティングゲームを作りました!    
バイリニア法で描画してみてはどうかにゃ?

・・。

・・・なんでもないです^^;

制作お疲れ様です。

飛んでいる弾がカクカク進んでいるように見えるのでバイリニア法で描画してみてはどうでしょうか?

前にも言ったかもしれませんが、線形補間して描画するときれいに見えますよ。

あと、弾の画像が90度違うと思うのは私だけでしょうか^^;

それから、背景の継ぎ目をなくしてみてはどうでしょう?

強引な方法ですが、画像サイズを上方向倍にして、元の画像を上下反転させてくっつけるとループがピッタリになりますよ。
(継ぎ目を意識しないとへんな画像になりますが・・)


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

Name: ひよこ  ..プログラマー(26,867ポイント)   Date: 2009/04/25(土) 17:46   No:32709     
Title: Re:シューティングゲームを作りました!    
感想は
なんかあまりに自分のものとレベルがちがいすぎて驚きました。(上手にできてて自分のより2段階くらい上)

方程式がたくさんでてきましたね。

雰囲気もよくできててやさしい感じでしたね。

弾同士がぶつかって消えるよりよけきったほうがよかったです。
(すごいのがきた〜よけられませんって一回思いました。)

ボムがすこしさびしいかな。でもシンプルでよかったです。
しかし弾幕自体が同じ様なものが多かったです。(ストーリ的にかもしれませんが)

弾をよけるのも楽しかったのでよかったです。次回作を楽しみにしてます。
制作お疲れ様でした。


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

Name: situmon  ..プログラマー(25,086ポイント)   Date: 2009/04/25(土) 20:12   No:32715     
Title: Re:シューティングゲームを作りました!    
にゃっ!というのはうちに猫がいるから、
それでいつもいつも外出せ、となくし、さらには あみど でカリカリするので!

方程式は数学といってはじめにおもいだしたからです。

ボムはこれから強化していきます。

玉が空中で消えるのは仕様です。
跳ね返りが遅く、邪魔になり、さらにはボムでなくては弾が消せないのが難点だったので、
弾の進行方向は困ってます・・・

線形補間とバイリニア法と弾の画像が90度違うとはどういうことですか?

きっと弾の描写は変えなくてはいけないのとボムはもっと改良します!

あとメーターは暗い色にしてわかりやすくしてるつもりですが・・・考えます。

感想を受けてとてもうれしいです。

あと管理人さんのコメントを久しぶりに受けてなんだかよかったです!



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

Name: チルチル  ..かけだし(1,526ポイント)   Date: 2009/04/25(土) 20:31   No:32718     
Title: Re:シューティングゲームを作りました!    
線形補間とバイリニア法はあまり詳しくないですが、
ドットのギザギザを滑らかに描画してくれる処理だと思います。
通常はネアレストネイバー法ですが
SetDrawMode( DX_DRAWMODE_BILINEAR );
と書けばバイリニア法になります。
DXライブラリ置き場に書いてあるので見てみてください

画像が90度違うって言うのは多分
ラジアンだと0は右ですが画像の回転描画では0は上なので
描画する時はラジアンをそのまま引数にすると90度ずれてしまうって事だと思います。
画像の初期方向を右にするかラジアンにPI/2を足して引数にすれば解決します。


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

Name: situmon  ..プログラマー(25,166ポイント)   Date: 2009/04/25(土) 21:00   No:32721     
Title: Re:シューティングゲームを作りました!    
どうもありがとうございます!
弾の進行方向が解決いたしました!
あと同じような弾幕が多いのは
全方向ショットを使い、いかにいろんな弾幕を作れるのだろうか?
がこのゲームを作った目標だったので次回はもっとバリエーション増やします!
あとボムも今度は派手にしたいですが、こんかいはシンプルに!
あとver1.01(少し変わっただけですが)にしますね!

上記(最初の投稿の記事)のURLを1.01のバージョンのがダウンロードできるページにかえました。


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

Name: Mikan [URL]  ..中級者(9,011ポイント)   Date: 2009/04/25(土) 22:22   No:32726     
Title: Re:シューティングゲームを作りました!    
プレイさせていただきました。
雰囲気がとてもよくって、楽しめました♪
感想としては、エフェクトもほしいところですが、手始めに効果音を増やしてみてはいかがでしょう?
敵が死んだのか、玉をいつ出したのかなどプレイヤーに目線が行ってるので少しほしいなと思いました。


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

Name: 叉奈  ..入門者(2,612ポイント)   Date: 2009/04/25(土) 22:23   No:32727     
Title: Re:シューティングゲームを作りました!    

また現われました、叉奈です←

<作品について>
雰囲気が良かったと思います。
ほのぼのとした感じが弾幕に不似合いでしたがw
油断するとやられますね^^

<弾幕について>
やたら安置が多いのが気になりました。
道中雑魚(でいいのでしょうか?)の弾はほぼ安置確率で…味気なかったです。
一部に自機狙いを入れるといいと思います。
後半の敵には自機狙いがあってよかったです。

今は…これくらいです。
クオリティ高めでよかったと思います。


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

Name: situmon  ..プログラマー(25,260ポイント)   Date: 2009/04/25(土) 22:30   No:32729     
Title: Re:シューティングゲームを作りました!    
いつもくらいの作りすぎてたりくらい背景なので今回は明るくしました!
(といっても前作はまったくもって公開できるものではないので公開してません。)
では自機狙いをどんどん入れますよ・・・ニヒヒ
あと効果音は自分でどうしても作りたいのですがいい作成ソフトが見つかりません・・・


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

Name: じゃが  ..かけだし(2,050ポイント)   Date: 2009/04/25(土) 22:38   No:32730     
Title: Re:シューティングゲームを作りました!    
にゃーん。
プレイさせていただきましたにゃ。
弾幕は綺麗ですね〜。自分もここまでできるようになりたいです・・。
音楽も優しい感じで、会話もよく、全体的に落ちついてて安らぎました〜
難易度の方は・・これをやる前にぶっ飛んでる難易度やってたので簡単に見えましたorz

自分からの意見としては、安置が少し多く感じたかな〜ぐらいでした。


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

Name: チルチル  ..かけだし(2,217ポイント)   Date: 2009/04/25(土) 23:57   No:32733     
Title: Re:シューティングゲームを作りました!    
ちょっとWLANの調子が悪くてダウンロードに手間取ってしまいました。

弾が進行方向を向くと見やすくなりますね、
でも方程式の宇宙でナイフっぽい弾の短い方が進行方向を向いてましたけど、
あれはそういう弾なんでしょうか?
+PI/2じゃなくて-PI/2とかになってませんか?

って言うか全方向ショットを使い、いかにいろんな弾幕を作れるのだろうか?
に挑戦するのがすごいですね、
私は何でもありで弾幕を作っていますが理不尽な弾幕しか作れません・・

あと中ボスとボスは同じ人ですか?
同じ人なら上に戻って行った方が自然ではないでしょうか、
下に行ったのに上から来たら物理的におかしいので・・

それと私もよく知りませんが「フルスクリーンモードかにゃ?」の方が一般的ではないでしょうか?

それからタイトル画面の文字がちょっと気づきにくいですね、
もう少し「スタート」とか「終了」に近づけてみてはいかがでしょうか?

あと、これもよく知らないんですがZが決定でXがキャンセルの方が一般的ではないでしょうか?

いろいろ言ってしまってすいません・・


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

Name: BEMANI  ..プログラマー(26,929ポイント)   Date: 2009/04/26(日) 01:59   No:32737     
Title: Re:シューティングゲームを作りました!    
>>situmonさん
遊んでみました〜。
当たり判定がちょっと気になりました・・・表示されている当たり判定より実際は小さく取っているのでしょうか?
添付した画像は、重なったかな〜と言うタイミングでプリントスクリーンしたものです。
個人的には当たってるような感じですが「当たり判定は小さくとってるんだ!」と言うのであれば問題ないです。


ボスが出てきたあと会話しているシーンがありますが会話中もボスに弾を当てられるようになってます。
ここでは当たり判定処理をしない方がいいのではないかなぁ〜と感じましたが、
会話中もいじめられるという仕様なのでしたらこれも問題ないかな〜と思います。
会話のスキップがあればいいかもしれません。


自機が、低速中と通常移動中はオプションが出す弾の速度が違っていると思いますが
低速と通常の切り替えを連打(SHIFTを連打)すると弾の速度が違うため、
遅くなったり早くなったりで波打ったような感じに見えます。
低速と通常でオプションが出す弾の速さを同じにするか、
切り替えてもそのままの速度で飛ぶように調整したほうがいいかな〜と感じました。


これは既に書かれていますが、背景のつなぎ目が結構気になりました。
背景を作る時にループ処理させては如何でしょう。
ループ処理させているとゲーム中で使っても違和感なくスクロールされますと思います。

これからも制作頑張って下さい〜。


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

Name: situmon  ..プログラマー(25,412ポイント)   Date: 2009/04/26(日) 08:50   No:32744     
Title: Re:シューティングゲームを作りました!    
最後のナイフ弾幕をよけきりたい人のために、また簡単にするためにいままでより当たり判定を
かなり小さくしました。
それと会話中はスコアを稼ぎたい人のためのおまけタイムです、
ショットですが、
一つ一つの速さが違う不思議なショットにしてみました。
いつか改良します。
背景のつなぎ目は重要課題のひとつです・・・


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

Name: situmon  ..プログラマー(25,559ポイント)   Date: 2009/04/26(日) 12:11   No:32748     
Title: Re:シューティングゲームを作りました!    
> でも方程式の宇宙でナイフっぽい弾の短い方が進行方向を向いてましたけど、
敵狙いにしたりしたのもあるので・・・
ですが直しておきます。

>あと中ボスとボスは同じ人ですか?
はい。これも今度は修正します。

>それと私もよく知りませんが「フルスクリーンモードかにゃ?」の方が一般的ではないでしょうか?
普通はフルスクリーンなのですが、今回フルスクリーンにすると背景がわからなくなるので・・・

>それからタイトル画面の文字がちょっと気づきにくいですね、
>もう少し「スタート」とか「終了」に近づけてみてはいかがでしょうか?
そこまで気づきませんでした!ありがとうございます。

>あと、これもよく知らないんですがZが決定でXがキャンセルの方が一般的ではないでしょうか?
ですが、今回はBACKの頭文字をとってBにしたりとかしました。

>いろいろ言ってしまってすいません・・
もっといってくれてもいいくらい感謝してます!!




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

Name: situmon  ..プログラマー(25,673ポイント)   Date: 2009/04/26(日) 17:52   No:32757 解決!     
Title: Re:シューティングゲームを作りました!    
とてもたくさんの感想をいただいて、とてもうれしいです!
以上のことを活用し、
あらたにもう一度作りましたのでそちらのほうも見ていただけるとうれしいです。


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



Name: 匿名  ..上級者(16,497ポイント)   Date: 2009/04/24(金) 16:13   No:32648       
Title: 背景の素材が・・    
四聖龍神録を参考に弾幕シューティングにチャレンジしているのですが
素材を集めるのに苦労しています。
特に道中の背景に使えそうな素材がなかなか見つかりません

なので道中の背景に使えそうな素材が公開されているサイトなどを知っていれば教えてください。

その他にも弾幕シューティングに使えそうな素材のサイトに心当たりがあったら、ぜひ教えてください。


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


Name: Dixq (管理人) [URL]  ..ウィザード(1,014,929ポイント)   Date: 2009/04/24(金) 20:45   No:32667     
Title: Re:背景の素材が・・    
匿名さん、こんにちは。
龍神録参考にしていただいて光栄です^^

道中の背景は私も困りました。
私も散々探したのですが、得た答えが「素材はウェブに無い」でした。
簡単な素材やちょこっとした素材はあるでしょうが、そのまま背景に使えそうなかつ、クオリティが高いものは見つけられませんでした。
ということで、自作した方が早そうです。

私は画力が無く苦労したのですが、写真を見ながら四苦八苦すればそれなりになんとかなったりするかもしれません。
龍神録ファンタズムの桜なんかは写真を見ながら書いていきました(違うレイヤーに写真をおいておき、その上から書いていく感じです)

また、ただ単に描画しただけでは全く見栄えのしない素材を描画の方法で映えさせるというのも手です。
見栄えがしているかどうかはわかりませんが、ファンタズムのボスの背景はただ単に白のグラデーションがかかっただけの画像を様々な色にしたりブレンド方法を変えたりして描画し、映えるようにしています。

後、単体ではクオリティの低い画像も、何か装飾を施すことで見栄えがするようにもなります。
これも見栄えがしているかどうかはわかりませんが、例えばサンプルプログラミングの館の川のサンプルをご覧いただけたら解ると思いますが、
川の画像だけでは見栄えがしませんが、キラメキを入れてやることで少し見栄えが上がるのでは無いかと思います。

そんな感じで変に探し回るより、大変ではあれど自作していく方針の方が良さそうな気がします。


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

Name: 匿名  ..上級者(16,650ポイント)   Date: 2009/04/24(金) 21:41   No:32672     
Title: Re:背景の素材が・・    
確かに自作した方がよさそうですね、
少し頑張ってみます。

あと、キラメキで思い出したんですが龍神録では背景に落ち葉が舞っていますよね、
私もあれをやってみようと思ったんですが、落ち葉を自然な位置に出現させるのがうまくできません、
他のエフェクトもうまく登録できないんです。

龍神録の "背景の落ち葉のエフェクト" "ボスの攻撃前の白い落ち葉が集まるエフェクト" "アイシャが変身する時に飛び散る落ち葉のエフェクト" の処理をどうやっているか教えていただけないでしょうか?


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,016,165ポイント)   Date: 2009/04/24(金) 22:19   No:32673     
Title: Re:背景の素材が・・    
落ち葉の舞わせ方ですが、特にこれといった方法があるわけではなく、適当に舞わせてます。
私が取っている方法を下に書きますが、別にコレじゃなくてもいいと思います。

まず、青い部分が画面部分だと思って下さい。茶色の部分は画面外です。



この茶色の部分に均等でありつつランダムな位置に分布させます。

ある角度で斜め下方向に移動させ、
X座標が画面左に差し掛かったら、Y座標はそのままで、茶色の右端へ移動させます。
Y座標が画面下に差し掛かったら、X座標はそのままで、茶色の上端へ移動させます。

この繰り返しです。スピードやサイズを最初に均等なランダムに設定するので、最初の座標は偏っていますがすぐいい感じにばらけてくれます。


別にこんな事しなくても、画面の中にランダムに分布させ、適当に斜め下方向に舞わせ、
画面端まで来たら上とか右とかに戻せばいいだけの話です。

上の方法は色々試した結果これがいいと思ったので採用しましたが、見た目対して違いません。
画面外の葉っぱの計算量が無駄に増える分こちらではない方がいいかもしれません。

で、「均等かつランダム」という矛盾した日本語を使いましたが、
例えば400ピクセル幅の中に40個葉っぱを舞わせようと、単純に

for( i=0; i<40; i++){
-[i].x = GetRand(400);
}

とすると、偏る可能性があります。
極端な話、全部左よりや右よりに来る可能性もあります。
しかし、乱数で生成される座標範囲を小さくして、中心座標をずらしながら決定すれば
「想定された乱数」が作れます。
例えば

for( i= 0; i<10; i++){
-[i].x = GetRand(100) + 0;
}

for( i=10; i<20; i++){
-[i].x = GetRand(100) + 100;
}

for( i=20; i<30; i++){
-[i].x = GetRand(100) + 200;
}

for( i=30; i<40; i++){
-[i].x = GetRand(100) + 300;
}

こうすれば、少なくとも4領域に均等に10個ずつ散らばります。

0~100のピクセル内に10個
100~200のピクセル内に10個
200~300のピクセル内に10個
300~400のピクセル内に10個


こんな感じですね。
こんな感じで散らばらせるといいと思いますよ。


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

Name: 匿名  ..上級者(17,003ポイント)   Date: 2009/04/25(土) 00:25   No:32676     
Title: Re:背景の素材が・・    
あ〜なるほど

画面端まで来たら上とか右とかに戻す!!

私にはこの発想がありませんでした
画面端まで来たら、後は消すしか無いと思っていましたから・・

これはかなり参考になりました。

ところで少し話が変わりますけど
龍神録では一度に最大で何発の弾が出ているんでしょうか?
私は弾のアルゴリズムもまだ未確定な状態なので
とりあえずザコ敵の弾もボスの弾も一つの構造体配列で表現しているんですが
その構造体配列を50000個用意しています。
弾は被弾した時とかにアイテムに変わるので
アイテムの構造体配列も50000個用意しているんですが
さすがにこれは多いので一度減らして
弾の多い弾幕を作ったらまた増やそうと思うのですが
参考にしたいので龍神録での最大数を教えてください。

即席で作ったのでアイテムも敵の弾と同じ構造体を使っているんです・・
FPSが60にならない時があるんですが多分これのせいです。
明日あたりに直そうと思います・・


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

Name: yu  ..プログラマー(25,993ポイント)   Date: 2009/04/25(土) 00:51   No:32679     
Title: Re:背景の素材が・・    
龍神録の館の方では以下の通りでした。

#define SHOT_BULLET_MAX 1000 //shot1つに対しての弾の数
#define SHOT_MAX 30 //shotの数

つまり、最大でも1000*30で30000発が表示可能ですね。(多分;

一方ボスは

#define BOSS_BULLET_MAX 3000 //3000発

でした。


しかし、最大30000発ですが、
こんなに弾を表示すると酷く弾が重なるか、画面が弾で覆い尽くされてしまうので
(添付画像が極端な例です。ちなみに6890発表示させています。)
実際に画面に表示する弾は3000発以下ぐらいで良いと思います。(東方系は
つまりボスの弾数ですね。

そんな制約は嫌だ!と感じたらメモリを動的に確保することをお勧めします。


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

Name: 匿名  ..上級者(17,322ポイント)   Date: 2009/04/25(土) 01:01   No:32680     
Title: Re:背景の素材が・・    
メモリを動的に確保ですか
確かにその方が無駄がない気がしますが
メモリを動的に確保ってどうやればいいんでしょうか?


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

Name: yu  ..プログラマー(26,141ポイント)   Date: 2009/04/25(土) 01:11   No:32682     
Title: Re:背景の素材が・・    
C++なら
vector等が便利ではないでしょうか・・・
(標準テンプレートライブラリで検索するとたくさん出てきます)
あまり使ったことが無いので詳しくは分からないのですが;

自分の場合は使ってみたら処理が若干重くなったのでただの配列に戻しました orz
何か間違えていたのかな〜・・・


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

Name: 匿名  ..上級者(17,985ポイント)   Date: 2009/04/25(土) 01:43   No:32685     
Title: Re:背景の素材が・・    
重くなるのは怖いですね

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

Name: Dixq (管理人) [URL]  ..ウィザード(1,015,487ポイント)   Date: 2009/04/25(土) 08:05   No:32690     
Title: Re:背景の素材が・・    
>龍神録では一度に最大で何発の弾が出ているんでしょうか?

どの弾幕のことか教えていただければお答えしますよ。
しかし、結構な量出ているように見える弾も実はそうでもないことが多いです。



ファンタズムラストのこの弾幕、結構弾が出ているように見えますが、せいぜい数百だと思います。



この花火も恐らく数百だと思います。
龍神録で一番弾数が多いのはやはり通常ステージラストのこの瞬間です。



これは龍神録が計算出来る上限ピッタリになるようになっています。
4000位です。
しかしこの量を表示すると古いPCではまともに動かないようです。
4000も出すとわけがわからなくなるので、
この弾幕のように事前にチョン避けで避けられることを示していないような弾幕で
4000も出す必要はまず無いと思います。

しかし数だけでは言えない事があります。
弾が小さければ数が多くても多く見えないことがあります。例えば



このAA弾幕シリーズはどれも1000以上です。
4000個使っているAAもあります。
しかしそこまで密集しているように見えませんし、処理オチもしません。
ですから、遅くなる原因は軌道計算ではなく、描画関係なんですよね。
小さい弾なら少々量が多くなっても処理オチしません。

ただAA弾幕は特殊ですから、考慮しなくてもいいかもしれません。
上の通常ラスト弾幕で使っている弾は小さめの弾で、あの弾でこれだけ密集してみえるので、
2000も用意しておけば充分だと思いますよ。

動的確保はmallocを使ったリスト構造を使ったらどうでしょうか。
「線形リスト」って単語で調べれば出てきます。


後、匿名さんのお名前をお使いの方が複数いらっしゃるようですので、
もう少し独特な名前をお使いになってはいかがでしょう?
万一同じ名前の違う方が以前質問した内容と同じ内容を質問したりすると
「前にも言ったじゃん!」と思われたりと何かと不都合があると思いますので。


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

Name: 匿名  ..上級者(18,124ポイント)   Date: 2009/04/25(土) 12:04   No:32693     
Title: Re:背景の素材が・・    
なるほど、弾の大きさの方が問題なんですね。

AA弾幕はうまくなってから作って見るとして
今は2000ぐらいでやってみます。

って言うか確かに匿名って紛らわしいですね・・
では私は学校でチルチルと呼ばれているので
次からチルチルで行きます。
すぐに「ぴよぴよ」から「上級者」まで昇進しますよ〜


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

Name: 匿名  ..上級者(18,287ポイント)   Date: 2009/04/25(土) 12:35   No:32694     
Title: Re:背景の素材が・・    
匿名改めチルチルです

私思ったんですが構造体のメンバって
容量を小さくした方がいいんでしょうか?
例えば弾のフラグですが、フラグって普通
0と1しかありませんからunsigned char型
とかでいいような気もするんですが
私の場合はフラグが2になる時もあるんですが
どっちにしても1バイトで事足りるわけですが
そこまで容量を小さくする必要があるんでしょうか?
何かint型が一番処理が早いって言うし
あとchar型ってもともと1バイトですけど
unsigned char型にすると何か変わるんですか?


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,015,593ポイント)   Date: 2009/04/25(土) 12:40   No:32695     
Title: Re:背景の素材が・・    
よければ今までのポイント計算して加算しますよ。
後、チルチルさんは、Jさんとは別の方ですか?

メンバは小さくしていいと思います。
私の場合、charを使うと文字を扱うのでは?と誤解されると思ったのでintにしました。
windows環境ならBYTEでもいいですね。

なお、unsignedはマイナスがありませんから、マイナスを扱わない時はこちらにします。


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

Name: 匿名  ..上級者(18,362ポイント)   Date: 2009/04/25(土) 13:05   No:32696     
Title: Re:背景の素材が・・    
加算してくださるんですか
ありがたいです、ぜひお願いします。

あと私はJさんとは別です。

unsignedを付けるとマイナスが無くなるんですね
って事は容量が軽くなるわけではないんですね


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,015,718ポイント)   Date: 2009/04/25(土) 13:33   No:32697     
Title: Re:背景の素材が・・    
そうでしたか、失礼致しました。

あと、お名前が改名して投稿されていないようですが・・^^;

unsignedをつけることで容量は変わりません。両方1バイトです。
スコアみたいにマイナスにならないものにはきちんとunsignedを付けて万一マイナスになったときの対処をしておかないと
龍神録のようなバグが起こります(ぇ
(参考:動画の最後 http://www.nicovideo.jp/watch/sm3031402


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

Name: チルチル  ..ぴよぴよ(109ポイント)   Date: 2009/04/25(土) 14:29   No:32698     
Title: Re:背景の素材が・・    
そうですね、投稿者が匿名になっているので
匿名にしておきましたが、途中に書いてあるから
大丈夫ですね・・

ちょっと表題からずれてきているんで
そろそろ解決にしようと思いますが
最後に質問を二つ

unsignedを付けた変数に負の数を代入するとどうなるんですか?

龍神録の弾幕名は大変すばらしいですが、何か考えるコツでもあるんでしょうか?


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

Name: チルチル  ..ぴよぴよ(347ポイント)   Date: 2009/04/25(土) 15:14   No:32703     
Title: Re:背景の素材が・・    
すみません、もう二つ

ステージ最初とボス出現時にBGMを読み込んでいるんですが、そこで処理が止まるんです。
龍神録でも同じように読み込んでいるようですが、見た目には止まっていません、
何か工夫をしているんでしょうか?

今のように複数の質問をする場合には一つのスレッドにまとめた方がいいんでしょうか?
それとも質問ごとにスレッドを立てた方がいいですか?
1人で3〜4スレッド占領するのはちょっと・・


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,016,046ポイント)   Date: 2009/04/25(土) 16:57   No:32706     
Title: Re:背景の素材が・・    
>unsignedを付けた変数に負の数を代入するとどうなるんですか?

どうなるかは実際にやってみるといいですよ。
疑問に思ったらまずやってみると、人から聞くより覚えがいいです。

>弾幕名

いや良くない・・、むしろありえないでしょう^^;
弾幕名つけるのはセンスなくて困りました〜;
ファンタズムなんかは人に名前付けてもらうの任せましたしね^^;
これは何ともアドバイスできません、すみません・・。

>BGM

BGMを全部メモリに展開するとメモリの使用量もあがるし、読み込みに時間かかりますよね。
ですから、ストリーミング再生すればいいです。
メモリに展開しながら再生するって方法で、使った端から解放します。
参考にどうぞ
http://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_other.html#R15N25

>トピック

1トピック1質問が後から見る人の為にも見易いので、
トピは分けてもらったほうがありがたいですが、
トピを立てるほどのことでもない小さな疑問なんかは連続で聞いてもらっても大丈夫です。
ただ、なるべく1質問1トピがいいかなとは思います。


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

Name: チルチル  ..かけだし(1,355ポイント)   Date: 2009/04/25(土) 20:17   No:32717     
Title: Re:背景の素材が・・    
>unsignedを付けた変数に負の数を代入するとどうなるんですか?

そうですね、実際にやってみます。

>弾幕名

って事は自分ではダメだと思っていても他の人が見ればそんなにダメじゃ無いって事・・かな?

>BGM

隣のトビでも同じ話題になってしまいましたが
龍神録でもそうしているなら問題なさそうですね
でも使った端から解放するって事は
DeleteSoundMem関数を使わないで
同じ変数にBGMを読み込んでも大丈夫って事でしょうか?

>トピック

解決にするって言いましたけど
小さな疑問が一つできてしまったので
もう一つお願いします。

龍神録のボスの2番目の魔方陣が赤〜黄〜緑〜青って変化していますよね
私もあれをやってみたいんですが魔方陣の色を変化させる処理が思いつかないんです。
どうやっているか教えていただけないでしょうか?


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,016,521ポイント)   Date: 2009/04/26(日) 10:06   No:32745     
Title: Re:背景の素材が・・    
>って事は自分ではダメだと思っていても他の人が見ればそんなにダメじゃ無いって事・・かな?

う〜ん、弾幕名は相当考えないとよい名前が付けられない気がします・・・。
私のような人間は・・。

>BGM

PlayMusicだったら解放する必要はありませんが、
一度ロードで読み込んで再生する形式ならDeleteする必要があると思います。
ハンドルを作るだけでも結構食うようです(1MB位?)

後、色の変化は輝度の設定で出来ますよ。
http://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_graph.html#R3N18


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

Name: チルチル  ..入門者(2,992ポイント)   Date: 2009/04/26(日) 12:08   No:32747     
Title: Re:背景の素材が・・    
ハンドルを作るのにも結構容量を使うんですね
では解放してから読み込む事にします

輝度なんですが赤、緑、青だけならともかく黄と白も入っているから効率の良い式が浮かばないんですよ・・

龍神録は見た感じ

まず( 255 , 0 , 0 )〜( 255 , 255 , 0 )まで変化して

次に( 255 , 255 , 0 )〜( 0 , 255 , 0 )まで変化して

次に( 0 , 255 , 0 )〜( 0 , 0 , 255 )まで変化して

次に( 0 , 0 , 255 )〜( 255 , 255 , 255 )まで変化して

っと言うような変化をしているようですが
この変化を作る式が浮かばなくて・・

カウンタで条件分岐すればできない事も無いですが
それだと効率の悪いコードになってしまうんですよね・・


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,017,176ポイント)   Date: 2009/04/26(日) 12:33   No:32749     
Title: Re:背景の素材が・・    

あ〜わかります。レインボーって案外難しいんですよね。
レインボーを7色と決めてしまい、その7色を決めた時間で遷移するようにプログラム組んでみてはどうでしょうか?

特に効率の良い計算式に無理にしようとしなくても、自分が見てわかりやすい計算式ならいいと思いますよ。
switch文で1パターンずつわけて書いていってもいいと思います。
おわかりかと思いますが、
例えば

以下説明では簡略化して、レインボーが赤・青・黄の3色だとします。
100カウントで1色変化するものとします。

赤→青→黄→ 赤→青→黄→ 赤

この繰り返しを行いたいわけですよね。ここで

(R,G,B)において

赤=(255, 0, 0)
青=( 0, 0,255)
黄=(255,255, 0)

だとしましょう。
赤から青にかけて変化するのは

Rが255→0
Bが 0→255

100カウントで変化させるのですから、1回の処理で255/100.0ほど変化させればよいことになります。
ここで、この数値はintでは扱えないことに注意して下さい。

100カウントたったら赤は青になっているはずですから、そうしたら変化の計算式をかえ、

Rが 0→255
Gが 0→255
Bが255→0

100カウントで変化させていきます。このように、計算してはいかがでしょうか?
決めた色の数変化させおわったら最初に戻ればいいと思います。

もし効率よい計算式を考えたいなら、変化する色情報を配列に用意させて、いくつ変化させるか予め決めておけばいいと思います。
例えば

変化1(赤から青)ではRedは100カウントで255→ 0になり、
変化2(青から黄)ではRedは100カウントで 0→255になり、
変化3(黄から赤)ではRedは100カウントで255→255になり、
(変化1に戻る)

ならば

float AddRed[3]={ -255/100.0, 255/100.0, 0, };

([0]は変化1でRedに加算する数値、[1]は変化2でRedに加算する数値、[2]は変化3でRedに加算する数値)

このように、変化させる中でいくつ足せばいいかを格納してやり、常にその数値を足せばいいと思います。

変化1、変化2・・に当たる変数を

int AddColState;

とでも名づけるなら

Red += AddRed[AddColState];

としてやり、AddColStateは100カウントずつ1増えていき、変化3が終わったら戻してやればいいでしょう。

わかりにくいですかね。効率の改善は行うべきでしょうが、あまりにもコードを短くかこうとして
返ってみにくくなると本末転倒ですので、適度でいいと思いますよ。

最初はif文ばかり書いていても、そのうち自然に短くかけるようになってくると思います。
特に長期にわたって制作するときは、後からコードを見てすっと意味がわかることが重要だと思います。


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

Name: チルチル  ..入門者(3,024ポイント)   Date: 2009/04/26(日) 13:42   No:32750 解決!     
Title: Re:背景の素材が・・    
なるほど〜参考になります。

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

Name: チルチル  ..入門者(3,068ポイント)   Date: 2009/04/26(日) 13:43   No:32751 解決!     
Title: Re:背景の素材が・・    
そうですね最初は長く作って少しずつ短くしてみます。

では今度こそ解決にしますね、
どうもありがとうございました。

あと、ポイントの加算もお願いします。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,017,213ポイント)   Date: 2009/04/26(日) 14:19   No:32753     
Title: Re:背景の素材が・・    
どこまで計算して良い物かよくわからなかったので、過去ログを3つさかのぼって計算し、加算しておきました。
もし何か間違いがあれば教えて下さいm(_ _)m


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

Name: チルチル  ..初心者(8,953ポイント)   Date: 2009/04/26(日) 14:51   No:32754     
Title: Re:背景の素材が・・    
>>過去ログを3つさかのぼって計算し、加算しておきました。
手間をかけてしまってすいません、
もう少し稼いだ気もしますが、改名してから一日で
3000ポイント増やしてますから十分だと思います。
どうもありがとうございました。


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



Name: クロウ  ..入門者(4,094ポイント)   Date: 2009/04/22(水) 23:59   No:32550       
Title: 描画順について    
トピックが流れてしまったようなのでもう一度立てさせていただきます。

以前の質問でマップチップを並べることはできたのですが、今度はキャラクターとマップチップとの描画順位でつまずいています。

段差があって、マップの高さがある場合、キャラがマップの後ろに隠れたりしないで、段差の上に描画されてしまいます。

今は一列ずつ判定してそこにあるマップチップやキャラなどを一斉に描画しているという方法をとっているつもりですが、重なったり重ならなかったりで上手くいきませんでした。

クォータービューのマップで段差がある場合、キャラが重ならないで描画する方法を教えてください。


使用環境はXPのVisual C++でDxライブラリを使っています。


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


Name: SooA [URL]  ..上級者(18,485ポイント)   Date: 2009/04/23(木) 06:22   No:32554     
Title: Re:描画順について    
言葉で説明するのに良い表現を思いつかなかったので
サンプルを作ってみました。

簡略化した形で一から書いているので
そのままは使えませんが、
意図するところは解って貰えるかなと思います。

要はどの段階でキャラクターを描画するかです。


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

Name: クロウ  ..入門者(4,522ポイント)   Date: 2009/04/24(金) 00:53   No:32597     
Title: Re:描画順について    
返信ありがとうございます。
静止状態では上手くいきました。
ですが、キャラを動かしてみると、前のマップチップに埋もれてしまいます。
移動中はif(tMob[i].x == x && tMob[i].y == y)をいじって描画順位を一つ上げるようにしてみましたが、移動先の周囲に段差があると、今度は隠れなくなったり、マップの端に付くと、描画しなくなってしまっています。

これを直そうとすると、例外処理が大量に発生しそうなので、なんとか例外処理をしないですむ方法はないでしょうか?


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

Name: SooA [URL]  ..上級者(19,040ポイント)   Date: 2009/04/24(金) 03:03   No:32602     
Title: Re:描画順について    
サンプルはキャラクターより奥にあるタイルを
先に描画するという事だけを伝えるための
ものでしたので実際に使うにはふさわしくありません。
すみません、少々配慮が足りませんでした。

基本的にはキャラクターより下、
または奥にあるタイルを先に描画するのですが、
画像を見てタイルを描画していく状態を
思い浮かべてみてください。

1→2→3...と描画したとして、
キャラクターよりも後に1に高さのあるタイルを描画すると
キャラ頭部が消えてしまいます。
6や8のタイルをキャラより後に描画すると
移動させた時に移動した部分が消えます。(サンプルはこの状態ですね。)

つまり地面となるタイルと奥にある高さのある
タイルは先に描画しておかなければ
ならない事になります。


1、地面部分の描画
2、キャラクターのまたがるタイルの取得
  移動させる場合A地点とB地点の二つ以上のタイルを
  またぐことになります。
3、高さを持つタイルに2で取得した
  タイルに対する優先順位を付ける。
4、優先順位に沿ってキャラクターと残りのタイルを描画


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

Name: SooA [URL]  ..上級者(19,063ポイント)   Date: 2009/04/24(金) 03:17   No:32603     
Title: Re:描画順について    
サンプルをUPしてましたが、
混乱する内容だったので削除しました。


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

Name: クロウ  ..入門者(4,577ポイント)   Date: 2009/04/26(日) 12:06   No:32746 解決!     
Title: Re:描画順について    
また質問させていただくかもしれませんが、
アドバイスを参考にもう少し考えてみようと思います。

ありがとうございました。


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



Name: ひよこ  ..プログラマー(25,388ポイント)   Date: 2009/04/23(木) 21:25   No:32587       
Title: 自作STG作ってみました。    
龍神録を参考にSTG作ってみました。
遊んでください。
http://down11.ddo.jp/uploader/download/1240489251/attach/%E6%B5%81%E6%98%9F%E6%9B%B8%E8%A8%98.zip
PASSはhiyokoです。
感想待ってます。


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


Name: situmon  ..上級者(24,318ポイント)   Date: 2009/04/23(木) 23:27   No:32591     
Title: Re:自作STG作ってみました。    
早速やってみました、
前作(体験版!?)を体験したのでこれをプレイしたとき
すごくきれいですごいなぁ・・・と思いました!!
弾幕もきれいでした!やってて楽しかったです!
これからもできたら公開してください!
難易度が高くなりましたね!
弾の使い方もうまくなっていたのでよかったです!
あとアドバイスというか・・・
もっと星の絵を立体的にというか・・・
どんなペイントソフトを使ってるか知りませんが、もっと手の込んだ画像を作ることをお勧めします・・・
余計なお世話だ!とかなんだよ!!とおもったら
本当にすいません。


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

Name: ひよこ  ..プログラマー(25,652ポイント)   Date: 2009/04/24(金) 06:25   No:32604     
Title: Re:自作STG作ってみました。    
situmonさん感想ありがとうございます。

弾幕もきれいでした!やってて楽しかったです!
>>きれいな弾幕を考えるのに苦労したのでうれしいです。

もっと星の絵を立体的にというか
>>手の込んだ画像に挑戦してみます。

いろいろな意見を聞きたいので感想待ってます。


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

Name: バグ  ..ハッカー(158,643ポイント)   Date: 2009/04/24(金) 08:36   No:32606     
Title: Re:自作STG作ってみました。    
いきなり難易度が高過ぎなのは調整でどうにでもなると思いますが…
自機のやられ判定が分かりづらいです。そのせいで納得のいかないやられ方が多いですね。


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

Name: Mato  ..ぴよぴよ(615ポイント)   Date: 2009/04/24(金) 10:31   No:32609     
Title: Re:自作STG作ってみました。    
 よく出来ていると思います。
3500時間(時間?)を過ぎたら終わりなのでしょうかね……。

 これから作り込みの作業に入られるのでしょうか。
もしそうだとしますと、楽しみにさせていただきたいと思います。
それこそ龍神録を超えるほどのものとか〜♪


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

Name: bitter_orange  ..かけだし(1,041ポイント)   Date: 2009/04/24(金) 14:16   No:32630     
Title: Re:自作STG作ってみました。    
プレイしてみました。
なかなか面白いと思います。
個人的にはもう少し難しくしてもいい気がしました。
理由としては、ボスの弾幕に安置があったり少し動くと安全という弾幕があるということ、ボムが多いということです。
現在ボムが5個でボムゲーになってしまいやすいので2個ぐらいでもいいと思います。
文句みたいなこと言ってすみません。
バグがあったので報告します。
ボス戦中でボスが弾を放ったあとタイトルに戻り、もう一度始めるとボスの弾幕が残ったままでした。
仕様かもしれませんが、最初に出てくる敵は倒しても一定数まで弾を出してくると思います。


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

Name: ひよこ  ..プログラマー(25,902ポイント)   Date: 2009/04/24(金) 16:53   No:32650     
Title: Re:自作STG作ってみました。    
なんか予想以上に感想がきていて驚きました。

バグさん 自機のやられ判定が分かりづらいです
>>できるだけ画像の中心になるようにします。

Matoさん 3500時間(時間?)を過ぎたら終わりなのでしょうかね……。
>>残念ながらそこで終わりなんです。
それこそ龍神録を超えるほどのものとか〜♪
>>龍神録を超えるのは無理かもしれませんが自分なりのEXTRAを実装してみようと思います。

bitter_orangeさん 
現在ボムが5個でボムゲーになってしまいやすいので2個ぐらいでもいいと思います。
>>EXTRAはどうなるか・・ボムと自分の数を減らしときます。

バグ報告・感想お待ちしております。


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

Name: 叉奈  ..かけだし(2,411ポイント)   Date: 2009/04/24(金) 19:46   No:32658     
Title: Re:自作STG作ってみました。    

前作もプレイさせていただいた叉奈です。
いたっ…石投げないで!
また感想という名の注文つけにきたのかとか言わないでっ!←

<システムについて>
前回より格段に良くなってました!
ウインドウモードもタイトルもしっかりあったし、わかりやすかったです。
タイトルが実装できてない自分涙目…。

<弾幕について>
綺麗にできていたのでよかったと思います。
自機狙いに少々手こずりましたw
1面縦に弾が並んで出てくるところは
連ねるのではなくて間隔をあけて少しずらすと難易度が格段に上がります(笑)
突然弾が認知できない速さのスペルは加速度によって速さを表現する方がいいと思います…。

<自機について>
えっと…判定が分かりづらいといわれる原因の一つが「かすり」がないことだと思います。
掠る音があれば、判定もわかりやすくなると思います。

全体的に良くなっていたので楽しみにしています!
いらないこと言ってるかもしれませんが…;;



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

Name: dic  ..上級者(19,524ポイント)   Date: 2009/04/24(金) 20:29   No:32662     
Title: Re:自作STG作ってみました。    
プレイさせてもらいました
弾の撃ち方が偏っているのでもうちょっとバリエーションが欲しかったですね

ジョイスティック対応でしょうか?
ReadMeには載ってないようで、動きましたけど

と、まぁ、人のことを言える立場ではないので
私も同様に頑張りたいと思います

私は当たり判定理不尽に感じてません、ちょうどいい感じですね


裏技というかバグというか
実際の稼動しているシューティングにも当てはまるんですが
一回わざとやられて、そのときに出現するパワーアップアイテムでパワーアップするという
技がつまえます
ボム5個もあるんで、あんまりお得な感じはしませんが

3500くらい超えたらタイトルに戻るような仕組みが欲しかったですね


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,015,283ポイント)   Date: 2009/04/24(金) 20:54   No:32669     
Title: Re:自作STG作ってみました。    
ひよこさん頑張っていらっしゃいますね。
私もやってみました。
やってみて思ったことかいてみました。

・画像のアルファ値などを使ってあまりにもドット絵過ぎる感じを減らして欲しい
・何も無いところから弾が出ているのに違和感がある
・切り替えしが不可能な連続弾はまずいのでは・・(回るしかないし回ってる間弾があてられない)
・カーテンのように複数の一直線上に弾が落ちてくる時真ん中にいるとあたらない(ずっと止まってて当たらない)
・自機の中心表示が中心ではない(自機の絵を当たり判定を基準に中心に表示してはどうでしょう)
・ゲームオーバーで突然最初に戻る
・弾幕になれている人にとっては簡単すぎる(チョン避けしていればそれで終わる)弾幕に装飾が欲しい

参考に出来る事があればしていただけると幸いです^^


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

Name: ひよこ  ..プログラマー(26,294ポイント)   Date: 2009/04/24(金) 21:28   No:32671     
Title: Re:自作STG作ってみました。    
人によって感想いろいろありますね・・ありがとうございます。

叉奈さん 
>>かすりはがんばって作ってみようとおもいます。

dicさん 一回わざとやられて、そのときに出現するパワーアップアイテムでパワーアップするという
     技がつかえます
>>東方の場合はダメージでパワーが減るんですから
  自分はチャンスって感じで前よりパワーアップできるようになっています。

Dixqさん
画像のアルファ値などを使ってあまりにもドット絵過ぎる感じを減らして欲しい
>>立体的にするということでしょうか?

切り替えしが不可能な連続弾はまずいのでは・・(回るしかないし回ってる間弾があてられない)
>>時間をうまく使ってみようかと思います。

自機の中心表示が中心ではない(自機の絵を当たり判定を基準に中心に表示してはどうでしょう)
>>大体半分のところに当たり判定を移動しました。

弾幕になれている人にとっては簡単すぎる(チョン避けしていればそれで終わる)
>>EXTRAをつくろうと思っています。

弾幕に装飾が欲しい
>>どういうことでしょうか?

感想待ってます。


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

Name: じゃが  ..かけだし(1,907ポイント)   Date: 2009/04/24(金) 23:23   No:32674     
Title: Re:自作STG作ってみました。    
やらせていただきました〜
前回にも出されていたみたいですが、今回が初めてのプレイになります。
難易度は弾幕に慣れてる人には簡単、慣れていない人には難しいといった難易度で楽しめました。
当たり判定については自分は違和感なくプレイできました。
ただ、ボムの数が多すぎるかなぁと思いました、個人的見解ですが;
次回作もプレイさせていただきたいとおもいます。頑張ってください。


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

Name: BEMANI  ..プログラマー(26,802ポイント)   Date: 2009/04/24(金) 23:24   No:32675     
Title: Re:自作STG作ってみました。    
自分も弾幕・・・なのかは怪しいですが作っているのですが素直に感心します。
いろいろ足りない部分もあるかと思いますが、がんばってブラッシュアップしていってください。
自分から言えるのは弾幕のバリエーションがほしいのと、画面の切り替わりくらいです。
画面が今だとパッと切り替わるので、フェード処理等を入れてみるといいかなぁと思います。
自分も公開できるくらいには作らないとだめですね;
大変でしょうががんばってくださいませ〜。


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

Name:  ..初心者(7,509ポイント)   Date: 2009/04/25(土) 01:48   No:32686     
Title: Re:自作STG作ってみました。    
プレイさせていただきました。
難易度に関してですが、私も少し簡単かなと思いました。
気付いた点は他の方がもう挙げられていました。

違っていたら申し訳ありませんが、ドット絵過ぎる感じを減らすと言うのは添付の画像のような
感じでかくかくした感じを減らすと言うことだと思います。(右の画像のものは左の画像にぼか
しをかけただけですが)

装飾は自機狙いの場合、自機狙い以外に出す弾のことだと思います。
自機とは少し違う角度に速度の違う弾を自機狙いと同時に出すみたいなことでチョン避けだけで
は少しずらした弾のほうに当たってしまう感じです。(他にも左右から自機に関係なく飛んでく
る弾や、固定弾幕等を同時に発生させる等)

分かりにくい説明で申し訳ありません。管理人様の回答がくるまでの場つなぎ程度に見てくださ
るとありがたいです。

あと、私的な要望で申し訳ないのですが、自機のオプションを星(自機)を回る衛星みたいなも
のにするというのはどうでしょうか?(処理がややこしくなってしまいますがorz)

次回作もプレイさせていただきたいです。頑張ってください^^


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

Name: ひよこ  ..プログラマー(26,464ポイント)   Date: 2009/04/25(土) 06:27   No:32688     
Title: Re:自作STG作ってみました。    
本当に 感想たくさんきてうれしいです。

じゃがさん ボムの数が多すぎるかなぁと
>>ボムが少ないEXTRAを考え中です。

BEMANIさん 画面の切り替わりくらいです
>>がんばって試してみます。

烏さん 
>>いろいろ困っていました。ありがとうございます。
>>なんのソフトでぼかしの絵を作ったのですか?

感想お待ちしております。


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

Name:  ..初心者(7,543ポイント)   Date: 2009/04/25(土) 12:03   No:32692     
Title: Re:自作STG作ってみました。    
ソフトはGIMPを使用して作りました。
絵心が無い私はぼかしやフィルタがないと無理です・・・orz
(この掲示板で教えてもらうまではぼかしすら・・・)


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

Name: situmon  ..上級者(24,656ポイント)   Date: 2009/04/25(土) 14:40   No:32700     
Title: Re:自作STG作ってみました。    
中身を見させてもらいましたが、(素材)
大半がbmpでできているようなので
透過色を利用してpngで保存するのがよいかと・・・
bmpだと黒しか透過できないと思うので、
あとペイントソフトはpixiaがよいとおもいます。
それでなれてからGIMPで!
GIMPは使ってびっくりのクオリティ!ですが難しいのが難点です。


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

Name: situmon  ..上級者(24,825ポイント)   Date: 2009/04/25(土) 14:46   No:32701     
Title: Re:自作STG作ってみました。    
それと安置場所を作らないようにangleやGetRandやrangを使うといいと思います。
東方は慣れてないとこの難しさは何だ!とおもい
また挑戦してクリアするぞ!と思いますね、
なので難しいからまた挑戦したい!
とか、東方のEASYのようにこれなら少しがんばればいけそう!
を利用してやりたくなるようにするのもいいですよね・・・
あと素材を勝手に見てしまってすいません・・・


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

Name: ひよこ  ..プログラマー(26,600ポイント)   Date: 2009/04/25(土) 15:58   No:32705     
Title: Re:自作STG作ってみました。    
質問にこたえてくださりうれしいです。

烏さん GIMPを使用して
>>GIMPですか。がんばってつくってみます。
situmonさん 透過色を利用してpng
>>利用するってどういうことでしょうか?
>>いろいろアドバイスありがとうございました。

感想お待ちしております。


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

Name: situmon  ..プログラマー(25,127ポイント)   Date: 2009/04/25(土) 20:16   No:32716     
Title: Re:自作STG作ってみました。    
透過色を使ってです。
紛らわしい回答すいません。
GIMPはまずpixiaを慣れてから使わないと透過色とかなに?
となります。


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

Name: Mikan [URL]  ..中級者(9,131ポイント)   Date: 2009/04/25(土) 22:26   No:32728     
Title: Re:自作STG作ってみました。    
プレイさせて頂きました♪
ヌルゲーマーの私には少し難易度が高く感じてしまいました^^;
特に中ボスの玉が早くて避け切れませんでしたorz

感想は面白かったです。
BGMがあればもう少し雰囲気が出てるかな・・・

これからもがんばってくださいv( ̄Д ̄)v


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

Name: チルチル  ..入門者(2,690ポイント)   Date: 2009/04/26(日) 01:01   No:32736     
Title: Re:自作STG作ってみました。    
プレイしてみました。

まず思ったんですがフルスクリーン用とウインドウ用に実行ファイルが二つあるのは直した方がいいですね、
ゲームプログラミングの館にプレイヤーがフルスクリーンモードで起動するか選ぶ処理が書いてありますから
それを加えてみてはどうでしょうか?

それからボスの体力メーターの残りの本数を表示した方がいいと思います、
あとどのくらいで倒せるのか分からないと精神的に追い込まれますから・・

それと自機とアイテムとの当たり判定をもう少し大きくしたらどうでしょうか?

それからアイテムを取った時のパワーの上昇が3と50なのは中途半端だし差が大きすぎるので
5と10ぐらいにしてはいかがでしょうか?

あとポーズ画面に「終了する」は無い方が雰囲気がよくなる気がします。

自機の後ろの丸はオプションですか?
オプションならパワーが低い時は出さない方がいいんじゃないんでしょうか?

それからタイトル画面でXを押したら終了が選択されるようにしてみてはいかがでしょうか?

好みの問題ですが喰らいボム有効時間が長いですね、食らいボムが苦手な私でも余裕で間に合うんですが・・

あと左上にカウンタが表示されていますがプログラムの知識が無い人には意味不明だと思うので消してみては?

個人的な意見ですがFPSは[60.0]より60.0FPSの方がわかりやすくないですか?

それからタイトル画面のZを押してくださいは無くてもいい気がしますね。

あと、これも個人的な意見ですがSetOutApplicationLogValidFlag関数でログ出力を止めてはどうでしょうか?

それとDxLib.txtもプログラムの知識が無い人には意味不明だと思うので無い方がいいんじゃないでしょうか?

あと、完全に個人的な意見ですが「Read me」より「Readme」の方が見やすくないですか?

言いたい放題言ってすみません・・


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

Name: ひよこ  ..プログラマー(27,041ポイント)   Date: 2009/04/26(日) 07:03   No:32743     
Title: Re:自作STG作ってみました。    
ゲーム遊んでくださりありがとうございます。
Mikanさん  BGMがあればもう少し雰囲気が出てるかな・・・
>>BGMを探すのも大変ですね。

チルチルさん FPSは[60.0]より60.0FPS
>>そうですねそう今度はなおしときます。
喰らいボム有効時間が長いですね
>>そうですね結構楽に使えますね。直しておきます。
SetOutApplicationLogValidFlag関数でログ出力を止めてはどうでしょうか?
>>出力を止めておきます。
DxLib.txtはRead Meに最低限書き込むことにします。

感想がとても役に立つのでお待ちしております。


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



Name: yuki  ..ぴよぴよ(488ポイント)   Date: 2009/04/25(土) 19:17   No:32710       
Title: 無題    
龍神録みたいなシューティングゲームを作りたくて
龍神録プログラミングをやっています。
今は8章に差し掛かって、書いてあるとおりにプログラムを打っているんですが


1>c:\users\yuki\desktop\project\project\1章\mydat\include\struct.h(18) : error C2065: 'PAD_MAX' : 定義されていない識別子です。


というのがいくつもでてきてしまって、どうしたらいいか悩んでます。
これの解決方法分かる方いましたら解答よろしくお願いします


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


Name: pooka  ..ぴよぴよ(617ポイント)   Date: 2009/04/25(土) 19:33   No:32711     
Title: Re:無題    
define.hに
#define PAD_MAX 16
を書いていますか?


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

Name: yuki  ..ぴよぴよ(429ポイント)   Date: 2009/04/25(土) 20:00   No:32713     
Title: Re:無題    
pooka様返信ありがとうございます。

はい、書いてあります

それなのにエラーがでるんです・・・



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

Name: あ〜る  ..初心者(5,874ポイント)   Date: 2009/04/25(土) 20:07   No:32714     
Title: Re:無題    
includeはちゃんとしてますか?

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

Name: yuki  ..ぴよぴよ(545ポイント)   Date: 2009/04/25(土) 20:35   No:32719     
Title: Re:無題    
あ〜る様返信アリガトウございます

define.hには#include "struct.h"
としてるのですがこれだけじゃだめなんでしょうか?


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

Name: pooka  ..ぴよぴよ(623ポイント)   Date: 2009/04/25(土) 21:11   No:32722     
Title: Re:無題    
う〜ん、打ち間違いとか?(それはないかな^^;)

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

Name: toga  ..ぴよぴよ(50ポイント)   Date: 2009/04/25(土) 21:58   No:32724     
Title: Re:無題    
はじめてコメントさせていただきます

定義されている「#include "struct.h"」の位置が
違うために出ているエラーだと思います
7章ではプログラムの頭に書かれていますが、
8章ではプログラムの下に書かれています



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

Name: yuki  ..ぴよぴよ(483ポイント)   Date: 2009/04/26(日) 02:25   No:32738 解決!     
Title: Re:無題    
本当にありがとうございます!
togaさんのおかげでできるようになりました!

コメントくださった方々もありがとうございました!


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



Name: 研修生  ..ぴよぴよ(586ポイント)   Date: 2009/04/23(木) 17:49   No:32575       
Title: ポインタ    
文字列のポインタを3つ進めてから2文字分だけ取りだすプログラムです。


int main()
{
char *p="VisualC++";
char *q;

for(int i=0;i<3;i++){
*p++;
}

for(i=3;i<5;i++){
*q++=*p++;
}

cout<<q;
return 0;
}



としたのですが、プログラムに問題が発生しましたとでます。どこが悪いのかはわかっていますが
どうすればいいのかがわかりません。教えて下さい。


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


Name: 初級者  ..入門者(4,606ポイント)   Date: 2009/04/23(木) 18:03   No:32576     
Title: Re:ポインタ    
どこに問題があるかおわかりとのことですが、
具体的にはどこですか?


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

Name: 研修生  ..ぴよぴよ(551ポイント)   Date: 2009/04/23(木) 18:22   No:32578     
Title: Re:ポインタ    
for(i=3;i<5;i++){
*q++=*p++;←ここです
}
デバッグでここで止まりました。


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

Name: ouh  ..入門者(3,677ポイント)   Date: 2009/04/23(木) 18:31   No:32579     
Title: Re:ポインタ    
デバッグでとまるのはそこかもしれませんが、まず直さないとだめなのは
char *q;
です。

それを直したうえでの話ですが、
*p++;
じゃなくて
p++;
としないと。

そもそもfor文使わなくても
p += 3;
だけでいいです。


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

Name: Mist  ..熟練のプログラマー(59,747ポイント)   Date: 2009/04/23(木) 18:34   No:32580     
Title: Re:ポインタ    
No:32578はqは実体をもたないポインタだからダメです。
実体を定義してそのアドレスをqにセットしてください。

提示のプログラムには他に問題あるからこれだけ直しても駄目だけどね。


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

Name: 研修生  ..ぴよぴよ(579ポイント)   Date: 2009/04/23(木) 18:41   No:32581     
Title: Re:ポインタ    
ですね。char *qがおかしいから←でとまります。
原因がわかりません


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

Name: ouh  ..入門者(3,788ポイント)   Date: 2009/04/23(木) 18:48   No:32582     
Title: Re:ポインタ    
>ですね。char *qがおかしいから←でとまります。
>原因がわかりません

それについてはMistさんが回答してくださっているんですが、
答えを言ってしまうと、
char q[3];
としてあとのコードを考えるといいと思います。


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

Name: 研修生  ..ぴよぴよ(595ポイント)   Date: 2009/04/23(木) 18:51   No:32583     
Title: Re:ポインタ    
あ、すいません。その回答を見たのは書き込み後でしたので。

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

Name: Mist  ..熟練のプログラマー(59,773ポイント)   Date: 2009/04/23(木) 19:07   No:32584     
Title: Re:ポインタ    
> ouhさん

> *p++;
> じゃなくて
> p++;
> としないと。

一応言っておくとこの部分は間違いではないです。
*を付ける必要がないのはその通りですが

*p++



*p;
p++;

を短縮しただけなので、ポインタは研修生さんの意図通りに進んでいます。


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

Name: 研修生  ..ぴよぴよ(603ポイント)   Date: 2009/04/23(木) 19:13   No:32585     
Title: Re:ポインタ    
なんか難しいですね。

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

Name: ouh  ..入門者(3,828ポイント)   Date: 2009/04/23(木) 19:13   No:32586     
Title: Re:ポインタ    
> Mistさん
ご指摘ありがとうございます。おっしゃる通りですね。浅はかでした。

> 研修生さん
すみません。*p++; でも研修生さんの意図した結果になります。
でも p++; と書きましょう。


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

Name: 草なぎ剛容疑者  ..ぴよぴよ(88ポイント)   Date: 2009/04/23(木) 22:01   No:32588     
Title: Re:ポインタ    
こんな風にしたかったのでしょうか。


#include <iostream>

using namespace std;

int main(void)
{
char *p = "VisualC++";

p += 3, cout << *p;
p++, cout << *p;
return 0;
}





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

Name: Naohiro19  ..ぴよぴよ(444ポイント)   Date: 2009/04/25(土) 22:59   No:32731     
Title: Re:ポインタ    
このプログラムのデバッグ結果です。:
>Run-Time Check Failure #3 - The variable 'q' is being used without being defined.
>test.exe の 0x00416d95 でハンドルされていない例外が発生しました : 0xC0000005: 場所 0xcccccccc に書き込み中にアクセス違反が発生しました。 。


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



Name: 研修生  ..かけだし(1,322ポイント)   Date: 2009/04/24(金) 17:54   No:32651       
Title: 配列とポインタ    
すいません、ポインタについて理解がおぼつかない感じで少しご質問させていただきます。

char str[20]="HELLO";
for(int i=0;str[i];i++){
str[i]=tolower(str[i]);
}


という関数をポインタに書き換えたものを教えて下さい。
配列はわかりやすいんですがポインタはいま1つで・・
お手数ですがお願いします。何回かポインタについて質問させてもらってるんですけど
中々理解できなくて1つ見本を見せてもらったほうがいいと思いました。


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


Name: 初級者  ..入門者(4,830ポイント)   Date: 2009/04/24(金) 18:31   No:32652     
Title: Re:配列とポインタ    
書かれたコードは関数の形をとっていません。

書かれた文が関数の中にどのように存在しているかと、
その関数をどのように呼び出しているかを含む、
想定されている書き換え前のコードをご提示いただけますか?


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

Name: march3  ..かけだし(1,430ポイント)   Date: 2009/04/24(金) 18:46   No:32653     
Title: Re:配列とポインタ    
こういうこと?

char str[20]="HELLO";
char *p = str;
for(; *p ;p++){
*p = tolower(*p);
}


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

Name: dic  ..上級者(19,734ポイント)   Date: 2009/04/24(金) 20:36   No:32665     
Title: Re:配列とポインタ    
配列を使った場合と
ポインタを使った場合の例なんかのせちゃったりしちゃいます

#include <stdio.h>

void main()
{
int a[10], i;

for( i=0; i<10; i++ )
a[i] = i;

printf( "配列版\n" );
for( i=0; i<10; i++ )
printf( "ADDRESS:%8d = %d\n", &a[i], a[i] );

printf( "ポインタ版\n" );
int *p;
for( p=a; p!=&a[10]; p++ )
printf( "ADDRESS:%8d = %d\n", p, *p );
}

参考になれば幸いです


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

Name: box  ..ハッカー(139,358ポイント)   Date: 2009/04/24(金) 20:52   No:32668     
Title: Re:配列とポインタ    

> printf( "ADDRESS:%8d = %d\n", &a[i], a[i] );
> printf( "ADDRESS:%8d = %d\n", p, *p );

ポインタ値を出力する際の書式文字列は、"%p"です。
整数値を前提としていると、何かまずいことが起きるかもしれませんし、起きないかもしれません。



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

Name: dic  ..上級者(19,779ポイント)   Date: 2009/04/25(土) 07:16   No:32689     
Title: Re:配列とポインタ    
>ポインタ値を出力する際の書式文字列は、"%p"です。
MSDNで調べたところ %p でした
これは知りませんでした
ご指摘ありがとうございます


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



Name: hamanov  ..かけだし(1,632ポイント)   Date: 2009/04/24(金) 02:37   No:32601       
Title: リストについて    
こんにちは。
現在リスト構造を使ったプログラムを組んでおります。
どうしても分からないところがありまして、よろしければどなたかご教示願います。

環境:
WindowsXP HomeSP3
VC++2008EE
コンソールアプリケーション

自分としてはループで変数をカウントして、32〜1までの数値をリスト要素の矩形構造体に
繰り返し代入する処理を実行したい。

最後にそれらの数値が入ったリストを、先頭から順に表示させたいのですが、どうもうまくいきません。

現状の問題点:
@動的に確保したメモリ領域のポインタが取得できない?

↓ソースです。


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

//--矩形構造体
typedef struct RECT {
int x,y;
unsigned int w,h;
}Rect;

//--矩形リスト構造体
typedef struct RectNode {
Rect rect;
struct RectNode *next;
} RectNode;

static RectNode *nodeTop = NULL;

//--関数宣言
static void add(Rect *rect);
static void update(void);
static void freeList(void);

int main(void)
{
Rect rect;
const int n = 32;
int i;

for(i = n; i ; i--)
{
rect.h = i;
rect.w = i;
rect.x = n - i;
rect.y = n - i;

add( &rect );
}

update();
freeList();

return 0;
}

//--矩形情報の追加
static void add(Rect *rect)
{
RectNode *tmp;
RectNode *node = (RectNode*)malloc(sizeof(RectNode));

node->rect = (*rect);
node->next = NULL;

tmp = nodeTop;
if( tmp != NULL )
{
tmp = nodeTop->next;
while( tmp != NULL )
{
tmp = tmp->next;
}
tmp = node;
}else{
nodeTop = node;
}
}

//--画面の更新
static void update(void)
{
RectNode *tmp;

if(nodeTop == NULL)
{
return;
}

tmp = nodeTop;
while( tmp != NULL )
{
printf("h:%d\t",tmp->rect.h);
printf("w:%d\t",tmp->rect.w);
printf("x:%d\t",tmp->rect.x);
printf("y:%d\n",tmp->rect.y);

tmp = tmp->next;
}

printf("Finish!\n");
}

//--矩形情報の削除
static void freeList(void)
{
RectNode *tmp,*next;

tmp = nodeTop;
while(tmp != NULL)
{
next = tmp->next; //リストを退避

free(tmp); //要素を解放

tmp = next; //次のリスト
}
}


よろしくお願いします。



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


Name: Hermit  ..上級者(22,313ポイント)   Date: 2009/04/24(金) 09:37   No:32607     
Title: Re:リストについて    
こんなとこでしょうか。
static void add(Rect * rect) {

RectNode **tmp;
RectNode *node = (RectNode *) malloc(sizeof(RectNode));

if (node == NULL) {
fprintf(stderr, "error");
exit(1);
}

node->rect = (*rect);
node->next = NULL;

tmp = &nodeTop;
while (*tmp)
tmp = &(*tmp)->next;
*tmp = node;
}



後で、元々のソースのいけない所だけの変更の方が良かったかなと思い直したので、追加です。
//--矩形情報の追加

static void add(Rect *rect)
{
RectNode *tmp;
RectNode *node = (RectNode*)malloc(sizeof(RectNode));

node->rect = (*rect);
node->next = NULL;

tmp = nodeTop;
if( tmp != NULL )
{
while( tmp->next != NULL )
{
tmp = tmp->next;
}
tmp->next = node;
}else{
nodeTop = node;
}
}


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

Name: hamanov  ..かけだし(1,758ポイント)   Date: 2009/04/25(土) 00:30   No:32677 解決!     
Title: Re:リストについて    
Hermitさん

回答ありがとうございます。

提示していただいたソースコードを真似て実装したところ、
自分の意図した通りに動かすごとが出来ました。

ポインタは今まで良く使っていたのですが、ダブルポインタを使った事が殆ど
無かったため、ポインタに対する理解が深まりました。

有難うございました。


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



Name: OA  ..ぴよぴよ(80ポイント)   Date: 2009/04/24(金) 15:03   No:32638       
Title: 教えてください    
(利用規約に従い、削除された質問文は 4/24 21:00 に元に戻しました)

受け取った文字列 strA の各文字をダブらせた文字列 (の先頭のポインタ) を返す関数 char *strDouble(char
*strA) を作成しなさい.なお,文字列の長さの計算には,ライブラリ関数 strlen を使用しても良い.(メ
モリを確保する際,\0 の分を忘れないように注意)以下に例を示す.

入力 出力
xyz → xxyyzz
abcde → aabbccddee


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


Name: バグ  ..ハッカー(159,336ポイント)   Date: 2009/04/24(金) 15:07   No:32639     
Title: Re:教えてください     
それで、この問題のどの部分が分からないのでしょうか?

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

Name: OA  ..ぴよぴよ(89ポイント)   Date: 2009/04/24(金) 15:18   No:32641     
Title: Re:教えてください     
率直に答えを教えてください。

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

Name: 御津凪 [URL]  ..比類無きプログラマー(84,717ポイント)   Date: 2009/04/24(金) 15:29   No:32642     
Title: Re:教えてください     
この掲示板は課題・宿題などの丸投げは禁止です。


これは、学校か何かの課題ですか?
自分で調べるなり気になるところを質問したりするなりしていかないと、
自分にとって何の意味もありません。

どういう風に処理をしているのか述べよ、とかいわれたら答えられるはずがないですし。
(解読スキルによりますが)


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

Name: 御津凪 [URL]  ..比類無きプログラマー(84,828ポイント)   Date: 2009/04/24(金) 15:37   No:32644     
Title: Re:教えてください     
指摘だけでは何なので、問題の大まかな処理について示しておきます。

・元の文字列(以下 src)を長さを計算し、その長さの2倍+1のサイズの文字列領域を用意する(以下 dest)。
・src を走査し、各文字を dest に2個並べてセットしていく。
・dest の最後に NULL 文字をセットする。
・dest を返す。


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

Name: たかぎ [URL]  ..比類無きプログラマー(97,580ポイント)   Date: 2009/04/24(金) 15:44   No:32645     
Title: Re:教えてください     
あえてボケてみる。

#include <stdio.h>
#include <string.h>

static void strDouble_helper(char *s, size_t pos)
{
if (s[pos] != '\0')
{
strDouble_helper(s, pos+1);
s[pos*2] = s[pos*2+1] = s[pos];
}
else
{
s[pos*2] = '\0';
}
}

char *strDouble(char *strA)
{
strDouble_helper(strA, 0);
return strA;
}

int main(void)
{
char s[20] = "abc";
printf("%s\n", strDouble(s));
return 0;
}



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

Name: バグ  ..ハッカー(159,328ポイント)   Date: 2009/04/24(金) 16:03   No:32646     
Title: Re:教えてください     
解決にするのはともかく、問題を消してしまうのは如何なものでしょうかねぇ…(-_-;)

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

Name: たかぎ [URL]  ..比類無きプログラマー(97,619ポイント)   Date: 2009/04/24(金) 16:07   No:32647     
Title: Re:教えてください     
> 問題を消してしまうのは如何なものでしょうかねぇ…(-_-;)

国語力に問題があるか、知能に問題があるか、人格に問題があるかのいずれかだということです。


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

Name: たかぎ [URL]  ..比類無きプログラマー(97,666ポイント)   Date: 2009/04/24(金) 16:33   No:32649     
Title: Re:教えてください     
もしかして、私がコードを貼ったので解答が得られたと勘違いしたのだろうか...。
わざわざ

> あえてボケてみる。

と書いたんですけどね。


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



Name: 研修生  ..ぴよぴよ(905ポイント)   Date: 2009/04/24(金) 13:37   No:32625       
Title: strcmp    
strcmpの戻り値についてご質問ですがいったい何が戻ってきてるのでしょう?
0より小か大もしくは=で比較していますが-54だったり3だったりでこれは
strcmp(s1,s2)を考えた場合に、s1のバイト数-s2のバイト数を戻り値にしてるのでしょうか?
処理系によって値は異なるみたいですがVC++6.0です。


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


Name: バグ  ..ハッカー(158,998ポイント)   Date: 2009/04/24(金) 13:48   No:32627     
Title: Re:strcmp    
うちのVC++6.0では、0、-1、1のいずれかしか返ってきません…何故だろう(^_^;)
というか、処理系によって内部処理が違うのならば、それを詳しく知る意味はないのではないでしょうか?
比較方法が知りたいという事であれば、MSDNに詳しく書かれていますよ?


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

Name: 研修生  ..かけだし(1,028ポイント)   Date: 2009/04/24(金) 13:55   No:32628 解決!     
Title: Re:strcmp    
あ・・失礼しました。教科書のstrcmpの書いた通りにうちこんでコンパイルしてますが
どうもこちらがおかしいようです。ライブラリ関数の方使ったら0,-1,1になりました。
意味がないこともないのですが、文字列の場合どの基準で大小決めてるのか気になったものですから
又、今度自分でもこのような比較関数を作る場合にも参考になります。


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

Name: 研修生  ..かけだし(1,084ポイント)   Date: 2009/04/24(金) 14:02   No:32629     
Title: Re:strcmp    
それと、今stricmp関数について考えてるのですが大小区別なく比較とのことで
この関数について考える為に知りたいというのもあります。


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

Name: バグ  ..ハッカー(159,129ポイント)   Date: 2009/04/24(金) 14:16   No:32631     
Title: Re:strcmp    
VC++6.0のMSDNによると、比較の仕方は基本的に辞書と同じようですね。
ためしに実装してみました。


int strcmp(const char* str1, const char* str2)
{
while (*str1 != '\0' && *str2 != '\0')
{
if (*str1 != *str2)
{
break;
}
else
{
++str1;
++str2;
}
}

if (*str1 == '\0' && *str2 == '\0')
{
return 0;
}
else if (*str1 > *str2)
{
return 1;
}
else
{
return -1;
}
}


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

Name: たかぎ [URL]  ..比類無きプログラマー(97,211ポイント)   Date: 2009/04/24(金) 14:21   No:32632     
Title: Re:strcmp    
strcmpの仕様は、

#include <string.h>

int strcmp(const char *s1, const char *s2)
{
while (*s1 != '\0' && *s1 == *s2)
{
++s1;
++s2;
}
return (unsigned char)*s1 - (unsigned char)*s2;
}

といった実装を想定しています。

Visual C++の場合、わざわざ最後に-1, 0, +1に直していますので、それだけ効率が悪くなっています。


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

Name: バグ  ..ハッカー(159,259ポイント)   Date: 2009/04/24(金) 14:21   No:32633     
Title: Re:strcmp    
>>それと、今stricmp関数について考えてるのですが大小区別なく比較とのことで
>>この関数について考える為に知りたいというのもあります。

これは、toupper、towlowerで全ての文字を大文字か小文字のどちらかに変換しておいて、strcmpを行えば、望んだ結果が得られそうですね。



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

Name: バグ  ..ハッカー(159,315ポイント)   Date: 2009/04/24(金) 14:23   No:32634     
Title: Re:strcmp    
>>たかぎさん
なるほど、単純比較の結果を戻り値とすることを想定しているから、正負もしくは0という取り決めになっているんですね。


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

Name: Hermit  ..上級者(22,466ポイント)   Date: 2009/04/24(金) 14:57   No:32636     
Title: Re:strcmp    
strcmp の比較は、
とりあえず、unsigned char でキャストするもんだと思ってましたが・・・

VC++ 6.0 の char は、デフォルトでは unsigned char でしょうか?

VC++2008EE のコマンドラインでは、デフォルトで、signed char みたいなので、
後々のためには、一応キャストしておいたほうがいいと思いますよ。

私が書いてるうちに、たかぎさんが書いてましたね。
とりあえず、消せないみたいなので、このまま置いておきます(^^;


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

Name: 研修生  ..かけだし(1,134ポイント)   Date: 2009/04/24(金) 15:15   No:32640     
Title: Re:strcmp    
stricmpに関しては小文字か大文字かに直すまでは考えていましたが比較基準による・・
と思ってました。無事にできました、ありがとうございました。


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

Name: たかぎ [URL]  ..比類無きプログラマー(97,408ポイント)   Date: 2009/04/24(金) 15:31   No:32643     
Title: Re:strcmp    
stricmpもstrcasecmpも、文字列に含まれる文字をいったん小文字に変換してから比較します。
ただ、ロケールの扱いをどうするのかが難問です。

tolowerを使って変換すると、動作がロケール依存になってしまいます。
そして、もちろんのことながら多バイト文字には対応できません。

また、マルチスレッド環境では、バッググラウンドでロケールの設定が変更された場合にどうするかといった問題もあり、一筋縄ではいきません。


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



Name: march3  ..かけだし(1,039ポイント)   Date: 2009/04/24(金) 13:11   No:32617       
Title: scanfについて    
以下のプログラムを実行すると思うように動いてくれません。

#include<stdio.h>
int main(void){
char a,b;
scanf("%c",&a);
scanf("%d",&b);
printf("a = %d, b = %d\n", a, b);
return(0);
}


------実行結果--------
A
4
a = ^@, b = 4
----------------------

aの値に'A'が入ってくれないのですが、なぜでしょう。

環境はVineLinux gccです。
よろしくお願いします。


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


Name: バグ  ..ハッカー(158,830ポイント)   Date: 2009/04/24(金) 13:16   No:32618     
Title: Re:scanfについて    
printf("a = %d, b = %d\n", a, b);

この箇所を…

printf("a = %c, b = %d\n", a, b);

としても駄目ですか?


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

Name: march3  ..かけだし(1,167ポイント)   Date: 2009/04/24(金) 13:26   No:32619     
Title: Re:scanfについて    
早速の回答ありがとうございます。
先ほどのソースコードはデバッグ用のものでした。すみません。

printf("a = %d, b = %d\n", a, b);

の場合は、同じ入力で
a = 0, b = 4
と表示されます。


printf("a = %c, b = %d\n", a, b);

の場合は同じ入力で
a = ^@, b = 4
と表示されます。


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

Name: バグ  ..ハッカー(158,862ポイント)   Date: 2009/04/24(金) 13:32   No:32621     
Title: Re:scanfについて    
では、試しに

char a = 'A';
printf("%c", a);

としたら、どういう風に表示されますか?


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

Name: toyo  ..プログラマー(31,927ポイント)   Date: 2009/04/24(金) 13:33   No:32622     
Title: Re:scanfについて    
scanf("%d",&b);
char型の変数bに%dでint型の値を代入しています
私のFedoraではセグメンテーション違反になりました
char a;
int b;
にしたらどうでしょう


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

Name: bitter_orange  ..ぴよぴよ(725ポイント)   Date: 2009/04/24(金) 13:34   No:32623     
Title: Re:scanfについて    
VineLinux gccはどう動くかわかりませんが、printfはたしか
%c→char型(1文字)
%d→int型なので

int main(void){

char a,b;

scanf("%c %c",&a,&b);

printf("a = %c, b = %c \n", a, b);

return 0;

}
ではどうでしょうか。


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

Name: バグ  ..ハッカー(158,889ポイント)   Date: 2009/04/24(金) 13:36   No:32624     
Title: Re:scanfについて    
ああ、なるほど、変数bがオーバーフローを起こして、たまたま隣接したアドレスに確保されていたaの領域に影響を与えていた…という事ですか。

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

Name: march3  ..かけだし(1,377ポイント)   Date: 2009/04/24(金) 13:47   No:32626 解決!     
Title: Re:scanfについて    
自己解決しました。
こういうことですね。

#include<stdio.h>
int main(void){
char a,b;
scanf("%c",&a);
printf("a = %c\n", a);
scanf("%d",&b);
printf("a = %d, b = %d\n", a, b);
printf("a = %p, b = %p\n", &a, &b);
return(0);
}


----実行結果----
A
a = A
4
a = 0, b = 4
a = 0xbfffed9f, b = 0xbfffed9e
----------------

おそらくバグさんのおっしゃることが起こっているようです。
int bで回避できます。
お騒がせしました。


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

Name: toyo  ..プログラマー(31,898ポイント)   Date: 2009/04/24(金) 15:01   No:32637     
Title: Re:scanfについて    
%hhd が使えるコンパイラなら
char b;
scanf("%hhd", &b);
という方法もあります。


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



Name: io  ..かけだし(1,154ポイント)   Date: 2009/04/22(水) 21:58   No:32546       
Title: 環境が変わると動きません    
現在学校でC言語勉強中です。
エディタ→TeraPad コンパイラ→MinGW日本語版 の自分のパソコンでプログラムを作成し実行すると上手く行くのですが、同じソースを学校のパソコン(Visual C++6.0)で実行しようとするとエラーが出て上手く実行できません。(OSは双方共にwindows XP)

ちなみに以下のような内容のプログラムです。

データファイルを読み込み、値段ごと(100万未満、100万以上200万未満、200万以上)に分け値段順に表示する。

作ってみたソース↓↓↓


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

typedef struct{
char name[20];
int price;
int year;
int number;
int dt1;
float dt2;
}CAR_DATA;


void sort(CAR_DATA data[], int n){ //昇順に並べ替え

int i, j;
CAR_DATA temp;

for(i=0; i<n-1; i++){
for(j=i+1; j<n; j++){
if(data[i].price > data[j].price){
temp = data[i];
data[i] = data[j];
data[j] = temp;
}
}
}

for(i=0; i<n; i++)
printf("%-15s%10d\n",data[i].name, data[i].price);

}


int main(void){

FILE *fp;
char str[256];
CAR_DATA data[100];
CAR_DATA data1[30], data2[30], data3[30];
int i = 0, n;
int count1 = 0, count2 = 0, count3 = 0;

fp = fopen("car.asc","r");
if( fp == NULL ){
puts( "ファイルが開けません" );
exit(1);
}

while((fgets(str,256,fp)) != NULL){ // データ終端までの文字列を読み込む

// 文字列・各数値データを読み込む
sscanf(str, "%s %d %d %d %d %f", &data[i].name, &data[i].price, &data[i].year, &data[i].number, &data[i].d1, &data[i].d2);
i++;
}

n = i; // n:データ数

for(i=0; i<n; i++){ // 読み込んだデータをそれぞれの値段閾に分ける
if(data[i].price < 1000000){
data1[count1] = data[i];
count1++;
}else if((data[i].price >= 1000000) && (data[i].price < 2000000)){
data2[count2] = data[i];
count2++;
}else{
data3[count3] = data[i];
count3++;
}
}

printf("100万未満\n");
printf("--------------------------------------------\n");
sort(data1, count1);
printf("\n100以上200万未満\n");
printf("--------------------------------------------\n");
sort(data2, count2);
printf("\n200万以上\n");
printf("--------------------------------------------\n");
sort(data3, count3);

fclose(fp);

return 0;

}



VCの方でもコンパイルエラーは出ません。
ただ、実行すると"runtime error"(?)のような表示が出て上手く行きません。

上でも申しました通り、自分のパソコンでは問題なく実行できたので何がいけないのか分かりません。
どなたか分かる方がいらっしゃいましたら教えてくださいませ。
よろしくお願いします!!


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


Name: Justy  ..伝説なるハッカー(342,493ポイント)   Date: 2009/04/22(水) 22:41   No:32547     
Title: Re:環境が変わると動きません    

>実行すると"runtime error"(?)のような表示が出て上手く行きません

 「のような」とありますが、他に何もメッセージは出ないのですか?


 先読みして推測するに、何となく R6002のエラーの臭いがします。
 試しに double t = 0; の一文をどこかに入れてみてください。
 R6002のエラーならこれで直るはずです。


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

Name: box  ..ハッカー(139,191ポイント)   Date: 2009/04/23(木) 06:05   No:32553     
Title: Re:環境が変わると動きません    

> エディタ→TeraPad コンパイラ→MinGW日本語版 の自分のパソコンでプログラムを作成し実行すると上手く行く

本当ですか?
提示のソースをそのままコピー&ペーストしてコンパイルしたところ、

> int dt1;
> float dt2;


> sscanf(str, "%s %d %d %d %d %f", &data[i].name, &data[i].price, &data[i].year, &data[i].number, &data[i].d1, &data[i].d2);


メンバー名の食い違い(定義はdt1, dt2、読込んでいるのはd1, d2)により
エラーが出ました。
ご自身の環境で正しく動いているというソースを
そっくりそのまま見せていただけますか?



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

Name: toyo  ..プログラマー(31,867ポイント)   Date: 2009/04/23(木) 07:19   No:32555     
Title: Re:環境が変わると動きません    
確認してみました
boxさんの指摘部分を修正してVC++6.0で実行しましたが確かにruntime error出ます
VC++2005ExpressEditionでは
Debug Error!
R6002
- floating point support not loaded
のダイアログが出ました
VC++2008ExpressEditionではエラー無く実行できました

Justyさんの読み通りのようです

(VC++6.0でエラーの詳細が出なかったのはVistaだからでしょうか)


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

Name: io  ..かけだし(2,099ポイント)   Date: 2009/04/23(木) 14:24   No:32568     
Title: Re:環境が変わると動きません    
>boxさん
すいません。色々いじっている最中だったので…
動かしてみたソースは以下です↓↓↓


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

typedef struct{
char name[20]; /* 車名 */
int price; /* 値段 */
int a;
int b;
int c;
float d;
}CAR_DATA; /* 構造体変数CARD_DATAを定義 */


void sort(CAR_DATA data[], int n){ /* 並べ替えを行う関数 */

int i, j;
CAR_DATA temp;

for(i=0; i<n-1; i++){
for(j=i+1; j<n; j++){
if(data[i].price > data[j].price){
temp = data[i];
data[i] = data[j];
data[j] = temp;
}
}
}

for(i=0; i<n; i++)
printf("%-15s%10d\n",data[i].name, data[i].price);

}


int main(void){

FILE *fp;
char str[256];
CAR_DATA data[100];
CAR_DATA data1[30], data2[30], data3[30];
int i = 0, n;
int count1 = 0, count2 = 0, count3 = 0;

fp = fopen("car.asc","r"); /* car.ascを開く */
if( fp == NULL ){
puts( "car.ascが開けません" );
exit(1);
}

while((fgets(str,256,fp)) != NULL){ /* データ終端までの文字列を読み込む */

/* 文字列をnameに、各数値データをprice,a,b,c,dにそれぞれ読み込む */
sscanf(str, "%s %d %d %d %d %f", &data[i].name, &data[i].price, &data[i].a, &data[i].b, &data[i].c, &data[i].d);
i++;
}

n = i;

for(i=0; i<n; i++){ /* 読み込んだデータをそれぞれの値段閾に分ける */
if(data[i].price < 1000000){
data1[count1] = data[i];
count1++; /* 100万未満のデータ数 */
}else if((data[i].price >= 1000000) && (data[i].price < 2000000)){
data2[count2] = data[i];
count2++; /* 100万以上200万未満のデータ数 */
}else{
data3[count3] = data[i];
count3++; /* 200万以上のデータ数 */
}
}

printf("100万未満\n");
printf("--------------------------------------------\n");
sort(data1, count1);
printf("\n100以上200万未満\n");
printf("--------------------------------------------\n");
sort(data2, count2);
printf("\n200万以上\n");
printf("--------------------------------------------\n");
sort(data3, count3);

fclose(fp);

return 0;

}


>Justyさん、toyoさん

エラー内容はtoyoさんのおっしゃっている通りで、まず

Debug Error!
Program:C:\work\ex3.exe
runtime error

と表示され中止・再試行・無視を選ぶようになっていました。
(無視を選ぶとtoyoさんが書かれている通りのと同じ内容が出てきました)

Justyさんのご指摘通り、double t=0; という記述を入れたら正常に動作しました!!
ありがとうございます!!!

えと、ちなみにR6002というのは何なのでしょうか?
なぜ↑↑↑のような記述を入れると動くようになったのでしょうか??


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

Name: 御津凪 [URL]  ..比類無きプログラマー(84,517ポイント)   Date: 2009/04/23(木) 14:45   No:32571     
Title: Re:環境が変わると動きません    
> Debug Error!
> R6002
> - floating point support not loaded

エラーメッセージをわかりやすく訳すと、「必要な浮動小数点ライブラリがリンクされていません」です。
(「VC++ R6002」でググると出てきます)

これはそのままの意味で、おそらくプログラム上では浮動小数点をいじる処理がまったくないためにリンクされなかったのだと思います。
double t=0; を入れることで、浮動小数点ライブラリがリンクされるようになったということでしょう。


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

Name: 初級者  ..入門者(4,654ポイント)   Date: 2009/04/23(木) 18:09   No:32577     
Title: Re:環境が変わると動きません    
double t=0;
を書くとエラーが出なくなった、というのは
解決法として真っ当なのでしょうか?


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

Name: Justy  ..伝説なるハッカー(343,201ポイント)   Date: 2009/04/23(木) 23:19   No:32590     
Title: Re:環境が変わると動きません    

>Justyさんのご指摘通り、double t=0; という記述を入れたら正常に動作しました!!

 なるほど、やはりそれでしたか。
 一応解決しているようですが、こちらには目を通しておいてください。
 
C ランタイム エラー R6002 (C++)
ttp://msdn.microsoft.com/ja-jp/library/k1x26e0x(VS.80).aspx

Microsoft サポート オンライン
ttp://support.microsoft.com/kb/37507/ja
ttp://support.microsoft.com/kb/37507/en-us


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

Name: io  ..かけだし(2,202ポイント)   Date: 2009/04/24(金) 13:31   No:32620 解決!     
Title: Re:環境が変わると動きません    
>御津凪さん、Justyさん

sscanfのとこで%fという書式指定をしているのに、プログラム中で浮動小数点をいじる式がなかったのがいけなかったんですね。
Justyさんが教えてくださったHPも見てみました!!
色々教えてくださって、どうもありがとうございました!!


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



Name: 研修生  ..ぴよぴよ(728ポイント)   Date: 2009/04/24(金) 10:42   No:32610       
Title: strcpy    

char strcpy(char *S1, const char*s2)
{
char *p=s1;
while(*s1++=*s2++)
;
return p;
}

int main()
{
char *p="Visual";
char *q="C++";

printf("%s",strcpy(p,q));
return 0;
}

これは参考書にあるstrcpyの定義書き写したものですがなんかエラーでます・・
<string.h>のstrcpy使ってもでるので混乱している状態です。


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


Name: バグ  ..ハッカー(158,706ポイント)   Date: 2009/04/24(金) 10:47   No:32611     
Title: Re:strcpy    
コピー先に書き換え不能な領域を指定しているからです。
ひょっとして、研修生さんはVBとかJavaの経験者なのでしょうか?


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

Name: 研修生  ..ぴよぴよ(753ポイント)   Date: 2009/04/24(金) 10:48   No:32612 解決!     
Title: Re:strcpy    
すいません。前回の質問と一緒で実体がなさそうでした。

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

Name: 研修生  ..ぴよぴよ(800ポイント)   Date: 2009/04/24(金) 10:49   No:32613     
Title: Re:strcpy    
いえ、全くの初心者です。
char *p=Visual";
char s[19];
printf("%s",strcpy(s,"aaa"));にしたら使えました。

バグさんありがとうございました。


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

Name: バグ  ..ハッカー(158,775ポイント)   Date: 2009/04/24(金) 10:53   No:32614     
Title: Re:strcpy    
そうでしたか、失礼しました(^_^;)
最初は、「文字」、「文字列」、「文字列へのポインタ」の違いが分かりづらいとは思いますが、頑張ってください。


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

Name: 初級者  ..入門者(4,728ポイント)   Date: 2009/04/24(金) 12:27   No:32615     
Title: Re:strcpy    
何かエラー出ます、ではなく
「何のときに、どんな」エラーが出るかを書いてください。

ところで、質問時のソースでは関数の型 char と戻り値の型 char * が
異なっています。
解決済みですか?


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

Name: 研修生  ..ぴよぴよ(821ポイント)   Date: 2009/04/24(金) 12:59   No:32616     
Title: Re:strcpy    
あ、表記ミスです。書き写しなのですいません

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



Name:  ..ぴよぴよ(6ポイント)   Date: 2009/04/24(金) 07:59   No:32605       
Title: 無題    
DxLib_VCのサンプルプログラム実行用フォルダのDxLib_VC2008_and_2005用.slnを開こうとしても開けません。どうすれば開けますか?

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


Name: 御津凪 [URL]  ..比類無きプログラマー(84,581ポイント)   Date: 2009/04/24(金) 09:58   No:32608     
Title: Re:無題    
ここの過去ログにはこのような(sln ファイルが開けない)質問がたくさんありますので、探してください。

要は一回 VC++ を起動しないといけないとか、その程度の問題です。


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



Name: Ma  ..初心者(6,029ポイント)   Date: 2009/04/23(木) 10:38   No:32559       
Title: 弾の形成の補完?    
過去スレあったらすみません><

東方のゲームをやったことがない方がいるとは思うのですが、
ある細長い弾の一部にあたるとその部分だけ消えて、
残りの部分がまた形を修正したかのように、弾になり続けるような効果を出しているのですが、
この実装は簡単でしょうか?

たとえば、100px の長さの弾に 50px 地点ほどで長さ20pxの自機があたったとすると、
40px と 40px の弾に分裂したかと思ったら、長さが約半減した2つの弾になるのです。

これは、ただたんに古い弾を消して、長さが元より短い新しい弾を二つ作り、位置を合わせただけなのでしょうか?

だとすると、自由自在の弾の長さを指定して、グラフィックが自動的にその形に合うように変形するわけですが、
これは、ある方向だけに画像を拡大しただけなのでしょうか?
だとしたら、DXライブラリのどんな関数で実現できるでしょうか?
(以前あった気がしたのですが忘れてしまったので…)


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


Name: SooA [URL]  ..上級者(18,601ポイント)   Date: 2009/04/23(木) 11:34   No:32560     
Title: Re:弾の形成の補完?    
実物を見てみないと何とも言えませんが、
(東方をプレイしたことがありません。)
小さい弾を連ねて描画しているのではないでしょうか?

画像は適当に描いた物ですが、
アルファチャンネルを利用し、
外側に透明度が高くなっていくような
丸や菱形っぽい弾をずらしながら描画すれば
一本のレーザーに見せることも可能だと思いますよ。


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

Name: Ma  ..初心者(6,138ポイント)   Date: 2009/04/23(木) 13:57   No:32564     
Title: Re:弾の形成の補完?    
画像を追加します。
こんな感じです。
(著作権は、上海アリス幻樂団 にあります。)


>SooA
>小さい弾を連ねて描画しているのではないでしょうか?
お返事ありがとうございます、ですが
画像から見ても分かるように、恐らく違うかと思います。

やはり、弾をふたつにして画像の拡大率と位置を調節して描画したかのように見えるのですけどね。
皆さんにもそう見えるでしょうか?

===以下は、もしそうだとしたら、という話です。===

そうだとすると、DXライブラリで元画像のX軸のみまたはY軸のみに拡大して使用する方法も教えていただけると助かります。<(_ _)>


一応自分で調べた限りでは、
DrawModiGraph において、4つの座標をそれぞれ求めて描画する方法。
かなーと思ったりもしたのですが、計算量が多くなりそうなので、
先にグラフィックを作っておいてから
DrawRotaGraph2
で、中心座標だけで描画したほうが早いかなとも思ってます。

しかし後者は、一時的にグラフィックを作る事で、セーブ機能つきのゲーム(今製作中の)としては、
グラフィックまでも保存しないといけないので、避けたいところでもあります。


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

Name: 御津凪 [URL]  ..比類無きプログラマー(84,528ポイント)   Date: 2009/04/23(木) 14:22   No:32567     
Title: Re:弾の形成の補完?    
分かれたときの短いレーザーと、そうでないレーザーの端の暗くなっていく色の長さの違いから察するに、
このレーザーは、単に丸い弾を引き伸ばしているものだと思います。
(Ma さんの考えに近いと思います)

しかし、描画システムの変わっている風神録以降は、 SooA さんに近く、
外側につれて透明度と一緒に色も暗くなっている細長い弾を加算合成して並べたものになっていると思います。
(かすりの音で判断)


どちらにおいても、DXライブラリでは重い処理に当たるので、
実際に動かしてみて、もしダメだったら諦める(出す量を控える)か
別のゲームライブラリに乗り換える必要があります。
(描画が重くなる要因はDXライブラリが DirectDraw を使用している点にありますので)


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

Name: yu  ..プログラマー(25,681ポイント)   Date: 2009/04/23(木) 22:15   No:32589     
Title: Re:弾の形成の補完?    
以前、自分もここの掲示板を利用し、同じ質問をしたなぁ・・・

http://dixq.net/board/log/bbslog_83.html#26494


でも、このときは米粒弾を引き延ばしてレーザーにしているとは知りませんでした。


そして、この後に引き延ばしていると気がついて
レーザー一つに対して消すことが可能な座標を長さに合った分だけ作ってやって、
真ん中の方に当たっていたら、元のレーザーを消してレーザーを2つ登録。(1つ登録だけでいいかもしれません
端に当たっていたらレーザーの長さを短くする。
短くなりすぎたら消す。

という感じに実装したらうまくいきました。
それほど処理も重くはなりませんでした。

今考えると座標を用意するのではなくて、当たったところの座標を元に、
レーザーを分裂、または短くしたほうがよいかと思います。


後、レーザーに太さと長さを持たせるために
DrawModiGraphで描画しないときついかと思われます。


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

Name: Ma  ..初心者(6,193ポイント)   Date: 2009/04/24(金) 01:28   No:32600 解決!     
Title: Re:弾の形成の補完?    
>御津凪
>yu

返信ありがとうございます。
とりあえず、yuさんがおっしゃっている方法がやはり一番DXライブラリに合いそうなので、
この方法を試してみることにします。
ありがとうございました。


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



Name: shalot  ..かけだし(1,354ポイント)   Date: 2009/04/21(火) 20:57   No:32518       
Title: タイトル画面の選択肢について    
3点お聞きしたいことがあります。
タイトル画面で"GameStart","Option","quit"というコマンドを準備し
上下キーを押すことでコマンドを選択し、そのコマンドが明るくなるというコードを書きたいのですが
@負の数の剰余ができないようで上キーを押しても"GameStart"から"Quit"への移動ができない
A下キーを一度おしても移動ができない。押しっぱなしにすると動くのですが。
Bいろいろいじっているうちに、いつの間にか音楽が再生されなくなりました。なぜでしょうか?

以上よろしくお願いいたします。本当に困っています。どうか助けてください。


while(ProcessMessage()==0){
ClsDrawScreen();
switch(game_state){
case 0://タイトル
LoadGraphScreen(0,0,"dat/title.png",FALSE);
PlaySound("dat/closedover.mp3",DX_PLAYTYPE_BACK);
SetDrawBright(256,256,256);
LoadGraphScreen(360,260,"dat/gamestart.png",TRUE);
SetDrawBright(128,128,128);
LoadGraphScreen(360,315,"dat/option.png",TRUE);
LoadGraphScreen(355,375,"dat/quit.png",TRUE);
SetDrawBright(256,256,256);

if(CheckHitKey(KEY_INPUT_DOWN)==1)i++;
if(CheckHitKey(KEY_INPUT_UP)==1)i--;
i=i%3;
if(i==0){
SetDrawBright(256,256,256);
LoadGraphScreen(360,260,"dat/gamestart.png",TRUE);
SetDrawBright(128,128,128);
LoadGraphScreen(360,315,"dat/option.png",TRUE);
LoadGraphScreen(360,375,"dat/quit.png",TRUE);
SetDrawBright(256,256,256);
}
if(i==1){
SetDrawBright(128,128,128);
LoadGraphScreen(360,260,"dat/gamestart.png",TRUE);
SetDrawBright(256,256,256);
LoadGraphScreen(360,315,"dat/option.png",TRUE);
SetDrawBright(128,128,128);
LoadGraphScreen(360,375,"dat/quit.png",TRUE);
SetDrawBright(256,256,256);
}
if(i==2){
SetDrawBright(128,128,128);
LoadGraphScreen(360,260,"dat/gamestart.png",TRUE);
LoadGraphScreen(360,315,"dat/option.png",TRUE);
SetDrawBright(256,256,256);
LoadGraphScreen(360,375,"dat/quit.png",TRUE);
SetDrawBright(256,256,256);
}
printfDx("i=%d",i);
ScreenFlip();
break;



ScreenFlip();
}

DxLib_End();
return 0;
}



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


Name: pooka  ..ぴよぴよ(597ポイント)   Date: 2009/04/21(火) 21:50   No:32522     
Title: Re:タイトル画面の選択肢について    
@に関して

if(CheckHitKey(KEY_INPUT_DOWN)==1)i++;
if(CheckHitKey(KEY_INPUT_UP)==1)i--;
i=i%3;

if(CheckHitKey(KEY_INPUT_UP)==1)
i = (i + NUM-1) % NUM;
if(CheckHitKey(KEY_INPUT_DOWN)==1)
i = (i + 1) % NUM;

にしてみてください。
(NUMは選択肢の個数なので今の場合は3)

実際に確認したわけではないので違っているかもしれません(^^;


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

Name: hamanov  ..ぴよぴよ(825ポイント)   Date: 2009/04/24(金) 01:15   No:32599     
Title: Re:タイトル画面の選択肢について    
@に関しては、iの型を符号無し整数型にするだけでうまくいくともいます。
A、Bに関しては情報が少なすぎて分かりません。


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



Name: 匿名  ..上級者(15,500ポイント)   Date: 2009/04/17(金) 21:21   No:32382       
Title: アシストを動かす式    
今ちょっとアシストを使った弾幕を考えているのですが
アシストをうまく移動できないんです。

ボスの座標で交わるようにアシストに8の字(∞これですね)を描かせたいんですが
アシストを動かす式が思いつかないんです。

角度で動かすのは複雑そうなので、座標を代入して動かそうと思うんですが・・

EnemyShot[i].x=Boss.x+...
EnemyShot[i].y=Boss.y+...



・・・の部分に入る式が思いつかないんです。
みなさんの知恵を貸して下さい
あと8の字は毎回、同じ所を通るようにしたいんです。



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


Name: situmon  ..上級者(24,013ポイント)   Date: 2009/04/17(金) 21:30   No:32383     
Title: Re:アシストを動かす式    
sin波または円運動は考えましたか?
sin波だったら
最初は+で後は-にして・・・・
円運動だったら半円描かせてつぎは逆半円・・・ではできないのでしょうか・・・
すいません。まちがってたらすいません・・・
シューティングゲームの館にのってます。
ただ敵の移動パターンなのでそこは・・・


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

Name: pooka  ..ぴよぴよ(443ポイント)   Date: 2009/04/17(金) 21:48   No:32384     
Title: Re:アシストを動かす式    
x=A*cosθ*sinθ
y=A*sinθ
あるいは
x=A*cosθ
y=A*sinθ*cosθ
でAの値を適当にしてθの値をかえていけば8の字になると思います。
違ってたらすみません。


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

Name: 匿名  ..上級者(15,751ポイント)   Date: 2009/04/17(金) 22:12   No:32387     
Title: Re:アシストを動かす式    
sin波と円運動は使っているんですが、うまくいかないんですよ
こんな感じです

EnemyShot[i].x=Boss.x+cos(PI/120*(float)Boss.Count*EnemyShot[i].Step+EnemyShot[i].Angle)*fabs(sin(PI/120*(float)Boss.Count)*200);//X方向の移動
EnemyShot[i].y=Boss.y+sin(PI/120*(float)Boss.Count*EnemyShot[i].Step+EnemyShot[i].Angle)*fabs(sin(PI/120*(float)Boss.Count)*200);//Y方向の移動


8の字にはなるんですけど外側をなぞる軌道になるし完全な円になってしまうんですよね。
細長い楕円の8の字にしたいんです。

pookaさんの式を使ってみたら8の字にはなったんですが
砂時計のような形になってしまいました。

あと8の字は毎回、同じ所を通るようにしたいんですが
8の字の全体はボスの座標を中心に傾ける必要があるんです。


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

Name: situmon  ..上級者(24,085ポイント)   Date: 2009/04/18(土) 23:26   No:32444     
Title: Re:アシストを動かす式    
楕円でしたか・・・

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

Name: kazuoni [URL]  ..比類無きプログラマー(83,125ポイント)   Date: 2009/04/18(土) 23:54   No:32445     
Title: Re:アシストを動かす式    
このあたりが参考になるかもしれないです
連珠形(レムニスケート)
ttp://www004.upp.so-net.ne.jp/s_honma/curve/lemniscate.htm


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

Name: 匿名  ..上級者(15,737ポイント)   Date: 2009/04/19(日) 00:11   No:32446     
Title: Re:アシストを動かす式    
レムニスケートですか
ちょっと難解ですね・・


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

Name: situmon  ..上級者(24,034ポイント)   Date: 2009/04/19(日) 08:58   No:32447     
Title: Re:アシストを動かす式    
まだわからないものばかりでレムニスケートはわかりませんが、
sin波は円運動とは違いますよ。
でも動きは方程式(!?)をつかったほうがきれいなのでしょうかね・・・


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

Name: situmon  ..上級者(24,068ポイント)   Date: 2009/04/19(日) 09:03   No:32448     
Title: Re:アシストを動かす式    
さっきレムニスケートについて調べたら、
カッシーニの卵形線の一種だそうです。
それを検索したほうがたくさん出るかもしれません・・・


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

Name: 木霊  ..プログラマー(33,201ポイント)   Date: 2009/04/19(日) 21:47   No:32463     
Title: Re:アシストを動かす式    
 右の円部分、中央のクロス部分、左の円部分で別々の式にするのはだめですか?

(右方向を0度、時計回りです)
左の円は315度〜45度まで進む(右上方向から反時計回りで右下方向まで)

左の円45度の場所を始点、右の円225度を終点として進む

右の円225度〜360(0)度を回って135度まで進む

右の円135度の場所を始点に左の円315度の場所まで進む(左上方向から時計回りで左下方向まで)
〜繰り返し

 試してないので意図しているものと違うかもしれませんが・・・


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

Name: 匿名  ..上級者(15,766ポイント)   Date: 2009/04/20(月) 20:00   No:32500     
Title: Re:アシストを動かす式    
多分いけると思いますけど、残念ながら式が思い浮かばないんですよね・・

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

Name: Tatu  ..ぴよぴよ(21ポイント)   Date: 2009/04/21(火) 01:27   No:32506     
Title: Re:アシストを動かす式    
8の字に動く弾のコードを考えてみたので、参考にしてみてください。

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

Name: 匿名  ..上級者(15,746ポイント)   Date: 2009/04/21(火) 20:12   No:32515 解決!     
Title: Re:アシストを動かす式    
まさかコードまで作ってくれるとは思いませんでした。
ここまで作ってくれれば後は何とかなると思います。
どうもありがとうございました。


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

Name: situmon  ..上級者(24,345ポイント)   Date: 2009/04/23(木) 23:29   No:32592     
Title: Re:アシストを動かす式    
お役に立てずすいません。
これからもがんばってください!!


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

Name: 匿名  ..上級者(16,137ポイント)   Date: 2009/04/24(金) 00:41   No:32596     
Title: Re:アシストを動かす式    
はい、がんばります。
どうもありがとうございました。


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



Name: situmon  ..上級者(23,967ポイント)   Date: 2009/04/16(木) 19:04   No:32336       
Title: 弾の画像の書き方2    
さきがとがった、たとえばキスメの使った弾やナイフ弾、
特にサイレントセレナで使う弾とその弾の中が白いもの、
レイセンの銃弾型の弾の作り方を教えてください!
丸い弾はレーザーの書き方の動画でわかりましたが
どうしてもかけません・・・



Name: SooA [URL]  ..上級者(16,930ポイント)   Date: 2009/04/16(木) 20:50   No:32344     
Title: Re:弾の画像の書き方2    
何がどう作れないのか解らないので、
自分で描いてみた弾をUPしてみてはどうかな?
それを見てもらって、現状ではダメな理由や、
やりたい事の詳細を書いて質問を行えば答え易いと思う。


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

Name: situmon  ..上級者(23,975ポイント)   Date: 2009/04/16(木) 20:58   No:32345     
Title: Re:弾の画像の書き方2    
これです、

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

Name: SooA [URL]  ..上級者(16,940ポイント)   Date: 2009/04/16(木) 21:53   No:32346     
Title: Re:弾の画像の書き方2    
こんな感じにしたいと言う事でしょうか?

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

Name: situmon  ..上級者(23,897ポイント)   Date: 2009/04/16(木) 22:14   No:32348     
Title: Re:弾の画像の書き方2    
というよりはしろくすると上のようにはっきりしなくなってしまうので
はっきりかつきれいに見れるようにしたいのですが・・・
何回も書き直してるのですがうまくいきません・・・


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

Name: 御津凪 [URL]  ..比類無きプログラマー(82,199ポイント)   Date: 2009/04/16(木) 22:28   No:32350     
Title: Re:弾の画像の書き方2    
弾の中心部分を明るくするだけで可能ですが、
真っ白ではなく、中心部分もほんの少し色を残すのがコツです。

画像編集ソフトによって操作は変わりますが、

透明部分以外を選択範囲にし、
選択範囲を適度に縮小後、適度にぼかし、
新しく作ったレイヤーで選択範囲を白で塗りつぶし、
塗りつぶしたレイヤーの透明度を上げて調整。
元のレイヤーで再度透明部分以外を選択範囲にし、選択範囲を反転。
そのまま塗りつぶしたレイヤーで選択範囲を消去する。
(ぼかしで弾画像からはみ出た部分を切り取る)

ごちゃごちゃ書いてますが、こんな感じで出来るかと思います。
(実際にやってみていないので、後で一度試してみます)


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

Name: BEMANI  ..プログラマー(26,141ポイント)   Date: 2009/04/16(木) 22:54   No:32353     
Title: Re:弾の画像の書き方2    
>>situmonさん
とりあえず弾をゲーム内で描画してみることをお勧めします。
薄いな〜と思っていてもゲーム内で描画すると背景との噛み合いでくっきりする可能性があります。

>というよりはしろくすると上のようにはっきりしなくなってしまうので
>はっきりかつきれいに見れるようにしたいのですが・・・
>何回も書き直してるのですがうまくいきません・・・

一応簡単な方法が二つありますので紹介しておきます。
・弾の外側をもう少し濃い色で塗る
・白の面積を少し小さくする


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

Name: 御津凪 [URL]  ..比類無きプログラマー(82,280ポイント)   Date: 2009/04/17(金) 00:19   No:32355     
Title: Re:弾の画像の書き方2    
(situmon さんの添付した画像を勝手ながら加工させていただきました)

GIMPで上記の方法を行った結果です。

もうちょっと白い部分を広げたほうがよかったかな…?


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

Name: situmon  ..上級者(23,937ポイント)   Date: 2009/04/17(金) 20:32   No:32381     
Title: Re:弾の画像の書き方2    
つくりなおしました!
御津凪様の方法もよかったのですが
今回 BEMANI さまの方法を実践しました(つもりですが・・・)


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

Name: めいらる  ..かけだし(1,986ポイント)   Date: 2009/04/18(土) 07:26   No:32407     
Title: Re:弾の画像の書き方2    
私は1つずつドットを打って製作していますね〜(・∀・)
内側と外側にアンチエイリアスを施しさらに外側のドットのカドの部分にαチャネルで透過設定をし、ゲームで描画する際にはバイリニア法にしてさらにぼかして表示してそれっぽくしてます(^ω^)

添付したのが米弾の画像ファイル、URLが実際に実装している画面です(背景はツクールです;)
http://www.dotup.org/uploda/www.dotup.org15464.bmp.html
パス 1111


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

Name: situmon  ..上級者(24,031ポイント)   Date: 2009/04/18(土) 09:39   No:32413     
Title: Re:弾の画像の書き方2    
きれいです!
あとバイリニアほうってなんですか?


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

Name: s-rush  ..熟練のプログラマー(48,739ポイント)   Date: 2009/04/18(土) 11:53   No:32415     
Title: Re:弾の画像の書き方2    
バイリニア法っていうのは、画像の拡大のアルゴリズム名のことですね。
縮小もそう呼ぶのでしょうか?

バイリニア法は別の名前を線形補完とも言います。
他にも拡大アルゴリズムはいろいろありますが、
(バイキュービック法やフーリエ変換を用いたもの、フィルタを用いたもの)
簡単かつ、割ときれいに拡大できるものはバイリニア法だと思います。

アルゴリズムはググれば、たくさん引っかかりますよ^^


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

Name: めいらる  ..かけだし(2,082ポイント)   Date: 2009/04/18(土) 14:18   No:32420     
Title: Re:弾の画像の書き方2    
私はDXライブラリを使用しているので詳しいアルゴリズムなどはわからないですが等倍表示した時にぼやけるのを利用してぎざぎざを目立たなくしてます(・∀・)

詳しくはDXライブラリ関数リファレンスを…


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

Name: situmon  ..上級者(24,057ポイント)   Date: 2009/04/18(土) 21:19   No:32438     
Title: Re:弾の画像の書き方2    
GIMPをインストールしたのですが、
利用規約が英語でした・・・
が無料なのですよね?


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

Name: あ〜る  ..初心者(5,865ポイント)   Date: 2009/04/18(土) 21:43   No:32441     
Title: Re:弾の画像の書き方2    
無料ですよ(^^)

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

Name: SooA [URL]  ..上級者(17,826ポイント)   Date: 2009/04/18(土) 21:46   No:32442     
Title: Re:弾の画像の書き方2    
>利用規約が英語でした・・・
>が無料なのですよね?
「無料」と書くと語弊を招きそうなのですが、
GIMPはフリーウェアです。
(規約の範囲内で無償で利用することが可能なソフトウェア)

ちなみにどちらのサイトでDLされましたか?
下記で日本語化されたバージョンがDLできます。
http://www.geocities.jp/gimproject/gimp2.0.html


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

Name: situmon  ..上級者(24,073ポイント)   Date: 2009/04/18(土) 23:25   No:32443     
Title: Re:弾の画像の書き方2    
日本語版をインストールする際のインストーラの規約です

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

Name: situmon  ..上級者(24,380ポイント)   Date: 2009/04/23(木) 23:30   No:32593 解決!     
Title: Re:弾の画像の書き方2    
どうもありがとうございました!
おかげできれいな弾を書くことができました!


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



Name: 初心者  ..プログラマー(32,045ポイント)   Date: 2009/04/22(水) 10:20   No:32530       
Title: OSについて    
ここでのプログラム環境は
Linux(ubuntu)でも使えますか?


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


Name: たかぎ [URL]  ..比類無きプログラマー(96,871ポイント)   Date: 2009/04/22(水) 10:22   No:32531     
Title: Re:OSについて    
> ここでの

「ここ」とは、具体的にどこのことでしょう?

> プログラム環境は

これも具体的には何を指しているのでしょうか?


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

Name: 初心者  ..プログラマー(32,172ポイント)   Date: 2009/04/22(水) 23:03   No:32549     
Title: Re:OSについて    
ゲームプログラミングの館の入門編〜ミニテクニック編までや
龍神録プログラミングの館のシューティング作成やDXライブラリを
使えるかなどです。
詳細が少なくてすみませんでした。
ちなみにUbuntuはメインOSではなくvmwareによって
仮想マシンでの運用になります。


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

Name: たかぎ [URL]  ..比類無きプログラマー(96,978ポイント)   Date: 2009/04/23(木) 09:39   No:32556     
Title: Re:OSについて    
Ubuntu上でDXライブラリやWindowsの開発環境を使えるか? という質問と考えてよいでしょうか?
以下、そのつもりで回答します。

Visual C++やBorland C++ Compilerであれば、Wine上であれば動作する可能性があります。
IDE特にデバッガが動作するかどうかはあやしいので、コマンドラインコンパイラだけなら何とかなるのではないでしょうか?
あるいは、MinGWのクロスコンパイラを使うというのも一つの手です。



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

Name: 初心者  ..プログラマー(32,178ポイント)   Date: 2009/04/23(木) 15:22   No:32573 解決!     
Title: Re:OSについて    
詳しい解説をありがとうございます。
どうもLinuxでの開発は難しそうですね。
無理をせずにWindows上でやってみたいとおもいます


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



Name: march3  ..ぴよぴよ(326ポイント)   Date: 2009/04/23(木) 13:34   No:32562       
Title: C言語での文字列について(その2)    
さきほどの質問に関することかもしれませんが、以下のプログラムがまともに動きません。

#include <stdio.h>

int main(void);

int main(void){
char* string="hello";
char* p;

for(p=string; *p!='\0' ;p++){
printf("p=%p : %c\n",p ,*p);
if(*p=='l'){
*p = 'L';//ここで強制終了してしまう
}
getchar();
}
return(0);
}



配列にするとうまくいくのですが、なぜなのでしょう?

#include <stdio.h>

int main(void);

int main(void){
char string[]="hello";
//char* string="hello";
char* p;

for(p=string; *p!='\0' ;p++){
printf("p=%p : %c\n",p ,*p);
if(*p=='l'){
*p = 'L';
}
getchar();
}
return(0);
}


ご指導いただけると幸いです。

ちなみに環境はVineLinux gccです。


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


Name: Mist  ..熟練のプログラマー(59,690ポイント)   Date: 2009/04/23(木) 13:45   No:32563     
Title: Re:C言語での文字列について(その2)    
上のプログラムは落ちるところで文字リテラルの内容を変更しようとしています。
文字リテラルは変数ではないので変更するようなことはしてはいけません。

下のプログラムは、書き換え可能な配列に文字リテラルの内容をコピーしたあと配列の内容を書き換えているだけなので問題ありません。


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

Name: 御津凪 [URL]  ..比類無きプログラマー(84,401ポイント)   Date: 2009/04/23(木) 14:02   No:32565     
Title: Re:C言語での文字列について(その2)    
Mist さんの説明をさらに深く説明すると、

文字リテラルが置かれている領域が読み取り専用領域となっている場合があります。

そのため、スタックに格納されない文字列(文字リテラル領域からの参照)の場合、
読み取り専用の文字列を書き換えようとしてエラーが発生しているものと思われます。
(VC++では書き換えられることができるように設定できます)

配列の場合については、 Mist さんの説明通りとなります。


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

Name: march3  ..ぴよぴよ(472ポイント)   Date: 2009/04/23(木) 14:22   No:32566 解決!     
Title: Re:C言語での文字列について(その2)    
Mistさん
>文字リテラルは変数ではないので変更するようなことはしてはいけません。
はぁ、そういうもんなんですか。
配列なら変更可能だけど文字リテラルは変更できないんですね...

御津凪さん
>VC++では書き換えられることができるように設定できます
VC++では設定変更で可能なんですか。(VC++も使ってきたけど初めて知った)

すばやい回答ありがとうございました。


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

Name: 御津凪 [URL]  ..比類無きプログラマー(84,346ポイント)   Date: 2009/04/23(木) 14:33   No:32569     
Title: Re:C言語での文字列について(その2)    
補足です。

> VC++では設定変更で可能なんですか。(VC++も使ってきたけど初めて知った)

直接的ではないのですがそうなります、ということを付け加えておきます。

最適化オプションの中で、「文字列プール」というオプションがあるのですが、これが有効になると、
ソース中の重複した文字リテラルをひとつにまとめ、文字リテラルが読み取り専用になります。
(同じ文字リテラルを別々のコードから参照しても同じアドレスを指すようになります)

これが無効だと、それぞれの文字リテラルは別々に持ち、文字リテラルを変更することができます。
ただし文字列テーブルのように決められた領域で置かれているため、長さを変更することはできません。


基本はこの設定は無効ですが、デバッグ情報の形式および最適化設定によって有効になることがあります。


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

Name: hoge  ..入門者(2,872ポイント)   Date: 2009/04/23(木) 14:41   No:32570     
Title: Re:C言語での文字列について(その2)    
> VC++では設定変更で可能なんですか。(VC++も使ってきたけど初めて知った)

GCCでも、古いバージョンなら、書きかえ可能にするオプションがあったはず。
-fwritable-strings だったかな。使ったことねぇけど。


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

Name: march3  ..ぴよぴよ(844ポイント)   Date: 2009/04/23(木) 15:11   No:32572     
Title: Re:C言語での文字列について(その2)    
試しに以下のプログラムを同じ環境で同じようにコンパイル、実行してみました。

/* strings.c */
#include <stdio.h>
int main(void);
int main(void){
char* string = "hello";

printf("string = %p\n", string);
printf("hello = %p\n", "hello");
return(0);
}



実行結果:
string = 0x8048480
hello = 0x8048480

御津凪さんのおっしゃるとおり、メモリ削減の最適化が行われていることが確認できました。

またhogeさんのおっしゃるとおり
----(プロンプトのコピペで失礼)----
% gcc -o strings strings.c -fwritable-strings
% ./strings
string = 0x8049474
hello = 0x8049487
----------------------------------
で、gccでも設定変更可能なようですね。


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



Name: march3  ..ぴよぴよ(256ポイント)   Date: 2009/04/23(木) 09:52   No:32557       
Title: C言語での文字列について    
はじめて投稿します。C言語歴4年目の者です。
今までずっとC言語は文字列扱うのに苦労すると感じてきましたが、
以下のようなプログラムがちゃんと動作するのは「たまたま」なのか「必然」なのかがよくわかりません。


#include <stdio.h>

int main(void);
char* func(void);

int main(void){
printf("%s\n",func());
return(0);
}

char* func(void){
char* buffer="hello";
return buffer;
}


"hello"の文字列をbufferというローカル変数に入れているため、bufferの領域自体はfuncを抜けると解放されますよね。
でもbufferの指している先の"hello"の文字列が格納されているメモリ領域自体は解放されないのでしょうか?

要するに""で作られた文字列は、mallocみたいにfreeなどで解放処理をされない限り
関数のスコープを抜けても利用できる領域なのかどうかを知りたいのです。
またもしそうであるならば、""の領域を解放したい時はどのようにすればできるのか。そんな方法はそもそもあるのか。

もしご存知の方がいれば教えてください。

ちなみに上のプログラムはVineLinux上のgccでコンパイルしたものです。
とりあえず正しく表示はされました。


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


Name: たかぎ [URL]  ..比類無きプログラマー(97,007ポイント)   Date: 2009/04/23(木) 10:38   No:32558     
Title: Re:C言語での文字列について    
> でもbufferの指している先の"hello"の文字列が格納されているメモリ領域自体は解放されないのでしょうか?

解放されません。

> またもしそうであるならば、""の領域を解放したい時はどのようにすればできるのか。そんな方法はそもそもあるのか。

文字列リテラルは静的記憶域期間を持ちますので、プログラム終了まで解放できません。



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

Name: march3  ..ぴよぴよ(258ポイント)   Date: 2009/04/23(木) 12:50   No:32561     
Title: Re:C言語での文字列について    
なるほど。やはりそうでしたか。
これで長年の謎が解けたって感じです。
ありがとうございました。


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



Name: さといも  ..ぴよぴよ(11ポイント)   Date: 2009/04/21(火) 16:57   No:32512       
Title: メインCCPについて    
龍神録プログラミングの館にある
main.ccpを変更とは中身をすべて入れ替える
ということでいいのでしょうか?

日本語弱くてすみません


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


Name: Kou  ..入門者(3,799ポイント)   Date: 2009/04/21(火) 17:19   No:32513     
Title: Re:メインCCPについて    
質問内容が大雑把すぎて、みなさん答えようがないかと・・・
龍神録の館の第何章のどの部分とかあれば・・・

それと、入力ミスかもしれませんが、

>main.ccp

これは、main.cppです。


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

Name: さといも  ..ぴよぴよ(0ポイント)   Date: 2009/04/21(火) 20:34   No:32517     
Title: Re:メインCCPについて    
えーと、2章とか3章に
書いてある
--main.cpp変更--
というところを
どういう風に変更したら
いいかわかりません

cpp.指摘ありがとうございます


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

Name: Kou  ..入門者(4,190ポイント)   Date: 2009/04/22(水) 16:38   No:32541     
Title: Re:メインCCPについて    
龍神録プログラミングの館を見てきました。

さといもさんが仰っているのは、


--main.cpp変更--
以下ソース

  ・
  ・

の事を仰っていると思いますが、これは今回の章でmain.cppの内容が変更されているので、
変更部分を修正してくださいと言う意味です。

だいたいは変更部分が赤い文字で表記されていますので、その部分を修正すれば良いのですが、
修正範囲が多かったり、どこが変更になっているのかわからなければ、変更の指示があった関数内
を全てコピペしても大丈夫ですよ。

でもさといもさんがC言語の勉強を始めたばかりなのであれば、全体のコピペはなるべくしないで、
変更部分を探して入力する事をお勧めしますよ。

それでエラーが出たりして、それを直すのも勉強ですから・・・と私ごときが言うのもなんですが(汗)


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

Name: さといも  ..ぴよぴよ(27ポイント)   Date: 2009/04/22(水) 21:17   No:32545     
Title: Re:メインCCPについて    
ありがとうございます
あと一ヶ月でゲームを作る
予定なのでまたいろいろと
迷惑かけます


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



Name: Mikan [URL]  ..初心者(7,380ポイント)   Date: 2009/04/14(火) 03:57   No:32183       
Title: 【雑談】 バレーゲーム    
バレーゲームを作ってみました♪

興味のある方、遊んでみてください。
http://gardenofeden.bake-neko.net/animalvalibomain.html

感想・バグ報告など、何でもいいので、コメントを頂けたら幸いです。

※キャラクターの猫が、猫に見えないという突っ込みは無しで^^;



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


Name: SooA [URL]  ..上級者(16,273ポイント)   Date: 2009/04/14(火) 08:02   No:32186     
Title: Re:【雑談】 バレーゲーム    
キャラクターがめちゃ可愛いですね。


反面、私には鬼のような難易度><;
★でも中々勝てませんでした。
何度もアタックに失敗→自滅しながらなんとか一勝。

操作(アタック)に慣れるまで自滅しまくったので
もう少しアタック操作に関して書いておいた方が
良いかと思う。

あとキャラクターの猫が、猫にみ(違


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

Name: Mikan [URL]  ..初心者(7,733ポイント)   Date: 2009/04/14(火) 13:25   No:32190     
Title: Re:【雑談】 バレーゲーム    
SooAさん

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

>キャラクターがめちゃ可愛いですね。
ありがとうございます。難しいドットは無理なので、なるべく可愛くを目標に描いてみました。

>もう少しアタック操作に関して書いておいた方が 良いかと思う。
知り合いにもプレイしてもらったのですが、やはり操作が上手くいかなかったようで
自分は仕様が解ってるからスムーズにプレイできるのだなぁ、と改めて思いました。

ちなみに、アタックはジャンプ中に→を押しながらZキーです。
前ジャンプしながらだとすぐ出ますよ♪

ヘルプの所にちゃんと書いておきたいと思います。

>あとキャラクターの猫が、猫にみ(違
私も猫が猫に見え(´・ω:;.:...

もう少し見えるように改良しようかと思ってるところです。。。。
パンダも作りかけているのですが、おなじく見え(ry



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

Name: kerotan0820  ..中級者(9,058ポイント)   Date: 2009/04/14(火) 16:00   No:32193     
Title: Re:【雑談】 バレーゲーム    
面白そうなのでやってみました^^

すごい丁寧に作られていてとても驚きました…

キャラクターもとてもかわいくてよいとおもいます

BGMと雰囲気もマッチしていて楽しめました^^

最高の作品だとおもいます

ありがとうございました。


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

Name: Mikan [URL]  ..初心者(7,822ポイント)   Date: 2009/04/14(火) 16:14   No:32194     
Title: Re:【雑談】 バレーゲーム    
kerotan0820さん

貴重な感想ありがとうございます。

楽しんで遊んでいただいたようで、作者としては最高に嬉しいです♪

もう少し楽しめるように対戦機能とかをつけれればいいなと思っているところです |д゜)ノ⌒●~*


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

Name: ひよこ  ..上級者(24,994ポイント)   Date: 2009/04/14(火) 16:44   No:32195     
Title: Re:【雑談】 バレーゲーム    
キャラクターかわいくていいですね。
ボールが端っこの壁にあたってボールの向きが変わないように
後ろにスクロールして取れるような
ゲームもいいかな〜って思いましたけど、
今のままでも十分楽しかったです。


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

Name: kerotan0820  ..中級者(9,384ポイント)   Date: 2009/04/14(火) 16:46   No:32196     
Title: Re:バグのようなもの見つけました    
先ほど投稿してから、部活が始まるまでの時間ずっと暇なので遊びつくしていたのですが、初級、中級をクリアし、上級をやっていたところ、玉が壁を貫通するというバグがありました。
たいしたことじゃないしほとんどおきないので気にはなりませんが、一応報告させていただきます。

アタックの操作性が難しいという感じのコメントが多数あるようですが、最初はそうなのかなとおもいます。
というのも、しばらくやりこんでみたらなれました。
コツは、上にまっすぐジャンプして上にボールを上げ、そのボールに向かってジャンプし、多少⇒ボタンを押してZを押すことです。
するときれいに打てますし、コツもつかめるかな・・・とおもいます^^。

本当に楽しませていただきました。
それでは失礼します。

(一応バグがおきた際の玉の弾道を書いた画像を添付しておきます。


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

Name: dic  ..上級者(17,950ポイント)   Date: 2009/04/14(火) 19:13   No:32203     
Title: Re:バグのようなもの見つけました    
ジョイスティックに対応してくれるといいですね

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

Name: SooA [URL]  ..上級者(16,824ポイント)   Date: 2009/04/14(火) 19:56   No:32204     
Title: Re:バグのようなもの見つけました    
>ちなみに、アタックはジャンプ中に→を押しながらZキーです。
最初それに気が付かなくて、
ジャンプ後の軌道修正で→を押す事が多かったためアタックばかりしてしまい
ネットに当たって自滅という惨敗を繰り返していましたw

理解してからは空中戦?が楽しくなりますね♪

あとボールがもう少し大きくても良い気がします。

>パンダも作りかけているのですが、おなじく見え(ry
猫に関しては冗談ですw
ちゃんと猫に見えますよ〜、色はともかく…(ぇ
パンダ期待してます。


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

Name: Mikan [URL]  ..初心者(8,272ポイント)   Date: 2009/04/14(火) 21:37   No:32211     
Title: Re:バグのようなもの見つけました    
沢山のレスありがとうございます。

>>ひよこさん
>後ろにスクロールして取れるような
後ろスクロールいいですね♪
スクロールすると相手のプレイヤーがみえなくなるので、画面を縮小たりするのもいい案かもしれません。
ありがとうございます。

>>kerotan0820さん
バグ報告ありがとうございます。
実は自分も結構楽しんで遊んだりしているんですが、たまに弾道がおかしいときがあります(;^ω^)
もう少しテストプレイを増やして調査してみます。

>>dicさん
>ジョイスティックに対応してくれるといいですね
勝ち得点やキーコンフィグなどができるオプションは付けたいと思っています。
私もジョイスティックでプレイしてみたいと思いました♪
ありがとうございます。

>>SooAさん
>あとボールがもう少し大きくても良い気がします。
ボールの画像は前プログラムのままなので変えたいと思っているんですが、
バレーボールはありきたりだし、動物だから「餌?」それとも「丸太?」なんてボールの画像を検討中です^^;
いま使っているボール見にくいですよね^^;

>パンダ期待してます。
期待はしないでぇ〜( /ω)


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

Name: 叉奈  ..かけだし(1,809ポイント)   Date: 2009/04/15(水) 19:43   No:32270     
Title: Re:バグのようなもの見つけました    
遊ばせていただきました!
自分はとても良かったと思います。

<操作に関して>
自分はゲームという存在に結構慣れているためか
操作はすぐ理解できて、手間取る事は全くありませんでした。
操作がシンプルなのでやりやすかったです。

<キャラクターについて>
可愛いキャラデザでよかったと思います。
ゲームをプレイしていての個人的な意見ですが、
キャラクターのパラメータを少しずつ変えると良いとやりこみ要素(?)になると思います。
例えば…(見た感じでものを言っておりますので、違うキャラだったら本当にすいません;)
「ねずみ」速度は速いが、アタックの速度は少し遅い。
「ネ コ」速度・アタックは普通だが、ジャンプ力が高い。
「イ ヌ」スタンダードな初心者向け(マリオ的な意味で)
「く ま」速度は遅めだが、アタックの速度が速め。
などはどうでしょうか?
そうすることでちょっと癖があって面白くなると思いま…す。
自信はありませんが…;

<システムについて>
は特に問題なかったと思います。
キャラ選択時にちょっとしたコメントがあるといいかもしれません…。

全体的に文が稚拙で申し訳ないですが
少しでも参考になれば良いなと思って感想を書かせていただきました。
今後も楽しみにしています^^


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

Name: kazuoni [URL]  ..比類無きプログラマー(81,595ポイント)   Date: 2009/04/15(水) 20:05   No:32271     
Title: Re:    
遅くなりましたが、自分もDLさせていただきました!
最初はアタックがうてませ...(ry
なんか昔Docomo(?)だったかのモナーのバレーアプリを思い出しました。
(これは確か5年ぐらい前に流行ったかと^^;)

キャラについては叉奈さんに自分もちょっと同意です^^
まぁ、これもすべて作り手の独断と偏見ですけどねw
あとはスマッシュ時にアニメーションカットインとか入れると
技にボリュームが増したりしそうです。
「ゴッツスパイク!!」
みたいな。^^;

制作お疲れ様でした!


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

Name: Mikan [URL]  ..初心者(8,648ポイント)   Date: 2009/04/15(水) 22:39   No:32290     
Title: Re:    
レスありがとうございます。

>>叉奈さん
キャラによってパラメータを変更するのはとてもいい案です♪
考えつかなかったので、ぜひ追加させていただこうかと思います。

対戦モードも追加したことだし、早急に検討させていただきます♪
ありがとうございます

>>kazuoniさん
>なんか昔Docomo(?)だったかのモナーのバレーアプリを思い出しました。
そうだったんですか。まぁあるだろうなぁ〜なんて思いながら作っていました。
流行ったゲームなら、まだ作りこんだら一般受けするかな〜?

>あとはスマッシュ時にアニメーションカットインとか入れると
エフェクトをあまり入れていないので地味に感じている今日この頃です。
もう少し派手にしてもいいかなと思っていたところです♪
ありがとうございます


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

Name: バグ  ..ハッカー(156,130ポイント)   Date: 2009/04/15(水) 23:11   No:32298     
Title: Re:【雑談】 バレーゲーム    
同級生が学生時代に作成したPC98用の『猫バレー』というゲームに似ていてビックリしました(^_^;)

こちらは猫の他に鳥、リス、象、カンガルーが使えて、それぞれ特性がありました。

猫は平均的な能力とスライディングレシーブが使え、リスは素早いけど打たれ弱い、象は遅いけど打たれ強く、鳥は常に空中にいて操作が難しいけど、強力な変化球が打てる、カンガルーは2段ジャンプができ、超強力な急角度スパイクが打てるが、移動が遅くて打たれ弱い…ってな感じでした。

なにより凄かったのが、1つのキーボードでの4人対戦を実現していた事でしょうか。狭っ苦しい事このうえなかったですが(笑)

ってな訳で、キャラ特性の強化を希望です(o^-')b


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

Name: Mikan [URL]  ..初心者(8,433ポイント)   Date: 2009/04/15(水) 23:58   No:32300     
Title: Re:【雑談】 バレーゲーム    
キャラ別にパラメーターを設定したプログラムをアップさせていただきました。
色々案を出してくれた皆様に深く感謝いたします。

>>バグさん
猫バレーやってみたいと思いました^^
そちらの方はかなり作りこまれているようですね。実装されているものを参考にさせていただきたいとます。

>なにより凄かったのが、1つのキーボードでの4人対戦を実現していた事でしょうか。狭っ苦しい事このうえなかったですが(笑)
あははw 私もPC98時代にぷよぷよモドキを1キーボード4人対戦したことありますw(遠い目w)

キャラ特性をソースとにらめっこしながら考えて見ますw
ありがとうございます


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

Name: こめかみ  ..熟練のプログラマー(43,612ポイント)   Date: 2009/04/18(土) 02:49   No:32403     
Title: Re:【雑談】 バレーゲーム    
おー、なんかいろいろと推敲された後のゲームだったようですね。
粘った末に上級をクマで何とか一回クリア出来ましたが、以後何度やってもクリアできません。
あの勝利は幻だったのだろうか!

というわけで一つ提案です。
クリア感を印象付けるために級ごとに変化つけてちょっとしたエンディングつけてみてはいかがでしょうか。
本当に簡単にスタッフロールとかでもいいので是非。(この規模のゲ−ムならむしろ簡単なものが相応しいですかね)
でも個人的な趣味の話なので聞き流してくださっても全然かまいません。
今ちょっと忙しくて、確認のための上級リトライは時間と精神的に無理なので、あくまで次に遊ぶ方のための改善(?)提案ですね。
身勝手な要望ですみません。ご一考くだされば幸いです。

2Dアクションゲームもいいですねぇ。
手が痛くなるほど熱中して遊んだのは久しぶりです、小学生の頃ワリオランド2を遊び過ぎて腱鞘炎になったアホな思い出が甦りました。ありがとうございました。

就活中でホントは遊んでちゃいけないんですけどね、いいよですねちょっとくらい息抜きしたって…
私も早く腰入れてゲーム作りたいなぁ。C言語にさえあまり触れられなくて使えなくなってないか心配です。移動中に参考書読んだりはしてるのですが、ああ実践したい…


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

Name: Mikan [URL]  ..初心者(8,602ポイント)   Date: 2009/04/18(土) 04:45   No:32405     
Title: Re:【雑談】 バレーゲーム    
>>こめかみさん
プレイしていただきありがとうございます。

>クリア感を印象付けるために級ごとに変化つけてちょっとしたエンディングつけてみてはいかがでしょうか。
そうなんですよ、1プレイが簡単に終わってしまうため、倒したとき=クリアなどのやり応えがなかったり、やりこみ要素がないので、ゲームとしては薄いですよね^^;
何か考えたいんですが・・・・

>私も早く腰入れてゲーム作りたいなぁ。C言語にさえあまり触れられなくて使えなくなってないか心配です。移動中に参考書読んだりはしてるのですが、ああ実践したい…
私も移動中に本を読んだりするの好きです♪
読む本が無いときは、どんなゲームが面白いのかなぁ?とか考えたり、仕様を考えたりしてましたw

こめかみさんの作ったゲームをプレイするのを、楽しみにまってます♪


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

Name: 叉奈  ..かけだし(2,314ポイント)   Date: 2009/04/18(土) 14:17   No:32419     
Title: Re:【雑談】 バレーゲーム    

再びプレイさせていただきました!
前より格段に良くなってると思います^^
また、個人的な感想(もはや注文?;)を書かせていただきます。
途中から無理難題になりますので、参考にならないかもしれません。

<キャラクターについて>
良かったです!
パラメータの違いがよく分かって面白かったです。
○○レベルをあるキャラでクリアすると隠しキャラが…というのも面白いと思います。

<システムについて>
こめかみさんの意見に同意で
エンディングが欲しいなとも思いました。

あと本当に個人的な趣味ですが
アタックやレシーブなどにそれぞれ得点を設定してスコアを追加するのもありだと思います。
レシーブをどれだけ続けるかが得点のカギになったりだとか…(時間かかりますが;
特殊条件下で何かをすると得点が二倍になったりだとか…。

もういっそのことストーリーモードなんかを作ってみたらどうでしょうか?(ぇ
某STGのように相手キャラに必殺技を設けてマッチポイントになったら「必殺技発動!」みたいな…。
それはポイントを取るのではなくて、耐久(1分くらい)にしてみたりとか…。
耐久できたらスコア加算ボーナスなどはどうでしょう?

もしストーリーとかスコアがあるならリプレイ保存機能もあるといいかもです。

<個人的なお話>
偉そうにあれこれ書かせていただきましたが…
自分はまだ高一でC言語などに関してまだまだ未熟で
ここの管理人様のソースをいじくり、多少変えることしかできませんw
ゲームを自作できるMikanさんに憧れます。
これからも応援してます!



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

Name: 叉奈  ..かけだし(2,187ポイント)   Date: 2009/04/18(土) 14:20   No:32421     
Title: Re:【雑談】 バレーゲーム    

あ、ちょっと勘違いされそうな書き方が…;
システムのところで

>○○レベルをあるキャラでクリアすると隠しキャラが…というのも面白いと思います。

の部分で、正しくは

○○レベルをあるキャラでクリアすると隠しキャラが…というシステムがあるとより面白くなると思います。

です。連続投稿ご迷惑をおかけします。


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

Name: TKOZ  ..上級者(21,152ポイント)   Date: 2009/04/18(土) 19:31   No:32429     
Title: Re:【雑談】 バレーゲーム    
ダウンロードしてプレイしてみました。
最初は、初級編でも苦戦しましたが、だんだん慣れてきて、勝てるようになりました。
本物のバレーボールは、確か3回までしか自分の陣地でレシーブできない気がしましたが、
プレイヤーは1人ずつなので、あまり気になりませんでした。
中級編以降は、難しくてなかなか勝てませんでしたが、何故か、敵プレイヤーが
簡単なボールを落とすという場面がありました。これは、わざとそういう処理を行っているのでしょうか?
ちょっと気になりました。
まあ、最終的には、とても面白いゲームだと感じたので、ベクターでも申請して
もらえば、結構ヒットするのではないでしょうか?


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

Name: Mikan [URL]  ..初心者(8,632ポイント)   Date: 2009/04/19(日) 21:08   No:32461     
Title: Re:【雑談】 バレーゲーム    
>>叉奈さん
ご意見・ご感想ありがとうございます。
少しゲーム自体を濃くしようと思って、まぁストーリーモード的なものにしてるのですが、
綺麗に作るのにちとてまどっていますw
スコアももう少し構想がかたまれば追加しても面白いかな?と考えているところです。

隠しキャラは・・・・ひみつw

>>TKOZさん
>簡単なボールを落とすという場面がありました。これは、わざとそういう処理を行っているのでしょうか?
まぁタイミング的なものもありますが、自滅は仕様です。

自滅しなくなると、ゲーム的に難しいものになりすぎるので・・・・

ほめて頂いてありがとうございます。
ベクターにもアップしたいなぁ と思っています^^

皆様の感想や意見を取り入れて、もっと面白くなるようにがんばります♪


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

Name: yu  ..プログラマー(25,306ポイント)   Date: 2009/04/20(月) 00:38   No:32467     
Title: Re:【雑談】 バレーゲーム    
かなり遅れましたが遊んでみました。

最初は操作に慣れなくて何度も球を落としましたが
慣れてくると楽しくなってきましたw
敵が強いとどうしても長引きますが・・・

自分はAI作ったことがないので分かりませんが
COMがとてもきれいに動いてて驚きました。

アタックしたときやボールが下に付いたときに、
何かしらのエフェクトを出すと綺麗かもしれませんね。

後、ルール変更があったらさらに遊び幅が広がりそうです。
球2つでプレイとかw


ゲーム制作の意欲を分けてもらいました!
自分も頑張らないと・・・(すでに挫折しそうですが;


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

Name: Mikan [URL]  ..初心者(8,730ポイント)   Date: 2009/04/20(月) 10:43   No:32470     
Title: Re:【雑談】 バレーゲーム    
>>yuさん
HPが消えちゃったのはざんねんです^^;
また出来たら教えてくださいね♪

>COMがとてもきれいに動いてて驚きました。
AIは私も始めてだったんですが、人間的に動かそうと思ったら難しいですね^^;
調整に苦労しましたw

エフェクトなどの調整も入れてみたいと思っています。
みなさんに教示していただいた案を面白く入れようと思って頑張っている途中で、ぼちぼちですが進んでいます♪

修正したらまたココで報告させていただきたいと思います。



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

Name: Mikan [URL]  ..初心者(8,844ポイント)   Date: 2009/04/22(水) 17:46   No:32542     
Title: Re:【雑談】 バレーゲーム    
みなさんに教示していただいた案を一部ですが、追加してバージョンアップしましたので
報告させていただきます♪

だんだんゲームらしくなってきたので嬉しく思っています。
皆様、本当にありがとうございます。

エンディングをいれたんですが、ムービーファイルを使用しているので
エンディング直前、少し重たく感じる時があるかもしれません^^;

軽いファイルにしようかなぁ〜?なんて思っているところです♪



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

Name: バグ  ..ハッカー(158,578ポイント)   Date: 2009/04/22(水) 18:30   No:32543     
Title: Re:【雑談】 バレーゲーム    
CPUの反応が良すぎて延々とラリーが続いてしまうのが、ちょっと気になりますね(^_^;)
かんたんレベルなら、もう少し隙があってもいいんじゃないかと思いますよ(^-^)


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

Name: Mikan [URL]  ..初心者(8,940ポイント)   Date: 2009/04/22(水) 21:01   No:32544     
Title: Re:【雑談】 バレーゲーム    
>>バグさん
私もEASYで遊んでて、こんなに玉を拾うんだと気になりました^^;
COMにはとりあえず「玉の真下まで行け!」と命令を出しているので、少しAIを考えようかと思います。

これでは手軽に遊べないですよねw

ありがとうございます♪


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



Name: 研修生  ..ぴよぴよ(139ポイント)   Date: 2009/04/22(水) 15:43   No:32535       
Title: constオブジェクト    
4月から入社しC++言語の研修中です。
C++言語で色んなメンバ関数を実装するというのが出て、今とりあえずstringクラスのlength()関数を実装
しようとしています。

class String{
char *str;
public:
int Length() const;
String();
~String();
};

String::String()
{
str="ViaualC++";
}

String::~String()
{
cout<<"デストラクタの呼び出し\n";
}

int String::Length() const
{
const char *p=str;
while(*str)
str++;
return(str-p);
}

int main()
{
String strobj;
//Length関数の処理
}


とここまで作ってみましたがMFCや既存のライブラリ関数は使ってはいけないとのことですので
上記のような形を取りましたが左辺値はconstオブジェクトに指定されていますとエラーが出ました。
調べてみた所、データ値が変更できないらしく悪戦苦闘してます。何かよい方法ありませんか?
※int String::Length()const の形式を使うこと前提です。



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


Name: 御津凪 [URL]  ..比類無きプログラマー(84,251ポイント)   Date: 2009/04/22(水) 15:52   No:32536     
Title: Re:constオブジェクト    
const オブジェクト、及び関数が const 扱いの時のメンバ変数は、通常、一切の変更をすることが出来ません。

今回の場合、String::Length() const 関数内で、メンバ変数である str をインクリメントによる変更をしようしています。

この処理であれば、 String::Length() const 関数内 の p と str の名前を入れ替えるだけで解決するはずです。

( p をインクリメントし、 p - str で長さを判定すれば、 str は一切変更しません。)


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

Name: 研修生  ..ぴよぴよ(261ポイント)   Date: 2009/04/22(水) 16:13   No:32538     
Title: Re:constオブジェクト    
なるほどーありがとうございます。

int String::Length()const
{
char *p=str;←
while(*p)
p++;
retunr(p-str);
}




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

Name: 研修生  ..ぴよぴよ(367ポイント)   Date: 2009/04/22(水) 16:15   No:32539     
Title: Re:constオブジェクト    
に修正しました。しかしコンパイルするとプログラムに問題が発生しましたと出ます。どうやらアドレスが渡っていないらしく中身を確認した所オブジェクト作成→コンストラクタで代入まではできているようですが ← の位置のstrの中身には何も入っていません。何故中身が入っていないのか教えていただけませんか?

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

Name: 研修生  ..ぴよぴよ(368ポイント)   Date: 2009/04/22(水) 16:37   No:32540 解決!     
Title: Re:constオブジェクト    
自己解決しました。デストラクタで代入しないで関数内でやれば大ジョブでした。

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



Name: Huzzy  ..かけだし(1,354ポイント)   Date: 2009/04/22(水) 13:52   No:32533       
Title: グラディウスのアシスト機    
只今、龍神録を応用してグラディウス的
横スクロールシューティングを
作っているのですが…

49章に出てくるオプションの動きが
どうにもグラディウスのアシスト機の
ような自機の後をついてくる
(金魚の糞的な動き?)
動きをしてくれません;;

opion_bb[i].x=ch.x等の後にどのような
式を付ければ上記のような動きをするのか
分かる方が居られましたら、ご教授いただけたら
幸いです。






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


Name: 御津凪 [URL]  ..比類無きプログラマー(84,091ポイント)   Date: 2009/04/22(水) 14:31   No:32534     
Title: Re:グラディウスのアシスト機    
自機の移動した後をついていく動作であれば、自機の位置を配列として記録し、
オプションの位置はその記録した位置配列を参照して設定すればOKです。

具体的には、下記のような疑似コードになります。
// ary はXとYの位置を記録する10個の配列

// now は次に自機の位置(=一番古い座標)が格納される ary 用の添字値

if(自機が移動されたか){
// オプションに ary 配列の一番古い値をセット
オプションのX位置 = ary[now].x;
オプションのY位置 = ary[now].y;

// 現在の自機の座標をセット
ary[now].x = 自機のX座標;
ary[now].y = 自機のY座標;

now = (now + 1) % 10; // now 値を次に移動
}


この方法では、 自機の10フレーム(リアルタイムではない)前の移動した座標にオプションが動きます。
ただし、これは1個だけなので、複数個の場合は必要な分だけ(配列を長くして)座標を記録し、
最新の座標からオプションごとに固定値ずつ前の座標値を取っていけば良いでしょう。
(1つめのオプションは最新座標から 10 フレーム前、 2つめのオプションは最新座標から 20 フレーム前…というように)

ちなみに、オプションを自機の移動に遅延した動き(リアルタイムに移動する挙動)にするなら、
単に上記のif文を取り除くだけで出来ます。


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

Name: Huzzy  ..かけだし(1,385ポイント)   Date: 2009/04/22(水) 16:04   No:32537 解決!     
Title: Re:グラディウスのアシスト機    
御津凪さんのアドバイスを下に
動かすことが無事出来ました。

どうも有り難うございました。


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



Name: 芽衣子  ..ぴよぴよ(941ポイント)   Date: 2009/04/21(火) 21:43   No:32520       
Title: ソースの書き換え    
こんにちは、はじめまして。
龍神録プログラムの館を拝見し、ゲームを作り始めた者です。
現在ミシャグジ様弾幕とみょん弾幕を少々弄ったものをボス用に変更したいのですが、なかなかうまくいきません。
どなたか教えていただけますと幸いです。
以下、変更したいプログラム


void shot_bullet_H007(){
int t=shot[n].cnt;
if(t>=0 && t<=300 && t%10==0){
for(int i=0;i<20;i++){
if(shot[n].flag!=2 && (k=shot_search(n))!=-1){
shot[n].bullet[k].knd =8;
shot[n].bullet[k].angle =PI2/10*i;
shot[n].bullet[k].flag =1;
shot[n].bullet[k].x =enemy[shot[n].num].x+cos(PI/2+PI/150*t)*80;
shot[n].bullet[k].y =enemy[shot[n].num].y+sin(PI/2+PI/150*t)*10;
shot[n].bullet[k].col =2;
shot[n].bullet[k].cnt =0;
shot[n].bullet[k].spd =1.2;
}
}
for(int i=0;i<20;i++){
if(shot[n].flag!=2 && (k=shot_search(n))!=-1){
shot[n].bullet[k].knd =8;
shot[n].bullet[k].angle =PI2/10*i;
shot[n].bullet[k].flag =1;
shot[n].bullet[k].x =enemy[shot[n].num].x+cos(PI/2-PI/150*t)*10;
shot[n].bullet[k].y =enemy[shot[n].num].y+sin(PI/2-PI/150*t)*80;
shot[n].bullet[k].col =5;
shot[n].bullet[k].cnt =0;
shot[n].bullet[k].spd =1.2;
se_flag[0]=1;
}
}
}
if(t>=0 && t<240 && t%20==0){
double angle=shotatan2(n);
for(int i=0;i<20;i++){
if(shot[n].flag!=2 && (k=shot_search(n))!=-1){
shot[n].bullet[k].knd =2;
shot[n].bullet[k].angle =angle+PI2/20*i;
shot[n].bullet[k].flag =1;
shot[n].bullet[k].x =enemy[shot[n].num].x;
shot[n].bullet[k].y =enemy[shot[n].num].y;
shot[n].bullet[k].col =4;
shot[n].bullet[k].cnt =0;
shot[n].bullet[k].spd =4;
}
}
}
}


void shot_bullet_H008(int n){
int t=shot[n].cnt;
int k;
if(t>=0 && t<1200 && t%90==0){
double angle=rang(PI);
for(int j=0;j<3;j++){//途中から2分裂する分
for(int i=0;i<25;i++){//一度に60個
if(shot[n].flag!=2 && (k=shot_search(n))!=-1){
shot[n].bullet[k].knd =3;//8番の弾
shot[n].bullet[k].angle =angle+PI2/25*i;//円形60個
shot[n].bullet[k].flag =1;
shot[n].bullet[k].x =enemy[shot[n].num].x;
shot[n].bullet[k].y =enemy[shot[n].num].y;
shot[n].bullet[k].col =0;//4番の色
shot[n].bullet[k].cnt =0;
shot[n].bullet[k].state =1;//ステータス。0か1かで回転がかわる
shot[n].bullet[k].spd =2;
}

}
for(int i=0;i<25;i++){//一度に60個
if(shot[n].flag!=2 && (k=shot_search(n))!=-1){
shot[n].bullet[k].knd =3;//8番の弾
shot[n].bullet[k].angle =angle+PI2/25*i;//円形60個
shot[n].bullet[k].flag =1;
shot[n].bullet[k].x =enemy[shot[n].num].x;
shot[n].bullet[k].y =enemy[shot[n].num].y;
shot[n].bullet[k].col =1;//4番の色
shot[n].bullet[k].cnt =0;
shot[n].bullet[k].state =0;//ステータス。0か1かで回転がかわる
shot[n].bullet[k].spd =3;
}

}
}
se_flag[0]=1;//発射音鳴らす
}
for(int i=0;i<SHOT_BULLET_MAX;i++){//全弾分
if(shot[n].bullet[i].flag>0){//登録されている弾があれば
int state=shot[n].bullet[i].state;
int cnt=shot[n].bullet[i].cnt;
if(30<cnt && cnt<120){//30〜120カウントなら
shot[n].bullet[i].spd-=1.2/90.0;//90カウントかけて1.2減らす
shot[n].bullet[i].angle+=(PI/2)/90.0*(state?-1:1);//90カウントかけて90°傾ける
}
}
}
}


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


Name: yu  ..プログラマー(25,118ポイント)   Date: 2009/04/21(火) 22:45   No:32523     
Title: Re:ソースの書き換え    
boss_shotH.cpp内の

boss_shot_bulletHxxx関数内にコードをコピペして
そのコードをすこし変えるだけでできると思いますよ

具体的には

敵の座標を指定しているところをボスの座標に変更(enemy[shot[n].num].xをboss.xにする。など)
shot[n].bullet[i].cnt等をboss_shot.bullet[i].cntに変更
shot[n].cntをboss_shot.cntに変更
shot[n].flag!=2を削除
SHOT_BULLET_MAXをBOSS_BULLET_MAXに変更
shot_search(n)をsearch_boss_shot()に変更
#追記 shotatan2(n)をbossatan2()に変更



まだ変更すべき点があるかもしれません・・・。

自分も最初は適当に弄って遊んでましたw


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

Name: 芽衣子  ..ぴよぴよ(965ポイント)   Date: 2009/04/21(火) 23:12   No:32526 解決!     
Title: Re:ソースの書き換え    
素早い回答ありがとうございます!早速試してみます。
失敗しつつ自分で回答を導き出せるようがんばります!


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

Name: yu  ..プログラマー(25,275ポイント)   Date: 2009/04/21(火) 23:13   No:32527     
Title: Re:ソースの書き換え    
箇条書きで分かりづらいかなーと思ったので、
実際に書いてみました。

適切な場所にコピペして実行してみてください。(boss_shot_bulletH000と002にコピペすれば良いかも)
(自分は50章で作りました)

後、boss_shot.cnt%TM000;
とかしてますが
これはボスにずっと弾を発射させるようにするために
TM000を周期にその弾幕をループさせています。


#追記
#う・・・投稿時間が被って申し訳無いです。
#自分で解決するのが一番だと思うので、どうしても分からなかったら見てくださいw


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

Name: 芽衣子  ..ぴよぴよ(933ポイント)   Date: 2009/04/21(火) 23:35   No:32528 解決!     
Title: Re:ソースの書き換え    
わわわ正解まで頂きありがとうございます・・・・・・!
とてもありがたいです、ありがとうございますー!


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



Name: 村泉葉上  ..ぴよぴよ(66ポイント)   Date: 2009/04/21(火) 15:44   No:32509       
Title: C言語のプログラミングについて    
この問題の答えや解答の指針をわかる範囲でいいので教えてください。

正整数の組(u,n)(但しu>1,n≧3)が最大2048個書かれたファイルを読み込み、個々の組に対し、以下の式(1)で定められるdと、この時の(x,y,z)の組を1つ求めよ。


(注)Nはn乗という意味です。uN は uのn乗 xN は xのn乗 yN は yのn乗 zN は zのn乗

d = uN - max{xN + yN +zN | x>0,y>0,z>0, xN + yN + + zN ≦ uN} (1)

但し、求めた結果を出力する際には、入力で与えられた組(u,n)も合わせて出力すること。

つまり与えられた二つ組(u,n)からなる数uNに対し、三つ組(x,y,z)及びnによって構成される式 xN + yN + zN との差が最小になる組を探索するプログラムを作れ、ということである。


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


Name: バグ  ..ハッカー(158,507ポイント)   Date: 2009/04/21(火) 16:08   No:32510     
Title: Re:C言語のプログラミングについて    
>>この問題の答えや解答の指針をわかる範囲でいいので教えてください。

この掲示板では課題の丸投げは禁止されております。

どの部分が分からないのですか?
あなたはどの程度のプログラムに関する知識を有していますか?(学校でどんなことを習ったか程度で結構です)
もう少し具体的な質問をしないと、回答のしようがありませんよ(^_^;)


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

Name: non  ..熟練のプログラマー(40,276ポイント)   Date: 2009/04/21(火) 18:11   No:32514     
Title: Re:C言語のプログラミングについて    
max{xN + yN +zN | x>0,y>0,z>0, xN + yN + + zN ≦ uN}
この部分がよくわからないのですが、
x,y,zは整数ですか?


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

Name: たいちう  ..プログラマー(26,606ポイント)   Date: 2009/04/21(火) 20:17   No:32516     
Title: Re:C言語のプログラミングについて    
http://www2.realint.com/cgi-bin/tarticles.cgi?pointc+33014

石和稲井(2009/04/21 15:42:02)
村泉葉上 2009/04/21(火) 15:44

たて読み?もしかして、あと二箇所にマルチしてあるとか?


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

Name: 通りすがり  ..上級者(15,800ポイント)   Date: 2009/04/21(火) 21:47   No:32521     
Title: Re:C言語のプログラミングについて    
縦読みできることに気づいたたいちうさんもすごい・・w

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

Name: たいちう  ..プログラマー(26,938ポイント)   Date: 2009/04/21(火) 22:59   No:32524     
Title: Re:C言語のプログラミングについて    
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1325418778

を読んで、やっと問題の意味が分かった。
茶化すだけでもなんなので、一応解き方の説明を。

まず題意から、1 <= x <= y <= z として良いだろう。

for (xのループ)
for (yのループ)
for (zのループ) {
差を計算
if (差が最小) {
差を更新
x, y, z を覚えておく
}
}
x, y, zを表示

(u, n)の下限は問題にあるけど上限が書かれていないので、そこに注意しよう。
私が作るならば、一応64ビットの整数型で作っておいて、
大きな(u, n)については、読み込み時にエラー扱いしようかな。
どの位大きなかは考えてみてね。

> 縦読みできることに気づいたたいちうさんもすごい・・w

ありがとう。あと2箇所見つけた人がいるみたいだけど、
私の予想は4箇所の縦読みで4人分のフルネームだったのですが、
さすがに違いましたね。


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

Name: たいちう  ..プログラマー(27,025ポイント)   Date: 2009/04/21(火) 23:05   No:32525     
Title: Re:C言語のプログラミングについて    
ループの終了条件を説明するのを忘れてました。
それぞれ次の条件で良いかと。
実行効率を考えるならば、もっと工夫すべきだけど。

x^n > u^n
x^n + y^n > u^n
x^n + y^n + z^n > u^n


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



Name: NoName  ..ぴよぴよ(94ポイント)   Date: 2009/04/21(火) 00:04   No:32504       
Title: 壊れてる    
龍神録プログラミングの館でプロジェクトをまとめてダウンロードしたんですけど、
解凍するとき壊れてしまってるらしくて解凍できません。

龍神録で使う素材が用意できなくて困ってます。
なぜだか分かる方教えてください><


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


Name: hss12  ..中級者(12,371ポイント)   Date: 2009/04/21(火) 00:21   No:32505     
Title: Re:壊れてる    
ダウンロードが失敗する報告が多いので何度も試してください。
Internet Explorerをお使いですか?どうしてもダメなら変えてみてください。


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

Name: NoName  ..ぴよぴよ(172ポイント)   Date: 2009/04/21(火) 16:48   No:32511 解決!     
Title: Re:壊れてる    
レス下さった方ありがとうございます
昨日はできなかったのに今日はダウンロードしても壊れませんでした
本当にありがとうございました><


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



Name: 氷水華  ..ぴよぴよ(58ポイント)   Date: 2009/04/19(日) 17:42   No:32450       
Title: タイトル画面について…    
えっと、3月位から、友達とSTGをつくろう!って事になったんですが、プログラム全般は私がやるんです。

それで色々と調べて、STG自体を作る方法は分かったのですが、
・タイトル画面
・難易度選択
・自機選択
の作り方が、分からないんです。

どなたか教えて頂けないでしょうか?


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


Name: ひよこ  ..プログラマー(25,292ポイント)   Date: 2009/04/19(日) 18:49   No:32454     
Title: Re:タイトル画面について…    
変数を使ってスイッチ文で動かせばいいと思います。
たとえば
スイッチ(画面){
ケース1
タイトルたとえばZキーでレベル選択へ
ケース2
レベル選択0,1,2,3、キャラクター0,1
ケース3
レベル選択0,1,2,3、キャラクター0,1の選択された項目で、
STG本体へ移動
という流れではどうですか



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

Name: array  ..熟練のプログラマー(49,703ポイント)   Date: 2009/04/19(日) 18:51   No:32455     
Title: Re:タイトル画面について…    
氷水華さんのプログラム暦はどのくらいなのでしょうか。

氷水華さんの実力によっては、説明の中身が変わってくると思いますが、それなりに知識があるとして・・・簡単な事しかいえませんが、ヒントとなりそうなのは、ゲームプログラミングの館の33.「選択画面の作り方。」ではないでしょうか。

これはを使えば、タイトル画面、・難易度選択、・自機選択も、選択画面の作り方と同じ考えで作れると思います。


最後に・・・質問の内容を具体的に、どのように分からないのかが明確してもらえれば、より良い回答が貰えると思うので包み隠さず相談してみてください


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

Name: 氷水華  ..ぴよぴよ(0ポイント)   Date: 2009/04/19(日) 22:56   No:32464     
Title: Re:タイトル画面について…    
お二方様々ご返答ありがとうございます。



>ひよこさん
良い参考になりました。
一度これでプログラム組んでみようと思います。ありがとうございます。

>arrayさん
プログラム歴は、まだまだ浅いです。
2、3ヶ月ぐらいプログラムの勉強したぐらいなんですよ。

あと、33「選択画面の作り方」を見忘れていたようで、全部みた気がしたのですが、忘れていました。




今の所パソコンを使える時間が週に3〜4時間ぐらいしかないので、携帯で情報収集して基本的な事を学習する。って風にやってるんです。
なのでいつ、できあがるか分かりませんが、頑張ろうと思ってます。


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

Name: SooA [URL]  ..上級者(18,382ポイント)   Date: 2009/04/19(日) 23:26   No:32465     
Title: Re:タイトル画面について…    
選択プログラム自体は簡単です、
プログラムを少しかじった程度でも作れますが、
その後のゲーム内容で挫折してしまう事が多いです。

一からプログラムを書く・改造する、
どちらにしても覚える意思があるのであれば、
C言語プログラムの基礎を身に着けてから、
「ゲームプログラミングの館」
  ↓
「龍神録プログラミングの館」と読み進めて行けば
良いかと思います。

目的のSTGが作れれば良いのであって、
プログラムに大して興味が無いなら、
ツクール等を使う方が良いのではないかと思います。
アクションゲームツクールでシューティングも作れるらしい?ですよ。

注意:
現状の情報で考えられる案を提示したもので、
氷水華さんのプログラム意欲を阻害するつもりはありません。
受け取り方によってはそう取れてしまう可能性がある
微妙な文章なので追記しておきます。


ゲーム作りは大変ですが、役割分担を行い各々が役を
しっかりとこなせれば完成します。頑張ってください。


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

Name: SooA [URL]  ..上級者(18,413ポイント)   Date: 2009/04/19(日) 23:30   No:32466     
Title: Re:タイトル画面について…    
長々と書いているうちに返信があったようですね_| ̄|○

内容が合わなくなる部分は読み飛ばしてください…。


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

Name: 氷水華  ..ぴよぴよ(160ポイント)   Date: 2009/04/20(月) 16:46   No:32486     
Title: タイトル画面について…    
>SooAさん
ご返答、長文ありがとうございます。
そしてお疲れ様です。


自分は1からプログラムを作るつもりです。

ツクールはオリジナル感が無いって言うかなんかあれなので、使いたくないんです。

何かと、ゲーム自体ではなくタイトル画面で挫折したので、一度質問しました。


とりあえず急がずゆっくり頑張ってみます(^-^)


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

Name: 御津凪 [URL]  ..比類無きプログラマー(81,525ポイント)   Date: 2009/04/20(月) 17:41   No:32494     
Title: Re:タイトル画面について…    
1から創るのであれば、仕様書があると楽になります。
仕様書があると、完成の質も上がると思いますよ。

ここで言う仕様書というのは、その名の通り、

・どういう表示・動作をするのか
・どういった操作ができるのか
・必要なデータ(画像やテキストなど)
・どういった画面の移行をしていくのか(フロー処理)

…などの、動作を示すゲームの設計図のようなものです。
(これはプランナーの役割となります)
これは友達にその役を頼むと良いでしょうね。

仕様書無しで製作してもいいのですが、
後から動作の追加や変更等があって、余計なバグを引き起こしたり、無駄な時間が掛かることがあります。

動作の参考にする、というのであれば、
ここの龍神録プログラミングの館や他のゲームサンプル等を見るといいでしょう。

それを元に自分でコードを書けば理解も早まります。


もし仕様書を作るのであれば、しっかりと仕様が固まってから
プログラムを書いたほうが良いでしょう。
固まらないうちに書くと、途中で仕様が変わったら修正が大変なので。

あと、仕様が固まるまで氷水華さんはゲームプログラムのコードの書き方を覚えたり、
ゲームのシステム部分を構築しておくと、時間の無駄もなく製作が進行できると思います。

(意外と仕様書は重要で奥が深いですよ)


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

Name: 氷水華  ..ぴよぴよ(247ポイント)   Date: 2009/04/20(月) 22:43   No:32502     
Title: Re:タイトル画面について…    
>御津さん
ご返答ありがとうございます。
なるほど〜
仕様書ですか。
一応、ノートに大体の流れ・イメージは書いています。

大体ではなく、しっかり仕様を固め手からの方が良いのですね。


まずは友達と協力・分担して仕様書をちゃんと作ってみたいと思います。


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

Name: 御津凪 [URL]  ..比類無きプログラマー(83,151ポイント)   Date: 2009/04/21(火) 03:02   No:32507     
Title: Re:タイトル画面について…    
> 一応、ノートに大体の流れ・イメージは書いています。

「大体・イメージ」は、「案件」(アイデア)であり、
仕様(書)では無いことに注意してくださいね。

例えば
「ボムは敵にダメージを与え、ボムの範囲の弾を消す」という一文があるとします。

コレだけでは、ゲームに反映させることが出来ません。
最低でも、

・どのようなボムなのか(全画面系、自機を中心に円形に広がる、など)
・「敵にダメージを与え」とあるが、どれくらいのダメージを与えるのか(ダメージ式が必要)
・自機の弾も消えるのか、敵の弾だけなのか、が判らない(レーザーがある場合、レーザーがどうなるのかがわからない)
・そもそもボムという定義がない

最後のは、「ボムはボムだろう」と思うかもしれませんが、
敵にもボムがあるかもしれませんし、他の部分に「ボム」という単語(敵の名前など)があるかもしれません。
つまり、「ボムはプレイヤーがボムボタンを押すことにより、自機から発射される」などの事細かな記載が必要です。
(特殊なものでない限りそこまで書く必要はないかもしれません)

上の文のような場合は、下記のような感じの記載をする必要があります。

------------------------
ボムは、使える状態があり、プレイヤーがボムボタンを押すことにより、
ボム所持数を1つ減らし、自機から円形に広がる攻撃を行う。
(エフェクトなどは○○を参照。)

・ボムは、敵に下記のようなダメージ計算式を用いてダメージを与える。
ダメージ量=ボムの威力−敵の防御力×ボム補正
(ボム補正とはボムの種類により、0.0〜1.0の範囲で変動)

・ボムの当たり判定は、円形のエフェクトの少し内側の円。
(この辺りは難易度調整を含め、実際確認しながら検討する)
(また、弾との当たり判定は敵の当たり判定と同じにする)

・弾はボムの当たり判定に入ると、消滅エフェクトを表示して消える。
(自機の弾はそのまま、レーザーもそのままにする。)

・「使える状態」とは、以下の条件を満たしたとき、使用可能とする。
1.ボム所持数が1以上であり、
2.自機が攻撃可能な時。
------------------------

かなり本格的に書いていますが、あまり凝る必要が無ければ、
ここまで細かく書かなくても口頭で済ませることも出来ます。
(ただし忘れないように後で書き足す必要がありますが)


ちょっと長くなってしまいましたが、

> プログラム全般は私がやるんです。

とあるので、失敗しないためにもしっかりした製作を、と思った次第です。


ちなみに、氷水華さんも仕様書を作るのであれば、
「自分がどうプログラムを組めばこれが実現できるのか」を、
常に思いながら書くと、無理難題な仕様書が出来上がるのを防止できます。

また、どうしても実現したいと思うものが出てきたら、ここのような掲示板で質問するなり、
自力で調べるなりして解決していくと、色々と身についていきますよ。

ともあれ、仕様書も作るのは意外と大変なので、そこも含めがんばってくださいね。


あと、私の名前に脱字が^^;
"Name: "のところをコピペしたほうが確実ですが、一応念のため。
私は御津凪(みつなぎ)と読みます。

(一字ずつ漢字変換しないと出ないので、間違えやすいのだと思います)


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

Name: 氷水華  ..ぴよぴよ(325ポイント)   Date: 2009/04/21(火) 06:55   No:32508     
Title: Re:タイトル画面について…    
>御津凪さん

まず
脱字すいませんでした(>_<)
書いた気がしたのですが抜けていたので。
ごめんなさいm(_ _)m



仕様書ってこれぐらい細かく書いた方が良いのですね。
ダメージ計算式とかは忘れてました。
無理難題な仕様書にならないようにしたいと思います。


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



Name: yoichineji  ..ぴよぴよ(56ポイント)   Date: 2009/04/20(月) 02:43   No:32468       
Title: リンカツールエラー    
いつもお世話になっております。
yoichinejiと申します。

龍神録プログラミングの33章(レーザー)の実装をしているのですが、外部参照エラーが出てしまいます。
こちらで配布されているソースをコピペしても、エラーが出るという状況です。
もし解決方法がわかる方がいましたらご教授願います。

表示されるエラー
1>out.obj : error LNK2019: 未解決の外部シンボル "int __cdecl out_lazer(void)" (?out_lazer@@YAHXZ) が関数 "void __cdecl enemyshot_and_ch(void)" (?enemyshot_and_ch@@YAXXZ) で参照されました。
1>C:\Documents and Settings\Owner\デスクトップ\project\project\33章\Debug\RyuJin.exe : fatal error LNK1120: 外部参照 1 が未解決です。

 OS : WindowsXP
 コンパイラ名 : Visual Studio2008 VC++



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


Name: SooA [URL]  ..上級者(18,463ポイント)   Date: 2009/04/20(月) 10:01   No:32469     
Title: Re:リンカツールエラー    
こちらをどうぞ。
http://www.play21.jp/board/formz.cgi?action=res&resno=31954&page=&lognum=98&id=dixq&rln=31979


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

Name: yoichineji  ..ぴよぴよ(89ポイント)   Date: 2009/04/20(月) 23:17   No:32503 解決!     
Title: Re:リンカツールエラー    
返信ありがとうございます。

確認してみたら
out_lazer.cppをプロジェクトに追加し忘れてました。
助かりました。


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



Name: mossa  ..ぴよぴよ(507ポイント)   Date: 2009/04/20(月) 12:30   No:32472       
Title: アリゴリズムの参照渡し    
Cプログラムのアリゴリズムに関する参照渡しのプログラムなのですが
foo(int a,int b,int *sum,int *prod)

{
*sum=a+b;
*prod=a*b;
}

のプログラムfoo()とfoo()を動かすmain()のサンプルを作成する
という問題なのですが、途中まで考えることができましたが
<pre>
void main()[
intx=0; int y=0;
foo(2,5,?,?);  //xとyのアドレスを第3,4引数に渡すのをどうすればいいのか
printf("%d,%d\n",x,y) //ここのxとyが知りたい
}
ということです。
よろしくお願いします。


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


Name: Blue  ..中級者(9,461ポイント)   Date: 2009/04/20(月) 12:43   No:32473     
Title: Re:アリゴリズムの参照渡し    
アドレス演算子「&」をつけてください。

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

Name: hss12  ..中級者(12,297ポイント)   Date: 2009/04/20(月) 13:29   No:32474     
Title: Re:アリゴリズムの参照渡し    
foo(2, 5, &x, &y);
で良いと思いますが、それ以外の場所で数か所ミスがあり動かないと思います。


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

Name: BEMANI  ..プログラマー(26,641ポイント)   Date: 2009/04/20(月) 13:30   No:32475     
Title: Re:アリゴリズムの参照渡し    
>>mossaさん
コンパイル通らないので一応念のために・・・

foo(int a,int b,int *sum,int *prod)
と書いてありますが、戻り値の型が指定されていません。
見た感じ戻り値は必要ないと思うので
void foo(int a,int b,int *sum,int *prod)
にしておいて下さい。

void main()[
と書いてありますが、 [ ではなく { ですのでそこも変えて下さい。

最後、セミコロンを忘れているのでそれも追加して下さい。


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

Name: hss12  ..中級者(12,347ポイント)   Date: 2009/04/20(月) 13:35   No:32476     
Title: Re:アリゴリズムの参照渡し    
intx=0;

int x=0;
とスペースを空けないとダメです。
あと全角スペースは使えません。


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

Name: mossa  ..ぴよぴよ(618ポイント)   Date: 2009/04/20(月) 16:23   No:32483     
Title: Re:アリゴリズムの参照渡し    
#include<stdio.h>


int main(){
int x=0;
int y=0;
foo(2,5,&x,&y);
printf("%d,%d\n",x,y);
}

と直したのですが、まだ間違いがあり、ビルドできませんでした。
fooの識別子とは?int型、void型でも違いました・・。


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

Name: Blue  ..中級者(9,552ポイント)   Date: 2009/04/20(月) 16:27   No:32484     
Title: Re:アリゴリズムの参照渡し    
#include<stdio.h>


void foo(int a,int b,int *sum,int *prod)
{
*sum=a+b;
*prod=a*b;
}
int main(){
int x=0;
int y=0;
foo(2,5,&x,&y);
printf("%d,%d\n",x,y);
}


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

Name: 初級者  ..入門者(4,574ポイント)   Date: 2009/04/20(月) 21:06   No:32501     
Title: Re:アリゴリズムの参照渡し    
念のため、xとyをゼロで初期化しておく必要はありません。

誤:アリゴリズム
正:アルゴリズム


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



Name: Kou  ..入門者(3,878ポイント)   Date: 2009/04/20(月) 16:38   No:32485       
Title: 関数に渡す引数で    
以前質問させて頂いたKouと申します。
今回また、わからない事があったので、質問させて頂きます。

環境
・VC++ 2008 EE
・Windows XP Home SP2

会社からの書き込みのため、個人的なファイルのアップロードができないので、以下に簡単に説明のための
ソースを表記します。

構造体

//当たり判定の矩形に関する構造体
typedef struct{
float rect_x, rect_y;//矩形の縦横サイズ
float b_point_x[4], b_point_y[4];//計算前の頂点の座標
float a_point_x[4], a_point_y[4];//計算後の頂点の座標
}hitrect_t

//自機に関する構造体
typedef struct{
int flg;//フラグ
int img;//画像番号
float x, y;//座標
hitrect_t rect;//当たり判定用矩形
}ch_t;

//敵に関する構造体
typedef struct{
int flg;//フラグ
int img;//画像番号
float x, y;//座標
hitrect_t rect;//当たり判定用矩形
}enm_t;

簡略化してありますが、上記のような構造体があります。
この構造体中の【当たり判定用矩形】の部分を関数で処理し、矩形を回転させるのですが、ひとつの関数に対して数種類の構造体を引数として渡す方法がわかりません。

仮に回転計算の関数を

void RotateRect(・・・・){
実際の計算処理;
}

とした場合、この関数に自機用の構造体も、敵用の構造体も渡せるようにすれば、
ひとつの関数で処理できるので効率的なのですが・・・
計算に関する処理は一応完成しているので、現在は自機用、敵用、弾用など分けて
実装しようとしているのですが、もし良い方法があればご教授ください。

以上長文で申し訳ありませんが、よろしくお願いします。
※一応PREタグを使用しましたが、インデントでタブが使えるのかわからなかったので、
半角スペースで字下げしてあります。

※環境部分一部追加
・DxLibを使用
・言語 C言語


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


Name: Mist  ..熟練のプログラマー(59,421ポイント)   Date: 2009/04/20(月) 16:51   No:32487     
Title: Re:関数に渡す引数で    
以下のように引数に必要な構造体を複数書けばよいだけだと思うのですが、もっと複雑なことをお考えでしょうか?

void RotateRect(hitrect_t hirect, ch_t ch, enm_t enm);



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

Name: バグ  ..ハッカー(158,043ポイント)   Date: 2009/04/20(月) 17:02   No:32488     
Title: Re:関数に渡す引数で    
基本的には構造体も変数も同じです。
以下、サンプルです。


#include <stdio.h>

// Rect構造体
struct Rect
{
int X;
int Y;
int Width;
int Height;
};

// Rect構造体の中身を表示する
void disp(struct Rect rect, const char* name)
{
printf("%s\n", name);
printf("X = %d, Y = %d, Width = %d, Height = %d\n", rect.X, rect.Y, rect.Width, rect.Height);
}

// 引数で指定されたRect構造体の中身を入れ替える
void swap(struct Rect *rect1, struct Rect *rect2)
{
// rect1のコピーを作成する
Rect dummy = {rect1->X, rect1->Y, rect1->Width, rect1->Height};

// rect1へrect2の内容をコピーする
rect1->X = rect2->X;
rect1->Y = rect2->Y;
rect1->Width = rect2->Width;
rect1->Height = rect2->Height;

// rect2へrect1の内容を保持しておいたdummyの内容をコピーする
rect2->X = dummy.X;
rect2->Y = dummy.Y;
rect2->Width = dummy.Width;
rect2->Height = dummy.Height;
}

// メイン関数
int main(void)
{
struct Rect rect1 = {10, 10, 50, 50};
struct Rect rect2 = {50, 50, 10, 10};

// Rect構造体の中身を表示する(コピー渡し)
disp(rect1, "rect1");
disp(rect2, "rect2");

// rect1とrect2の内容を入れ替える(参照渡し)
swap(&rect1, &rect2);

// Rect構造体の中身を表示する(コピー渡し)
disp(rect1, "rect1");
disp(rect2, "rect2");

return 0;
}


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

Name: Kou  ..入門者(3,494ポイント)   Date: 2009/04/20(月) 17:15   No:32489     
Title: Re:関数に渡す引数で    
Mist様、バグ様、早速の回答ありがとうございます。

今ひとつ構造体を引数にする場合の知識が乏しいので、確認させて頂きたいのですが、

Mist様
>void RotateRect(hitrect_t hirect, ch_t ch, enm_t enm);
の方法で渡した場合、自機用、敵用の構造体内のhitrectに対して処理する場合、

void RotateRect(hitrect_t hitrect, ch_t ch, emn_t emn){
ch.hitrect.b_point_x[0] = 計算処理;
}

の様な使い方が出来ると言う事でしょうか?

バグ様
サンプルまで付けて頂き、ありがとうございます。
このサンプルでは構造体がひとつでしたが、サンプル内のRect構造体が他の複数の構造体の中に共通項目としてある場合、基本的にはMist様の回答の様になるのでしょうか?

欲を言えば、頂点の回転計算をするのが自機、敵、弾など複数になるので、
引数の数をなるべく減らせれば・・・と考えています。
そのような事は可能なのでしょうか?


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

Name: Mist  ..熟練のプログラマー(59,508ポイント)   Date: 2009/04/20(月) 17:16   No:32490     
Title: Re:関数に渡す引数で    
しょうもない突込みだけど、
Rect dummy

struct Rect dumy

でないとコンパイルエラー。

あと、swapの中は3行で十分じゃない?

struct Rect dummy = *rect1;
*rect1 = *rect2;
*rect2 = dummy;


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

Name: Mist  ..熟練のプログラマー(59,678ポイント)   Date: 2009/04/20(月) 17:23   No:32492     
Title: Re:関数に渡す引数で    
hitrect_tがch_tとemn_tとで共通部分なら以下で十分と思いますが。


※参照渡しに変更
void RotateRect(ch_t *ch, emn_t *emn){
ch->rect.b_point_x[0] = 計算処理;
}


> 欲を言えば、頂点の回転計算をするのが自機、敵、弾など複数になるので、
> 引数の数をなるべく減らせれば・・・と考えています。
その関数に必要のない引数を渡すことは無駄にしかなりませんが、単に引数が多いという理由だけで関数に必要な引数を無理やり減らそうというのは設計思想としておかしいと思います。
必要な引数は多くても全て渡すべきです。


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

Name: Mist  ..熟練のプログラマー(59,642ポイント)   Date: 2009/04/20(月) 17:26   No:32493     
Title: Re:関数に渡す引数で    
構造体の中身を更新したい場合はバグさんの書かれているように参照渡しにしてくださいね。


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

Name: バグ  ..ハッカー(158,291ポイント)   Date: 2009/04/20(月) 17:44   No:32495     
Title: Re:関数に渡す引数で    
>Mistさん

>>しょうもない突込みだけど、
>>Rect dummy
>>↓
>>struct Rect dumy
>>でないとコンパイルエラー。

おっと、C++の書き方に慣れているので、ついやってしまったようです。失礼しましたm(__)m


>>あと、swapの中は3行で十分じゃない?
>>struct Rect dummy = *rect1;
>>*rect1 = *rect2;
>>*rect2 = dummy;

あ、これはわざとです。
サンプルとして、ああいう書き方の方が分かり易いかなぁ…と思いまして(^_^;)
実際にはその3行で問題ないですね。


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

Name: バグ  ..ハッカー(158,362ポイント)   Date: 2009/04/20(月) 17:53   No:32497     
Title: Re:関数に渡す引数で    
>Kouさん

> 欲を言えば、頂点の回転計算をするのが自機、敵、弾など複数になるので、
> 引数の数をなるべく減らせれば・・・と考えています。

どうしても引数を減らしたいのならば、共通する項目を構造体にして、その構造体をメンバとすればいいかと思います。関数に渡す際はその構造体の中にある構造体を渡す…みたいな感じでしょうか?



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

Name: toyo  ..プログラマー(31,730ポイント)   Date: 2009/04/20(月) 18:51   No:32498     
Title: Re:関数に渡す引数で    
ch_tとenm_tがまったく同じなのは簡略化のためですか?
まったく同じ構造体なら分ける必要は無いと思いますが


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

Name: Kou  ..入門者(3,706ポイント)   Date: 2009/04/20(月) 19:07   No:32499 解決!     
Title: Re:関数に渡す引数で    
toyo様
ch_tとenm_tの内容が同じなのは、表記上の簡略化のためです。
実際は座標などの似たようなのはありますが、それぞれメンバとなる変数の数や種類が違います。
紛らわしくてすみませんでした。

Mist様、バグ様
回答及びご意見ありがとうございます。

私なりに整理しますと、

1.関数に渡す引数は、Mist様のご指摘のように、数が多くとも必要となるであろう情報は全て渡す。
2.引数で渡す値は、バグ様のサンプルに習い、参照渡しにして関数内で値を直接操作する。

この考え方で実装してみます。
今回はこれで一応解決とさせて頂きますが、実装途中にまたわからない事がありましたら、
このトピで質問させて頂きます。
その際はまた、よろしくお願いします。

Mist様、バグ様、toyo様、ありがとうございました。


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



Name: ざこ  ..熟練のプログラマー(44,937ポイント)   Date: 2009/04/20(月) 14:06   No:32477       
Title: 無限ループ?    
InitDialog


for(p=0;p<=c;p++){//ドロップしたファイルがディレクトリの場合
CFileFind find;
CString vv;
vv=__argv[p];
CString Newstr=vv+_T("\\*.*");
if(find.FindFile(Newstr)){
int i=1;
while(i){
if(__argv[p]==""){
return 0;
}
i=find.FindNextFile();
if(find.IsDots()){
continue;
}
if(find.IsDirectory()){

FolderDrop(find.GetFilePath());

}
CString filename=vv+"\\"+find.GetFileName();
CString kakucho=GetKaku(filename);
while((index3=m_listC.GetNextItem(index3,LVNI_ALL))!=-1){
indexstr=m_listC.GetItemText(index3,0);
if(kakucho==indexstr){
kdlg.m_DirectoryFileNameArray.Add(filename);
}
}
m_FilenameArray.Add(filename);
m_FolderFileNumber++;

}
find.Close();
}

}


void CDragDrop6Dlg::FolderDrop(CString str)
{
int c=__argc;
CString kakucho;
int i=m_listC.GetItemCount();
CString indexstr;
CString filename;
CKakuninDlg kdlg;
int p;
int index3=-1;


for(p=0;p<=c;p++){//ドロップしたファイルがディレクトリの場合
CFileFind find2;


str=__argv[p];
CString Newstr=str+_T("\\*.*");
if(find2.FindFile(Newstr)){
int i=1;
while(i){
if(str==""){
return;
}
i=find2.FindNextFile();
if(find2.IsDots()){
continue;
}
if(find2.IsDirectory()){
FolderDrop(find2.GetFilePath());
continue;
}
filename=str+"\\"+find2.GetFileName();
kakucho=GetKaku(filename);//ファイルの拡張子をとりだす
while((index3=m_listC.GetNextItem(index3,LVNI_ALL))!=-1){
indexstr=m_listC.GetItemText(index3,0);

if(kakucho==indexstr){

kdlg.m_DirectoryFileNameArray.Add(filename);


}
}



m_FilenameArray.Add(filename);
m_FolderFileNumber++;

}
find2.Close();
}

}


}



フォルダの中のファイルを全て取り出すプログラムですが実際にMessageBoxなどで
調べてみると無限ループになってるようですが、どこがおかしいのかおしえてください。


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


Name: ざこ  ..熟練のプログラマー(44,965ポイント)   Date: 2009/04/20(月) 17:53   No:32496 解決!     
Title: Re:無限ループ?    
質問する場所を間違えたみたいなので他で聞きます。

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



Name: ひで  ..かけだし(2,449ポイント)   Date: 2009/04/20(月) 14:22   No:32478       
Title: 無題    
度々の質問で申し訳ないのですが、最近ゲームを作ろうと思い、こちらのゲームプログラミングの館
を見て、DxLibをダウンロードしたのですが、〜.slnというファイルを開けません・・・
私のコンパイル環境はVC++2008なのですが、なぜ開けないのでしょうか?


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


Name: 御津凪 [URL]  ..比類無きプログラマー(82,195ポイント)   Date: 2009/04/20(月) 14:30   No:32479     
Title: Re:無題    
1.VC++2008 を一度起動しましたか?
(VC++2008 を一度起動させないと、インストール処理として完全に完了していないことになります)

2.VC++2008 を起動し、ウインドウに sln ファイルをドラッグ&ドロップしてみましたか?
3.VC++2008 を起動し、メニューから「プロジェクトを開く」で sln ファイルを開いてみましたか?


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

Name: ひで  ..かけだし(2,477ポイント)   Date: 2009/04/20(月) 14:34   No:32480     
Title: Re:無題    
御津凪さん
やってませんでした・・・
そのまま開いたのではダメだったんですね・・


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

Name: ひで  ..かけだし(2,486ポイント)   Date: 2009/04/20(月) 14:37   No:32481 解決!     
Title: Re:無題    
解決しました^^

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

Name: 御津凪 [URL]  ..比類無きプログラマー(82,097ポイント)   Date: 2009/04/20(月) 14:38   No:32482     
Title: Re:無題    
ちょっと書き抜けがあったので追記です。

1. をやらないと sln ファイルを開けません。(1. さえやっていれば sln ファイルから直接開けるはずです)

また、VC++ 2005 形式の sln ファイルだと開けないことがたまにありますので、
その時は 2. か 3. を試してください。


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



Name: 文字の扱いについて  ..ぴよぴよ(243ポイント)   Date: 2009/04/18(土) 20:52   No:32431       
Title: 文字の扱いについて    
以下のソースで書き込めないのですが
おかしいのでしょうか?


char Text[] = "あいうえお";

FILE *fp; // ファイルポインタを宣言

// ファイルを開く
if((fp = fopen("Test.txt", "w")) == NULL){ // wは書き込み rで読み込み
printf("FILE OPEN ERROR\n"); // エラー処理
}

fprintf(fp, "%c",*Text); // ファイルへ文字列を書き込む

// ファイルを閉じる
if(fclose(fp) == EOF){
printf("FILE CLOSE ERROR\n"); // エラー処理
}


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


Name: kazuoni [URL]  ..比類無きプログラマー(82,985ポイント)   Date: 2009/04/18(土) 21:13   No:32434     
Title: Re:文字の扱いについて    
まずこれだとコンパイルすら通らないですよね?
まずはそれからだと思うのですが・・・

もし、上のコードがコンパイルが通るコードからの抜粋だとしたらの話ですが、
fprintf(fp, "%s",Text);


で試してみてください。


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

Name: lbfuvab  ..上級者(20,270ポイント)   Date: 2009/04/18(土) 21:14   No:32435     
Title: Re:文字の扱いについて    
それでは'あ'の一バイト目をかきこんでいるだけです。
fprintfやfputsでググると良いでしょう。


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

Name: SooA [URL]  ..上級者(17,770ポイント)   Date: 2009/04/18(土) 21:15   No:32436     
Title: Re:文字の扱いについて    
詳しくは printf関数に関して調べてみてください。

fprintf( fp, "%s", Text ) ;

または

fprintf( fp, Text ) ;


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

Name:  ..ぴよぴよ(617ポイント)   Date: 2009/04/18(土) 21:18   No:32437     
Title: Re:文字の扱いについて    

char Text[] = "あいうえお";

void main(void)
{
// ファイルを開く → ファイルの読み書きをする → ファイルを閉じる
WriteFile(*Text);

}

void WriteFile(char str)
{

// printf("Data = %d\n",(int)Num);

FILE *fp; // ファイルポインタを宣言

// ファイルを開く
if((fp = fopen("Test.txt", "w")) == NULL){ // wは書き込み rで読み込み
printf("FILE OPEN ERROR\n"); // エラー処理
}

fprintf(fp, "%s",str); // ファイルへ文字列を書き込む

// ファイルを閉じる
if(fclose(fp) == EOF){
printf("FILE CLOSE ERROR\n"); // エラー処理
}
}


で試したのですが強制終了してしまいます・・・。


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

Name: kazuoni [URL]  ..比類無きプログラマー(83,095ポイント)   Date: 2009/04/18(土) 21:30   No:32439     
Title: Re:文字の扱いについて    
>あさん
トピ主さんですか?
もしそうだとしたら名前は統一してください。
誰が質問者か分からなくなってしまいます。

まずは
・プロトタイプ宣言
・文字列処理(ポインタ)

を復習されてはいかがでしょうか?
また、lbfuvabさんの助言をよく考えてみてください。


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

Name: バグ  ..ハッカー(156,202ポイント)   Date: 2009/04/18(土) 21:41   No:32440     
Title: Re:文字の扱いについて    
ファイルオープンに失敗した場合も処理を続行していますが、それは意図的に行なっているのでしょうか?

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

Name: スレ主です  ..ぴよぴよ(587ポイント)   Date: 2009/04/19(日) 17:47   No:32451     
Title: Re:文字の扱いについて    
皆様、返信ありがとうございます。

いろいろなサイトで勉強し下記のようにソースを変えました。
書き込みではなんとかできるのですが
読み込みでエラーが起こります。
どこが間違えているのか指摘していただけないでしょうか?




#pragma warning(disable: 4996) // C4996のワーニングを無効

#include <stdio.h>

void WriteFile(char *str); // スコアを書き出す
void ReadFile(char *str);

char *Text = "あいうえお";

void main(void)
{
// ファイルを開く → ファイルの読み書きをする → ファイルを閉じる
WriteFile(Text);
ReadFile(Text);

}

void WriteFile(char *str)
{
FILE *fp; // ファイルポインタを宣言

// ファイルを開く
if((fp = fopen("Test.txt", "w")) == NULL){ // wは書き込み rで読み込み
printf("FILE OPEN ERROR\n"); // エラー処理
}

fprintf(fp, "%s",str); // ファイルへ文字列を書き込む

// ファイルを閉じる
if(fclose(fp) == EOF){
printf("FILE CLOSE ERROR\n"); // エラー処理
}
}

void ReadFile(char *str)
{

FILE *fp; // ファイルポインタを宣言
// ファイルオープン
if((fp = fopen("Test.txt","r")) == NULL){
printf("FILE OPEN ERROR\n"); // エラー処理
}

// ファイルから得点を読み込む
fscanf(fp, "%s", str);
printf("Data = %s\n",str);

// ファイルクローズ
if(fclose(fp) == EOF){
printf("FILE OPEN ERROR\n"); // エラー処理
}
}


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

Name: スレ主です  ..ぴよぴよ(619ポイント)   Date: 2009/04/19(日) 17:48   No:32452     
Title: Re:文字の扱いについて    
>>バグさん
ごめんなさい・・・
意図的に行っているつもりはないのですが
どうすればよいのかわかりません・・・・。


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

Name: array  ..熟練のプログラマー(49,261ポイント)   Date: 2009/04/19(日) 18:30   No:32453     
Title: Re:文字の扱いについて    
> 読み込みでエラーが起こります。
読み込みは、fscanf()ではなく、fgets()を使えばいいと思います。


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

Name: スレ主です  ..ぴよぴよ(717ポイント)   Date: 2009/04/19(日) 19:11   No:32456     
Title: Re:文字の扱いについて    
>>arrayさん
fgetsを使ってみたのですが
要素?の調べ方がわからずエラーが出てしまいます。

fgets(文字配列,配列の要素数,ファイルポインタ);

らしいのですが
配列ではないので理解できませんでした・・・。



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

Name: バグ  ..ハッカー(156,297ポイント)   Date: 2009/04/19(日) 19:12   No:32457     
Title: Re:文字の扱いについて    
fscanf自体は問題ないのでは?
それよりも問題なのは、書き換え不可能なTextというポインタ変数が指している領域を書き換えようとしている点ではないでしょうか?

char buf[1024];
ReadFile(buf);

とでも書き換えればいいかと。


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

Name: kazuoni [URL]  ..比類無きプログラマー(83,434ポイント)   Date: 2009/04/19(日) 19:14   No:32458     
Title: Re:文字の扱いについて    
名前は
文字の扱いについて
さんで固定したほうがいいですよ。投稿者がその名前なので。

とりあえず原因は
書き込めないところに書き込もうとしているのが理由です。

ReadFile()では
char *Text = "あいうえお";
の先頭のアドレスを引数として渡しています。
そのアドレスで引数strは初期化されています。
fscanf(fp, "%s", str);

では、strに読み込んだ文字を代入しようとしています。、
もともとstrはグローバル変数Textで初期化されたのですが、
Textはchar型の配列ではなく、char型のポインタのです。

なので、代入はできません。

解決策としては、ReadFile()中で、新たにchar型の配列を用意し、
あらかじめすべてnullで初期化します。
あとはそこにfscanfで代入してやれば一応は解決します。

訂正
4/19 21:25
誤った回答だったので、打ち消し線を引かせていただきました。


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

Name: kazuoni [URL]  ..比類無きプログラマー(83,468ポイント)   Date: 2009/04/19(日) 19:16   No:32459     
Title: Re:文字の扱いについて    
そして、バグさんともろかぶりました・・・w

バグさんと言いたいことは全く同じでした^^;


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

Name: Mist  ..熟練のプログラマー(59,368ポイント)   Date: 2009/04/19(日) 20:21   No:32460     
Title: Re:文字の扱いについて    
> では、strに読み込んだ文字を代入しようとしています。、
> もともとstrはグローバル変数Textで初期化されたのですが、
> Textはchar型の配列ではなく、char型のポインタのです。
> なので、代入はできません。

この部分の説明は的外れだよ。
Textの指し示す先が文字リテラルであるからダメなのであって、charのポインタだから代入できないってのは意味不明です。


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

Name: kazuoni [URL]  ..比類無きプログラマー(83,519ポイント)   Date: 2009/04/19(日) 21:16   No:32462     
Title: Re:文字の扱いについて    
>トピ主さん
自分の理解が浅い時に回答してしまい大変申し訳ありませんでした。
Mistさんの回答を参考にしてください。


>Mistさん
自分でも書いていてちょっと変だなっと思ってました。。
回答を控えるべきでした。

文字列リテラルがコンパイル後に(環境依存ですが)ROM領域に生成
されるっというのは知りませんでした。。
ご忠告本当にありがとうございました。


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

Name: バグ  ..ハッカー(157,259ポイント)   Date: 2009/04/20(月) 11:15   No:32471     
Title: Re:文字の扱いについて    
トピ主さんのソースを元に、私の好みの書き方で書きなおしてみました。
黒文字で書いていますので、どうしても分からない場合にだけ、反転させて御覧ください。m(__)m



#include <stdio.h>

// プロトタイプ宣言
int Write(const char* filePath, const char* writeString);
int Read(const char* filePath, char* readBuffer)

void main(void)
{
char *str = "あいうえお";
char buf[256] = {0};

// 書き込み
switch (Write("Test.txt", str))
{
case 1:
printf("FILE_OPEN_ERROR\n");
return;
case 2:
printf("FILE_CLOSE_ERROR\n");
return;
default:
printf("FILE_WRITE_SUCCESS\n");
printf("WRITE_DATA = %s\n", str);
break;
}

// 読み込み
switch (Read("Test.txt", buf))
{
case 1:
printf("FILE_OPEN_ERROR\n");
return;
case 2:
printf("FILE_CLOSE_ERROR\n");
return;
default:
printf("FILE_READ_SUCCESS\n");
printf("READ_DATA = %s\n", buf);
break;
}
}

// ファイルへ文字列を書き込む
//
// 引数
// const char* filePath = ファイルパス
// const char* writeString = ファイルへ書き込む文字列
//
// 戻り値
// 0 = 正常終了
// 1 = ファイルオープン時にエラー
// 2 = ファイルクローズ時にエラー
int Write(const char* filePath, const char* writeString)
{
// ファイルを書き込みモードでオープン
FILE *fp = fopen(filePath, "w");

// エラー判定
if (fp == NULL)
{
// ファイルオープン時にエラーが発生したので、1を返す
return 1;
}

// ファイルへ文字列を書き込む
fprintf(fp, "%s", writeString);

// ファイルクローズ
if (fclose(fp) == EOF)
{
// ファイルクローズ時にエラーが発生したので、2を返す
return 2;
}

// 正常に終了したので0を返す
return 0;
}

// ファイルへ文字列を書き込む
//
// 引数
// const char* filePath = ファイルパス
// char* readBuffer = 読み込んだ文字列を格納するバッファ
//
// 戻り値
// 0 = 正常終了
// 1 = ファイルオープン時にエラー
// 2 = ファイルクローズ時にエラー
int Read(const char* filePath, char* readBuffer)
{
// ファイルを読み込みモードでオープン
FILE *fp = fopen(filePath, "r");

// エラー判定
if (fp == NULL)
{
// ファイルオープン時にエラーが発生したので、1を返す
return 1;
}

// ファイルから文字列を読み込む
fscanf(fp, "%s", readBuffer);

// ファイルクローズ
if (fclose(fp) == EOF)
{
// ファイルクローズ時にエラーが発生したので、2を返す
return 2;
}

// 正常に終了したので0を返す
return 0;
}



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



Name: yuki  ..ぴよぴよ(276ポイント)   Date: 2009/04/18(土) 16:38   No:32422       
Title: 画像の作り方    
ド素人です。

つい最近プログラムを始めました。
まずは画像を用意しないと、と思っています。


まずは、入門編で使われているchar.png みたいな画像を作ろうと思ってるんですが、
その画像を自分で作ろうとする場合、どこでどういう風に作ればいいのかが分かりません。
分かる方、よろしくおねがいします。。


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


Name: BEMANI  ..プログラマー(26,311ポイント)   Date: 2009/04/18(土) 17:52   No:32426     
Title: Re:画像の作り方    
>>yukiさん
フリーソフトで作成されるのでしょうか?
フリーではGIMPというソフトがお勧めらしいのでもし宜しければ調べてみて下さい。
ソフトの使い方等はどこかのサイトに書かれているかと思いますので、
「GIMP 使い方」のように検索すればいいかと思います。
(自分はこのソフトを使っていないのでお勧めなのかどうかはよく解りませんが
ここの掲示板でよく見かけるのでお勧めしておきます。)


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

Name: TKOZ  ..上級者(20,980ポイント)   Date: 2009/04/18(土) 19:06   No:32428     
Title: Re:画像の作り方    
yukiさんへ
char.pngは、ドット絵なので、ドット絵専用のエディタを使った方が
いいかもしれません。
GIMPは、PhotoShopと同じく高機能ですが、フリーで手に入る所が良い所です。
ですが、高機能なので使いこなすのに、時間がかかります。
ドット絵専用のエディタとは、Edgeのことです。
googleで検索してみてはいかがでしょうか?


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

Name: yuki  ..ぴよぴよ(357ポイント)   Date: 2009/04/19(日) 14:09   No:32449 解決!     
Title: Re:画像の作り方    

いろいろ調べた結果、まずはEdgeを使って書いていきたいと思います。

GIMPはEdgeが慣れてから使おうかなと考えております。

教えてくださった方々、助かりました。本当にありがとうございました


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



Name: ウサギ  ..ぴよぴよ(53ポイント)   Date: 2009/04/17(金) 21:59   No:32386       
Title: 無題    
初めましてです
現在、画像ファイルからメモリへの読み込みを試行錯誤しているんですが、
分割してすでに読み込んだ画像を、さらに分割して読み込むことは可能でしょうか?

具体的には縦に三分割した画像の二番目だけを横に二分割したいのですが、
何か良い手段はないのでしょうか?

C言語初心者なもので、どなたかご指導の方をお願いします


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


Name: SooA [URL]  ..上級者(17,031ポイント)   Date: 2009/04/17(金) 23:03   No:32392     
Title: Re:無題    
規約を読んで質問に必要な内容を確認してください。

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

Name: kazuoni [URL]  ..比類無きプログラマー(82,699ポイント)   Date: 2009/04/17(金) 23:14   No:32395     
Title: Re:無題    
画像の大きさが分かっているなら、
DerivationGraph()で指定範囲を新たなグラフィックとして生成できます。
具体的には以下の関数で実装できるかと。

void LoadDivGraphToHandle(const int s_Handle,int AllNum ,int XNum , int YNum ,int XSize , int YSize , int *HandleBuf )

{
int pointX=0;
int pointY=0;
for(int i=0 ; i<AllNum ; ++i)
{
HandleBuf[i]=DerivationGraph(pointX,pointY,XSize,YSize,s_Handle);

if(!((i+1)%XNum))
{
pointX=0;
pointY+=YSize;
}
else
pointX+=XSize;
}
}


本家のLoadDivGraphもどきです。ただ、戻り値なしにしているので、よくないです。。
本家はエラーが返ってくる(-1)っとなっていますが、
・エラーが出た際、今までに確保したハンドルがどうなるか
っというのが自分はよくわからなかったため、実装してません。
また、画像の大きさを超えた領域を読み込もうとすると危ないです。
XSize*XNum=基になる画像ハンドルの画像のWIDTH
YSize*YNum=基になる画像ハンドルの画像のHEIGHT
になるようにしてください。

余裕があったらこの未実装のあたりを実装してみてください。


const int s_Handleは元になるハンドル
int *HandleBufは新たに分割したハンドルを記憶するハンドルの先頭のアドレス(配列)
です。




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

Name: ウサギ  ..ぴよぴよ(137ポイント)   Date: 2009/04/18(土) 20:50   No:32430 解決!     
Title: Re:無題    
できました!
>>kazuoniさん
丁寧なアドバイスどうもありがとうございました
未実装のところはいずれ腕が上がってからまたチャレンジしてみます
本当にありがとうございました

>>SooAさん
自分では規約の通りにできているつもりでしたが、言葉足らずで本当に申し訳ありませんでした


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

Name: SooA [URL]  ..上級者(17,721ポイント)   Date: 2009/04/18(土) 20:59   No:32432     
Title: Re:無題    
DXライブラリによるソースで回答しようかと思いましたが、
使用環境、コンパイラ、ライブラリの使用の有無も書かれていないので
確認してから回答しようと思ったのです。
違ってたら無駄になりますので。


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

Name: kazuoni [URL]  ..比類無きプログラマー(82,861ポイント)   Date: 2009/04/18(土) 21:08   No:32433     
Title: Re:無題    
確かにそうでしたね。。SooAさんのおっしゃる通りです。
自分は決め打ちしていました。
今回はたまたま質問側と回答側の意図した事が一致しただけです。

次回からは必要事項を明記してください。


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



Name: TKOZ  ..上級者(20,870ポイント)   Date: 2009/04/17(金) 20:31   No:32380       
Title: 3Dエンジン作成について02    
Justyさん、3D系のWebページを参考にしたところ、
ベクトルの内積と正規化を見直したら、フラットシェーディングの面の計算が一応出来ました。
アドバイスありがとうございました。
次回の課題は、点描画関数のみで三角形を描画することです。
(今までは、DrawTriangle関数を使っていました。)


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


Name: TKOZ  ..上級者(20,836ポイント)   Date: 2009/04/18(土) 18:53   No:32427     
Title: Re:3Dエンジン作成について02    
このソースに関して改善の余地がありましたら、
アドバイスお願いします。


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



Name: shalot  ..ぴよぴよ(171ポイント)   Date: 2009/04/18(土) 16:38   No:32423       
Title: 敵キャラが動かない    
void enemy_pattern0(int i){
if(enemy[i].count<60){
enemy[i].y+=12;
}
if(enemy[i].count>60+240){
enemy[i].y-=12;
}
}


void EnemyMove(){
//敵データの登録
if(stage_count=100){
enemy[0].count=0;
enemy[0].x=FIELD_X+FIELD_MAX_X/2;
enemy[0].y=100;
enemy[0].flag=1;
enemy[0].muki=1;
enemy[0].pattern=0;
}
;//敵の行動制御
int i;
for(i=0;i<=100;i++){
if(enemy[i].flag==1){//その敵のフラグがオンになってたら
enemy_pattern0(i);
enemy[i].count++;
DrawRotaGraphF(enemy[i].x,enemy[i].y,1.0f,0.0f,img_zako[enemy[i].muki],TRUE);
//敵が画面から外れたら消す
if(enemy[i].x<FIELD_X||FIELD_X+FIELD_MAX_X<enemy[i].x
||enemy[i].y<FIELD_Y||FIELD_Y+FIELD_MAX_Y<enemy[i].y)
enemy[i].flag=0;
}
}
printfDx("count=%d stage=%d",enemy[0].count,stage_count);
}

このソースコードなのですが敵が初期位置に配置されてから動きません。(敵は1体enemy[0]のみです)
printfDx関数で調べてみるとenemy[0].count=1,stage_count=100が繰り返されています。(最後のコードです)
mainのソースコードの一部を以下に貼らせていただきます。stage_countはこちらで加算しています。

case 99:
Ini();
game_state++;
              stage_count=1;
break;

case 100://ゲーム本編
MycharaMove();
MyshotMove();
EnemyMove();
stage_count++;
break;

どうかよろしくお願いします。



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


Name: yu [URL]  ..プログラマー(25,084ポイント)   Date: 2009/04/18(土) 16:49   No:32424     
Title: Re:敵キャラが動かない    


stage_countに100を毎回代入していますね。



//敵データの登録
if(stage_count=100){



if(stage_count==100){


に直してみてください。




後、ソースコードはpreタグで囲んでください。


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

Name: shalot  ..ぴよぴよ(136ポイント)   Date: 2009/04/18(土) 17:03   No:32425 解決!     
Title: Re:敵キャラが動かない    
お早いレスありがとうございます。解決できました。

タグの件申し訳ありませんでした。次回からは気をつけます。


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



Name: スー  ..入門者(4,773ポイント)   Date: 2009/04/17(金) 23:54   No:32400       
Title: スクリーンセーバーの描写が突然消えるバグの原因    
皆さんこんばんは。
何度も何度もスクリーンセーバーについて質問させてもらっているスーです。
悲しいかな、今回も自分の力では解決できそうにないので皆さんの力を貸してください。

WindowsAPIを使ってスクリーンセーバーを作っています。
デスクトップ画面を表示しながら、複数のベジュ曲線を描写するというものです。
そのベジュ曲線は残像?を表示しながら画面内を跳ね返ります。
ここまではできたのですが、スクリーンセーバーを起動してから一定時間でベジュ曲線だけが消えてしまいます。
消える時間も表示するベジュ曲線の数によって変わります。
ベジュ曲線*3 残像は0本 線の合計は3本 はおよそ90秒後に
ベジュ曲線*3 残像は4本 線の合計は15本 はおよそ10秒後に
ベジュ曲線*3 残像は9本 線の合計は30本 はおよそ5秒後に消えてしまいます。

この現象の原因が分かる方がいましたら、是非教えてください。
よろしくお願いします。

環境
VC++2005
WindowsXP

添付ファイルにスクリーンセーバーを入れようと思ったら容量オーバーでした;;
http://www1.axfc.net/uploader/He/so/217943
こちらに本体をアップしました。パスワードは「suu」です。

以下ソースです。

//-------------------------------------------
// main.cpp
//-------------------------------------------
#include <windows.h>
#include <scrnsave.h>
#include <time.h>
//ベジュ曲線の数
#define LINE 3
//ペンの作成
LOGPEN RedPen;

//ベジュ曲線のヘッダー
#include "BezierCurve.h"

//スクリーンセーバを作るためのライブラリ
#pragma comment(lib,"ScrnSave.lib")
#pragma comment(lib,"Comctl32.lib")

//タイマーのID
#define ID_TIMER 32767
//ウインドの縦、横幅
int wx,wy;

/*ハンドルコンテキスト*/
//ダブルバッファ用
HDC backhdc;
//デスクトップ画面用
HDC DeskBmphdc;
//メインハンドル
RECT rc;
HDC hdc;

//デスクトップ画面をDeskBmphdcに保存する
void GetDeskTop(){
HDC Deskhdc;
HBITMAP DeskBmp;
// 画面のデバイスコンテキスト取得
Deskhdc = CreateDCA("DISPLAY",NULL,NULL,NULL);
// /ビットマップ作成
DeskBmp = CreateCompatibleBitmap(Deskhdc,wx,wy);
// ビットマップ描画用デバイスコンテキスト作成
DeskBmphdc = CreateCompatibleDC(Deskhdc);
// デバイスコンテキストにビットマップを設定
SelectObject(DeskBmphdc, DeskBmp);
// 画面上の領域をビットマップに描く
BitBlt(DeskBmphdc, 0, 0, wx, wy, Deskhdc, 0, 0, SRCCOPY);
//解放
ReleaseDC(NULL,Deskhdc);
DeleteObject(DeskBmp);
}

//仮想的な裏画面を作る
HDC Back_Init_Surface(HWND hwnd){
HDC hdc,BackDC;
HBITMAP hBackBMP;

//今の画面を取得
hdc = GetDC(hwnd);
//仮想的なHDCの作成
BackDC = CreateCompatibleDC(hdc);
//ビットマップ作成
hBackBMP = CreateCompatibleBitmap(hdc,wx,wy);
//hBackBMPとBackDCの設定
SelectObject(BackDC,hBackBMP);
//画面初期化
PatBlt(BackDC,0,0,wx,wy,BLACKNESS);
//解放
DeleteObject(hBackBMP);
ReleaseDC(hwnd,hdc);

return BackDC;
}


LRESULT WINAPI ScreenSaverProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam){
//乱数の初期化
srand((unsigned)time(NULL));
//ベジュ曲線を三つ作る
static BezierCurve bez[LINE];

switch(msg){
//画面を消さない
case WM_ERASEBKGND:
return true;
case WM_CREATE:
//ウインドの縦、横幅所得
GetClientRect(hWnd,&rc);
wx = rc.right-rc.left;
wy = rc.bottom-rc.top;

//デスクトップ画面所得
GetDeskTop();

//裏画面作成
backhdc = Back_Init_Surface(hWnd);

//ペンの設定
RedPen.lopnStyle = PS_SOLID;
RedPen.lopnWidth.x = 2;

//ベジュ曲線初期設定の
for(int i=0;i<LINE;i++)
bez[i].Set(wx,wy);

//タイマーのセット
SetTimer(hWnd,ID_TIMER,8,NULL);
break;
case WM_TIMER:
//画面初期化とデスクトップ画面描写
BitBlt(backhdc, 0, 0, wx, wy, DeskBmphdc, 0, 0, SRCCOPY);
// 今の画面を取得
hdc = GetDC(hWnd);
//ベジュ曲線の描写と移動等
for(int i=0;i<LINE;i++){
bez[i].Draw(backhdc);
bez[i].Action();
}
//もう描写しませんよ〜
ReleaseDC(hWnd,hdc);
//ダブルバッファ 裏画面にあるものを表画面に書く
BitBlt(hdc,0,0,wx,wy,backhdc,0,0,SRCCOPY);
break;
case WM_DESTROY:
//いろいろ解放
KillTimer(hWnd,ID_TIMER);
ReleaseDC(hWnd,backhdc);
ReleaseDC(hWnd,hdc);
ReleaseDC(hWnd,DeskBmphdc);
PostQuitMessage(0);
return 0;
default:
break;
}
return DefScreenSaverProc(hWnd, msg, wParam, lParam);
}
//設定画面 まだ作れていない
BOOL WINAPI ScreenSaverConfigureDialog(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam){
return TRUE;
}
BOOL WINAPI RegisterDialogClasses(HANDLE hInst){
return TRUE;
}





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


Name: スー  ..入門者(4,879ポイント)   Date: 2009/04/17(金) 23:55   No:32401     
Title: Re:スクリーンセーバーの描写が突然消えるバグの原因    
続きです。



//-------------------------------------------
// BezierCurve.h
//-------------------------------------------

//残像線の数
#define MAXLINE 5
//ベジュ曲線クラス
class BezierCurve{
public:
//カレントポジション(始点)
float st_x[MAXLINE],st_y[MAXLINE];
//制御点
POINT pt[MAXLINE][3];
//色
int r[MAXLINE],g[MAXLINE],b[MAXLINE];

/*速度*/
//カレントポジションの加速度
int st_vx,st_vy;
//制御点の加速度
int pt_vx[3],pt_vy[3];

//色の加算率
int pr,pg,pb;
//ウインドの縦、横幅
int wx,wy;

//コンストラクタ(初期化)
BezierCurve();
//初期化
void Set(int WX,int WY);
//描写
void Draw(HDC);
//移動、色の加算
void Action();
};

BezierCurve::BezierCurve(){

//初期位置設定
st_x[0] = rand()%640;
st_y[0] = rand()%480;
for(int i=0;i<3;i++){
pt[0][i].x = rand()%640;
pt[0][i].y = rand()%480;
}
r[0] = rand()%105+150;
g[0] = rand()%105+150;
b[0] = rand()%105+150;

//配列の[1]〜[MAXLINE]まで[0]を代入
for(int i=0;i<MAXLINE;i++){
st_x[i] = st_x[0];
st_y[i] = st_y[0];
for(int j=0;j<3;j++)
pt[i][j] = pt[0][j];
r[i] = r[0];
g[i] = g[0];
b[i] = b[0];
}

//初期速度の設定
st_vx = rand()%5+1,st_vy = rand()%5+1;
for(int i=0;i<3;i++){
pt_vx[i] = i+rand()%5+1;
pt_vy[i] = i+rand()%5+1;
}
//色の加算の設定
pr = rand()%3+1;
pg = rand()%3+1;
pb = rand()%3+1;

}
void BezierCurve::Set(int WX,int WY){
//縦、横幅を所得
wx = WX;
wy = WY;
}

void BezierCurve::Draw(HDC hdc){
for(int i=0;i<MAXLINE;i++){
//色選択
RedPen.lopnColor = RGB(r[i] , g[i] , b[i]);
//ペンとハンドルコンテキストの設定
SelectObject(hdc, CreatePenIndirect(&RedPen));
//ベジュ曲線描写
MoveToEx(hdc, st_x[i], st_y[i], NULL);
PolyBezierTo(hdc, pt[i], 3);
//オブジェクトの解放
DeleteObject(SelectObject(hdc , GetStockObject(WHITE_BRUSH)));
}
}

void BezierCurve::Action(){
//先頭の処理(移動)
st_x[0] += st_vx;
st_y[0] += st_vy;
if(st_x[0] < 0 || st_x[0] > wx)st_vx *= -1;
if(st_y[0] < 0 || st_y[0] > wy)st_vy *= -1;
for(int i=0;i<3;i++){
pt[0][i].x += pt_vx[i];
pt[0][i].y += pt_vy[i];
if(pt[0][i].x < 0 || pt[0][i].x > wx)pt_vx[i] *= -1;
if(pt[0][i].y < 0 || pt[0][i].y > wy)pt_vy[i] *= -1;
}
//色の加算
r[0] += pr;
g[0] += pg;
b[0] += pb;
if(r[0] > 250 || r[0] < 150)pr *= -1;
if(g[0] > 250 || g[0] < 150)pg *= -1;
if(b[0] > 250 || b[0] < 150)pb *= -1;

//後ろの処理 [9]=[8] [8]=[7]っていう風に次々代入
for(int j=0;j<MAXLINE-1;j++){
st_x[MAXLINE-j-1] = st_x[MAXLINE-j-2];
st_y[MAXLINE-j-1] = st_y[MAXLINE-j-2];
for(int i=0;i<3;i++){
pt[MAXLINE-j-1][i] = pt[MAXLINE-j-2][i];
}
r[MAXLINE-j-1] = r[MAXLINE-j-2];
}
}



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

Name: スー  ..初心者(5,224ポイント)   Date: 2009/04/18(土) 13:43   No:32417     
Title: Re:スクリーンセーバーの描写が突然消えるバグの原因    
いろいろ実験してみた所バグの原因がわかりました。

//-------------------------------------------
// BezierCurve.h
//-------------------------------------------

void BezierCurve::Draw(HDC hdc){
for(int i=0;i<MAXLINE;i++){
HPEN Pen = CreatePen(PS_SOLID , 2 , RGB(r[0] , g[0] , b[0]));
SelectObject(hdc , Pen);
//ベジュ曲線描写
MoveToEx(hdc, (int)st_x[i], (int)st_y[i], NULL);
PolyBezierTo(hdc, pt[i], 3);
//オブジェクトの解放
DeleteObject(Pen);
}
}

使うペンの型をLOGPEN型からHPEN型に変えて、解放をしたら直りました;;
皆様お騒がせしました。


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

Name: スー  ..初心者(5,239ポイント)   Date: 2009/04/18(土) 13:43   No:32418 解決!     
Title: Re:スクリーンセーバーの描写が突然消えるバグの原因    
解決を押すの忘れました><

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



Name: sood  ..かけだし(2,072ポイント)   Date: 2009/04/17(金) 22:13   No:32388       
Title: ジャンプ中の変化(慣性)    
ジャンプ中に移動方向を変える関数に変更したいのですが、どうしたらいいのかわかりません。。
ジャンプ前の移動(curvec1)で慣性を記録し、ジャンプ中操作を離れて
慣性(g_jikivector)だけで移動します。

このコードを
ジャンプ中、操作できない(慣性の法則だけで移動)

ジャンプ中、操作できるように(マリオみたいにジャンプ中に向きを着地場所を変えられる)
にできませんか?

AddVector ベクトルの合成関数
curvec1 移動の命令
JUMPMOVEC ジャンプ(y-180)
g_nowjumping ジャンプしているかしていないかのフラグ
g_jikivector 慣性変数(ジャンプ中、この中にcurvec1とベクトルで合成)
g_jikipos 自機ポジション

//ジャンプ処理
if( key & PAD_INPUT_A ){
if ( g_akey_previous == FALSE ){
curvec1 = AddVector( curvec1, JUMPMOVEC );
g_nowjumping = TRUE;
g_akey_previous = TRUE;
}
} else {
g_akey_previous = FALSE;

} //自キャラ座標の計算
if ( ontheground == TRUE ){
//接地時
g_jikivector = AddVector( g_jikivector, curvec1 );
} else {
//ジャンプ中
g_jikivector = AddVectorInFrameTime( g_jikivector, GRAVITY );
if(g_jikivector.y > 400) g_jikivector.y = 400;
}
g_jikipos = AddVectorInFrameTime( g_jikipos, g_jikivector );


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


Name: SooA [URL]  ..上級者(17,081ポイント)   Date: 2009/04/17(金) 23:10   No:32394     
Title: Re:ジャンプ中の変化(慣性)    
規約を読んで質問に必要な内容を確認してください。
ソースを貼るときはプレタグで囲んでください。


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

Name: バグ  ..ハッカー(156,100ポイント)   Date: 2009/04/17(金) 23:22   No:32396     
Title: Re:ジャンプ中の変化(慣性)    
ジャンプの処理中にキー入力に従って、横方向の移動量の符号を反転させるだけでいいのでは?

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

Name: ひよこ  ..プログラマー(25,191ポイント)   Date: 2009/04/18(土) 07:36   No:32409     
Title: Re:ジャンプ中の変化(慣性)    
キーを押したらキャラクターの向きの画像を変えればいいと思います。
例えばkyara[muki]でキーを押したらmukiに向く方向の画像を代入したらどうですか。


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

Name: sood  ..かけだし(2,156ポイント)   Date: 2009/04/18(土) 08:44   No:32412     
Title: Re:ジャンプ中の変化(慣性)    
>>SooA
すいませんでした

>>バグ
今すでに定義されている関数でできないですか?

>>ひよこ
向きはなんとかなりましたが、
ジャンプがいまいちマリオっぽくなりません・・・


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

Name: SooA [URL]  ..上級者(17,664ポイント)   Date: 2009/04/18(土) 09:49   No:32414     
Title: Re:ジャンプ中の変化(慣性)    
>すいませんでした
私に謝られても困るんですけど、
回答者が質問内のソースがすし詰めで読みにくいと感じた場合、
読む気にならない&回答する気にならないということです。
(規約が守られていないと回答しない場合もあります。)

今のままではスレ主さんの質問はスルーされる
可能性が非常に高いのです。
それではスレ主さんの損でしかありませんよね?

多くの助言を得たいのであれば、今からでも規約に
書かれている内容を実行することをお勧めします。


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



Name: へろり  ..中級者(9,581ポイント)   Date: 2009/04/18(土) 07:56   No:32411       
Title: レバーコントロール上のコンボボックス    
いつもお世話になっております。
現在Visual Studio .NET 2003 と SDKにてタイトルにある通り、
レバーコントロールの上にコンボボックスを配置しようとしています。
そこで、WM_CREATEのタイミングで下記のようなコードを書いています。


REBARINFO rbinfo = {0};
REBARBANDINFO band = {0};
static const TCHAR *ComboList[] = {_T("item1"), _T("item2"), _T("item3"), NULL};
HWND hrebar, hcombo;
HINSTANCE hinst = (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE);

//レバーコントロールの作成
hrebar = CreateWindowEx(WS_EX_TOOLWINDOW, REBARCLASSNAME, NULL,
WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | RBS_DBLCLKTOGGLE | RBS_BANDBORDERS | CCS_NODIVIDER,
0, 0, 0, 0, hWnd, (HMENU)IDC_REBAR, hinst, NULL);
rbinfo.cbSize = sizeof(REBARINFO);
SendMessage(hrebar, RB_SETBARINFO, 0, (LPARAM)&rbinfo);

//コンボボックスの作成
hcombo = CreateWindow(_T("COMBOBOX"), _T(""), WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST | WS_VSCROLL,
0, 0, 0, 300, hrebar, (HMENU)IDC_COMBO, hinst, NULL);
SendMessage(hcombo, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), TRUE);//...........................(1)
for(i = 0;ComboList[i];i++) SendMessage(hcombo, CB_INSERTSTRING, -1, (LPARAM)ComboList[i]);
SendMessage(hcombo, CB_SETCURSEL, 0, 0);

//レバーバンドの追加
band.cbSize = sizeof(REBARBANDINFO);
band.fMask = RBBIM_STYLE | RBBIM_CHILD | RBBIM_CHILDSIZE | RBBIM_SIZE;
band.fStyle = RBBS_CHILDEDGE | RBBS_GRIPPERALWAYS;
band.cyMinChild = 25;
band.cx = 140;
band.hwndChild = hcombo;
SendMessage(hrebar, RB_INSERTBAND, (WPARAM)-1, (LPARAM)&band);




上記のコードの(1)の部分で、コンボボックスにDEFAULT_GUI_FONTを設定しています。
しかしこのフォントを設定するとなぜか、コンボボックスのリストが開きません。
いえ、開くことは開くのですが、ほんの数ピクセル申し訳程度に開いているように見えます。

ですが、この(1)の行をコメントアウトすると、問題無く開けます。

出来ればコンボボックスでDEFAULT_GUI_FONTを使用したいと思っております。
どこがいけないのでしょうか分かる方よろしくお願いします。


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




Name: ???  ..ぴよぴよ(55ポイント)   Date: 2009/04/17(金) 23:59   No:32402       
Title: PSP起動方法!!    
はじめまして、???といいます。
皆さんに質問です。
東方のゲームで(PCの)PSPできるって本当ですか?
できるなら、やり方教えてください!


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


Name: Ma  ..初心者(5,817ポイント)   Date: 2009/04/18(土) 05:47   No:32406     
Title: Re:PSP起動方法!!    
場違いだと思いますよ。
ここはC言語の質問掲示板です。

>東方のゲームで(PCの)PSPできるって本当ですか?
ついでに、日本語がおかしいですよ。


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

Name: toyo  ..プログラマー(31,592ポイント)   Date: 2009/04/18(土) 07:43   No:32410     
Title: Re:PSP起動方法!!    
ここの「龍神録」をPSPに移殖しているらしいのは聞いたことがあります。
http://www.style-21.jp/bbs/SRJR/#1830


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



Name: ラジオ  ..ぴよぴよ(41ポイント)   Date: 2009/04/14(火) 21:54   No:32219       
Title: csvファイルの読み込み    
csvファイルを二次元配列に読み込みたいです。

添付してあるファイルの1行目1文字目の数字が配列の大きさです。
添付したものでは8となっているので

int num[8][2]という変数を作りたいです。
そのあとに以下のように読み込みをしたいです。
num[0][0] = 1;
num[0][1] = あいう;
num[1][0] = 2;
num[1][1] = いう;

また文字列を扱ったりしますので
typedef struct{
int num;
char text;
}TEST;

TEST test[8];

と書こうかとも考えています

仕事や学校の課題などではなくシスアドの勉強をしていてcsvに興味がわきましたので質問させてもらいました。
いろいろなサイトをみてcsvの読み込むヘッダがあるらしいのですが理解できませんでした・・・
お手数おかけしますがどうかご教授ください。
VisualStadio2005 XP C++ DOS
添付内容

8,8
1,あいう
2,いう
3,うえおか
4,えお
5,お
1,
3,あいう
4,さし


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


Name: non  ..プログラマー(39,686ポイント)   Date: 2009/04/14(火) 22:00   No:32221     
Title: Re:csvファイルの読み込み    
意味がわからないので、補足をお願いします。
>num[0][1] = あいう;
これは、何をしたいのでしょうか?

結局、質問内容はなんでしょう?



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

Name: kazuoni [URL]  ..比類無きプログラマー(80,846ポイント)   Date: 2009/04/14(火) 22:04   No:32223     
Title: Re:csvファイルの読み込み    
>int num[8][2]という変数を作りたいです。
>そのあとに以下のように読み込みをしたいです。

num[0][0] = 1;
は文字列を読み終わった後にatoiに渡せばできますが、

num[0][1] = あいう;
はできません。num[0][1]はint型ですので。

後者なら可能です。
一行目は(8,8)が何を示しているのかが良く分かりませんが、
二行目以降なら、改行文字が現れたら配列の要素を進めていく
っとすれば大丈夫です。(または自分で終端文字を決めるもありです。)

補足
char text;
ではだめなので、ポインタ、文字列あたりを復習してください。


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

Name: box  ..ハッカー(138,675ポイント)   Date: 2009/04/14(火) 22:18   No:32225     
Title: Re:csvファイルの読み込み    
> csvファイルを二次元配列に読み込みたいです。

構造体の配列をお使いになるのがよいでしょう。
その際、

> TEST test[8];

配列の要素数が8であるかどうかは、
CSVファイルの1行目を読んだときにわかります。
したがって、上記のような固定数での定義は適切ではありません。
CSVファイルの1行目を読んで、要素数が8を超えるとわかったとたんに
破綻しますよね。

CSVファイルの1行目の内容に応じて、
必要な領域をプログラム実行時に動的に確保する方法がよいでしょう。
そこで、malloc, freeといった、動的確保・開放を行なう関数について
調べてみるとよいでしょう。


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

Name: ラジオ  ..ぴよぴよ(261ポイント)   Date: 2009/04/14(火) 22:27   No:32227     
Title: Re:csvファイルの読み込み    
>>nonさん
>>結局、質問内容はなんでしょう?

気になっただけなんです・・・

>>kazuoniさん
>>一行目は(8,8)が何を示しているのかが良く分かりませんが

すいません><
適当にかいただけですので気にしないでください・・・
実際はエキセルで一番上の行にカウント関数かいただけです><

>>boxさん
>>配列の要素数が8であるかどうかは〜

もちろん変更しようかと考えています。
一番上の行の数字+4くらい余分に取る予定です。

テキストの読み込みはできるのですがcsvになると
どうやるのかわからないんです・・・。
一応ただ文字を読み込むソースを書いたものを添付してみます


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

Name: ラジオ  ..ぴよぴよ(275ポイント)   Date: 2009/04/15(水) 23:04   No:32297     
Title: Re:csvファイルの読み込み    
いろいろと試してみたのですができないみたいです・・・。

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

Name: kazuoni [URL]  ..比類無きプログラマー(81,619ポイント)   Date: 2009/04/16(木) 11:34   No:32315     
Title: Re:csvファイルの読み込み    
「できない」だと回答する側は何も答えようがないので、
もっと症状を細かく説明するなり、
試したものをアップするとよい回答が得られると思います。


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

Name: たかぎ [URL]  ..比類無きプログラマー(96,679ポイント)   Date: 2009/04/16(木) 12:42   No:32318     
Title: Re:csvファイルの読み込み    
CSVの解析は思っているほど簡単ではありません。
面倒なのは、フィールドが二重引用符で囲まれていた場合で、

・二重引用符に囲まれた文字列にコンマが含まれる場合、そのコンマはフィールドの一部とみなす。
・二重引用符に囲まれた文字列に連続した二重引用符が含まれる場合、ひとつの二重引用符とみなす。
・二重引用符に囲まれた文字列に改行文字が含まれる場合、その改行文字はフィールドの一部である。

というルールがあります。
また、RFC4180では、0x20〜0x7e(および改行文字)以外をフィールドに含めることができません(この仕様は公然と無視されていますが...)。


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

Name: non  ..熟練のプログラマー(40,101ポイント)   Date: 2009/04/16(木) 17:36   No:32328     
Title: Re:csvファイルの読み込み    
ラジオさんの添付ファイルを見ると二重引用符では囲まれていないので、カンマ区切りで分割
できるかどうかということだと思います。
作ったプログラムを添付してみてください。


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

Name: ラジオ  ..ぴよぴよ(329ポイント)   Date: 2009/04/17(金) 00:28   No:32357     
Title: Re:csvファイルの読み込み    
皆様、回答ありがとうございます。

添付したソースは1行しか読み込みができないです・・・。
これくらいしかテキストの読み込み方がわかりません・・・


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

Name: たかぎ [URL]  ..比類無きプログラマー(96,729ポイント)   Date: 2009/04/17(金) 08:45   No:32366     
Title: Re:csvファイルの読み込み    
> ラジオさんの添付ファイルを見ると二重引用符では囲まれていないので、カンマ区切りで分割
> できるかどうかということだと思います。

このデータに決め打ちしてよいなら簡単ですね。
極論をいえば、ファイルを読み込む必要すらありません。


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

Name: non  ..熟練のプログラマー(40,127ポイント)   Date: 2009/04/17(金) 09:05   No:32368     
Title: Re:csvファイルの読み込み    
>極論をいえば、ファイルを読み込む必要すらありません。

答えを聞きたい!!



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

Name: toyo  ..プログラマー(31,004ポイント)   Date: 2009/04/17(金) 10:44   No:32369     
Title: Re:csvファイルの読み込み    
極論ですから
ファイルの内容がわかっているならソースに直接埋め込めば良いという意味でしょう

char *test_dat = "8,8\n1,あいう\n2,いう\n3,うえおか\n4,えお\n5,お\n1,\n3,あいう\n4,さし\n";

みたいな


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

Name: non  ..熟練のプログラマー(40,230ポイント)   Date: 2009/04/17(金) 12:15   No:32370     
Title: Re:csvファイルの読み込み    
>ファイルの内容がわかっているならソースに直接埋め込めば良いという意味でしょう

それは、趣旨が違っているのではないでしょうか?

>このデータに決め打ちしてよいなら簡単ですね。

2重引用符がない、カンマ区切りのcsv形式というデータ形式に決め打ちかと思いました。



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

Name: たかぎ [URL]  ..比類無きプログラマー(96,827ポイント)   Date: 2009/04/17(金) 17:59   No:32373     
Title: Re:csvファイルの読み込み    
> それは、趣旨が違っているのではないでしょうか?

CSVファイルを二次元配列に読み込みたいという質問なので、趣旨が違っているといえばそうです。
けれども、CSVファイルであれば二重引用符に配慮するのは当然ですので、それを無視した回答も同じように趣旨が違っています。

なお、真の目的が、決め打ちのデータを二次元配列に格納することが目的であれば、ファイルからの読み込みではなく、ソースファイルに埋め込む方法も検討の余地が十分にあります。


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

Name: ラジオ  ..ぴよぴよ(587ポイント)   Date: 2009/04/17(金) 23:05   No:32393     
Title: Re:csvファイルの読み込み    
みなさん回答ありがとうございます。
私の説明が不足していましたね。

やろうとしていることは
ユーザーがエキセルなどを使い2列にわたり
様々な数値や文字列を入れます。

列・・・縦軸下方向 行・・・横軸右方向

しかし、この時に一番上の行の2列は使われず
1列に何行あるかをカウントします。 ←numとします
2行目から下に向かって値があります。

これを用意した
Array[num][2];
配列にいれたいのです。

ファイルの中身はユーザが決めるのであらかじめ数なども含めわかりません。
ただし必ず2列?行になります。

わかりにくい質問ですいません。


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

Name: kazuoni [URL]  ..比類無きプログラマー(82,801ポイント)   Date: 2009/04/17(金) 23:50   No:32398     
Title: Re:csvファイルの読み込み    
とりあえず一行しか読み込めないっというのは克服できていませんか?
fgetc、fgetなどを調べて使って、テキストファイルから読みとってみてください。
それでカンマがくるまで読み取った文字を配列に代入する
っということができればやりたいことがなんとなく実現できるような気がします。
そうすれば「二重引用符」を考慮しないcsv形式ファイルからの読み込みなら実現できそうです。
(こんなこと書いてしまうと、↑のレスの皆様の議論が水の泡になってしまいそうですが・・・^^;)

>Array[num][2];
numが変数なので、動的確保でないと実現できません。
先頭に全部の行数を記述し、読みとり、そこから動的確保をするか、
ある程度大きい配列を確保するのどちらかになるかと思います。


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

Name: SooA [URL]  ..上級者(17,268ポイント)   Date: 2009/04/17(金) 23:53   No:32399     
Title: Re:csvファイルの読み込み    
完全に入力制限してしまうのなら

fgets  ストリームから文字列の取得
strtok  文字列のトークン切り出し

といった関数を使って読み込ませることは簡単です。


>これを用意した
>Array[num][2];
>配列にいれたいのです。

変数に関してあまり理解できていないようなので、
↓のC言語編24章前後を読み進めてみましょう。
http://www.geocities.jp/ky_webid/index_old.html


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



Name: yyy  ..ぴよぴよ(101ポイント)   Date: 2009/04/17(金) 21:55   No:32385       
Title: 無題    
#include "DxLib.h"

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE ) ;//ウィンドウモードに変更する関数
if( DxLib_Init() == -1 ) return -1;//初期化処理する関数

LoadGraphScreen( 0 , 0 , "test1.bmp" , TRUE ) ;//画像を表示する関数

WaitKey() ;//何か入力があるまで待つ関数
DxLib_End() ;//終了処理をする関数
return 0 ;
}

このコードを貼り付けしてビルドすると
DXライブラリは24ビットカラーモードに対応していません
プログラム '[2896] DxLib_VC2005用.exe: ネイティブ' はコード -1 (0xffffffff) で終了しました。
って出てきて先に進めません。どうすればいいのでしょうか?


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


Name: SooA [URL]  ..上級者(17,049ポイント)   Date: 2009/04/17(金) 22:55   No:32391     
Title: Re:無題    
>DXライブラリは24ビットカラーモードに対応していません
書いてある通りで、モニタ設定の「画面の色」が
24ビットになっている事が原因だと思います。

追記:
規約を読みましょう。
以後ソースを貼るときはプレタグを使ってください。


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



Name: yyy  ..ぴよぴよ(487ポイント)   Date: 2009/04/17(金) 22:45   No:32390       
Title: 無題    
#include "DxLib.h"

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE ) ;//ウィンドウモードに変更する関数
if( DxLib_Init() == -1 ) return -1;//初期化処理する関数

LoadGraphScreen( 0 , 0 , "test1.bmp" , TRUE ) ;//画像を表示する関数

WaitKey() ;//何か入力があるまで待つ関数
DxLib_End() ;//終了処理をする関数
return 0 ;
}

このコードを貼り付けしてビルドすると
DXライブラリは24ビットカラーモードに対応していません
プログラム '[2896] DxLib_VC2005用.exe: ネイティブ' はコード -1 (0xffffffff) で終了しました。
って出てきてウィンドウモードで開けません。フルスクリーンだとできるのですが...
ウィンドウモードで開くにはどうしたらいいでしょうか?


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




Name: tkmakwins15  ..比類無きプログラマー(95,714ポイント)   Date: 2009/04/15(水) 00:59   No:32247       
Title: POCOのビルドでC2664エラーが発生する。    
POCO(ttp://pocoproject.org/)をダウンロードして、Foundationディレクトリ内のFoundation_vs80からビルドしようと思ったのですが、C2664エラーが発生してどうしてもうまくいきません。どうすればよいのでしょうか?

環境:VC2005
POCOバージョン:1.3.3
エラーメッセージ

FileStream.cpp
c:\program files\microsoft visual studio 8\vc\include\istream(910) : error C2664: 'std::basic_ostream<_Elem,_Traits>::basic_ostream(std::basic_streambuf<_Elem,_Traits> *,bool)' : 1 番目の引数を 'std::_Uninitialized' から 'std::basic_streambuf<_Elem,_Traits> *' に変換できません。(新しい機能 ; ヘルプを参照)
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
整数型からポインタ型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。
c:\program files\microsoft visual studio 8\vc\include\istream(907): クラス テンプレート のメンバ関数 'std::basic_iostream<_Elem,_Traits>::basic_iostream(std::basic_streambuf<_Elem,_Traits> *)' のコンパイル中
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
c:\program files\microsoft visual studio 8\vc\include\istream(920) : コンパイルされたクラスの テンプレート のインスタンス化 'std::basic_iostream<_Elem,_Traits>' の参照を確認してください
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
………
ビルドログは "<ビルドログ出力ファイルのパス>" に保存されました。
Foundation - エラー 1、警告 3
========== ビルド: 0 正常終了、4 失敗、0 更新、0 スキップ ==========

よろしくお願いします。


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


Name: Justy  ..伝説なるハッカー(341,267ポイント)   Date: 2009/04/15(水) 02:35   No:32250     
Title: Re:POCOのビルドでC2664エラーが発生する。    
 うちは MSVC9/Poco1.3.3p1のバージョンですが、そのファイルでエラーは出ませんでした。
 
 見た感じ、basic_iostreamのコンストラクタ内で実行される basic_ostreamのコンストラクタで、
本来は _Uninitialized版のコンストラクタとして判定されるはずが、
なぜか一致せず、もう一方の basic_streambuf<_Elem, _Traits> *版のコンストラクタとも
型が合わずエラーになっているように見えます。

 basic_ostreamの _Uninitialized版のコンストラクタは "ostream"ヘッダで定義されていますか?


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

Name: tkmakwins15  ..比類無きプログラマー(95,840ポイント)   Date: 2009/04/15(水) 22:47   No:32292     
Title: Re:POCOのビルドでC2664エラーが発生する。    
>basic_ostreamの _Uninitialized版のコンストラクタは "ostream"ヘッダで定義されていますか?

__CLR_OR_THIS_CALL basic_ostream(_Uninitialized)

のような関数が定義されていたので、これは大丈夫だと思います。
Pocoのバージョンも1.3.3p1です。


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

Name: Justy  ..伝説なるハッカー(342,188ポイント)   Date: 2009/04/16(木) 02:02   No:32307     
Title: Re:POCOのビルドでC2664エラーが発生する。    
 一応、svn内の 1.3.4のそのファイルの差異とか、サポートページとかも見てみましたが、
特に該当する現象は見つかりませんでした。


 となると何でしょうね。
 
#MSVCや Pocoのヘッダ・ソースは書き換えてないですよね?


 ところで、FileStream.cppのビルド中、どの行でエラーが起きたのかが書かれていないのですが、
エラーメッセージはそれがすべてですか?


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

Name: tkmakwins15  ..比類無きプログラマー(95,779ポイント)   Date: 2009/04/16(木) 21:54   No:32347     
Title: Re:POCOのビルドでC2664エラーが発生する。    
他には、文字コード関連のC4819の警告がありました。MSVCのヘッダーは書き換えていませんし、POCOは解凍直後の状態でやっています。
一応コンパイラがはいたメッセージの全文を添付します。


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

Name: Justy  ..伝説なるハッカー(342,389ポイント)   Date: 2009/04/17(金) 02:14   No:32360     
Title: Re:POCOのビルドでC2664エラーが発生する。    
 ネットで探すと少数ですが、似たような症状が出ている人がいるようです。

Compiler error with fstream - PopCap Developer Program Forums
ttp://developer.popcap.com/forums/showthread.php?t=3720

win_tech_off_topic : Message: Re: [OT] Chrome/V8
ttp://tech.groups.yahoo.com/group/win_tech_off_topic/message/58481

 どちらも VisualStudioのパッチを当てた後発生しているらしいです。
 ただ明確な解決方法はなく、あっても「_Uninitialized版のコンストラクタを追加する」
という方法なのですでにある以上この方法は使えません。



>C4819の警告がありました

 こっちは 2005特有のものなので、あまり気にしなくてもいいのかも。
(2008では出ませんでした)


 うーん、原因を特定するのは難しいですね。
 今できることといえば
・ basic_iostreamを使ったサンプルを書いてみて、ビルドが通るか確認してみる
・ VisualStudio2005を再インストールするか、2008をインストールしてそちらで試す
 あたりでしょうか。


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

Name: tkmakwins15  ..比類無きプログラマー(95,870ポイント)   Date: 2009/04/17(金) 22:36   No:32389     
Title: Re:POCOのビルドでC2664エラーが発生する。    
VC2008を使って試してみましたら、うまくいきました、ありがとうございます。

しかし、VC2008はExpressEditionですので、2005のATLを使えないのがちょっと難点です(コンパイルはできるとしても、ライセンス的にはどうなのでしょうか…)


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



Name: 若名  ..ぴよぴよ(72ポイント)   Date: 2009/04/15(水) 21:39   No:32284       
Title: コンパイルについて。    
初めて質問させてもらいます。
コマンドプロンプトでコンパイルする場合
DixLibをincludeさせることはできないでしょうか?
ちなみvisual studioではできています。
よろしくお願いします。


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


Name: box  ..ハッカー(138,964ポイント)   Date: 2009/04/15(水) 21:46   No:32285     
Title: Re:コンパイルについて。    
>DixLibをincludeさせることはできないでしょうか?

トライしたけれどできなかった、ということなのでしょうか?


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

Name: 若名  ..ぴよぴよ(353ポイント)   Date: 2009/04/16(木) 19:16   No:32339     
Title: Re:コンパイルについて。    
そうです。

test.c(1) : fatal error C1083: include ファイルを開けません。'DxLib.h': No such
file or directory

というエラーが出たので
MicrosoftVisualStudio\VC\include
のフォルダにDxLib.hを入れて再度clを試してみたのですが

c:\program files\microsoft visual studio 9.0\vc\include\DxDirectX.h(927) : error
C2061: 構文エラー : 識別子 'D_IDirectSound'
c:\program files\microsoft visual studio 9.0\vc\include\DxDirectX.h(927) : error
C2059: 構文エラー : ';'
c:\program files\microsoft visual studio 9.0\vc\include\DxDirectX.h(927) : error
C2059: 構文エラー : ':'

など大量にエラーが出てきて
プログラム内のエラーが 100 個を超えました。コンパイルは中断されます。
表示され、コンパイルできません。
もともと無理なのでしょうか?

わかりにくい説明ですみません。


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

Name: toyo  ..プログラマー(30,697ポイント)   Date: 2009/04/16(木) 20:13   No:32343     
Title: Re:コンパイルについて。    
Visual C++ 2008を起動してメニューの「ツール」-「Visual studio 2008 Command Prompt」からコマンドプロンプトを開いたらできるはずです。
通常のコマンドプロンプトからではインクルードやライブラリ等の各種設定がされないので無理です。
Makefileを作ればnmakeでできるかもしれません。


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

Name: Justy  ..伝説なるハッカー(342,254ポイント)   Date: 2009/04/16(木) 22:40   No:32352     
Title: Re:コンパイルについて。    

>test.c(1)

 拡張子を cppにするか、コンパイラオプションに /TPをつけてください。


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

Name: 若名  ..ぴよぴよ(436ポイント)   Date: 2009/04/17(金) 19:56   No:32377 解決!     
Title: Re:コンパイルについて。    
>>toyoさん
それでやっていましたができませんでした。

>>Justyさん
無事コンパイルできました。

回答してくださった皆さんありがとうございました。


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

Name: 若名  ..ぴよぴよ(444ポイント)   Date: 2009/04/17(金) 20:13   No:32378     
Title: Re:コンパイルについて。    
すみません。
今度は
LINK : fatal error LNK1104: ファイル 'DxLib.lib' を開くことができません。
というエラーがでてきてしまいます。
何か解決法ご存じの方がいらっしゃいましたら
よろしくお願いします。


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

Name: 若名  ..ぴよぴよ(459ポイント)   Date: 2009/04/17(金) 20:17   No:32379     
Title: Re:コンパイルについて。    
何度もすみません。
解決しました。


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




 
[ 1 , ... ]
 
 
管理者画面   RSS   + Powered By 21style +