ランダム部屋作成プログラム

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
conio

ランダム部屋作成プログラム

#1

投稿記事 by conio » 17年前

現在、部屋をランダムに作るプログラムを作成しています。
(入るたびに部屋の位置や形が変わるダンジョンを作成する)
【WindowsXP:Visual C++ 2008 Express Edition】


大まかな流れとしては、

①フィールドを分割し、複数の領域を作り、領域の情報を格納する(境界線も1マス分使用)
②格納された領域情報を元に、部屋を作る
③作成された部屋から境界線まで、道を作る
④境界線で不要な部分(道以外の部分)を削除

という様になっているのですが、
一番左上に部屋が作られた場合、なぜか部屋の左上の頂点が欠けてしまう場合があります。
この原因が分からないので、もし分かる方が居れば教えてもらいたいです。
C言語歴は、まだ3ヶ月位です。

※このプログラムは部屋を表示するだけなので、キャラクタの移動機能はありません

管理人

Re:ランダム部屋作成プログラム

#2

投稿記事 by 管理人 » 17年前

4x4や5x5や6x6で確認したところ、
いつも

void connect(void)
{
	int w,i;
	for(w=0;w < z-1;w++){
	if(a[w].flag < 2){
		for(i=a[w].top; i<=a[w].bottom; i++){
			if(field[ i ][ a[w].c ] == 4)
				break;
			   field[a[w].c]=0;		


ここに捕まっていました。
3は正常に代入されていましたが、ここで0が代入された為空白になっているようでした。
0がどこかで代入しなおされているのなら、0がどこかで代入されていないかブレイクポイントなどを
使って確認していくのがバグ取りの基本かと思います。
ここの判定式や条件式を見直されたらよいかと思います。
 

conio

ありがとうございます

#3

投稿記事 by conio » 17年前

返答ありがとう御座います

もう一度条件式や選択処理を見直してみます
ここのサイトを見て、自分でもゲームを作成してみたいと思ったので、
完成するまで頑張ります

(余談ですが、ニコニコ動画で東方みたいなゲームを~という動画を見て、ここのサイトを知りました)

管理人

Re:ありがとうございます

#4

投稿記事 by 管理人 » 17年前

ありがとうございます。
一緒にがんばっていきましょう☆

閉鎖

“C言語何でも質問掲示板” へ戻る