ヴァライアス製作日記

スポンサードリンク⇒
現在、ヴァライアスといったWEBゲームを作成しています。
その中での進行状況、PHP・Javascriptの書き方などを紹介しながら目指していきたいと思います。目指せ!公開予定1月!の予定で進めていきます。
コメント・ご要望等御座いましたらコメントお願い致します。
▼スポンサードリンク

製作日記
■2008年04月20日

◇戦闘フラグ



移動完了時に確率を求め、戦闘フラグを立てます。
今は1/5の確率でモンスターが出ます。

モンスターが出ると、戦うと逃げるコマンドを表示します。
モンスターが出現すると、移動が不可能となります。
(移動しても、エラーとなって動けません)

これを実現するために、イベントフラグを立てておきます。
モンスターが出るとONにし、倒すか逃げない限り、OFFにはなりません。


まだ戦闘方法は決めていませんが、モンスターのステータス、キャラクターのステータスを決めるだけでいっぱいいっぱいです。


※適当に決めると後でテーブル構造を変更しないといけませんからね・・・。

設計はちゃんとしておかないとなぁ。
▼スポンサードリンク
コメント:名前  メッセージ
■2008年04月19日

◇フィールドマップ

フィールドマップのイメージがだんだんと出来てきました。




画像・移動の仕組みは下記の通りです。

1.MAPは主人公の座標位置を中心として5×5マス表示する

2.MAP毎にデフォルト背景画像を設定し、背景画像として読み込む
  画像は、テーブルのTD属性に画像ファイルとして設定する

3.キャラクターは中心座標に表示する

4.背景画像を埋め込んでいき、障害物・人物などはその上に別で定義しているDBから読み込む

5.移動するときに、先ず移動先の座標を求め、本場所が定義したフィールド外から出るのか、それとも障害物などが含まれ移動可能か調べる

6.何もなければ移動可能で、障害物があれば移動不可能

7.移動後にイベントDBからイベントが起こるか判定する


のように考えていけばフィールドが出来るかな?と思います

今はデバッグのため、座標位置などを分かりやすくする為、表示しています



あとは戦闘フラグ・イベントフラグを作らないとなぁ
▼スポンサードリンク
コメント:名前  メッセージ
■2008年04月15日

◇フィールド画面の基礎

座標軸によるフィールドの表示の概要がなんとなく決まりました。
プログラムも組めるかな?ということで簡単に作りました。




■が移動不可で□が移動可能です。
30×30マスを超えると移動不可になります。

あとはイベント・画像などを埋め込むだけですね。

画像には移動可能の画像、移動不可能の画像、
イベントとしては、敵・宝箱などなど決めていかないといけません。
コメント:名前  メッセージ
■2008年04月14日

◇フィールド画面

フィールドの表示方法はどのようにすべきか悩んでいます。

1.移動の概念はなく、町⇔町と一気に進めるようにする
2.フィールドはきちんと歩く!
3.一方通行だけの概念とする


フィールドは色々と見つける楽しみがあるので2番でしょうが、1マス1マス移動するのも面倒かなぁと思いますし。


ダンジョンでは3番にして、移動するたびにイベントを起こしてGOALを進めていく考えでいます。

フィールドは洞窟・宝箱・他プレイヤーも表示させて、イベントを起こしたいと思います。



フィールドは座標軸で管理し、フィールドが見える範囲を決定し、移動のたびに該当フィールドに他キャラがいないか判定していこうと思います。
コメント:名前  メッセージ
■2008年04月13日

◇RPG始めました

以前からWEBRPGを作りたいなぁと思いつつ、ようやく仕様が固まってきましたのでプログラムを書き始めました。

そこで、折角なので作るに当たって得たノウハウをどんどん公開していきたいと思います。

そうなると、結構なボリュームの設計とデータ打ち込み、プログラム作成とかなり規模が大きそうな感じがしてきました・・・。

いったいいつ完成するんだろうなぁ・・・。

画面イメージを簡単に作ってみました。
やりたいことと一致しなければどんどん変わっていきそうだけど。



ではでは皆さんよろしくお願いします!
コメント:名前  メッセージ


最新の日記
調整中・・・



最新のコメント
調整中・・・



PHPリファレンス
■2008年04月14日

◇テーブルの作成

SQLによるテーブルの作成は以下のように実行します。

CREATE TABLE テーブル名
(
id integer,
name character varying,
zahyou1 integer,
zahyou2 integer
);



上記SQLはダンジョンの内容を明記したテーブルです。
一応今の考えているダンジョンのパターンは、一方方向で進むたびにイベントが発生する仕組みで考えています。


START⇒□⇒□⇒□⇒□⇒□⇒□⇒□⇒END

□がイベントの発生で、ENDがGOALとなります。
GOAL前にはBOSSモンスター、途中にはランダムに発生するイベントを入れます。
□は予めイベントを設定するか、ランダムに設定するかは現在考え中です。

ダンジョンの挿入方法は下記の通りです。

insert into テーブル名 values

('1','ダンジョン名','1','1');




JavaScriptリファレンス
■2008年04月20日

◇ボタンをクリック後、非活性にする方法

下記の内容をSCRIPT内に記述しておきます。
()内はボタンのIDとなります。

document.getElementById("battle_button1").disabled = true;

ボタンは下記のように記述します。
<input type="submit" value="戦う" onclick="battle("xxx.php")" id="battle_button1">

これでボタンをクリック後、ボタンは非活性になります。
戻す場合はdisableとします。

■2008年04月13日

◇吹き出し(ポップアップ)の表示

ボタンをクリックした時に、同じブラウザ内にメッセージボックスを表示することが可能です。

<script type="text/javascript">
<!--
function popup(){

pObj = window.createPopup();
popObj = pObj.document.body;
popObj.innerHTML = "表示したい内容";

<!-- メッセージボックスの背景 -->
popObj.style.backgroundColor = "white";

<!-- メッセージボックスの文字色 -->
popObj.style.Color = "black";

<!-- メッセージボックスの文字色 -->
popObj.style.Color = "black";

<!-- メッセージボックスのフォント -->
popObj.style.fontFamily = "Trebuchet MS";

<!-- メッセージボックスのスクロールバーの色 -->
popObj.document.body.style.overflow = "auto";
popObj.document.body.style.scrollbarFaceColor="white";
popObj.document.body.style.scrollbarTrackColor="white";
popObj.document.body.style.scrollbarShadowColor="black";
popObj.document.body.style.scrollbarHighlightColor="black";
popObj.document.body.style.scrollbarDarkShadowColor="white";
popObj.document.body.style.scrollbar3dLightColor="white";
popObj.document.body.style.scrollbarArrowColor="black";

<!-- メッセージボックスの表示方法 -->
<!-- ()内は 左座標,上座標,横幅,縦幅,オブジェクト -->
pObj.show(10,10,200,100,document.body);

}
// -->
</script>

使い方はボタン内で関数popupを明記します
<INPUT TYPE="image" src="xxx.gif" VALUE="submit" alt="" border="0" OnClick="popup()">




HTMLリファレンス
■2008年04月15日

◇座標軸によるMAPの表示

30×30マスの中で、現在地を含む5×5マスのフィールドを表示するプログラム。

■は座標外、□は座標内を表します。
移動すると座標が変わっていきます。

イベント判定・壁判定など何もしていませんが、概念・作り方はなんとなくわかりました。

//座標軸
$x = $_POST["x"];
$y = $_POST["y"];
$za = $_POST["za"];

//デフォルト表示(本番では消す)
if($x==""){
$x=10;
}
if($y==""){
$y=10;
}

//
$xx=$x;
$yy=$y;


//行動する
if($za==1){
//↑
$yy=$y+1;
}
if($za==2){
//↓
$yy=$y-1;
}
if($za==3){
//←
$xx=$x-1;
}
if($za==4){
//→
$xx=$x+1;
}

//該当座標の移動の確認
$x=$xx;
$y=$yy;
//ここに関数を入れて移動可能か判定する

$x_s = $x - 2;
$x_e = $x + 2;
$y_s = $y + 2;
$y_e = $y - 2;

print "<table>";

//現在の座標
$zahyou=0;

//全MAPを表示する
for($i=$y_s;$i>=$y_e;$i--){

print "<tr>";
for($j=$x_s;$j<=$x_e;$j++){
print "<td>";
if($i<1 || $j<1 || $i>30 ||$j>30){
$locate = "■($i,$j) ";
}
else{
$locate = "□($i,$j) ";
}

print $locate;
print "</td>";
}
print "</tr>";
}

print "</table>";

print "<table><tr>";
print "<td>";
print "<form method="post" action="main.php#field">";
print "<input type=submit name="" value="↑">";
print "<input type=hidden name="za" value="1">";
print "<input type=hidden name="x" value="$x">";
print "<input type=hidden name="y" value="$y">";
print "</form>";
print "</td><td>";
print "<form method="post" action="main.php#field">";
print "<input type=submit name="" value="↓">";
print "<input type=hidden name="za" value="2">";
print "<input type=hidden name="x" value="$x">";
print "<input type=hidden name="y" value="$y">";
print "</form>";
print "</td><td>";
print "<form method="post" action="main.php#field">";
print "<input type=submit name="" value="←">";
print "<input type=hidden name="za" value="3">";
print "<input type=hidden name="x" value="$x">";
print "<input type=hidden name="y" value="$y">";
print "</form>";
print "</td><td>";

print "<form method="post" action="main.php#field">";
print "<input type=submit name="" value="→">";
print "<input type=hidden name="za" value="4">";
print "<input type=hidden name="x" value="$x">";
print "<input type=hidden name="y" value="$y">";
print "</form>";
print "</td></tr></table>";

実行結果


■2008年04月13日

◇画像の重ね合わせ

テーブルのTD要素の背景に画像を設定し、更に普通に画像を表示させると画像を2つ重ねさわせることが出来ます。



>HTML

<td class="mati" width="10" height="25"><INPUT TYPE="image" src="test.gif" VALUE="submit" alt="" border="0" OnClick="popup()"></td>

>スタイルシート
TD.mati {
background-image:url('test.png');
}