検索
ホームページphp教程php手册PHP Webゲーム開発入門チュートリアル1(Webゲームデザイン)

PHP Webゲーム開発入門チュートリアル1(Webゲームデザイン)

Jun 13, 2016 pm 12:21 PM
php1つ入門チュートリアル開発するフレームゲームプログラム単純ウェブページ

1. シンプルなプログラムフレームワーク。
ウェブゲーム プログラムは次のとおりです:
3 つの部分。
1 つ目はデータ フローです。 2つ目は手続きです。 3つ目は芸術です。
このうち、データフローには関数が含まれます。データフローは関数にのみ反映されます。
データ処理はかなり面倒なので後述します。
たとえば、製品を販売および購入する最も簡単な方法です。
この機能を実装するには。
次に、基本的な製品テーブル、製品詳細テーブル、店舗テーブル、およびバックパック テーブルが必要になります。スケーラビリティを強化する場合には、対応する二重テーブルが必須となります。
テーブルにある質問はどれも簡単です。重要なのは、このアイテムが何に使用されるかです。そのようなアイテムのソースは多くのデータであり、アイテムの方向性もまた多くのデータです。
最後に、データを一周する必要があります。
サークルというのは難しいものです。特に、より多くの関数と小道具がある場合。難易度は2のn乗です。

デザインパターンに習熟している方は、ぐるぐる回る前に。そうすれば、プロセスを簡略化することができます。難易度は2のn乗から1に変化します。
必要な仮想クラスは 3 つだけです: コントローラー、イベント ファクトリ、抽象プロップ ファクトリに加えて、タイマーとタスク エディター、これら 2 つの一般的なクラスです。つまり、堅牢で拡張性の高い Web ゲームを構築できます。
ウェブゲームでは、コントローラーはページとほぼ同等です。あらゆるテンプレート技術を使用して簡単に処理できます。
イベント ファクトリは抽象クラスであり、作業、戦闘、移動などのすべてのイベントはイベント ファクトリによって生成されます。インターフェイスも同じなので、コントローラーの制御に便利です。ファクトリーモード。
抽象小道具ファクトリーは、都市、地図、機器などのすべての小道具は抽象小道具ファクトリーによって生成されます。インターフェイスは同じで、ファクトリー モード、イベントとプロパティの組み合わせはブリッジ モードです。

アート:
UI。シンプルで美しいインターフェースには常に利点があります。小さなアイコン。小道具、地図、装備。 1 つのカテゴリに少なくとも 10 個はありますよね?およそ数百個が必要となります。
プログラムは 5 つの部分に分かれています:
サーバー タイマー。 (C言語または独自のサーバーのセットアップ) タイミングループで特定のコードを実行します。このコードは主にデータベース内のデータに基づいて更新されます。これを行う C 言語プログラマーを見つけることができます。 C 言語プログラマにとって、この関数は非常に簡単です。もちろん、データの加工やデータベースの運用の具体的な判断は自分で書く必要があります。 C プログラマーに標準コードを提供してもらうように依頼してください。 SQL ステートメントを完全にサポートします。
php の場合、それを実装するように corn を設定できます。ただし、どのようなオペレーティング システムであっても、最小構成時間は 1 分です。したがって、1 秒に 1 回更新される状況に対処したい場合。それを処理するための特別なタイマー プログラムも必要です。または、実行がスケジュールされている PHP に sleep() を含める必要があります。もちろん、リアルタイムの対話がある場合でも、サーバー側は無視できます。クライアントのみが対話の両側を処理します。 jsとajaxの実装。
機能ページと機能。主なものはデータアクセス、判断、データ方向です。
抽象クラスの使用が容易になります。ただし、サブカテゴリーの爆発的な増加は不可欠です。
ajax 関数。 (オプション) 擬似リアルタイムを必要とする特定の機能によって使用されます。
ゲームをよりクールに見せるため。使ってください。
JavaScript 関数。 (オプション) クライアント側のデータ計算をシミュレートします。つまり、ウェブゲームの時間関連データです。 2つの部分に分かれています。その一部は実際のデータであり、サーバー側のタイマーによって計算されます。他の部分には初期値のみがあり、クライアントの表示に使用されます。リアルタイム同期は必要ありません。シミュレートされた同期のみが必要です。
ここにはいくつかの美しい UI エフェクトも含まれています。結局のところ、それはゲームです。
データベース。基本データテーブルと詳細データテーブルの束。基本データテーブル:例えばレベル1からレベル100までのユーザーの初期属性値。詳細データ テーブル: 各ユーザーの特定の属性。
データベースを可能な限り最適化します。構造体が 1 バイトを使用できる場合は、2 バイトを使用しないでください。

2. 詳細な例。
データ フローについて単純に議論するのは困難です。
コードを示さずにプログラムについて議論するのはさらに苦痛です。
ここではphp mysqlが使用されています。また、この例ではクラスを使用しません。十分な時間があれば、今年末までに、デザイン パターンを使用するメリットを説明するために、リアルタイム インタラクションを備えたシンプルな Web ゲーム コードとコア クラスを提供する予定です。
非常に単純なウェブゲームの観点から説明しましょう。適切なコードと組み合わせます。役立つはずです。欠点があればご指摘ください、個人的には助かります。
ゲームの遊びやすさ、数値バランスなどは考慮しておりません。まず、簡単な例の実装だけを考えてみましょう。
それでは、ウェブゲームの基本的な内容は何でしょうか?
データベース: プレーヤー、マップ、都市、建物、武器、兵士。
機能: ログイン、アップグレード、個人戦、兵士間の戦い、都市との戦い、建物の建設、武器の製作、小道具の売買。
(注: 各関数は 1 つ以上のデータ テーブルに対応する必要があります。上記のデータベースにリストされているものは基本の基礎にすぎません。)
最初は、地図、都市、建物です。
ここでは、複数の地図が存在し、都市が地図上にあり、建物が都市内にあると考えられています。
マップテーブル
Map:Map_ID、X 座標、Y 座標、City_ID (都市 ID)、説明。
Map_ID はマップの ID を指します。自動採番ではありません。マップは Map_ID であり、これを繰り返すことができます。
城市表
City:City_ID,城市名字,城市所有人,城市等级,城市资源,描述。
建筑表
Build:ID,City_ID,建筑名称,建筑等级,建筑功能。
其中,地图表确定城市的位置,城市表确定城市的相关数据以及所有人,建筑表内的多条信息属于某一个城市。
建表后,显示出来。
一个for循环。把地图表整个取出来就ok。
跟普通网站的新闻列表没太大区别。不同的是,你需要取得X坐标和Y坐标定位。可以用tabel也可以用div。


Code

复制代码 代码如下:


class Map//地图类
{
var $Map_ID;
function Map_bg_css($Map_ID) {

$this->Map_ID = $Map_ID;

mysql_select_db($db_name,$link);
$sql="select * from map where Map_ID='".$this->Map_ID."' limit 1";
$result=mysql_query($sql,$link);
echo "



上記は非常に単純なマップ クラスです。コードは正しくない可能性があります。正解です。マップ テーブルの座標に基づいて、一連の div レイヤーとこの一連のレイヤーの CSS が生成されます。
フィールドに座標を入力して配列を使用することもできます。 >それを使用するときは、

map(N);
を使用します。ここで、N はマップ テーブル内のマップ ID です。
マップについては、キャラクターを移動する必要がないため、より簡単な方法を使用して、必要なマップを直接表示します。
地図と都市を取得した後、問題となるのは都市内のリソースの生成です。🎜>例: 時間と量を判断するためのフィールドが必要です。生成されたお金、資金の生成にかかった時間、Action_Time、および最後にお金が生成された時間、Money_time。
これら 2 つのフィールドの値は、City_base テーブル (つまり、都市ベース テーブルとは異なります) に表示されます。都市の対応する値。複数のジョブがある場合、時間を書き込めます。

$Now_Time=date('Y-m-d H:i:s');
(説明: $ の先頭は変数を意味します。asp の場合は記述できます) as: Now_Time=Now() )
$Now_Time を Money_time に書き込みます ("UPDATE City SET Money_time. ='$Now_Time WHERE City_ID='$City_ID' LIMIT 1;");
$City_ID はユーザーが定義します。例: $City_ID=1;
現在の都市が生成する資金が 100 であると仮定します。つまり、$Money=100; (特定の値は City_base テーブルから取得する必要があります)。
間隔は $Action_Time で、1 時間ごとに実行されると仮定します (つまり、$Action_Time=3600)。特定の値は初期化テーブルから取得されます。都市に応じて取得することもできます。
この時点では、基本的な時間があります。基本的な資本生産があります。間隔があります。ループ内で実行するだけです。
上で述べたように、サーバーは C 言語のタイマーを使用します。クライアントはJavaScriptを使用します。
サーバー側では、リソース タイマーが 5 分ごとに実行されるように設定されています。すると、誤差は 5 分になります。 Web ゲームの場合は許容範囲です。 (戦闘のタイマーは 1 分である必要があります。もちろん、サーバーが十分強力であれば、数秒にすることもできます。)
もちろん、すべてを PHP で記述してから、PHP のコーンを構成することもできます。私が現在取り組んでいるプログラムは、PHP で直接書かれています。抽象イベントの制御に特に使用される、任意の長時間のタイマー クラスが含まれます。 C のタイマーは一時的に利用できません。
毎回どのようなコードが実行されるのでしょうか?
まず、新しいタイマー タスク テーブルを作成する必要があります。目的は、どのプログラムとデータの更新を実行する必要があるかをタイマーに知らせることです。テーブルの内容は次のとおりです: 都市リソースの更新。もちろん、この時計はオプションです。設立の利点は、国家を守る、資源が発生しないなどの問題に対処するのに便利であることです。


サーバー プログラム:
現在のサーバー時刻を取得します。
更新する必要がある現在の都市を取得します。
サーバー時間と $Money_time の時間差を判断します。 (タイムスタンプ。特定のタイムスタンプについては、インターネット上に多くの情報があります。)
時間差が $Action_Time より大きいかどうかを判断します。
それより大きい場合、リソースは更新されます。 $Money_time も更新します。
未満の場合は何も動作しません。

クライアント プログラム:
現在のサーバー時間を取得します。
現在の都市の $Money、$Money_time、$Action_Time を取得します。
JavaScriptを使用して残り時間のカウントダウンやリソースの増加量を表示します。

クライアント側の特別な状況によってトリガーされます:
クライアントがリソースを使用するときに、クライアントによって表示されるリソースのステータスは擬似同期であるため。サーバーは現在の実際のリソースを更新する必要があり、タイマー処理に属する時間も更新する必要があります。
つまり、クライアントがリソースに関係する状況をトリガーすると、現在のリソースが即座に更新されます。同時に、タイマーで使用される $Money_time が更新されます。これにより、表示されているリソースが未使用になったり、タイマーが繰り返しリソースを生成したりすることはありません。

全体的に。手順のこの部分は非常に簡単です。難しいのは、C 言語タイマーの作成とフロントエンドの javascipt カウントダウンの記述です。
C 言語タイマー。C 言語プログラマーを探します。フロント デスクの javascipt の場合は非常に簡単です。インターネット上にカウントダウン コードが多数あります。見つけて変更して使用できます。

コード



コードをコピー

コードは次のとおりです:






これはオンラインで見つけたコードです。多少の改造を加えれば使用可能です。ここではカウントダウンのみが表示されます。代わりにリソースの増加を表示することもできます。

mysqlデータベースをC言語で操作します。

コード

コードをコピー コードは次のとおりです:


// TODO: コントロール通知を追加します。ここのハンドラー コード
bool bRes = m_dbConn.Connect("データベース IP アドレス", 3306, "ユーザー名", "パスワード", "データベース名")
if(!bRes)
{
AfxMessageBox( "connect failed");
return;
}

string strSql = "select * from city limit 1";//この段落はすべての表示タイプまたは値タイプに使用されます。真ん中の SQL ステートメントは自分で構築できます。
ResultSet* rs = m_dbConn.ExecuteQuery(strSql);
while(rs->Next())
{
string str = rs->GetString("username"); >AfxMessageBox(str.c_str());
}
/*
strSql = "update city setmoney=money 100 where City_ID='xxx'";//すべての追加、削除、および更新はこの段落を使用すると、真ん中の SQL ステートメントを自分で構築できます。

bRes = m_dbConn.ExecuteUpdate(strSql);
if(!bRes)
{
AfxMessageBox("ExecuteUpdate failed")
*/
m_dbConn.Close();

タイマーのメイン関数。
void CBeiLiDlg::Go()
{
while(true)
{
// AfxMessageBox("go");

Sleep(5*1000); //ミリ秒。タイマーのリフレッシュ時間。
}
}


もちろんです。ここの C コードを直接使用することはできません。ほんの一部です。

新しい方法では、PHP タイマー クラスを使用してフォアグラウンドを担当し、時間が経過したら、ajax を呼び出して実行を完了します。バックグラウンドは、フロントデスクが切断された場合やフロントデスクが正常に実行されない場合などに対処するために、PHP タイマークラスの特別な処理関数を定期的に実行します。

新しいゲームが今年末までに正常に起動できれば。このクラスは公開できます。技術的なものではありませんが、非常に賢いものです。

基本的には地図と都市があります。
次は街の建物です。
上記のリソースの増加は、実際にはアーキテクチャの観点からより正確に位置付けられます。ただし、建物の分類と数値はさらに複雑になります。それは計画上の考慮事項です。
建築に関して言えば、私たちはフロントデスクの建設効果についてのみ話します。
もちろん、この効果はオプションです。ニュースリストのような表示を直接与えたり、カウントダウンを追加したりできます。
表示される効果は、「ビルド」をクリックした後のものです。ページを更新せずに、アニメーション画像を読み込みます。時間が経過すると、自動的に他の写真に変換されます。


コード


コードをコピー コードは次のとおりです:

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール