Delphiでゲームのマップ作成【大至急】

このQ&Aのポイント
  • Delphiでゲームのマップ作成について困っています。よくわからないので、教えてください。
  • Delphiの授業で脱出ゲームを作っていますが、マップ作成について詳しく教えてください。
  • マップデータを変数に代入する方法について詳しく教えてください。マップデータはどのように設計すればいいのでしょうか?
回答を見る
  • ベストアンサー

Delphiでゲームのマップ作成【大至急】

Delphiでゲームのマップを作りたいのですがよくわかりません。【大至急お願いします!!】 今、学校の授業にてDelphiで脱出ゲームを作っています。 ホラーゲーム「青鬼」のようなマップを作ろうと思っています。 しかし、procedureをどのように作っていいかよくわかりません。 内容は マップデータを 変数map:array[1..45,1..30,1..20] of intger; に 代入する内容です。 それを45回よんでマップの変数にすべて入れたいです。 マップデータは 0を通路、5を木の左上、6を木の右上、7を木の左下、8を木の右下で 作りました。 以下のような感じです。 6,8,6,8,6,8,6,8,6,8,6,8,6,8,6,8,6,8,6,8, 5,7,5,7,5,7,5,7,5,7,5,7,5,7,5,7,5,7,5,7, 6,8,0,0,0,0,0,8,6,8,6,8,6,8,6,8,6,8,6,8, 5,7,0,0,0,0,0,7,5,7,5,7,5,7,5,7,5,7,5,7, 6,8,0,0,6,8,6,8,0,0,6,8,6,8,6,8,6,8,6,8, 5,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,7, 6,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,8, 5,7,5,7,0,0,5,7,5,7,0,0,5,7,5,7,0,0,5,7, 6,8,6,8,0,0,6,8,6,8,0,0,6,8,6,8,0,0,6,8, 0,0,0,0,0,0,5,7,5,7,0,0,5,7,5,7,0,0,5,7, 0,0,0,0,0,0,6,8,6,8,0,0,6,8,6,8,0,0,6,8, 0,0,5,7,0,0,5,7,0,0,0,0,5,7,5,7,0,0,5,7, 0,0,6,8,0,0,6,8,0,0,0,0,6,8,6,8,6,8,6,8, 0,0,5,7,0,0,5,7,5,7,5,7,5,7,5,7,5,7,5,7, 6,8,6,8,0,0,6,8,0,0,0,0,0,0,0,0,6,8,6,8, 5,7,5,7,0,0,5,7,0,0,0,0,0,0,0,0,5,7,5,7, 6,8,6,8,0,0,0,0,0,0,6,8,6,8,0,0,6,8,6,8, 5,7,5,7,0,0,0,0,0,0,5,7,5,7,0,0,0,0,0,0, 6,8,6,8,6,8,6,8,0,0,6,8,6,8,0,0,0,0,0,0, 5,7,5,7,5,7,5,7,0,0,5,7,5,7,5,7,5,7,0,0, 6,8,6,8,0,0,0,0,0,0,6,8,6,8,6,8,6,8,0,0, 5,7,5,7,0,0,0,0,0,0,5,7,5,7,5,7,5,7,0,0, 6,8,6,8,0,0,6,8,0,0,0,0,0,0,6,8,6,8,0,0, 5,7,5,7,0,0,5,7,0,0,0,0,0,0,5,7,0,0,0,0, 6,8,6,8,0,0,6,8,6,8,6,8,6,8,6,8,0,0,0,0, 5,7,5,7,0,0,5,7,5,7,5,7,5,7,5,7,0,0,5,7, 6,8,0,0,0,0,6,8,6,8,6,8,6,8,6,8,0,0,6,8, 5,7,0,0,0,0,5,7,5,7,5,7,5,7,5,7,5,7,5,7, 6,8,0,0,6,8,6,8,6,8,6,8,6,8,6,8,6,8,6,8, 5,7,0,0,5,7,5,7,5,7,5,7,5,7,5,7,5,7,5,7, 代入出来ればどんな方法でも構いません。 本当に困っているので、ご回答よろしくお願いします!!

質問者が選んだベストアンサー

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.1

マップデータはどんな形で持っているのか? ファイルにしているのなら、45回分全部1つのファイルの入っているのか?それとも分割しているのか? ファイルの読み込み方法は理解しているのか? Delphiの基本的な文法は理解しているのか? どこまで出来て、どこがわからないのか不明です。 まずは、分かっているところだけでも補足に書いてください。

kurearad
質問者

お礼

返信遅くなってしまって大変申し訳ありません。 学校の授業で必要だったのですが、 なんとか解決いたしました。 お待たせしてしまったので ベストアンサーにさせていただきます。 大変申し訳ありませんでした。 ありがとうございました。

関連するQ&A

  • このホラーゲーム知っていたら教えてください!

    PS1のあるホラーゲームを探しています。 「きゃああああああ」とか「いやあああああ」っていう 変なタイトルのゲームだったはずです。 内容は出られなくなった学校から脱出するというもので、 そのゲームには首を振りながら追いかけてくる女が出てきました。 誰か、これかなと思ったゲームがあった教えてください。 お願いします!

  • jquery ui mapについて

    jquery ui mapを使って以下のようなソースで マーカーを表示させ、MarkerClustererでマーカをまとめています。 $('#map_canvas').gmap({ 'center': new google.maps.LatLng(35.873686,139.657075)}).bind('init', function(evt, map) { var data = new Array(); data.push({lat:'35.681382', lng:'139.766084',name:'東京駅',images:'http://google-maps-icons.googlecode.com/files/friends.png'}); data.push({lat:'35.684801', lng:'139.766086',name:'大手町駅',images:'http://google-maps-icons.googlecode.com/files/friends.png'}); for ( var i = 0; i < data.length; i++ ) { $('#map_canvas').gmap('addMarker', { 'icon': data[i].images,'position': new google.maps.LatLng(data[i].lat, data[i].lng) } ).click(function() { $('#map_canvas').gmap('openInfoWindow', { 'content' : data[i].name }); }); } $('#map_canvas').gmap('set', 'MarkerClusterer', new MarkerClusterer(map, $(this).gmap('get', 'markers'))); }); マーカーの緯度経度とインフォウィンドウの内容を配列にしています。 配列の緯度経度からマーカーは表示できたのですが、 マーカーをクリックすると、インフォウィンドウが開かず、「undefined」となります。 わかる方、ご教授宜しくお願いいたします。

  • Delphi6で、実行後、一時停止をしたい。

    Delphi6を使ってPascalを勉強しています。 Delphi6でプログラムを記述し実行すると、MS-DOSが出てきて実行します。 しかし、実行した後すぐに終了してしまうので困っています。 合っているのか確認できません。 そのために一時停止用に型宣言のときに、 x:string;  end.の前に  readln(x)  を付けて止めるようにしているのですが、 プログラムによって止まるのと止まらないのがあります。 どうしてなのでしょうか。 ↓は止まりません。どうしたら止まってくれますか? 配列にデータを追加するプログラムです。 program ng; {$AppType Console} uses SysUtils; var  i, j, n, dat : integer;  a : array[1..100] of integer;  {一時停止のため変数名}  x:string; begin {配列にデータを入力する}  n := 6;  a[1] := 20; a[2] := 30; a[3] := 60;  a[4] := 70; a[5] := 80; a[6] := 90;  writeln('(1)現在の配列の内容');  for i := 1 to n do write(a[i]:3);  writeln;  writeln('(2)挿入するデータ?');  read(dat);  repeat    writeln('(3)挿入する位置?');    read(i);  until(i < n) and (i > 0); {配列への挿入}  for j := n downto i do a[j+1] := a[j];  a[i] := dat;  n := n+1; {挿入後の配列を表示}  writeln('(4)挿入後の配列の内容');  for i := 1 to n do write(a[i]:3);  {一時停止のためのread文}  readln(x) end.

  • Delphiの定数とローカル変数の初期化

    Embarcadero RAD Studio 2010 Architect Trialというお試し版を使っています。 constを使って定義した定数をローカル変数の初期化の際に以下のようになります。 [DCC エラー] Test.pas(39): E2026 定数式が必要です これでは、定数を1箇所で定義しても定数が使えず即値なので、 プログラム作成やメンテナンスに困ると思うのですが、 昔、Delphiを使っていたのですが忘れてしまって、どうしていたか思い出せませんでした。 皆さんは定数をどのように定義して、どのように使っているのでしょうか? //■定義 unit DEFUnit; interface // 定数・変数 const DAT1 :Integer = 10; const DAT2 :Integer = 20; const DAT3 :Integer = 30; implementation // なし end. //■利用 unit TestUnit; interface uses DEFUnit; var data : Array [0..2, 0..1] of Integer = ( // 先手駒 (DAT1, 1), (DAT2, 2), (DA3T, 3) ); implementation end.

  • うろ覚えのゲームについて

    ゲームタイトル・内容ともにうろ覚えのゲームがありまして、ゲームのタイトルが知りたいです。 ハードはプレイステーション、ジャンルはホラーゲーム、発売時期は99年前後だったと思います。 内容は…  オープニングムービーにて、主人公の少女が謎の影から逃げ惑い、何とか交番まで辿り着き警官に助けを求めるも、警官は既に殺されていて、少女のほうに倒れてくる。警官の背中には巨大なハサミ(?)が…。  バッドエンドの一つでは、なんとか洋館(?)から脱出に成功しタクシーに乗り安堵していると、なんとタクシーの運転手が振り切ったはずの殺人鬼で、少女は殺されてしまう…といったものがあったと思います。 私の記憶ではクロックタワーだったと思うのですが、いまいち自信がないです。情報が乏しいですが、わかる方がいましたらご教示ください。

  • 【奇数・偶数のときの処理】

    フレーム1に下記のソースを入れる。 //data受け取り data = "X11112222, Y99999999, X255555, Y123456789"; data_array = new Array (); //↓カンマで区切った数だけ順番にdata_arrayに代入。 data_array = data.split (","); trace ("$data_array=" + data_array); //data_arrayの中身をXとYに分ける。 for (i = 0; i < data_array.length; i++) { ans = i + 1; //0から割ろうとすると違うデータができあがる trace ("$ans=" + ans); //2で割って、余りをansに代入。 ans %= 2; trace ("$ans=%" + ans); //ifで使う変数 ctr_x = 1; ctr_y = 0; if (ans == 0) { data_array_xy = new Array (); data_array_xy[ctr_x] = new Array (); //割り切れるなら偶数Yに(値を代入) trace ("*偶数"); data_array_xy[ctr_x][0] = data_array[i]; trace ("$data_array[" + ctr_x + "]" + data_array[i]); trace ("$data_array_xy[" + ctr_x + "][1] =" + data_array_xy[ctr_x][0]); //CountUP ctr_x = ctr_x + 1; } else { //割り切れないなら奇数Xに(値を代入) data_array_xy = new Array (); data_array_xy[ctr_y] = new Array (); trace ("*奇数"); data_array_xy[ctr_y][1] = data_array[i]; trace ("$data_array[" + ctr_y + "]" + data_array[i]); trace ("$data_array_xy[" + ctr_y + "][1] =" + data_array_xy[ctr_y][1]); //CountUP ctr_y = ctr_y + 1; } } 最終的に・・・ data_array_xy[0][0]の中身が"X11112222" data_array_xy[0][1]の中身が"Y99999999" data_array_xy[1][0]の中身が"X255555" data_array_xy[1][1]の中身が"Y123456789" という風に中をに値を代入していくには どうすればよいでしょうか?

    • ベストアンサー
    • Flash
  • C言語の配列とポインタについて

    C言語の配列とポインタについてわからないことがあります。 以下のソース例は、10個の値の平均値を求めるプログラムです。 コメントを挟んだ部分が疑問点です。 【ソース例】 #include <stdio.h> int getaverage(int *data); int main(void) { int average,array[10] = {15,78,98,15,98,85,17,35,42,15}; average = getaverage(array); printf("%d\n",average); return 0; } int getaverage(int *data) { int i,average = 0; for (i = 0;i < 10;i++) { average += data[i]; /*ポインタ変数なのに? */ } return average / 10; } 【実行例】 49 このdata[i]はポインタ変数であり、 配列arrayの i 番目の要素であるarray[i]の"アドレス" が代入されているはずだと思うのですが、 なぜ通常の整数変数であるaverageと数値計算が出来、正しい結果が出たのでしょうか? あたかもdata[i]には、 array[i]の"アドレス"ではなく、 array[i]の"メモリの中身"が代入されているようです。 どういうことでしょうか? 回答よろしくお願いします。

  • PL/SQLに関して

    PL/SQLに関しての質問です。 1、プロシージャの内部にファンクションをネストするなどということはできるのでしょうか? (内部ファンクションのような感じで) 2、プロシージャからファンクションを呼び出し、ファンクションの戻り値をレコード型変数にした場合、ファンクションでSELECTしたレコード件数が0件であった場合、例外ブロックのWHEN no_data・・・THEN で、RETURN NULLで戻すことはできるでしょうか? (呼び出し側で、レコード型変数にNULLを代入できますか?) 3、ObjectBrowserからストアドプロシージャを実行するとき、引数ありのストアドプロシージャを実行する方法を教えてください。(または参考WEBサイトを教えてください。) いずれも、試す環境が今ないため、ご回答のほどよろしくお願いします。

  • カレントmdbをopenする宣言

    参照がDAOで、mdb内のテーブルのデータを変数に代入するために、 変数.Open "SQL内容" この文を使いたいのですが、この変数の宣言の記述は、 どう書いたら良いのか分かりません...

  • 月の最終日を取得する(月は変数が入る)

    Public Const 今年度 = "2008" Public 月 As Long Sub test() 月 = 3 MsgBox CDate(今年度 & "/" & 月 & "/31 ") End Sub なら3月の最終日を無理やり表示させられますが 4月なら30日、5月なら31日と変数を代入した場合もその月の最終日を表示させるにはどうすればいいのでしょうか? ・月は他のプロシージャーで代入しています。(今月と言う意味ではないです。) ・月はLong型よりdate型のほうがいいのでしょうか? ・たくさんのプロシージャーに今年度 を代入している為Public Constで宣言しています。ただこれのデータ型はどうなのでしょうか? ・エクセル2003です。 よろしくお願い致します。