RPGのマップ表示について

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

RPGのマップ表示について

#1

投稿記事 by 赤春 » 14年前

 初めまして、赤春と申します。高校二年生です。
 プログラミング歴は2週間くらいで、今まで作成したのは「サイコロ」とか「おみくじ」とか簡単なモノです。
 そんなど素人な状態ですが宜しくお願いしますM(、、)M


 作成したいジャンルはRPG探索ホラーゲームです(いちろ少年忌憚などが、イメージに近いです)。

 「13歳から始めるゼロからのC言語 ゲームプログラミング教室」を購入してプログラミングをやってみた訳ですが、マップが表示されません。
 特殊なC言語を使っていると言うことで、一般的なプログラミングにしてみた(つもり)なのですがやはり起動しません。
 ドット絵もどこから落とせば良いのか分からなかったので、50種類くらいドット絵で書きました(マイピクチャに保存されています)。
 ……多分、無駄なことをしているのでしょうがw
 その、自作ドット絵を用いてとりあえずマップの一部を試しに作りたいと言うことで、今回質問させて頂きます。

 実際に私が組んだプログラムを見て欲しいです。
 多分、グチャグチャしています。「こう書いたら良い」などの意見もお願いしますM(。。)M

コード:

#include <windows.h>
int winMain(HINSTANCE hInst,HINSTANCE hPrevInst.LPSTR cmbLine, int csdShow){
}

//マップデータ

#define MAXWIDTH 13
#define MAXHIGHT 11

int g_mapdata[MAXHIGHT][MAXWIDTH] = {
	// 0  1  2  3  4  5  6  7  8  9 10 11 12 13
	{  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2},//0
	{  3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3},//1
	{  3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3},//2
	{  3, 3, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 3},//3
	{  3, 3, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 3},//4
	{  3, 3, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 3},//5
	{  3, 3, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 3},//6
	{  3, 3, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 3},//7
	{  9, 1, 1, 1, 1.10, 6,11, 1, 1, 1, 1,12},//8
	{  4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4},//9
	{  5, 5, 5, 5, 5, 5, 6, 5, 5, 5, 5, 5, 5}//10
};

//マップの部品の画像
char *g_images[]={
	"C:\\Documents and Settings\\Administrator\\デスクトップ\\ドット絵 map\\black wall on-left -corner-.png",
	"C:\\Documents and Settings\\Administrator\\デスクトップ\\ドット絵 map\\black wall on-under.png",
	"C:\\Documents and Settings\\Administrator\\デスクトップ\\ドット絵 map\\black wall on-right -corner-.png",
	"C:\\Documents and Settings\\Administrator\\デスクトップ\\ドット絵 map\\black wall left right.png",
	"C:\\Documents and Settings\\Administrator\\デスクトップ\\ドット絵 map\\gray wall.png",
	"C:\\Documents and Settings\\Administrator\\デスクトップ\\ドット絵 map\\gray under wall.png",
	"C:\\Documents and Settings\\Administrator\\デスクトップ\\ドット絵 map\\field.png",
	"C:\\Documents and Settings\\Administrator\\デスクトップ\\ドット絵 map\\chair.png",
	"C:\\Documents and Settings\\Administrator\\デスクトップ\\ドット絵 map\\garbage box.png",
	"C:\\Documents and Settings\\Administrator\\デスクトップ\\ドット絵 map\\black wall under-left -corner-.png",
	"C:\\Documents and Settings\\Administrator\\デスクトップ\\ドット絵 map\\black wall under-right-on.png",
	"C:\\Documents and Settings\\Administrator\\デスクトップ\\ドット絵 map\\black wal under-left-on.png",
	"C:\\Documents and Settings\\Administrator\\デスクトップ\\ドット絵 map\\black wall under-right -corner-.png"
};

//関数プロトタイプ宣言
void DrawMap();
{
int main()
	gcls();
	gfront();

	DrawMAp():
}

//マップ表示
void Draw Map(){
	for(int y = 0;y<MAXHEIGHT; y++){
		for(int x=0; x<MAXWIDTH; x++){
			gimage(g_images[g_mapdata[y][x]],x*62,y*62);
		}
	}
}

 これに対して出たビルド

プロジェクト 'BccWin - Release' 用の中間ファイルおよび出力ファイルを削除しています
--------------------構成: BccWin - コンソール型 * Release--------------------
Visual Windows for BC++, Copyright (c) 2003-2011 M. Yasue: bccwin.exe
ビルド実行中.....
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
..\kage - wana.c:
エラー E2293 ..\kage - wana.c 2: ) が必要
エラー E2040 ..\kage - wana.c 44: 宣言が正しく終了していない
*** 2 errors in Compile ***

プログラム作成エラーによる終了.....
--- bccwin.exe: 2011年5月25日 23時0分 ---


 出ているのは、二行目の
int winMain(HINSTANCE hInst,HINSTANCE hPrevInst.LPSTR cmbLine, int csdShow){
 に” ) ”が必要
 44行目の” { ” に、宣言が正しく終了していない

 ……??? 

 当初は30個くらいビルドエラーが出ましたが……。何とかここまで減らしました。
 ですが、どうしてもこの二つのエラーの原因が分かりません! 
 どなたか、教えてください! お願いしますM(、、)M

 ちなみに、使っている環境はVisual windows for B++です。

 宜しくお願いしますM(、、)M

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: RPGのマップ表示について

#2

投稿記事 by h2so5 » 14年前

まずwinMain関数の中身が空なのが問題です。
winMain関数からプログラムが実行されるので、winMain関数の中身がないと何も実行されません。

コード:

//関数プロトタイプ宣言
void DrawMap();
{
int main()
gcls();
gfront();

DrawMAp():
}
この部分はC言語の文法に全く沿っていませんし、意味のない不要なコードです。
何をするつもりで書いたのでしょうか?

また、画像ファイルはマイピクチャの画像を直接参照するのではなく
プログラムの近くにimageフォルダなどを作り、そこに画像をコピーして使用するのが望ましいです。
このまもでは配布するときに困りますので。

あと投稿するときはソースをcodeタグで囲ってください。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: RPGのマップ表示について

#3

投稿記事 by softya(ソフト屋) » 14年前

とりあえずcodeタグを付けさせていただきました。

「13歳から始めるゼロからのC言語 ゲームプログラミング教室」の入門編?でしょうか?
中身を読んだことがないのですが、本自体の内容は特殊な専用ライブラリとかで書かれていませんか?

>特殊なC言語を使っていると言うことで、一般的なプログラミングにしてみた(つもり)なのですがやはり起動しません。

C言語としては一般的だと思いますが、使われているライブラリが特殊みたいですね。
「自習室ソースビューア」にあったソースコードですが、本に載っているのはこんな感じですか?
http://i-libro.net/game/gameupload/show ... ?gameid=95

グラフィカルコンソールってのが使われているみたいですね。調べてみます。

> ドット絵もどこから落とせば良いのか分からなかったので、50種類くらいドット絵で書きました(マイピクチャに保存されています)。
> ……多分、無駄なことをしているのでしょうがw

フリーの素材もありますが、自分の目的に合うものは少ないので自分で描けるならそれに越したことは無いです。

とりあえず、ソースコードを見させていただいた感想は、「13歳から始めるゼロからのC言語 ゲームプログラミング教室」のサンプルコードからかけ離れていませんか?

#include <windows.h>
int winMain(HINSTANCE hInst,HINSTANCE hPrevInst.LPSTR cmbLine, int csdShow){
}
の3行は不要です。
その他にもC言語の文法的におかしな所が散見されます。

C言語の文法について、「13歳から始めるゼロからのC言語 ゲームプログラミング教室 入門編」でどこまで書かれているか分かりませんが、C言語の学習ができるサイトをご紹介しますのでこちらを併読してください。
「苦しんで覚えるC言語」
http://9cguide.appspot.com/
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

赤春

Re: RPGのマップ表示について

#4

投稿記事 by 赤春 » 14年前

 返信が遅れてしまい申し訳ありませんM(、、)M

≫h2so5 様

 Winmain関数が空、ですか。
 これは動画を見ながら書いてみたのですが……。正直、何を中に入れたら良いのかすら分かっていない状態で(´・ω・`;)
 winmain関数の中に入れるとしたら、例えばどのような関数になりますでしょうか? 些少ですが、教えて頂けるとありがたいです。

 そして、≪プログラムの近くにimageフォルダを作り≫とはどのようにすれば良いのでしょうか? 
 マイピクチャのフォルダを新規でもう一つ作ると言うこと……では無いですよね? 


 
≫softya(ソフト屋) 様

 「13歳から始めるゼロからのC言語 ゲームプログラミング教室」に関しては、サンプルコードをそのまま書いたのに、ビルドエラーが大量に出たので諦めました。単純に書き間違えかもしれませんが、ビルドエラーを見てもさっぱり分からなかったので、単純に諦めました。そして、このような見るに耐えがたいコードになってしまったことに、まずお詫び申し上げます。

 codeタグで囲って下さりありがとうございましたM(、、)M
 紹介されたサイトを読んでみます。

 親切にありがとうございました(≧ω≦)ノ

アバター
bitter_fox
記事: 607
登録日時: 15年前
住所: 大阪府

Re: RPGのマップ表示について

#5

投稿記事 by bitter_fox » 14年前

赤春 さんが書きました:  「13歳から始めるゼロからのC言語 ゲームプログラミング教室」に関しては、サンプルコードをそのまま書いたのに、ビルドエラーが大量に出たので諦めました。単純に書き間違えかもしれませんが、ビルドエラーを見てもさっぱり分からなかったので、単純に諦めました。そして、このような見るに耐えがたいコードになってしまったことに、まずお詫び申し上げます。
まずコンパイルエラーが大量に出たからと言って諦めないでください、コンパイルエラーはコンピュータからの語りかけです。(http://www.hyuki.com/dream/interact.html)
決して拒絶ではありません、何とかコンピュータに分かってもらってください。
また、最初は「このコンパイルエラーの原因は何だろう」と皆目見当がつかないでしょうが、何度も同じエラーを出してそれを根気よく直すことによってそのエラーの主な原因というのがすぐに頭に浮かぶようになります。

さて、一つ目のコンパイルエラーの原因ですが、まず

コード:

int winMain(HINSTANCE hInst,HINSTANCE hPrevInst.LPSTR cmbLine, int csdShow){
}
のhPrevInst.LPSTRが原因です。
ここはhPrevInst, LPSTRとなっているべきです。(そもそもここの部分が不要であるということは置いといて。)
また、winMainは誤りです。C言語では大文字小文字を区別しますので正しくはWinMainとなります。

二つ目のコンパイルエラーは

コード:

void DrawMap();
{
int main()
    gcls();
    gfront();
 
    DrawMAp():
}
void DrawMap();の;が来たことによってプロトタイプ宣言になっているのに{}と新しい関数ブロックが始まってしまっているせいです。(それからDrawMApもDrawMapとなるべきでしょう)
(今までの流れを見ると次が正しいのかな・・・?)

コード:

void DrawMap();

int main()
{
	gcls();
	gfront();

	DrawMap();
}

コード:

 
//マップ表示
void Draw Map(){
    for(int y = 0;y<MAXHEIGHT; y++){
        for(int x=0; x<MAXWIDTH; x++){
            gimage(g_images[g_mapdata[y][x]],x*62,y*62);
        }
    }
}
またDrawとMapの間にスペースが入ってしまっています。ここも問題になるのでDrawMapと直しておいてください。

あと、borlandのC言語コンパイラ(5.5.1)ってC99に対応してましたっけ?

[hr][修正]
ブロック->関数ブロック
またここもDrawと->またDrawと

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: RPGのマップ表示について

#6

投稿記事 by softya(ソフト屋) » 14年前

赤春 さんが書きました:Winmain関数が空、ですか。
 これは動画を見ながら書いてみたのですが……。正直、何を中に入れたら良いのかすら分かっていない状態で(´・ω・`;)
 winmain関数の中に入れるとしたら、例えばどのような関数になりますでしょうか? 些少ですが、教えて頂けるとありがたいです。
「13歳から始めるゼロからのC言語 ゲームプログラミング教室」のゲームの作りかたと他のゲームライブラリでのゲームの作りかたは全く違います。
なので、「13歳から始めるゼロからのC言語 ゲームプログラミング教室」のグラフィカルコンソールを使うのか、はたまたWin32APIやDXライブラリを使うのかでwinmainが必要かどうかが決まってきます。
私としては「13歳から始めるゼロからのC言語 ゲームプログラミング教室」のルールに則ってmainで始まるプログラミングから始められることをおすすめしたいと思います(winmainは不要です)。
赤春 さんが書きました: そして、≪プログラムの近くにimageフォルダを作り≫とはどのようにすれば良いのでしょうか? 
 マイピクチャのフォルダを新規でもう一つ作ると言うこと……では無いですよね? 
これはソースコードのあるフォルダに、imageフォルダを作ると言うことです。
赤春 さんが書きました:「13歳から始めるゼロからのC言語 ゲームプログラミング教室」に関しては、サンプルコードをそのまま書いたのに、ビルドエラーが大量に出たので諦めました。単純に書き間違えかもしれませんが、ビルドエラーを見てもさっぱり分からなかったので、単純に諦めました。
そこからがプログラミングの始まりですので、そこで諦めるのはもったいないです。
分からなかったら、そのエラーの出たコードとエラーメッセージを貼りつけてもらえれば回答できると思いますのでやり方を理解するまでは、こちらを利用してください。

[おまけ]
グラフィカルコンソールのダウンロードと設定。赤春さんのサポートをされる方はご利用ください。
「わくわくプログラミング自習室|マニュアル」
http://www.i-libro.net/game/gconsole/whatsgcon.php
[追記] グラフィカルコンソールの動作時はgconsole_bin.zipに含まれるGraphicalConsole.exeが動いている必要があります。
グラフィックの描画はGraphicalConsole.exeが実際には行う仕様になっていて、作ったプログラムからはGraphicalConsole.exeに向かって命令(ウィンドウメッセージ)が投げられています。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

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