登録して間もないですが、少なくとも数年は、こっそりとこちらのサイトを覗かせて頂いて居りました。お名前を見て、よく書き込んで居られる方だ!と思う事がある程度です。私は、ぼんやりとした質問しかできず、説明すると長くなるところがあるので、こちらでは、そう言った質問の仕方は好まれないと言うか、どこでもそうですが、質問するべきでは無いかなと考えて居りましたが、聞かぬは一生の恥、聞いた方が成長できると考え、恥を忍んで質問させて頂きます。
(でも、管理人さんを含め、常連?の方々は、優しいなとも、傍から…他所から見て感じて居るので、大丈夫だろうとも思って居ります…。)
ソースコードも含め、長文駄文が目立つとは思いますが、分かり易く、何とか短く…と考えて、私なりに誠実に質問させて頂いて居るつもりです。ですが、気になられた点がありましたら、改良・改善の参考にさせて頂きますので、良ければ、一言頂けると幸いです。
また、独学も独学、学ぶと言う字を使う事すらおこがましい程度で、間違った知識と言いますか、曖昧に理解して居る事柄が多いかと思います。その点、悪しからず、ご理解頂けると幸いです…。
さて、ここからが本題です…。
前提として、私は、(最下記の通りの環境で、)PC向けのゲーム作品を作りたいと思って、趣味で続けて居ります。
ゲーム以外のソフト等については、まるで考えを持って居りません。
現在は、二点から成る線分を足場にするマップ(基本は横に進む2Dスクロールのアクションゲームです。)を舞台にしたゲームを作って居り、そのマップを管理(数値の変更)するツールを、ゲームのプログラム内?に、一つのソースファイルとして用意しようとして居るところです。
そこで、聞く人に依っては、かなりどうでも良い質問なのですが、HTMLや、ツールソフトの様な、MFCやWPFやフォームアプリケーション?の様なものは、ツール画面?の様な、選択したり数値を入力したりする部分が、ある程度は形にと言うか、できて居る仕組みを利用し、プログラムとしては、配置する様にして記述できますが、DXライブラリの様に、この座標を左上に、この文字列を~と、一つ一つのパーツ?から考える様な場合に、一般的にはと言うか、他の皆さんは、どう考えて作られるのだろう…と考え、とんでもなく馬鹿野郎なのですが、もう少なくとも彼是一ヶ月ぐらいは悩んで居りまして、こうして質問させて頂いた次第です…。
かなり怪しい文と言いますか、曖昧な質問かと思います…。
ですので、長くなってはしまいますが、例を交えて、何とか説明させて頂こうと思います…。
例えば、上述の通り、私は、二点から成る線分でマップを表現して居るのですが、ツール部分?画面?としては、
--
カーソル先の線分 番号 N
X1 0 Y1 950
X2 1000 Y2 950
選択中の線分 番号 M
X1 100 Y1 900
X2 200 Y2 900
変更する線分 番号 _
X1 ___ Y1 ___
X2 ___ Y2 ___
---(※___は、入力部。クリックしたらカーソルを点滅させるなりして、キーボードで数値を入力できる様な部分です。例の中のカーソルは、マウスカーソルの方のカーソルの事です。)
この様に、似た様なパーツ?が連なるものになるかと思うのですが、
その際に、後で手直しし易い様にと言いますが、分かり易い様に、どんな風にプログラムを記述するか、座標を管理するか…と言う事に頭を悩ませて居るのです。
上記の例えを利用して更に説明させて頂くと、DXライブラリなら、
DrawBox( int x1 , int y1 , int x2 , int y2 , unsigned int Color , int FillFlag ) ;
DrawFormatStringToHandle( int x , int y , unsigned int Color , int FontHandle , char *FormatString , ... ) ;
そう言う事を考えると、HTMLの様な、ボックス?の考えの様に、パディングやマージンを、一つ一つの文字列に、構造体としてでも設けて、設定できる様にした方が、便利なのでは…?と思ってしまいます。(便利だと思うのなら、そうすれば良いだけなのでは…。)
少なくとも、こう言ったプログラミング?と言うのは、変数を用いて、簡略化と言うか、省略できる部分は、省略した方が良いと思うのですが、分かり辛くなるから、やらない方が良いと言う事もあるかと思うのです…。
ですから、こう言った事をプログラミング?する際には、どうでも良い部分だからと考えて、手打ちで座標を指定したりするのか、私の様に、細かく設定できる様にして置こうとするのか、私程では無くとも、ある程度は細かく指定するのか…と言う様な、考え方的なものについて知りたいのです…。
そんな事を聞いて、どうするんだ、どちらでも良い、それより貴方は他に理解しなければいけないところがある~等と言われてしまいそうな質問ではありますが、無い頭で、ストレスで顔面痛が出るぐらいに悩んでしまって居りますので、良ければ、お答え頂ければと思います…。何だか、うじうじした質問で、利用規約の、不快にさせないと等の文言に抵触するのではないかとすら思って、びくびくして居りますが、悪意は無く、本当に誠実に質問させて頂いて居りますので、どうぞ、よろしくお願いします…。
[1] 質問文
[1.1] 自分が今行いたい事は何か
濃い水色の部分の、マップ管理ツールの作成が、今行いたい事ではありますが、作成の仕方を聞きたいと言う事だと、質問したい内容としては少し異なります。
[1.2] どのように取り組んだか
最初は、私だけが使う、もしゲームが完成しても、配布する際には取り除く部分だから、手打ちと言うか、見た通りに座標等を指定して行けば良いと思いました。
しかし、例えば、入力部分にしたい範囲をクリックした際の事を考えたり、見栄えのために部分的に文字(フォント)の種類を変えたいと思いました。
そのため、現在としては、最終的に、文字のサイズを取得して、高さを調節したり等、簡素なソースではありますが、ボックスや文字列毎に構造体で、座標や大きさ等を指定し、それを利用して描画する様にしました。
[1.3] どのようなエラーやトラブルで困っているか
これが正しいのか、長ったらしいだけで、手打ちでも良いのでは無いか…等、悩んでしまいました。
また、別の質問に成ってしまいますが、折角、DrowString系の関数を使用するのに、必要な引数の内容は、全て、構造体として管理できる様にしたのに、"%d"等の書式の、数値として代入したい変数だけは、構造体として、どう管理したら良いか分からず、結果、何行も、必要な分だけDrowString系を使用して居る状況です。
引数にする変数名を、文字列として構造体に入れて置けば良いんだ!と考えたのですが、数値として求められる引数に対し、文字列を入力して居るだけと成ってしまって、どうキャスト?型変換?すれば良いのか、どんな方法があるのだろうか…と言う点に置いても、悩んでしまって居ます…。
ですから、それが分からないのであれば、どの道、DrowString系の分は、改行を重ね、長文に成ってしまうのだから、手打ちでも良いのでは…、と思って居る節があります…。
[1.4] 今何がわからないのか、知りたいのか
黄色い字の部分が、一番、具体的な質問です…。
[2] 環境
[2.1] OS : Windows7
[2.2] コンパイラ名 : VC++2015
[3] その他
・どの程度C言語を理解しているか
まるで理解して居ない初心者だと思って頂ければ幸いです。
(具体的には、基本すら理解して居ないと思います。)
・ライブラリを使っている場合は何を使っているか
DXライブラリを使わせて頂いて居ります。(他に使った事のあるものがありません。)
私の人生に置いては、相変わらずなのですが、短く短くしたつもりが、何時も通りの、長文駄文と成ってしまいました…。申し訳ないです…。
今後も、こちらのサイトを利用させて頂きたいと考えて居りますので、次回以降の事に思いを馳せると、前置きの分は、次回以降は減らせるな…とは思います。
もし、お優しいどなたかに返信して頂けた場合、こちらからの返信は、今日は夜以降か、明日の日中以降に成るやも知れません…。すみません…。何か、厳しい意見を頂くのではないかと、確認するのも億劫だと考えて居たりしますが、きちんと、返信させて頂きますので、よろしくお願いします…。
重複した内容が多い様にも思いますが、最後に、もう一言、どうぞ、よろしくお願いします…。