聞かれたら「違います」と答えちゃいます。一遍に指摘しても分かりづらいですよね。ひとつひとつ順番に指摘すればよかったと反省。まどろっこしくなってきたので正解のコード張り付けます。上手くいかなかった時は具体的にどこがダメだったのか教えてください・・・。いうものの仕様がよくわかりませんね。然るべき処理をした後に書きだすのか。その辺りの情報が全くないので具体的にアドバイスをするのはかなり難しいですね・・・。PlayMovie関数についてそれはライブラリそのものの不具合の可能性もありますので、この掲示板よりはDXライブラリの公式の質問掲示板で質問された方がいいと思います。C言語何でも質問掲示板トピック:。なるとiに既にコインがあるのに新しく敵がiに登録されて動作がおかしくなる、ということもあり得ると思います。C言語何でも質問掲示板トピック:。フラグがONではないコインも描画しているように見えるのですがわたしの思い込みのようです。CoinMain関数でちゃんとコインの最大数分ループしているのに、移動や当たり判定やアニメーションの部分にもループがあるのはおかしいですね。そのせいでどこかしら可笑しな挙動が出ているものと思われます。列挙型について思ったより反応が遅くなってしまった...。今回はbeatleさんが教えてくださったやり方で行くことにしました。C++11はツールの方がもう少しシッカリ対応してくれるようになってから使うことにします(泣)僕一人が使ってても、回りがその仕様に対応していない可能性が大きいですので(苦笑)教えてくださったお二方、どうもありがとうございました。VisualC++2008(DXライブラリ使用)ではそれができません。C言語何でも質問掲示板トピック:。breakを追加して実行してみたところ、1体目の敵を倒すと2枚のコインが発生してしまいます。1枚は敵のいたところ、もう一枚は画面の左端のほうで発生。C言語何でも質問掲示板トピック:。アニメーションについてプログラムコードを張り付けるときはcodeと/codeのタグで囲むことがこの掲示板のルールになっています。いう場所を利用するなら最低限ルールを守るようにお願いします。ついでに人にコードを見せるときはインデントをシッカリして変数の説明などコメントをつけたりなど、可能な限り見やすいコードにすることをオススメしますよ。こちらはルールではなくマナーですけどね。読み込みプログラムについて、ですね。今回の場合横スクロールアクションということなので、field[y][x]といった配列を用意してそこに格納するのがいいでしょうね。xとyの値はご自分で都合のいい値に設定してください、当然CSVファイルでもちゃんとxとyの値に収まるように配置して行ってくださいね。その辺りに注意していればあとは草草さんが言っているように龍神録の読み込みプログラムを改変していけば大丈夫です。ゲームプログラミングでフローチャートは書くべきですか?僕もフローチャートというよりは状態遷移図を書きます。softyaさんが張ってる画像みたいな感じですね。今までに似たようなゲームを作ったことがある場合は書かないことの方が多いですが、逆に始めて作るタイプのゲームだと必ずと言っていい程書きます。遷移図だけでなく、大まかな仕様を書き上げていくだけでも、後からごちゃごちゃすることが減るので大分やりやすくなります。ああ、僕のことですね。そのトレースでどこまでを望むのかにもよりますが、一応ある程度はできますよ。ドット絵という特性上、使える色は最大256色という制限があります。256色以内で構成されている絵ならそのまま読み込めるので、トレースできます。256色以上のモノは、ペイントなんかで256色ビットマップに変換してやれば一応読み込めますが、当然画質は落ちます。最悪色合いが意味不明なモノに変化します。2回押したらダッシュというのは星のカービィみたいに左または右を素早く押したらダッシュということでいいのでしょうか。シューティングの移動範囲これはホントに初心者にありがちな感じですね(苦笑)フォーラムルールにも書いてあいますが、具体的にどこが分からないのか自分はどういう方法で実装しようとしてどこで躓いたのかなどなど、質問の内容を具体的にしてくれた方がこちらとしてもアドバイスしやすいです。今回の場合でも移動制御の部分で躓いたのか、コードを分割するところで躓いたのか全く分かりません。制御に関しては単純に自機の座標を随時チェックして、決められた範囲外に出ないようにしてやればいいと思いますこちらなども参考になると思います。fgetcとかで1文字ずつ読み込んでいき、改行文字だったら何もしない・・・みたいな方法のほうが楽なのではないかなぁ・・・と思うのですがいかがでしょうか?僕もそのやり方の方がいいと思います(というか僕ならそうします)改造する時も融通が効きそうですしねでも、そのやり方は初心者には少々難しいと思います。C言語の基礎と言っても、ファイル操作関数についてそこまで詳しく習うとは思えませんし(現にウチの学校でもそうでした)まぁ、授業でどこまで教えるかなんてその学校によってまちまちでしょうし理解できるなら少しでも利便性のある仕様にした方がいいのかも、ですね。この部分が問題かと思われます。東方のようなスペカ表示についてう~ん...。boss.back_knd[boss.knd]==1ならばスペルカードのエフェクトを表示させる、といった具合ですね。effect.cpp内のcalc_effect関数にエフェクト本体の仕様を書くとあとで分かりやすいと思います。プレイヤーの構造体にweponという変数を持たせます。これがそのまま武器の種類に対応している訳です、例えば0ならホーミング弾、1ならレーザーといった具合ですね。種類(上記のweponの値をそのまま代入)という情報を持たせます。後は弾を登録するときに、weponの値に応じた情報(弾速や攻撃力など)を持たせてやります。その次にステージの設定データを読み込む処理を呼び出します。龍神録の場合main.cppにあるメインループ関数、その中にあるcase99の処理がそれにあたります。いう処理をしてやればいいでしょう。【雑談?】リファクタリングのコツは?急ぐので今回返信は短めで失礼します。作ったクラスが、標準ライブラリやそれに準ずるものに適応可能ならば、そのように書き換えることがあります。して次から使いまわせるようにすることで開発がスムーズに進む。それがリファクタリングですね~。標準ライブラリ対応ならば、殆どの開発環境で使えますものね。私の場合は手を加える可能性の多いものはソースコードのままのライブラリ。【雑談?】リファクタリングのコツは?>>ISLeさんふむふむ、つまり自分に一番合った形を取るのが一番いいということなのですね。これを機にスタティックライブラリについて勉強しようかとも考えたのですが、ソースファイルにまとめた方が楽チンな気もしてきました・・・w少なくともライブラリを作るためにビルドする必要はないですしねwやはりプログラマーとしての大先輩のお言葉は参考になりますね。ありがとうございます。同じプラットフォームや同じジャンルのゲームをいくつか作ったら、共通するコードはどんどん汎用化して使い回すようにします。いわゆる構造化とかモジュール化とかいうものです。その他のパーツの中で使い回しが出来そうなものに手入れをして残しておく、ということですね。具体的なやり方を聞くと参考になりますね、経験が豊かなお方のお話だとなおさら。ミシャグジ様このリンク先なんて今回の問題にお誂え向きかとhttp://dixq.net/rp/16.html蛇足的な補足をするならミシャグジ様は所謂「交差弾」というヤツで円形を保ったまま外に広がりながら、弾と弾が交差しているのが分かります。そのため弾を円形に撃ったあとは正方向に緩やかに角度を変えるものと、逆方向に緩やかに角度を変えるものを交互に配置している訳ですねもっともこの場合、弾に加速度の情報を持たせている訳ではなく弾幕の操作関数の方で変化させているのですけどね。今まで作ったことのない仕様を作る時は、まず設計書通りに動く事を最優先してしまうので、どうしても分かりにくいコードになってしまいます(一応コメントは逐一残してますけど)。GetRand(4)+1;}0~4までの数値を取得し、それに+1することで1~5の値を得ることが出来ます。この方法を使った場合x[1]=2x[2]=1x[3]=5x[4]=2x[5]=3のように、同じ数値が出てくることもあります。同じ数値が配置されると困る場合は、取得した数値をチェックし2度取得しないようにする必要があるでしょうね。【雑談】モ・・・モチベーションが・・・>>MoNoQLoREATORさん6本って・・・wでも確かに僕もこの次に作りたいモノは決まってますし、それに少しずつ手をつけるのもいいかも、ですね。みなさんありがとうございました。スレ立てる度にお言葉をもらってますね、恐縮です。日記はいつか自サイトを持った時に、制作方向的なモノをやってみようと思っていましたが。今はまだないですね・・・。ニコ動とかもっとムリ・・・。誰かに報告するというのは非常にアリな気がしてきましたね。僕も他の趣味に打ち込んでモチベーションアップを図るのはよくやってましたが、今回は効果が薄かったんですよね。組むなら相手を選べということですね。課題でもないのにゲームを作ろうという物好きがいませんし、そもそもクラス内にDXライブラリを扱える人がいませんしね。あっ、でもネット上の知り合いを当たってみるのはありですね。プログラム上の文字列の改行文字には'¥n'が割り振られています。できればこれを完成させたあと、もう一つ作りたいのですがそれも危なくなってきました。ちなみに僕は絵を描いたり、他の人の作品を見て刺激を受けようとします。なっているからでしょうね。1)と直せばとりあえず描画されると思います。ついでに言うなら描画位置がプレイヤーの座標になっているので、永遠にプレイヤーにひっついて来る仕様になってる気もします。3つが必要だと思われます。最低限必要でしょうね。これらは構造体かクラスで管理することになるでしょうね。ポーズ画面を入れるにはSTGのメインループ中にある、キー入力を取得する処理で、ポーズ画面に対応するキーの状態を取得しポーズキーの入力があった場合に処理をメインループからポーズ画面に移行させるのがベターでしょうね。PCゲームの場合ESCキーがポーズに対応していることが多い気がしますESCが押されたらポーズ画面に移行し、もう一度押されたらポーズを解除してメインループに戻る。これだけ作れば一応役割は果たせるかと。memcpy関数についてまずはスレ立てした後で色々と立て込んでしまい、思ったより返信が遅れてしまって申し訳ないです。処理速度でいえば環境によります。最適化によって、memcpy(for文)が高速なコードが生成されることも、はたまた全く同一のコードが生成されることもあります。ちなみにa5uaさんのコードで試してみたところ、僕の環境ではmemcpyの方がやや早かったです。コピーさせる必要があるとします。ホントにC言語の入門者が最初に習うようなこと”だけ”を一通り学んだ段階でDXライブラリとお付き合い(笑)を始めました。その後は使いながら勉強していった、dicさん流に言うなら実践派に当てはまる訳ですね。input_phyで移動データを代入というより登録と言った方が正しいと思いますが、意味としてはほぼ同じなのでこちらも正解かと。input_phy_pos関数はmove_boss_pos関数に渡した値を処理した上で呼び出されていました。実際にボスの移動を登録している部分かと思われます。その方向に今いる座標と目標の座標との距離の分だけtカウント掛けて移動させてやればいいと思います。龍神録プログラムをゲームとして完成させたいのですが・・・main.cppのどこらへんにメニューの関数を入れればよいのでしょうか。タイトルメニューでも背景画像等を使用すると思いますので、メインループの中のcase10辺りを適当に使えばいいかと思います。感じでいいと思います。クラスのメンバ変数などを適切に使い分けたり画像などの外部データを使用しているのなら、それらに手を加えたほうがメモリを押さえられたりします。角度を絞っての当たり判定ができませんなんだか元も子もないこと言ってるような気もしますが特定の角度だけなんて考えるとややこしくなるので敵の正面にバリアのようなものを置いて(実際に画像を描画するかどうかはさておき)そのバリアに自分の弾が当たったら弾は消滅する、という仕様にすれば結果として同じようになると思います。この方法なら的に当たった時の角度なんてややこしい計算をしなくても、ただ単に弾とバリアの判定をすればいいだけですしね。著作権について質問ですsoftyaさん、SLeさんご回答ありがとうございます。お話やリンク先も大変参考になりました。肝心の確認云々のお話ですが詳しくは言えませんが、改めて細部まで確認したところ質問の前提が間違っていましたともあれ問題は一応解決したことを報告しておきます。ご協力ありがとうございました。そのゲーム自体は僕のオリジナルであり、登場するキャラクターや設定も独自のモノです。そのゲームに他のゲームのキャラクターを1人、所謂「ゲストキャラクター」として登場させようと思っています。さしあたっては原作者の許可を取った方がいいのかと思い、今回のケースについてまずは著作権についてネットで色々調べてみたのです。構造体型配列について質問です上手くいったのはいいですが、返信が遅れてしまい申し訳ないです。そんな訳で上手く仕様を作ることができましたboxさん、a5uaさん、たかぎさん、どうもありがとうございました。懇切丁寧に解説して下さったa5uaさん、本当にありがとうございます。600構造体型配列について質問です構造体の中で宣言した構造体型配列のポインタを引数として関数に渡し、そこからデータを参照して各処理を行う、という仕様を作ろうとしていますが上手くいきません。僕の未熟さ故に意味を取り違えてしまって申し訳ないです。チーフがまとめて要求することで余計な混乱を防ぐ訳ですね、納得です。確かにあまり制約をつけ過ぎても他のプログラマーのみんなもやりづらいでしょうし、僕自身も必要以上に負荷が増えそうですしね。もとからそのつもりでしたが、最低限の仕様を決めたら後は各々に任せるのが良さそうですね。先生から聞きましたがもう体験しないと想像できない喰程に大変なそうですしね。肝に銘じておきます、ありがとうございました。言う意味でしたか、ご指摘ありがとうございます。【雑談】チーフプログラマー、気をつけることは?>softyaさんなんだかこうしてたまにスレ立てする度に丁寧に教えて頂いている気がします。いつもありがとうございます言われてみれば1人で作る時は気ままに作業できましたが、チームで作るならバージョン管理もしっかりしておかないとバグや不具合の元ですよね認識を改めないと・・・constも使うとの事ですが、僕はいつも定数を宣言するときには#defineを使っているのですがconstを使った方がいいのでしょうか?それとも何かしらの基準で使い分けた方がいいのでしょうか?せっかくなので教えて頂けると嬉しいです。【雑談】チーフプログラマー、気をつけることは?それぞれの仕様を作るのに必要な時間を考えて、作業ごとに必要な時間を割り振って作業ごとの〆切りを決めて守らせるようにする、というのも必要ですね。考えれば考える程色々出てくるような・・・。メンバーは全部で8名、プログラマーが5名(内1名がチームリーダー)とデザイナーが3名。みんなやる気はあるのでプライベートの時間もそれなりに削ってやるつもりです。そこまで出来たらチームメイトと自分がそれぞれ担当する箇所を決めて指示を出す、と言ったところでしょうか。それぞれ書けばいいと思います。ステージ3・4・16・20は既に指摘されていましたが、さらに増えるとは・・・。似たようなゲームは何度か見たことがありましたが、エディットモードがあるのは見たことないなぁ、と思って作りました。DXライブラリの仕様についてつまるところ、そのゲームがゲームとして成り立つために用意されている素材(画像・BGM・SEなど)それらをメモリに格納して動かすために最低でも32MBが必要と言うことです。メモリが足りなければ無論プログラムは正常に作動しませんが、いまどきのPCなら32MB程度ならそこまで心配することもないと思いますが・・・。fopen()関数は(今回の場合)「読み込み用としてファイルを開いた」という認識で間違いはないと思います。上から順番に読み込んでいくので今回の場合一番下まで、つまり最初から最後まで読み込む必要があると思います。読み込んだ情報のなかから必要なモノだけを選んで然るべき形で保存し、残りは捨てる。することでXキーを押している間key_xの値は増え続け、キーを放すと0に戻ります。こんな質問するなって言われるかもしれませんが・・・ダウンロードが正常に行われていなかった、と考えるのが妥当かと思われますがとりあえずプログラム名で検索を掛けてみるといいかも知れませんね。検索を掛けてみて、ちゃんとPC上に存在するかどうか確認してみるといいですよ。それでも見つからなければもう一度改めてダウンロードしてみるのが賢明かと。3番に右に歩く画像がそれぞれ登録されているのですつまり上のキー入力があった場合は0番の配列の画像、左のキー入力があった場合は1番の配列の画像を順番に表示するとプログラミングされている訳ですね(多分)Volvoxさんの場合も、画像に合わせてプログラムを変えるかプログラムに合わせて画像を変えるかすれば上手くいくと思いますよ。配列の初期化中にif文やelse文等を入れるとエラーが出るのは当然ですね。詳細なプログラムソースを読んでいないので推測でしか答えられませんがif(bom.flag==1){ch.bom--;ここが原因ではないでしょうか?この場合bom.flagが1であり続ける場合、毎回ch.bomの値が減算されてしまいます結果的に一度目のボムの処理が終わるころにはch.bomの値がマイナスになってしまいif(ch.bom>0)の条件を満たすことが出来なくなっていると思われます。ch.bomの値を減算するタイミングを適正なものに変えれば上手く処理できると思いますよ。【雑談】効率を上げるには?やはりアレですね。僕のような若輩者と違って考えるスケールが大きい(?)ですね。それにしても自分用のライブラリというのは、確かに完成できれば効率は格段に上がりますね。C#というとXNAでXbox360なんでしょうか?はい、その通りです。今の段階ではゲーム制作はもっぱらPCゲーム専門ですが上の学年になるとXbox360でプレイするゲーム制作を教えてくれるそうです。してゲーム会社に就職して即戦力になれるような人を育てていくそうです。657【雑談】効率を上げるには?ゲームプログラミングと言うものはどうしても膨大な時間が掛ってしまうものですよね。学生でもある僕はまだまだ遊びたい盛りですそれ以上に1人暮らしなのでやらなければならないこともたくさん・・・。そんな訳でプログラミングの効率をあげる方法が何かないでしょうか?モチベーションや集中力を上げるとか、タイピングの速度を上げると言うのは当たり前ですが、もう少しお手軽にできるものを求めています。2008)のテクニックや豆知識でもいいです「私は普段こんなことやってるよ」というのを何か教えてもらえるとうれしいです。ちなみに2年生になるとC#も教えてくれるそうです。的な事をよく言われます。その2またやってしまった・・・”解決”です。シーンの切り替え、やはりここで開放と読み込みを行うのがベターなのですね。ここで時間が掛りすぎたらプレイヤーにストレスを与えてしまいますし、「必要な分だけ開放して格納」が一番なのですね。完全に余談ですが、FF13なんかは、ほぼ一本道であったため先のシーンをバックで読み込んで、ロード時間を出来るだけ短縮させているらしいです。これはマルチスレッドを使えば出来そうですが、私はまだやったことがありません。下手するとかえって重たくなりそうですしね、上手にそれをやるには相応の知識とテクニックが要りそうですね。ゲーム中で必要な画像やBGMを格納して描画及び再生、そして不要なものは開放しますよね。読み込み過ぎるとメモリが圧迫されてしまうと思います。逆にあまり頻繁に格納と開放を繰り返しているとプレイ中に「重さ」として感じてしまうかと思います。申し訳ないですがout.cppのコードも載せてもらえないでしょうか?可能性があるならばチェックして見る価値はあると思いますので。敵の最初の消滅エフェクトによる一瞬の停止について例えば、プログラムを実行するときに他に余計なモノ(WMPとかIEとかですね)を無数に起動していたら、そういうことも起こる可能性はあります。VistaともなるとCPUも相当なものなので、ちょっとやそっとではそんなことが起こるとは思えません。あなたが作成したプログラムになんらかの原因があると見てまず間違いないと思います。問題と思われるプログラムコードをここに書いてもらえれば他のみなさんも助言して下さると思いますしまたは龍神録の20章辺りのコードと見比べて間違っている部分を探すという手もありますよ。画像を特定の座標に移動させたいん~、ちょっとプログラムコードも質問内容も漠然とし過ぎていてアレですがこのこのコードの場合だと、xとyを更新した後に描画する処理が無いのでxとyの値を更新しただけで画像の表示位置は変わらないと思います。ミクプラは自由にリンクできます。