検索結果 525 件
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ポインタを理解する
- 返信数: 100
- 閲覧数: 41945
Re: ポインタを理解する
>>Ryo様 返信ありがとうございます。 こんなイメージでも int a; // 家a int *p; // 住所録p(新品) p = &a; // 住所録pに、家aの"住所"を書き込む a = 310; // 家aにサトーさんが住む *p= 310; // 住所録pにかかれた住所(=家a)にサトーさんが住む p = 123; // 住所録pにヒフミさんを住まわせようとして怒られる p = (int*)123; // 住所録pに"1-2-3"という"住所"を書き込む //関数引き渡し (Func(char*)) char a; // 家aを建てる Func( &a ); // aの住所をFun...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ポインタを理解する
- 返信数: 100
- 閲覧数: 41945
Re: ポインタを理解する
>>softya様
返信ありがとうございます。
今はもう少しポインタを勉強したいと思います。
返信ありがとうございます。
自分としては、もうすこし勉強して、どうしても理解できないようならばパターンで覚えようと考えております。softya(ソフト屋) さんが書きました:今後どの勉強方法で行くのかは、3D_3Dさんに決めていただきたいと思います。
なので、とりあえず3D_3Dさんの意見を待ちたいです。
【補足】
私はCASL2アセンブラで根本から理解するという道も検討しておりました。
遠回りなんですけどね。
今はもう少しポインタを勉強したいと思います。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ポインタを理解する
- 返信数: 100
- 閲覧数: 41945
Re: ポインタを理解する
すいません、部活で返信ができませんでした。 >>へにっくす様 返信ありがとうございます。 うーん…ここまで白熱するとは思いませんでした で、何だか出尽くした雰囲気が出てるので、前のトピック(http://dixq.net/forum/viewtopic.php?f=3&t=13591)の、 Player_Initで、&playerならokだがplayer_t *player;にしたときplayerだとうまくいかない理由の答えをちらっと述べます。 まずポインタの概念は、入れる箱を用意するという感じ。 int a = 0; int型の変数でこれは実体を示している int *p = NULL; in...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ポインタを理解する
- 返信数: 100
- 閲覧数: 41945
Re: ポインタを理解する
>>Lawliet様 返信ありがとうございます。 いろいろな方たちが説明してくれていますが それぞれに異なった方針を持っている人もいますので、ごちゃごちゃしてしまう場合は 違う方の説明を聞くときはほかの方の説明を半分ぐらい忘れた状態で聞くといいと思います。 (わからないことが残っても一旦理解したらそのあと質問すればいいので) 文法の面からひとこと言わせてもらいます。 「宣言の時」と「そうじゃない時」を分けて考えるとわかりやすいかもしれません //////////////////////////////// //宣言の時 int *p; //宣言の時は'*'を付ける //////////////...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ポインタを理解する
- 返信数: 100
- 閲覧数: 41945
Re: ポインタを理解する
>>softya様 返信ありがとうございます。 分かった気がするが一番危険なので気をつけてくださいね。 >a=6 とするとaの領域に6が代入されますが、 b= &a は bの領域にaのアドレス( 0x0047fd08 )が代入されるとは b = 0x0047fd08 と言う意味ですか? はい。代入ですから。これだけ見れば単純ですよ。 【補足】 ポインタ値を代入する時はとても単純です。 これを参照したりする時にいろんな機能・効果が出てきます。 ただ、ここで理解すべきことはポインタ変数に入っているはポインタ値と言うただの数値であると言う一点です。 つまり、普通の変数とほぼ同じで、入っている値の違い...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ポインタを理解する
- 返信数: 100
- 閲覧数: 41945
Re: ポインタを理解する
>>珈琲様 返信ありがとうございます。 横からで度々失礼しますが、 勝手ですが最初はショートカットという認識でいいんじゃないでしょうか http://gyazo.com/2b94d381e85ae8d16ff45cd6e85c751d.png windowsのデスクトップに並ぶショートカットファイルのイメージです。 ショートカットファイルはどんな種類でも、ファイルパスを指すだけなので、ファイル自体の容量は非常に少ないです。 ファイルパスを設定すればその先に設置してあるファイルにアクセスできるわけです。 int File;//ファイル int* Shortcut = &File;//ファイルパス...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ポインタを理解する
- 返信数: 100
- 閲覧数: 41945
Re: ポインタを理解する
>>かずま様 返信ありがとうございます。 理解していない人に図を書いてくださいというのは、無茶なことで、 理解している人が図を描いて示すほうがずっと教育的なことだと、 私は思います。これは、課題の丸投げに解答を示すのとは異なります。 #include <stdio.h> int main(void) { int a; int *b; a = 6; printf(" a = %d\n", a); printf("&a = %p\n", &a); b = &a; printf(" b = %p\n", b); printf("&b = %p\n", &b); printf("*b = %d\n",...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ポインタを理解する
- 返信数: 100
- 閲覧数: 41945
Re: ポインタを理解する
>>softya様
返信ありがとうございます。
また、デバッガで見落としも有るかも知れないので明日確認してみます。(10:00以降はPC使用禁止ですので)
返信ありがとうございます。
書き換えてみました。これでどうですか?softya(ソフト屋) さんが書きました:2-3.png の内容の書き換えて矢印を書き加えるだけで4-5は完成します。
なので、必要なのはaとbの値を書き換えるだけなのです。
難しく考え過ぎと思えます。
あとデバッガでよく見てなかったというのも言えるかもしれません。
また、デバッガで見落としも有るかも知れないので明日確認してみます。(10:00以降はPC使用禁止ですので)
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ポインタを理解する
- 返信数: 100
- 閲覧数: 41945
Re: ポインタを理解する
>>珈琲様 返信ありがとうございます。 私はMMOのオンラインゲームをやっていたので、「スキルスロットみたいなものだ」と言われて納得できました。(同時にポリモーフィズムも) スキルウィンドウにスキルの実体があって、ショートカットキー(スキルスロット)にセットすると、そこから呼び出せる この一連の流れはそのまま int abc; //スキルの実体の宣言 int* s; //ショートカットキーの宣言 s=&abc; //ショートカットキーに設定 *s //ショートカット呼び出し まぁポインタのこの手の喩え話はいくらでもあるので参考にならないかもしれませんが・・・ MMOオンラ...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ポインタを理解する
- 返信数: 100
- 閲覧数: 41945
Re: ポインタを理解する
ただいま戻りました。
画像を貼っておきますので、間違えてる部分などを教えてください。
画像を貼っておきますので、間違えてる部分などを教えてください。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ポインタを理解する
- 返信数: 100
- 閲覧数: 41945
Re: ポインタを理解する
>>ISLe様 返信ありがとうございます。 ポインタがどのように使うものでどのように便利なのかというのは、ときにポインタそのものの理解の邪魔になると思います。 ポインタそのものを理解しなくても、使用する場面ごとのパターンを覚えるという使い方をしているひとも数多存在します。 3D_3Dさんが以前書かれた日記 と同じ展開にならないとよいですが。 >ポインタがどのように使うものでどのように便利なのかというのは、ときにポインタそのものの理解の邪魔になると思います。 自分はいつもこれを考えています。もしかして、自分がポインタを理解できない理由はこれを考えているからでしょうかね。 >ポインタそのものを理解...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ポインタを理解する
- 返信数: 100
- 閲覧数: 41945
Re: ポインタを理解する
>>softya様
返信ありがとうございます。
ただ、投稿は午後になります。少し用事がありまして。
返信ありがとうございます。
わかりました。画像にはそのように書きます。softya(ソフト屋) さんが書きました:書き添えます。
ISLeさんの言われるとおりなので、図を書く時は仮想アドレスは0x1000,0x2000とかグンと離れた値を書いておいてください。
これならサイズを気にしなくて良いですから。
と言うことで改訂版。
int* b; // メモリ上にint*型の領域を確保し、その領域の名前をbとする。この変数はポインタ型である。
って感じでしょうか。
ただ、投稿は午後になります。少し用事がありまして。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ポインタを理解する
- 返信数: 100
- 閲覧数: 41945
Re: ポインタを理解する
>>ISLe様 返信ありがとうございます。 どこぞの古いハード絡みの経験だけに沿って書かれた解説に毒されていますね。 処理系依存ですしnバイト分の領域なんていちいち型から実際のサイズに変換する必要ないですよ。 領域の大きさは宣言された型の値を格納するのに十分な大きさです。 ごく当たり前のことなのでわざわざ書く必要もないと思います。 int a; int* b; 両方とも宣言された型の値を格納する記憶域を持つ変数を宣言していて、変数aも変数bも値の読み書きの動作自体に違いはありません。 重要なのは値が持つ型の違いだけです。 自分が参考にした資料は古かったようです。 バイト数は書く必要がない!ので...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ポインタを理解する
- 返信数: 100
- 閲覧数: 41945
Re: ポインタを理解する
>>KORYUOH様
返信ありがとうございます。
ポインタが理解出来るように頑張ります
返信ありがとうございます。
この考え方は今まで聞いたことがなかったですが、わかりやすいです。KORYUOH さんが書きました:概念でよく言われるのが名簿の関係です
宣言と名簿
int a; ○○さん
int* b; xx番の人
という考え方です。
aさんとかbさんとかだと名前を知っていないと呼び出せませんが、
10番の人、26番の人と番号であれば名前を知らなくても呼び出せますね。
ポインタが理解出来るように頑張ります
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ポインタを理解する
- 返信数: 100
- 閲覧数: 41945
Re: ポインタを理解する
>>softya様 返信ありがとうございます。 まず、 int* b; // メモリ上に4バイト分の領域を確保し、領域の名前をbとする。この変数はポインタ型である。 って感じですかね。 それぞれ図を書いてみてはどうでしょうか? 型 変数名 仮のアドレス(0x1000など) 値 を記載してください。 ① 2行目、3行目の状態。値は不定と書いてください。 ② 4行目、5行目の状態。出来ればbとaの関係も矢印でお願いします。 【補足】 ちなみにポインタが4バイトかは環境依存です。 2バイトや8バイトもあります。64bitOSだと8バイトですね。 わかりました。ペイントで頑張って描きます。 ポインタは...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>softya様
返信ありがとうございます。
また、ポインタのトピックが終わったら、ISLe様の学習のトピックを建てたいとおもいます。
二兎追う者は一兎も得ず、ですから。
返信ありがとうございます。
そうですね。自分はプログラミングの応用のゲーム作りよりも基礎のポインタを優先した方がいいと思いまして、ポインタのトピックを立てました。softya(ソフト屋) さんが書きました:ISLeさんの学習とかは、ポインタとは別の新トピックで続けたほうが良いと思います。
まぁ、とりあえずはポインタですね。
また、ポインタのトピックが終わったら、ISLe様の学習のトピックを建てたいとおもいます。
二兎追う者は一兎も得ず、ですから。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ポインタを理解する
- 返信数: 100
- 閲覧数: 41945
ポインタを理解する
どうも、3Dです。 今回は、前回のトピック( http://dixq.net/forum/viewtopic.php?f=3&t=13591 )で出てきたポインタについての事です。 自分はポインタが苦手で、C言語を勉強し始めて既に1年が経過しましたが未だに理解できません。 // ポインタの自分の理解度 int a; // メモリ上に4バイト分の領域を確保して、領域の名前をaとする。(ですよね?) int* b; // メモリ上に4バイト分の領域を確保し、そこにアクセスするための名前をbとする(この辺から間違えそう… a=4; // メモリ上にaという名前で確保された領域に4を代入する(ですよね...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
このトピックは、シューティングゲームのオブジェクトは何かから始まっていました。しかし、タイトルから乖離してしまい、このままでは収拾がつかないので、一旦解決とします。
シューティングゲームのオブジェクトに関してはゲームを作りながら足りないものを追加して行くようにして勉強しようと思います。
長くなりましたが、このトピックに返信して下さった皆様、本当にありがとうございました。
シューティングゲームのオブジェクトに関してはゲームを作りながら足りないものを追加して行くようにして勉強しようと思います。
長くなりましたが、このトピックに返信して下さった皆様、本当にありがとうございました。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
すいません、ちょっと外出していました。
>>softya様、みけCAT様
返信ありがとうございます。
また、別トピックを立てますのでそちらに回答をお願いします。
>>softya様、みけCAT様
返信ありがとうございます。
アドレスが入ると言うのはアドレスの値ですか?みけCAT さんが書きました:違いそうですね。3D_3D さんが書きました:d=&a;
とすると、dはaの領域になる
でいいですか?
dにはaの領域の場所(アドレス)が入ります。
また、別トピックを立てますのでそちらに回答をお願いします。
わかりました。別トピックをたてます。softya(ソフト屋) さんが書きました:ならないですよ。int *d;も変数として存在します。ISLeさんが重要ポイントと言っていた所が伝わっていない事が分かりました。
でこの話題分けませんか?
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
すいません、急ぎで投稿したので途中になってしまいました。
-------------続き-------------
int* d;とすると、dはその領域にアクセスするための変数で、
d=&a;
とすると、dはaの領域になる
でいいですか?
-------------続き-------------
int* d;とすると、dはその領域にアクセスするための変数で、
d=&a;
とすると、dはaの領域になる
でいいですか?
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
自分なりにポインタの図を書いてみました
int a,b,c[6];という変数があって、メモリにどのような感じで割り当てられているか考えてみました。
たとえば、 a = 6; としたら、「aという領域に6が代入される」であってますか?
int a,b,c[6];という変数があって、メモリにどのような感じで割り当てられているか考えてみました。
たとえば、 a = 6; としたら、「aという領域に6が代入される」であってますか?
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>みけCAT様、softya様 返信ありがとうございます。 みけCAT様への返信に画像を添付しました。図はあのように書いてみましたが間違えているところなどがありましたらお指摘お願いします。 ごめんなさい、私の読解力が足りないようです。 図に描かれていることの説明をお願いできますか? この図には、不思議な要素が満載ですね。 つまり、そのぐらいに理解が曖昧だと言うことなんでしょう。 それが分かっただけでも図を書いた意味があったことになります。 私も説明をお願いします。 説明することは間違いの気づきになりやすいので、非常に意味があります。 同じような質問なので、まとめて回答しますがよろしいですか?...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>ISLe様
返信ありがとうございます。
返信ありがとうございます。
途中で「あれ?」となりました。やはり、ポインタは難しいです。なんとなくでは使ってはいけないですね。もう少し頑張って理解するように勉強します。ISLe さんが書きました:3D_3Dさんが以前書かれた日記にアドレス演算子(&)とポインタ型変数の関係についてコメントしたのですが、いま読み返して意味が分かりますか?
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>softya様
返信ありがとうございます。
返信ありがとうございます。
みけCAT様への返信に画像を添付しました。図はあのように書いてみましたが間違えているところなどがありましたらお指摘お願いします。softya(ソフト屋) さんが書きました:そこだけじゃなくポインタ変数との関係とか引数との関係も書かないと意味ないですね。
今回の理解するのは関数間のデータの受け渡しですので。仮想の変数のアドレスも0x1000とかも書いてもらったほうが良いでしょう。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>みけCAT様
返信ありがとうございます。
自分の想像力のなさに呆れています...
返信ありがとうございます。
こうですか?みけCAT さんが書きました:player_tの図しかないですね。
関数の引数として渡しているものも描いてください。
自分の想像力のなさに呆れています...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>softya様
返信ありがとうございます。
図の中のint~やdouble~の値を参照渡しで直接書き換えてると考えました。
返信ありがとうございます。
いままで意識してメモリの図を書いたことがないのでいろいろ間違っているかもしれませんが即席で書いてみました。softya(ソフト屋) さんが書きました:そこで思考停止せずに、イメージできるように図を書いてみてください。
たぶん、その辺りで何となくで済ましているのがポインタが理解できない原因な気がします。
図をみんなに見せれば問題点を指摘してくれます。
図の中のint~やdouble~の値を参照渡しで直接書き換えてると考えました。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>へにっくす様
返信ありがとうございます。
返信ありがとうございます。
よくわからないですが、&をつけると参照渡しになって変数の値を書きかえるから、ですか?へにっくす さんが書きました:よいですよ3D_3D さんが書きました:もう少し考えてから返信してもいいでしょうか?
※10分未満でくるとは思わなかったからあのようなレスになったので(^^;
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
このコードの player_pool_usedはなんですか?ただのカウンタですか? 簡単にいえばカウンタです。player_poolの領域をどこまで使ったかを表しています。 なぜ1000を超えたらNULLを返すんですか? 別に1000でなくても、PLAYER_POOL_MAX(返せるplayer_tの数の最大値)を10000にしても100000にしても もっと多くしても構いません。 player_pool_usedがPLAYER_POOL_MAX以上になったら(超えたらとは書いていません)、もうplayer_poolの領域を 全て使ってしまい、返せる領域が残っていないということなので、NUL...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>softya様
返信ありがとうございます。
返信ありがとうございます。
確認したら書いてありました。みけCATさんの「メモリを確保すれば、アクセス違反にならない実装ができるでしょう。」から判断しましたsoftya(ソフト屋) さんが書きました:動的確保はしなくても良いですよ~。
このトピックのだいぶ前に書いたんで見なおしてみてください。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>みけCAT様 返信ありがとうございます。 こんな方法もあります。 #define PLAYER_POOL_MAX 1000 player_t* get_player(void) { static int player_pool_used=0; static player_t player_pool[PLAYER_POOL_MAX]; if(player_pool_used>=PLAYER_POOL_MAX)return NULL; return &player_pool[player_pool_used++]; } /* ここはどこかの関数内 */ player_t *player; pl...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>へにっくす様
返信ありがとうございます。
もう少し考えてから返信してもいいでしょうか?
返信ありがとうございます。
自分のポインタの理解があやふやなので訳のわからない回答してしまいました。へにっくす さんが書きました:アドレス値と先頭アドレス値のどこが違うのですか?(10分もたたないうちにレスがきたってことは、何となくで答えているよね^^;)3D_3D さんが書きました:アドレス値ではなく、先頭アドレスを返すからですか?
&をつけたならばどちらにしろその変数の先頭アドレスですよ。
リンク先のページを参照して、もう一度回答願います。
もう少し考えてから返信してもいいでしょうか?
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>みけCAT様 返信ありがとうございます。 ごめんなさい、訂正します。 player_t *player; Player_Init( player ); しかコードを書いていないのでしたら、前のコードと同じにはならないはずです。 なぜならplayerが指しているアドレスは不定だからです。 不定のアドレスをPlayer_Initに渡してそのデータをいじろうとすれば、アクセス違反になる可能性が高いでしょう。 この間違い、Javaでよくやりますね。 Player_Init関数が2通りのコードで同じという前提ならこうなりますが、これだけの情報ではこうは言い切れませんでした。 Player_Init関...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>へにっくす様
返信ありがとうございます。
アドレス値ではなく、先頭アドレスを返すからですか?
返信ありがとうございます。
&はたしか先頭アドレスを示しますよね。へにっくす さんが書きました:C言語はすべて値渡し※なので、その値を変更しても戻ることはありません。ではなぜ&をつけるとうまくいくのか考えてみてください。オフトピック※参照渡しは、アドレス値を渡していると考えられるため。
C言語での値渡し(Call by Value)と参照渡し(Call by Reference)
アドレス値ではなく、先頭アドレスを返すからですか?
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>へにっくす様 返信ありがとうございます。 ・どのアドレスに割り振られるかわからないうちに初期化されるから、かなと思いました。 違います。 ヒントは、関数の受け渡し方です。 ヒントありがとうございます。ポインタではなく関数なんですね。また考えて見ます。 そういえば、player_t player;にしてPlayer_Init( &player );としたときはうまく行きましたが、 player_t *player;のときのPlayer_Init( player );は失敗します。 では、 player_t *player; int test; &test = player; とかしたらどうな...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>ISLe様 返信ありがとうございます。 オブジェクト個別にカプセル化を追求するのは勉強としては良いのかもしれないけれど、最終的にゲームプログラムとしてインターフェースを統一することを考慮しておかなくても良いのでしょうかね。 オブジェクト指向になれるためにSTGを作り始めたので全く考慮はして無いです。本格的に作るわけではないので意識するつもりはないと考えました。 『ゲームの~』というスレタイとの乖離を感じます。 そうですね。シューティングゲームのオブジェクトは何?から始まってシューティングを作り始めてしまったので今更別トピックにしようと思いました。player部の隠蔽が終われば"オブジェクト...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>softya様
返信ありがとうございます。
返信ありがとうございます。
わかりました。プログラミング力をつけるために考えて見ます。softya(ソフト屋) さんが書きました:私としては、このままで失敗してダメな理由を考えて欲しいです。
調べるのは失敗して考えたあとでお願いします。出来れば調べない方が良いかもしれません。
オフトピック
思いついたのは
・どのアドレスに割り振られるかわからないうちに初期化されるから、かなと思いました。
・どのアドレスに割り振られるかわからないうちに初期化されるから、かなと思いました。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>softya様 返信ありがとうございます。 > と書いてしまっていいのでしょうか? Player_Init( player ); これだとポインタの更新ができないので、失敗します。 経験のため一度失敗してみたほうが良いと思います。 【補足】失敗して苦労したことは中々忘れないからです。 > また、描写関数にはポインタを渡してもいいのでしょうか? それしか無いですね。 あとplayer構造体に、後々のため画像ハンドルも含めたほうが良いですね。 ポインタの更新ですか?調べながらやってみます。 分かりました。描写関数にポインタを渡します。 また、player_t にimg_hdlという変数を追加し...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>usao様 返信ありがとうございます。 カプセル化の話が既存のものから読み取りにくいのかもしれない(?)ので,簡単な例. //[Player.h] struct Player_t; //前方宣言 Player_t *CreatePlayerInstance(); //新しいPlayer_tインスタンスを生成し,そのインスタンスへのポインタを返す void ReleasePlayerInstance( Player_t *pReleaseTargetInstance ); //指定インスタンスを破棄する void SetPlayerStatusValue( Player_t *pSetTar...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>softya様
返信ありがとうございます。
返信ありがとうございます。
分かりました。ポインタにはstaticは不要ですね。softya(ソフト屋) さんが書きました:staticが必要かどうかはそれだけの情報だと分かりませんが、ポインタ変数であれば不要の可能性が高いです。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>softya様
返信ありがとうございます。
#ch_tはplayer_tに変更しました
返信ありがとうございます。
では、staticをつけてグローバルに player_t *player; とかしたほうがいいですか?softya(ソフト屋) さんが書きました:ポインタであれば引数にできます。ここが多分初心者には難しいと思います。
逆に実体はPlayer.cpp以外で作れないためmainなどで実体宣言は出来なくなります。
#ch_tはplayer_tに変更しました
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>softya様
返信ありがとうございます。
引数に渡さなないほうがいいですよね?
返信ありがとうございます。
だからポインタを使用するのですか!softya(ソフト屋) さんが書きました:> つまり、関数のプロトタイプ宣言みたいなものだと解釈してもよろしいですか?
そういう事です。前方宣言はサイズな不明な構造体となるのでポインタでしか扱えないものとなります。
引数に渡さなないほうがいいですよね?
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>softya様
返信ありがとうございます。
つまり、関数のプロトタイプ宣言みたいなものだと解釈してもよろしいですか?
>私のRPG講座の例で分からないことがあれば聞いてくださいね
優しいお言葉ありがとうございます。理解できるように頑張ります。
返信ありがとうございます。
softya(ソフト屋) さんが書きました:C言語のカプセル化の場合は、構造体の実構造は構造体のメンバを使う関数群があるcppファイルの先頭に記述します。
そうしておいて、前方宣言だけをヘッダファイルに記述します。
struct.hは使いません。私のRPG講座の例もそうなっているはずです。
私のRPG講座の例で分からないことがあれば聞いてくださいね。
つまり、関数のプロトタイプ宣言みたいなものだと解釈してもよろしいですか?
>私のRPG講座の例で分からないことがあれば聞いてくださいね
優しいお言葉ありがとうございます。理解できるように頑張ります。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
では、struct.hのようなファイルを作ってそこに書いたほうがいいでしょうか?softya(ソフト屋) さんが書きました:はい。出来ていないです。
なので私とusaoさんが前方宣言の話をしていました。
前方宣言を上手く使うことで構造体の構造を隠蔽できます。
※ 私のRPG講座が例になります。
他は相互作用がないので、今のところ問題ないです。
ただ、今後相互作用を追加していく時にカプセル化を守れるかが課題です。
カプセル化、オブジェクト化などはやったことがないので四苦八苦しています。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
今日、プログラムを書いていて思ったのですが、player.hに構造体を書いてありますよね。で、player.hをmain.cppでincludeしているので隠蔽できてないのではないでしょうか?
あと、それ以外はちゃんと隠蔽できていますか?
あと、それ以外はちゃんと隠蔽できていますか?
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: 3.7
- 返信数: 2
- 閲覧数: 1426
Re: 3.7
angleという変数に0から360度の角度の乱数を、speedという変数に0.5から2.5までのスピードの乱数を代入していると思います。
情報が少なすぎます。http://dixq.net/board/board.html のフォーラムルールをお読み下さい。
情報が少なすぎます。http://dixq.net/board/board.html のフォーラムルールをお読み下さい。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>usao様 返信ありがとうございます。 >重複する画像リソースなど問題は、画像管理マネージャに管理を一存して画像ファイル名を引数に画像管理マネージャから画像ハンドルを貰う方法があります。と言うか大抵そうします。 こんな感じでしょうか. ImgManager *GetImgManagerInstance(); //画像リソースを一元管理するオブジェクトへのポインタを返す int ObjectInitialize( Object *pObjInstance, const char *ImgFileName ) //←これはさすがに受け取るのだと思う { pObjInstance->ImgHan...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>softya様
返信ありがとうございます。
自分の力で出来そうならそのようにやりますが、今の実力で出来るとは思いません…
しかし、出来るようにプログラムの勉強をします。
返信ありがとうございます。
うーん、難しそうです…softya(ソフト屋) さんが書きました:リソースを自分で管理するのは、利用する全部のリソースを見渡しやすいから(可読性・メンテナンス性)です。
重複する画像リソースなど問題は、画像管理マネージャに管理を一存して画像ファイル名を引数に画像管理マネージャから画像ハンドルを貰う方法があります。と言うか大抵そうします。
自分の力で出来そうならそのようにやりますが、今の実力で出来るとは思いません…
しかし、出来るようにプログラムの勉強をします。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>usao様 返信ありがとうございます。 無名構造体がどうの の話は typedef struct ch_t //←ここに構造体の名前を書くようにしようね { int flag; double x,y; } ch_t; //そうすれば,別のファイルにて前方宣言が使える. //ch_tが定義されているヘッダをincludeしなくても struct ch_t; //このように「ch_tというstructがあるらしいよ」という宣言を書けば…(名前が無いとこれが書けない) ch_t CH; //これは無理だけど ch_t *pCH; //こっちが可能になる. ということです.(ch_tがどんな変数を...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>sofrya様
返信ありがとうございます。
返信ありがとうございます。
なぜリソース確保を外部に委ねることを避けたいのですか?初心者のちょっとした質問です。softya(ソフト屋) さんが書きました:それも方針ですが、Dixqさんと私の方式だとクラス内でハンドルを得てますね。
リソース管理をどうするかの設計の問題なので、どちらが良いとは言えませんが、自身のリソース確保を外部に委ねる気がするので私は外部から受け取るのはちょっと避けたいです。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>usao様 返信ありがとうございます。 うーん,あと,私だったらなるべく各オブジェクトには自身の描画処理を行わせない方針でやるかも. 仮に各オブジェクトに自身の描画を行わせるという方式を取るのだとしても 画像のロードと始末とか まではやらせたくないかなぁ… 各コードがDXLibへ依存することは妥協するとしても 画像ロード(と破棄)はmain等の外側で行って,例えば //hImgにはpCHが示すインスタンスが描画の際に用いる画像のハンドル値を指定する. //この関数は,成功時には0でない値を,エラー時は0を返す. int Player_Init( ch_t *pCH, int hImg ) ...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>softya様
返信ありがとうございます。
また、まだ敵に関する事は何一つやっておりませんが、敵の方が大変そうですね。STGは完成させておきたいので、頑張ります。
返信ありがとうございます。
とりあえず全部隠してみます。softya(ソフト屋) さんが書きました:そういえばそうですね。
player_tは1つしか無いなら外部公開の必然が無いですね。
全部、隠して良いでしょう。
敵の時には公開を考慮する必要有りですけどね。
また、まだ敵に関する事は何一つやっておりませんが、敵の方が大変そうですね。STGは完成させておきたいので、頑張ります。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>usao様 返信ありがとうございます。 typedef struct { int flag; double x,y; } ch_t; これだと,flagやx,yを外部からいじれる→カプセル化 にはなっていない. それと,無名構造体は避けた方がよいです(前方宣言できなくなる). で,ch_t型インスタンスがもし自機1つ分しか作られないのであれば, 背景と同じようにch_t変数の存在を隠ぺいしてしまえば良いのかな. ch_t型を他のもの(例えば敵とか)でも使いまわす予定なら, 「新しいch_t型インスタンスを作成し,そのハンドルを返す」ような関数をPlayer.hにて公開し, その他の,現在c...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>softya様 返信ありがとうございます。 とりあえず、気になったこと ・名前は素直に! FinaじゃなくFinal。一文字節約して読みづらなくなっても意味ないです。 ・Playerの構造体の実構造を外部に公開する必要などありません。構造体の前方宣言でカプセル化できます。 つまり、今はカプセル化出来てないよって事です。 mallocしなくても良いので、実体定義はplayer.cppで行いましょう。 ・ch_tはプレーヤー専用でしょうか? であれば名前に気をつけるべきです。 詳しくありがとうございます。 ・名前はPlayer_~の部分がみんな4文字ですごく気になったのでFinaにしました。修...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
とりあえず、自分なりに書いてみました。カプセル化やオブジェクト化を調べながらやってみました。 main.cpp #include "DxLib.h" #include "key.h" #include "player.h" #include "BackGrd.h" bool ProcessLoop() { if( ProcessMessage() != 0 ) return false; if( ClearDrawScreen() != 0 ) return false; if( GetHitKeyStateAll_2() != 0 ) return false; return true; }...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>softya様 返信ありがとうございます。 クラス図が書けるようになってきたら ゲームの取説からクラス図を作ってみるといい訓練になるかもしれません 実際、私の学校の授業で一回やったので それは中々良さそうですね。選ぶゲーム次第で大変なことにはなりそうですが。 で、分け方ですが。 とりあえずファイルを分けただけだと継承とか出来ないので、オブジェクト化・カプセル化を徹底してください。 構造体とか形から入るより、そちらを徹底した方が良いと思います。 なお、クラスポインタの代わりに構造を見せない構造体ポインタを返すと言う実装はC言語でも比較的楽なのでやってみても良いと思います。 ※ 前方宣言した構...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>KORYUOH様
返信ありがとうございます。
あと、自分はゲームをほとんど持っていませんので、適当なフリーゲームをダウンロードしてみます。
(本当にゲームを持っていません。10年くらい前のポケモンなら持ってるはずですが)
返信ありがとうございます。
クラス図自体書いたことが無いので(1〜2回程度です。)まずはクラス図を書けるように訓練します。KORYUOH さんが書きました:クラス図が書けるようになってきたら
ゲームの取説からクラス図を作ってみるといい訓練になるかもしれません
実際、私の学校の授業で一回やったので
あと、自分はゲームをほとんど持っていませんので、適当なフリーゲームをダウンロードしてみます。
(本当にゲームを持っていません。10年くらい前のポケモンなら持ってるはずですが)
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>softya様
返事ありがとうございます。
リンク先をざっと見させていただきましたが、確かに面倒なことになってますね。取り敢えず、C言語でファイルで分けてやります。
返事ありがとうございます。
C言語はファイルで分けるのですか…てっきり構造体みたいなやつでクラスもどきつくって〜とかすると思いまして質問させていただきました。softya(ソフト屋) さんが書きました:C言語はファイルで分けるのが良いと思います。
いや、もっと面倒なC言語によるオブジェクト指向はありますけどね。
これはC++よりもある意味面倒なので。
「C 言語によるオブジェクト記述法 COOL」 ← 参考
http://www.sage-p.com/process/cool.htm
リンク先をざっと見させていただきましたが、確かに面倒なことになってますね。取り敢えず、C言語でファイルで分けてやります。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>softya様
返信ありがとうございます。
では、C言語でオブジェクト指向プログラミングする場合はどのようにすればいいと思いますか?C++のようにC言語はclassが無いので気になっています。
返信ありがとうございます。
ファイルを分けるのは完全には関係無いのですか。softya(ソフト屋) さんが書きました:対象物の定義が微妙ですが、眼に見えない物も含めてクラスに分けることです。ファイルを分けるのは別の単位の話なのでオブジェクト指向とは完全には関係ないですね。
【補足】
実装上は、管理クラスや制御クラスが必要になる場合もあります。これが設計上と実装上で違うって事ですね。
では、C言語でオブジェクト指向プログラミングする場合はどのようにすればいいと思いますか?C++のようにC言語はclassが無いので気になっています。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>Dixq様
返信ありがとうございます。
いままでオブジェクト指向を全く意識しないでプログラミングしてきたので、とても参考になります。
クラス図もあまり書いたことがないのでオブジェクト指向の理解を深めるとともに設計するように頑張ります。
返信ありがとうございます。
拝見させていただきました。オブジェクトの分け方の参考にさせていただきます。Dixq (管理人) さんが書きました: さて、
オブジェクト指向での設計についてですが、
http://dixq.net/rp/
の下に「龍神録C++版オープンソース化計画は第三回あたりで中断中・・。」ってリンクがあるんで、
参考になるか分かりませんが、参考になればどうぞ。
第二回にクラス図があります。
いままでオブジェクト指向を全く意識しないでプログラミングしてきたので、とても参考になります。
クラス図もあまり書いたことがないのでオブジェクト指向の理解を深めるとともに設計するように頑張ります。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>softya様
返信ありがとうございます。
質問ですが、オブジェクト指向は対象物ごとにcppファイルやclassなどを分けることですよね?
返信ありがとうございます。
訓練をしないとプログラミングは上達しないような気がするのでやります。softya(ソフト屋) さんが書きました:ISLeさんの言うスクショからものはあくまで訓練ですので、やるやらないは別にしてオブジェクト対象物を全部上げることに意義があります。
質問ですが、オブジェクト指向は対象物ごとにcppファイルやclassなどを分けることですよね?
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
現在、道中のスクショから想定画面を作成していますが、ボス戦とあまり変わらないです。v0002.pngの画像に雑魚を付け加えただけの物になりました。( 現場報告 )
また、ISLe様から指摘がありましたヒットコンボ関連はシューティングの基礎が出来てからの方がいいでしょうか?
また、ISLe様から指摘がありましたヒットコンボ関連はシューティングの基礎が出来てからの方がいいでしょうか?
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>ISLe様 返信ありがとうございます。 作る作らないは別として、観察力とか解析能力を鍛えるために既存ゲームのスクショからオブジェクトをピックアップするのは続けてはいかがでしょう。 ヒットコンボ関連とかまるっと抜けてますし。 ゲームだけだったのでボス戦を選んでしまいました。道中でもやってみます。 ヒットコンボ関連は後回しにしていました。 参考にしたスクショのゲームは道中とボスのシーンではレイアウトが違うので、先にやるのは道中のほうが良いと思います。 ボスシーンに移行するとき画面のパーツが移動するので、実際にどの部分がどういうふうに動いているか見るともっと分かりやすいですが。 いまできる範囲で...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
では、取り敢えずv0002.pngの画像を元に作って行きたいと思います。
また詰まったら質問に来ます。その時もよろしくお願いします。
また詰まったら質問に来ます。その時もよろしくお願いします。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>softya様
返信ありがとうございます
要らないですね。よく考えていませんでした。
返信ありがとうございます
要らないですね。よく考えていませんでした。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>softya様
返信ありがとうございます
フィールドは間違いです。本当はそこはボードでした。( http://dixq.net/rp/7.html のボードのことです。)
返信ありがとうございます
自機ショットはとりあえずはずしました。たぶん混乱してしまうような気がして。softya(ソフト屋) さんが書きました:自分の弾が無いですが狙い通りですか?
あとフィールドとbackgroundって何が違うんでしょうか?
フィールドは間違いです。本当はそこはボードでした。( http://dixq.net/rp/7.html のボードのことです。)
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
usao様とsoftya様のアドバイスを元に作り直してみました。
これも、何かおかしいとかありましたら指摘お願いします。
#Fieldの文字を削除しました
これも、何かおかしいとかありましたら指摘お願いします。
#Fieldの文字を削除しました
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>usao様
返信ありがとうございます。
返信ありがとうございます。
わかりました。とりあえず、自分でできる範囲のものでやってみます。usao さんが書きました:私なら,です.
ご自身がやれる範囲で最初から用意するものを決めればいいと思います.
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>softya様
返信ありがとうございます。
返信ありがとうございます。
もっと削って良いんですか?わかりました。どんどん減らして行きます。softya(ソフト屋) さんが書きました:作れる範囲に仕様を削っていないと思われるので、削った想定画面を作りましょう。
・ボム必要ですか?
・豪華な弾幕必要ですか?
・ボスは必要ですか?
最初のが上手く行ったら次に機能追加して作れば良いだけなので、最初は思っきり減らして下さい。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>softya様
返信ありがとうございます。
返信ありがとうございます。
わかりました。夏休みの課題が終わらなそうなので、明日考えてみます。softya(ソフト屋) さんが書きました:では、シューティングの規模を下げましょう。龍神録並じゃなく仕様をそげ落として下さい。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>softya様
返事ありがとうございます。
確かに、まともに作ったものがブロック崩し程度なので、他のものから始めた方がいいかもしれません。ただ、STGくらいしか作りたいものが見つからないので…
返事ありがとうございます。
規模を落とす、とはSTGではなく、もっと簡単なものから始めた方がいいということですか?softya(ソフト屋) さんが書きました:実のところ「二兎を追う者は一兎をも得ず」を心配しています。
この場合は、「オブジェクト指向的な設計」と「始めての規模で組むSTG」です。
3D_3Dさんにある程度経験があれば止めないのですが、MusicRoomを見ている限りは混乱すると思います。
つまり、規模を落としたほうが良いんじゃない?って事ですね。
確かに、まともに作ったものがブロック崩し程度なので、他のものから始めた方がいいかもしれません。ただ、STGくらいしか作りたいものが見つからないので…
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>ISLe様
返信ありがとうございます。
返信ありがとうございます。
わかりました。描画って実装なんですね。勉強になります。ISLe さんが書きました:オブジェクトのピックアップを徹底したあとの話ですが。
描画というのは実装ですから、振る舞いとは別に考えないといけません。
むしろ設計段階では実装をなるべく除外してください。
オブジェクトとしての本質的な振る舞いを考えてください。
実装に依存しない仕様です。
当たり前のことを書かなくて済めば仕様がシンプルになります。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>softya様
返信ありがとうございます。
返信ありがとうございます。
はい。MusicRoomはC/C++の勉強がてら作り始めただけですので。また、C++verはC++が完全に理解できていなかったのでと考えています。softya(ソフト屋) さんが書きました:そういえばオブジェクトなどまとめていけばわかりますが、MusicRoomよりも遥かに複雑なものになるんですが覚悟されていますよね?
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>softya様 返信ありがとうございます。 > この図は「敵が弾を出したら弾を描写する」という解釈でよろしいですか? 違いますよ。敵オブジェクトが弾オブジェクトに対して、弾の生成を依頼している所です。 これがISLeさんが振る舞いと表現した部分です。 ただ、その前にISLeさんの言われる作業を徹底した方が良いと思いますね。 やってみてなさそうですし。 そういう意味だったんですか。失礼しました。 今まで龍神録のプログラムをマネしていただけなのでやります。 >丸や三角に意味はありますでしょうか?丸は更新(?)処理で三角は描写、みたいな... 丸は自機、三角は敵機では? オブジェクトの振る舞いで...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>ISLe様
返信ありがとうございます。
丸や三角に意味はありますでしょうか?丸は更新(?)処理で三角は描写、みたいな...
返信ありがとうございます。
了解しました。やってみます。ISLe さんが書きました:何もないところからオブジェクトを想像するのは難しいと思うので、ネットに転がってるゲームのスクリーンショットから映っているものをひとつ残らずピックアップしてみるとかしてみたらどうでしょう。
あるいは思い付いたものを紙に描いて(丸や四角の中に名前を書く程度でよし)スクリーンショットに仕立ててみれば足りないものが見えてくると思います。
振る舞いに関してはそのあとにしたほうが良いのではないでしょうかね。
丸や三角に意味はありますでしょうか?丸は更新(?)処理で三角は描写、みたいな...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>softya様 返信ありがとうございます 紙は無くしても良いんですよ。思考をまとめるツールにすぎません。 まとめたら、テキストに起こせば良いんです。 あるいは、Draw系のツール使っても良いでしょう。 ↓ この間ISLeさんが紹介していたWEBツール。 「Gliffy Editor - Online」 https://www.gliffy.com/go/html5/launch?app=1b5094b0-6042-11e2-bcfd-0800200c9a66 OpenOfficeにも似たのはあります。 生憎、OpenOfficeは持ってないです... WEBツールを教えていただきありがと...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>softya様
返信ありがとうございます。
紙は無くしやすいので、テキストファイルにでも書いてみます。
返信ありがとうございます。
おっしゃる通りです。自分の悪い癖で、知りたいことはすぐに他人に聞いてしいます。自分でじっくり考えて見ます。softya(ソフト屋) さんが書きました:そこを考えるのが一番重要なので安易にはお答えしませんよ。答えを早く求め過ぎでは無いかと思います。
じっくり図や紙に色々書いて考えてみてください(人により方法が違う)。
それが分析や設計の方法です。
紙は無くしやすいので、テキストファイルにでも書いてみます。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>softya様
返信ありがとうございます。
ボム画像/計算(忘れてました)
弾画像
(ボード?画像)
(被弾処理?)
これ以上は全く思いつきません。他にあれば是非教えて頂きたいです
返信ありがとうございます。
自機画像softya(ソフト屋) さんが書きました:あと画像の形として見えない処理もあります。考えてみて下さい。
ボム画像/計算(忘れてました)
弾画像
(ボード?画像)
(被弾処理?)
これ以上は全く思いつきません。他にあれば是非教えて頂きたいです
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>softya様
返信ありがとうございます。
背景と点数表示を忘れていました。言われていればそうですね。
リンク先を読ませていただきます。
返信ありがとうございます。
背景と点数表示を忘れていました。言われていればそうですね。
リンク先を読ませていただきます。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
Re: ゲームのオブジェクト指向について
>>h2so5様
返信ありがとうございます。
自機
雑魚
ボス
弾幕
自機ショット
くらいしか思いつきません。
返信ありがとうございます。
当方あまりゲームをしないので不足している部分もあるかもしれませんが、h2so5 さんが書きました:オブジェクトというのは要するに「名詞」です。
シューティングゲームに出てくる名詞を列挙してみましょう。
自機
雑魚
ボス
弾幕
自機ショット
くらいしか思いつきません。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: C言語の環境
- 返信数: 17
- 閲覧数: 4087
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームのオブジェクト指向について
- 返信数: 139
- 閲覧数: 43896
ゲームのオブジェクト指向について
どうも、C++を挫折しそうな3Dです。またお世話になります。 最近C++ばっかりやっていますが、わからないところが多すぎて諦め気味です。 という訳で、久しぶりにC言語を使って簡単な弾幕シューティングゲームを作ろうと思いました。 そこで、C++っぽくオブジェクト指向を意識してやってみようと思いましたが、シューティングゲームにおけるオブジェクトとは一体なんだ?と思い、行き詰まっています。 ここで質問です。シューティングゲームにおけるオブジェクトとは何でしょうか? また、シューティングゲームだけでなく、他の種類のゲーム(RPGなど)のオブジェクトも教えていただけるとありがたいです。 【開発環境】 D...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: C言語の環境
- 返信数: 17
- 閲覧数: 4087
Re: C言語の環境
DXライブラリやWIN32APIなどを使えば出来ると思います。
作るのはWindowsアプリケーションですよね?
作るのはWindowsアプリケーションですよね?
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: C言語の環境
- 返信数: 17
- 閲覧数: 4087
Re: C言語の環境
BCCはどうでしょうか?自分もたまに使いますが、軽くていいですよ。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: DOS窓を一時停止させるには
- 返信数: 6
- 閲覧数: 3465
Re: DOS窓を一時停止させるには
コマンドプロンプトにexeファイルのパスを入力して見てください。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: 龍神録プログラミングの館で
- 返信数: 8
- 閲覧数: 3348
Re: 龍神録プログラミングの館で
struct.h をインクルードして見てください。manekin さんが書きました:define.hファイルでstruct.hを#includeしています。
struct.hファイルでは#includeをつけていません。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: 龍神録プログラミングの館で
- 返信数: 8
- 閲覧数: 3348
Re: 龍神録プログラミングの館で
define.hをインクルードしてますか?
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: メニューの選択画面の応用
- 返信数: 5
- 閲覧数: 2365
Re: メニューの選択画面の応用
ご自分で考えた関数のコードを貼ってみて下さい。YUUKI さんが書きました:>最大限に想像を働かせると、ゲームスタートでエンターキーを押したら1を表示したい、おまけでエンターキーを押したら2を表示したいと言うことでしょうか?
表示ではなく、自分で作ったほかの関数に1や2を渡したいということです。
渡した先の関数で、1や2といった値に応じた処理を行いたいと思っています。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: 【雑談?】自分の書いたコードを見て下さい
- 返信数: 28
- 閲覧数: 10684
Re: 【雑談?】自分の書いたコードを見て下さい
>>softya様 返信ありがとうございます。 勉強というより、沢山のコードを書いていく中で慣れていくしか無いと思います。 c++でも雑に書こうと思えば書けるんですが、それだとC++の仕組みがややこしい分C言語の悪いプログラムよりも質が悪いです。 それを避けるためには、色んな仕組みを理解しつつ書かないといけません。 まぁ、C++で始めてやるにはMusicRoomが少々複雑なので、もう少しシンプルな題材にした方がよいでしょうね。 あとMusicRoom自体がC言語のソースコードの時点で整理・汎用性のあるコードとは言いがたいので、その修正も含めて行っている事になり余計苦労していると思います。 ちな...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: 【雑談?】自分の書いたコードを見て下さい
- 返信数: 28
- 閲覧数: 10684
Re: 【雑談?】自分の書いたコードを見て下さい
>>softya様
返信ありがとうございます。
思ってた以上にc++は難しいです。c言語の時は汎用性のあるコードなんて考えてしませんでした。
もう一度最初から勉強し直したほうがいいかもしれません。
まだ勉強し始めて一ヶ月も経ってないので最初から勉強しても苦にはならないと思います。
返信ありがとうございます。
std::vectorを調べて見ました。やはり、よくわかりませんでした。softya(ソフト屋) さんが書きました:動的にするしかないので、ポインタであるnewは必須ですよ。
扱いはstd::vectorの方が簡単ですけどね。ポインタ意識しなくて良いですし。
思ってた以上にc++は難しいです。c言語の時は汎用性のあるコードなんて考えてしませんでした。
もう一度最初から勉強し直したほうがいいかもしれません。
まだ勉強し始めて一ヶ月も経ってないので最初から勉強しても苦にはならないと思います。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: 【雑談?】自分の書いたコードを見て下さい
- 返信数: 28
- 閲覧数: 10684
Re: 【雑談?】自分の書いたコードを見て下さい
>>softya様
返信ありがとうございます。
とりあえず、これが出来たらnewやらstd::vectorやらを使って見たいと思います。
返信ありがとうございます。
std::vectorやstd::listは使ったことが無いので、無難にコンストラクタでいきたいと思います。softya(ソフト屋) さんが書きました:動的確保すれば良いので、newで確保すればコンストラクタじゃなくてもどうにでもなりますが、コンストラクタに書くほうが分かりやすいのも事実です。
まぁ、STL(Standard Template Library)と言う便利なものがあるのでstd::vectorやらstd::listを使うのが無難ですけどね。これらは動的に拡張できます。
とりあえず、これが出来たらnewやらstd::vectorやらを使って見たいと思います。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: 【雑談?】自分の書いたコードを見て下さい
- 返信数: 28
- 閲覧数: 10684
Re: 【雑談?】自分の書いたコードを見て下さい
>>softya様
返信ありがとうございます。
Dxlib_Init()からDxlib_End()までなら使えるんですね。
さらに質問ですが、
返信ありがとうございます。
Dxlib_Init()からDxlib_End()までなら使えるんですね。
さらに質問ですが、
とありますが、コンストラクタ以外の方法はあるのでしょうか?あるならば教えて頂きたいです。softya(ソフト屋) さんが書きました:> ヘッダファイルの最初で#defineするのはダメでしょうか?
少なくともコンストラクタの引数にするとか、状況変化に強い書き方のコードを書く癖を付けたほうが良いと思います。
これまた動けば良いコードの再生産になりかねません。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: 【雑談?】自分の書いたコードを見て下さい
- 返信数: 28
- 閲覧数: 10684
Re: 【雑談?】自分の書いたコードを見て下さい
>>usao様 返信ありがとうございます。 デストラクタは そのオブジェクトが解体されるときに呼ばれます. 無くなる前に絶対に何かしないとダメな処理がある場合に使います. ということは、その処理がない場合は呼び出さなくてもいいのですか? 例えば,3D_3Dさんが示されたコードには Fin() というメソッドを持つクラスがあり, そのクラスオブジェクトを使い終わる際に,何かしら後始末が必要なのだと見受けます. そういったことをデストラクタに書いておくと(例えばデストラクタの実装に Fin(); と書いておく) インスタンスが解体される直前に自動でやってもらえて便利です. とはいえ,DXライブラ...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: 【雑談?】自分の書いたコードを見て下さい
- 返信数: 28
- 閲覧数: 10684
Re: 【雑談?】自分の書いたコードを見て下さい
>>usao様 返信ありがとうございます。 >music.cpp この名前については多分私のせいです. 私がてきとー(*)に書いたのをそのまま使ってしまっているのだと思います. もう少し真っ当な名前を例示すべきでしたね. で,このhとcppに何を入れるのか?についてですが,とりあえず最初に貼られているコードに対して 最初の段階として >まず,WinMain()を書くファイルと,Music_XXX系のメソッドの実装を書くファイルを分けましょう. をやる,という話のままであれば 「ミュージックルーム(?)」という大きなモジュールに必要な諸々(スクリプトのロードはその中の機能の一つ,ですね.) が収...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: ゲームプログラミングの館のサンプルファイルのslnファイルが開けません
- 返信数: 2
- 閲覧数: 1555
Re: ゲームプログラミングの館のサンプルファイルのslnファイルが開けません
インストールはしましたか?
#追記 すいません。良く文を読んでいませんでした。
#追記 すいません。良く文を読んでいませんでした。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: 【雑談?】自分の書いたコードを見て下さい
- 返信数: 28
- 閲覧数: 10684
Re: 【雑談?】自分の書いたコードを見て下さい
厳しく追求して申し訳ないですが、C++でソースコードを書くと言う行為の意義として、こう言う問題を解決して行かないとC++の意味が無いので申し訳ないですね。 C++初心者なので厳しくしていただいた方が自分の為になると思いますので、これからも厳しくお願いします。 さて、music.cppって何を管理するクラスを入れるところでしょうか? スクリプトじゃないかと思うのですが、名前がアヤフヤでなんとでも取れる名前になっているので危険な徴候です。名前とオブジェクトの特性は一致させて下さい。名は体を表すです。 わかりました。たしかに、music.cppとあるのに、スクリプトクラスがあるのは変ですね。作り直...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: 【雑談?】自分の書いたコードを見て下さい
- 返信数: 28
- 閲覧数: 10684
Re: 【雑談?】自分の書いたコードを見て下さい
新たな問題が発生しました。 新たにmusic.cppとmusic.hをプロジェクトに追加して、music.hに関数のプロトタイプ宣言、ミュージックルーム構造体、クラスを書いていたのですがちょっと詰まってしまいました。 typedef struct{ int loop; std::string path,name,comme; }music_t; と書いたところ、構文エラーと"型指定子がありません"というエラーがでました。 因みに、include文は一切書いておりません。 このような場合は素直に #include <cstring> を書いた方が良いのでしょうか?
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: 【雑談?】自分の書いたコードを見て下さい
- 返信数: 28
- 閲覧数: 10684
Re: 【雑談?】自分の書いたコードを見て下さい
>>usao様 返信ありがとうございます。 >ヘッダファイルにはなるべくincludeはしないようにします。 この話については理由を調べてみてください. 「include 依存関係」とかで検索すれば 「コンパイル依存性がどうので1つ変えただけで全部再コンパイルが必要になって云々」という話が見つかると思います. 下のURLをみました。面倒なことになる前にわかってよかったです。 (参考: http://jianji.noor.jp/wiki/index.cgi?page=%A5%D8%A5%C3%A5%C0%A5%A4%A5%F3%A5%AF%A5%EB%A1%BC%A5%C9%A4%F2%B8%...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: 【雑談?】自分の書いたコードを見て下さい
- 返信数: 28
- 閲覧数: 10684
Re: 【雑談?】自分の書いたコードを見て下さい
>>usao様 返信ありがとうございます。 ●以前も同じようなことを書いた気がしますが 外部変数(正確には何と呼ぶのかな? ファイルスコープな非ローカル変数) static music_t music[ MUSIC_NUM ]; の存在を前提として各クラスのコードが書かれてしまっています. ↓ まず,WinMain()を書くファイルと,Music_XXX系のメソッドの実装を書くファイルを分けましょう. 例えば,現在クラス群の宣言が書かれているヘッダファイルをmusic.hだとすれば クラスの実装を新しいmusic.cppに書く. で,「music.hとmusic.cppを別のプログラムに持っ...