ページ 11

龍神録プログラミングの館について

Posted: 2008年7月13日(日) 23:22
by DIL
龍神録プログラミングの館を拝見させていただきました。
初歩的な質問なのですが、2章の#include "../include/GV.h"の部分なのですが、どうしてこのように書くのかわかりません。
#include "GV.h"にすると何かまずいことでもあるのでしょうか。

Re:龍神録プログラミングの館について

Posted: 2008年7月13日(日) 23:26
by 管理人
特に深い意味はありません。
プログラムソースファイルが多いので、同じフォルダにあると、整理するとき見難い為、
ヘッダファイルの入ってるフォルダとわけているだけです。
もちろん同じフォルダに入れても何ら問題はありません。

Re:龍神録プログラミングの館について

Posted: 2008年7月13日(日) 23:38
by DIL
回答ありがとうございます。
もうひとつ疑問点が出てきたので、質問させていただきます。
int GetHitKeyStateAll_2(int GetHitKeyStateAll_InputKey[/url]){
	char GetHitKeyStateAll_Key[256];
	GetHitKeyStateAll(GetHitKeyStateAll_Key);
	for(int i=0;i<256;i++){
		if(GetHitKeyStateAll_Key==1)
			GetHitKeyStateAll_InputKey++;
		else
			GetHitKeyStateAll_InputKey=0;
	}
	return 0;
}

のforループの部分では、何を判定しているのでしょうか?

Re:龍神録プログラミングの館について

Posted: 2008年7月13日(日) 23:43
by 管理人
龍神録の館にも、リンク先を誘導していると思いますが、こちらをご覧下さい。
http://dixq.net/g/#40

Re:龍神録プログラミングの館について

Posted: 2008年7月13日(日) 23:54
by DIL
ありがとうございました。おかげさまで理解できました。

Re:龍神録プログラミングの館について

Posted: 2008年7月16日(水) 18:48
by DIL
9章のchar.cppのch_move()関数内の最後にある、
if(!(x<10 || x>FIELD_MAX_X || y<5 || y>FIELD_MAX_Y-5)){//計算結果移動可能範囲内なら
とありますが、これだとキャラクタがボードにめり込んでしまいます。
条件式の数値が微妙にずれていませんか?

Re:龍神録プログラミングの館について

Posted: 2008年7月16日(水) 19:00
by 管理人
確かにFIELD_MAX_X-10ですね・・。
もしかしてこの構造はまちがいがあったらその章から全部直さないといけないのか(汗

Re:龍神録プログラミングの館について

Posted: 2008年7月16日(水) 19:09
by DIL
そこは早いうちに見つけてよかったと前向きに(ry
大変でしょうけど、がんばってください。
応援してます^^

Re:龍神録プログラミングの館について

Posted: 2008年7月16日(水) 19:19
by DIL
10章のGV.hへの追加が、ダウンロードしたプロジェクトでは追加されていません。
これも修正お願いします。

Re:龍神録プログラミングの館について

Posted: 2008年7月16日(水) 20:10
by BCI-3e
みなさん、あまり管理人様に負荷をかけないでくださいね^^;
管理人様も少しは体を休めないと、倒れられたらもっと皆さんが困るように思います。
若いからと言って無理をすると取り返しのつかないことになりますよ。


この文章を理解して真剣に休養を考えるべきです。

長時間労働をすると血圧が上昇します。また、睡眠不足になり、疲労が蓄積します。そしてストレスを発散する時間がなく、心身の疲れをため込むことになります。特に睡眠不足は交感神経が働きすぎるため、心臓が無理をしてしまい病気を増やします。特に4時間以下の睡眠により翌日の血圧は上昇し、虚血性心疾患になる確率が倍増します。

以上の理由により心筋梗塞や脳梗塞、くも膜下出血になりかねません。
いわゆる過労死って事にも・・・・・・・


そんな事になってほしくないのでどうか休養を。
休養をとったほうが効率よくいろんな作業ができると思います^^

Re:龍神録プログラミングの館について

Posted: 2008年7月16日(水) 20:40
by 管理人
そ、、そうか・・。
エクセルデータは章ごとにかわるのに、共通データにしてしまった;
ちゃんとした判断が出来ていませんね;

BCI-3eさん、ありがとうございます^^;
もう少しのんびりやらないと、ミスだらけになって逆に迷惑かけますね;
とりあえず少し休養しますw

Re:龍神録プログラミングの館について

Posted: 2008年7月16日(水) 21:53
by 管理人
9章と10章のミスは修正しました。
9章と10章は同じ内容だったみたいですね。コピーし間違えのようです。
10章のミスは後に響かないのですが、9章は全部変更する必要がある・・。
これはちょっと大変なわりに、そこまで致命的な問題でもないので、とりあえず紹介コードと、最新のプロジェクトのみ修正しました。
ご報告ありがとうございます。
今後も、体調管理に気を配りながら頑張りますので、ミスがあったらまた連絡いただけるとありがたいです。

う~む、作業効率は通常の70%位になってますね確かに^^;

Re:龍神録プログラミングの館について

Posted: 2008年7月17日(木) 21:02
by DIL
10章ではGV.hに
GLOBAL enemy_t enemy[ENEMY_MAX];
を追加するのが抜けています。
他の章で説明したのを見落としてたらすいませんm(_ _)m

Re:龍神録プログラミングの館について

Posted: 2008年7月17日(木) 21:46
by DIL
連レスすいません。
さっき気づいたのですが9章のchar.cppのch_move()関数内の最後にある
if(!(x<10 || x>FIELD_MAX_X || y<5 || y>FIELD_MAX_Y-5)){//計算結果移動可能範囲内なら
を修正して下さり
if(!(x<10 || x>FIELD_MAX_X-10 || y<5 || y>FIELD_MAX_Y-5)){//計算結果移動可能範囲内なら
になったようですが、これも少しずれているようで、正しくは
if(!(x<50 || x>FIELD_MAX_X || y<28 || y>FIELD_MAX_Y)){//計算結果移動可能範囲内なら
になると思います。

Re:龍神録プログラミングの館について

Posted: 2008年7月18日(金) 05:50
by 管理人
10章の件ありがとうございます。修正しました。

範囲の件ですが、私のであってると思いますがどうでしょう?

キャラのいる座標はあくまでも

0<x<FMX
0<y<FMY

であり、表示している座標とは違います。(左上端の点の座標がいくらかは無関係です)
それは後でインターフェイスやフィールドの表示位置を変えたいときに、defineの値を変えるだけで変更できるように、
キャラの座標は表示位置に依存しないようになっています。
つまり現在で言えば表示する範囲は

FX < x < FX+FMX
FY < y < FY+FMY

と成るという事です。

Re:龍神録プログラミングの館について

Posted: 2008年7月18日(金) 17:09
by DIL
確かに管理人さんのであってます。
すいません、こちらが誤解してました。

Re:龍神録プログラミングの館について

Posted: 2008年7月18日(金) 17:43
by DIL
とりあえず、10章までは書いてみたのですが何故か敵が表示されません。
管理人さんのソースと見比べてみたのですが、どこが違うのかわかりません。
考えられる原因としてはどのようなものがありますか?必要ならば、その必要な個所のソースも投稿します。

もうひとつ質問です。
enemy.cpp関数内の
void enemy_act(){
	int i;
	for(i=0;i<ENEMY_MAX;i++){
		if(enemy.flag==1){//その敵のフラグがオンなら
			enemy_pattern0(i);
			enemy.cnt++;
			enemy.img=enemy.muki*3+(enemy.cnt%18)/6;
			//敵が画面外に出たら消す
			if(enemy.x<-50 || FIELD_MAX_X+50<enemy.x || enemy.y<50 || FIELD_MAX_Y+50<enemy.y)
				enemy.flag=0;
		}
	}
}

のなかの
enemy[i].img=enemy[i].muki*3+(enemy[i].cnt%18)/6;
この一文が理解できません。
これはどのような処理をしているのでしょう。

Re:龍神録プログラミングの館について

Posted: 2008年7月18日(金) 20:03
by 管理人
エクセルデータが違うのです・・。
以前は全ての章に対して全てのデータを同梱していたので、
何百メガバイトになってしまっていました。
どうにか整理しようとして、データファイルは共通にしようと、何も考えずに全部変更したんですが、
よく考えたらその章ごとに違うエクセルデータだあるのに、統一してしまうと、
実行結果が動画のようにはならなくなってしまいますよね・・。

今エクセルデータは最新の章のものになっているので、表示できない可能性があります。
後々修正しようと思いますが、現在ではご自分でエクセルデータを準備していただくしかありません;

>enemy.img=enemy.muki*3+(enemy.cnt%18)/6;

まず、敵の画像は全部で9枚ありますよね。
そして.cntは無限にカウントされていく値です。
向きは0,1,2のどれかの値が入っています。
これは実際に画像をご覧頂ければわかりますが、
0~2の画像は左向き、3~5の画像は正面、6~8の画像は右向きです。…「1」
左向きの時は0->1->2->0->1->・・とループさせたく、
他の場合も同じように3カウントでそれぞれループさせたいのです。

しかし1/60ごとに画像がかわると早すぎます。そこで適度に速さをかえる為に、とりあえず「18カウント」を1区分とします。
18区分を6でわると3種類の数にわけられます。…「2」
現在の向きである0,1,2は3をかけると、「1」の数の最初の値に対応できますから、
そこに「2」をたせば「1」のループが完成します。
少しややこしいですよね。

Re:龍神録プログラミングの館について

Posted: 2008年7月18日(金) 20:20
by DIL
ありがとうございます。
なんとか理解できました。<!--1

龍神録の館の4章で…。

Posted: 2008年8月04日(月) 07:23
by
初めまして。
まだC言語始めたばかりでよくわからないので質問させて頂きます。

龍神録の館の4章で
typedef struct を使って新しい型を作りますよね?
それでmain.cppでch_t ch; とキャラクターデータ宣言してるところがあるのですが、
宣言の構文エラーと出てしまいます…
どうしたらいいでしょうか?

使ってるのはBCCdeveloperです。
これが悪いのかな?

簡単な質問すいません;;

Re:龍神録の館の4章で…。

Posted: 2008年8月04日(月) 10:46
by kazuoni
アンダーバー違いとかなんだか簡単な記述ミスな感じがします。

コードを見せてもらえますか?
その際<pre></pre>(<>は半角)でくくってくださいね。規約参照してください。

Re:龍神録の館の4章で…。

Posted: 2008年8月04日(月) 13:22
by 管理人
struct.hの中身とdefine.hの中身、GV.hの中身、function.hの中身をコピペしてみて下さい。

Re:龍神録の館の4章で…。

Posted: 2008年8月04日(月) 15:29
by
管理人さんありがとうございます^^
一応エラーは消えたみたいです。
(なぜかdefine.hが空になっていたみたいです)

ですがvistaのせいか知りませんが画像が表示されないので
環境設定をちゃんとやりなおしてから続きをやりますね。

ありがとうございました!
kazuoniさんもご足労ありがとうございました^^;