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

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

Dreamweaver Mac版
ビジュアル Web 開発ツール

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
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

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