はじめまして。
プログラミング館を拝見しながらゲームを作ろうと試行錯誤しているのですが質問があったので
カキコさせていただこうと思います。
ゲーム館をみて自分なりにソースを書いてある程度思い通りに行ったのでいざ作ろうと思ったのですが
考えてみるとゲームのソースってゲーム館ではほぼ1つのccpファイルだと思います。
たとえばRPGなどは最初にOP画面(メニュー画面)→最初のストーリー設定画面→メインプログラム
のように順々に処理が流れていくと思うのですが1つのccpファイルではとんでもない行数になってしまうと思います。
私が作ろうと思っているのはノベルゲームなのですが、if文でAとBに分かれたとき
Aは1のファイルにBは2のファイルに移動させようと思ったらどのような処理が必要になるのでしょうか?
いわゆるファイル分割?みたいな感じなのですが・・・
ここで説明していただければいいのですが一から十まで丁寧にって事になりそうなので;
RPGやノベルゲームなどをサンプルとしたわかりやすいサイト等はないでしょうか?
よろしくお願いします。
ゲームの処理について
Re:ゲームの処理について
「C言語 ファイル 分割」
っとググれば意外と出てきますよ。
参考までに。↓
ttp://homepage3.nifty.com/mmgames/c_guide/20-02.html
っとググれば意外と出てきますよ。
参考までに。↓
ttp://homepage3.nifty.com/mmgames/c_guide/20-02.html
Re:ゲームの処理について
例えばですがゲーム館のキャラクターが4方向に歩く場合ですが・・・
初めからキー入力までを1.cpp・座標計算を2.cpp・描画処理を3.cpp
と分割することも可能なのでしょうか?
よく分かってなくてすみません^^;
初めからキー入力までを1.cpp・座標計算を2.cpp・描画処理を3.cpp
と分割することも可能なのでしょうか?
よく分かってなくてすみません^^;
Re:ゲームの処理について
分割することも可能ですが…(理論上)
その場合共通の関数の定義を書いたヘッダーファイルを用意して、
それをそれぞれのcppファイルにインクルードする方法が考えられます。
あと、ファイル分割をした時はポインタの知識が必要になるかもしれません。
まあ…一般論ですが。
その場合共通の関数の定義を書いたヘッダーファイルを用意して、
それをそれぞれのcppファイルにインクルードする方法が考えられます。
あと、ファイル分割をした時はポインタの知識が必要になるかもしれません。
まあ…一般論ですが。
Re:ゲームの処理について
割り込んで申し訳ないのですが僕もちょっと質問させてくださ~い
ゲーム館をみてて思ったのですがこの処理はこうする
あの処理はこうすると言うのは理解できました。
でも、例えばメニュー画面を作ってみる
その次にメニュー1を選んでエンターキー押せばこの画面を映す
メニュー2を選んでエンターキーを押せばこの文字を映し出す
と言ったゲームの流れをどのように行うかが書かれていませんでした。
龍神録プログラミングの館とかもいきなり話がレベルアップしてるように見えますし。
Louisさんが言ってるようなファイル分割の話も乗ってたんですがいまいち分かりません。
そのような処理の流れを具体的なソースで表わしているページってないんでしょうかね~?
例えばゲーム館33の選択画面の作り方。その次の関数の書き方。この二つって関連してるように見えます。
でも、メニュー画面はこう作ったらいい。それだけ言われてもどうすればいいのか分かりません。
メニュー画面の作り方と言うならばメニューの次の画面表示なんかを書いてくれればよくないですか?
ごめんなさいね、割り込んじゃって。
でも少し気になったので一つの意見として聞いてください。
ゲーム館をみてて思ったのですがこの処理はこうする
あの処理はこうすると言うのは理解できました。
でも、例えばメニュー画面を作ってみる
その次にメニュー1を選んでエンターキー押せばこの画面を映す
メニュー2を選んでエンターキーを押せばこの文字を映し出す
と言ったゲームの流れをどのように行うかが書かれていませんでした。
龍神録プログラミングの館とかもいきなり話がレベルアップしてるように見えますし。
Louisさんが言ってるようなファイル分割の話も乗ってたんですがいまいち分かりません。
そのような処理の流れを具体的なソースで表わしているページってないんでしょうかね~?
例えばゲーム館33の選択画面の作り方。その次の関数の書き方。この二つって関連してるように見えます。
でも、メニュー画面はこう作ったらいい。それだけ言われてもどうすればいいのか分かりません。
メニュー画面の作り方と言うならばメニューの次の画面表示なんかを書いてくれればよくないですか?
ごめんなさいね、割り込んじゃって。
でも少し気になったので一つの意見として聞いてください。
Re:ゲームの処理について
んん~探せばありそうですが・・・
確かに少ないかも知れませんね。
ただ自分がゲームプログラミングの館をすぐに終えた感想は
コピペだけだと応用ができない
でした。確かに事細かく解説されてるはとても親切だと思うのですが、
なかなか実力が伴いません。
もしゲームプログラミングを通じて、プログラミングの実力をつけたい!!なら、
やはり、自分で一度どう実装したらいいか悩んだほうが良いと思います。
もしゲームを作りたい!!ならツクール系をオススメします。
分割ファイルに関しては、まず、本当に単純なもの
からはじめていったほうが良いです。
main.cpp
function.cpp
hd.h
を用意し、
hello world!!
を出力する関数print_string()をfunction.cppに記述します。
hd.hにはfunction()で書かれている関数のプロトタイプ宣言を書きます。
main.cppではprint_string()を呼び出す
っと実行できれば簡単な分割ファイルの完成です。
次に外部変数を取り入れたり
クラスのインターフェースをヘッダーに書いたり
・・・
なんて発展していけば、最初は混乱するかも知れませんが、
やればちゃんと理解できるはずです。
確かに少ないかも知れませんね。
ただ自分がゲームプログラミングの館をすぐに終えた感想は
コピペだけだと応用ができない
でした。確かに事細かく解説されてるはとても親切だと思うのですが、
なかなか実力が伴いません。
もしゲームプログラミングを通じて、プログラミングの実力をつけたい!!なら、
やはり、自分で一度どう実装したらいいか悩んだほうが良いと思います。
もしゲームを作りたい!!ならツクール系をオススメします。
分割ファイルに関しては、まず、本当に単純なもの
からはじめていったほうが良いです。
main.cpp
function.cpp
hd.h
を用意し、
hello world!!
を出力する関数print_string()をfunction.cppに記述します。
hd.hにはfunction()で書かれている関数のプロトタイプ宣言を書きます。
main.cppではprint_string()を呼び出す
っと実行できれば簡単な分割ファイルの完成です。
次に外部変数を取り入れたり
クラスのインターフェースをヘッダーに書いたり
・・・
なんて発展していけば、最初は混乱するかも知れませんが、
やればちゃんと理解できるはずです。
Re:ゲームの処理について
そうですね~、、龍神録の館はちょっとゲームの館から飛躍しすぎですね。
実は以前「シューティングの館」というものがあり(今も一応残してありますが)
これはちょうどゲームの館を終えたレベルで実装可能なゲームの解説を行っていました。
また、「わかりやすさ←→効率のよさ」はどうしてもトレードオフの関係になってしまう場合が多く、
シューティングの館は効率のよさを削ってわかりやすさを重視した内容になっていました。
「わからなくて嫌にならない」これが最善の解説だと思っていたのですが、
シューティングの館はやはり適切さを削っているコードが多く、
効率も悪く、この書き方である程度大規模なゲームを作るのは困難になっていました。
そこで、シューティングの館の内容をもう少し効率的にしようとして龍神録の館を作りました。
シューティングの館で苦労した人が龍神録の館を見て「あ~こうすれば効率がいいのか」と思っていただけたらいいなと思いました。
龍神録の館も随分わかりやすさに比重を置いた内容になっていますが、シューティングの館よりは効率面でましだと思います・・。
なのでシューティングの館をご覧になった方が対象となっている為、ゲームの館から龍神録の館をご覧になると内容がかなり飛躍しているように感じると思います。
時間をみつけて、シューティングの館の内容を完結にして、ゲームの館で紹介できるようにしてみたいと思います。
分割コンパイルだけでしたらシューティングの館を見ていただけたらわかるかもしれません。
実は以前「シューティングの館」というものがあり(今も一応残してありますが)
これはちょうどゲームの館を終えたレベルで実装可能なゲームの解説を行っていました。
また、「わかりやすさ←→効率のよさ」はどうしてもトレードオフの関係になってしまう場合が多く、
シューティングの館は効率のよさを削ってわかりやすさを重視した内容になっていました。
「わからなくて嫌にならない」これが最善の解説だと思っていたのですが、
シューティングの館はやはり適切さを削っているコードが多く、
効率も悪く、この書き方である程度大規模なゲームを作るのは困難になっていました。
そこで、シューティングの館の内容をもう少し効率的にしようとして龍神録の館を作りました。
シューティングの館で苦労した人が龍神録の館を見て「あ~こうすれば効率がいいのか」と思っていただけたらいいなと思いました。
龍神録の館も随分わかりやすさに比重を置いた内容になっていますが、シューティングの館よりは効率面でましだと思います・・。
なのでシューティングの館をご覧になった方が対象となっている為、ゲームの館から龍神録の館をご覧になると内容がかなり飛躍しているように感じると思います。
時間をみつけて、シューティングの館の内容を完結にして、ゲームの館で紹介できるようにしてみたいと思います。
分割コンパイルだけでしたらシューティングの館を見ていただけたらわかるかもしれません。
Re:ゲームの処理について
>初めからキー入力までを1.cpp・座標計算を2.cpp・描画処理を3.cpp
と分割することも可能なのでしょうか?
可能ですよ。
kazuoniさんのURLの説明だけでも十分いけると思います……が、一応。
描画処理だけを別ファイルに、ということを目指します。
まず、新たにファイルを追加し、
元からあるファイルの方には、
extern void MyDraw( int x, int y, int image );
と、#include "DxLib.h"の1行下に書いて下さい。
これで、元ファイルの方でも、新ファイルの関数が使えることになります。
変数を2つ以上のファイルで共有する ことも可能です。
これは先のURL参照ということで……。
という感じで、いいのかな……?(;´▽`)
見当違いなこと言ってたら、すいません。
と分割することも可能なのでしょうか?
可能ですよ。
kazuoniさんのURLの説明だけでも十分いけると思います……が、一応。
描画処理だけを別ファイルに、ということを目指します。
まず、新たにファイルを追加し、
#include "DxLib.h" void MyDraw( int x, int y, int image ){ DrawGraph( x, y, image, TRUE ) ;//画像を描画 }とします。
元からあるファイルの方には、
extern void MyDraw( int x, int y, int image );
と、#include "DxLib.h"の1行下に書いて下さい。
これで、元ファイルの方でも、新ファイルの関数が使えることになります。
変数を2つ以上のファイルで共有する ことも可能です。
これは先のURL参照ということで……。
という感じで、いいのかな……?(;´▽`)
見当違いなこと言ってたら、すいません。
Re:ゲームの処理について
>「わかりやすさ←→効率のよさ」はどうしてもトレードオフの関係になってしまう場合が多く
ここだけ読ませてもらいました
ファイル分割の前に
関数化の概念を理解しておくと
ファイル分割の理由などが分かり、C言語の理解にも近づけると思います
ここだけ読ませてもらいました
ファイル分割の前に
関数化の概念を理解しておくと
ファイル分割の理由などが分かり、C言語の理解にも近づけると思います
Re:ゲームの処理について
とても理解しやすかったです。皆様ありがとうございます。
一度シューティングの館を拝見した後に龍神録プログラミングの館
を拝見させていただこうと思います。
とりあえず画像処理や歩くキー入力、座標計算を順々にファイル分割できるように
練習して行こうと思います。またコピペだけで作れそうに無いので試行錯誤しながら
文字の表現や選択、画面効果などを考えていきます。
一度シューティングの館を拝見した後に龍神録プログラミングの館
を拝見させていただこうと思います。
とりあえず画像処理や歩くキー入力、座標計算を順々にファイル分割できるように
練習して行こうと思います。またコピペだけで作れそうに無いので試行錯誤しながら
文字の表現や選択、画面効果などを考えていきます。