Web ベースのテキスト戦略ゲームを開発しようとしています。アイデアには、宇宙にいる、レーダー画面を見る、動き回る、他のプレイヤーを攻撃する、惑星を採掘するなどが含まれます。
私が試した現在のテクノロジーは次のとおりです。
- サーバー側のゲーム エンジン/データベース クエリ用の Python
- データベースをホストするための Mongodb
- Web ページを提供するための Web.py。
- Web サイトのインターフェイスの Jquery。
- レーダーを表示するための HTML5 W/canvas は、現在の位置の近くにあるものの単純なクエリになります。
現在の開発段階:
パイソン:
私はテキスト ベースのコマンド ライン ゲームを作成しました。このゲームでは、データベース内でプレーヤーのオブジェクトをスキャンおよび移動します。
モンゴッド:
データベースがセットアップされ、正常に動作しています。オブジェクトを操作し、オブジェクトをクエリできます。
web.py:
現在、'localhost:8080('/', '/register', '/game') をサポートしていますユーザーを検証します。これについては後で詳しく説明しますが、友人との簡単なテストでは、まだセキュリティについてあまり心配していませんでした. 間違った値を入力すると、アカウントを作成できる /register にロールオーバーします。次に、フォーム ('name') からユーザー名を取得し、単純な Hello %name を出力できる /game にドロップします。
Jクエリ:
jquery スクリプトを実行して、div などを操作できます。
HTML5:
まだ実際の開発はありませんが、HTML は私の強みなので、まだ心配していません。
課題:
私が遭遇した実際の障害は、データベースでクエリや更新を実行したり、戦闘用のコードを実行したりするために、バックエンドの Python スクリプトに投稿する jquery を使用して *.html ページをユーザーに提供する方法を理解しようとすることです。いいえ。
私はさまざまなテクノロジーやフレームワークをすべて読んでいますが、必要なものにぴったり合うものを実際には見つけられませんでした。または、経験不足のために実装方法を理解できていません。
私が書いた関数がjquery(post)に基づいてクエリまたは更新を実行し、ユーザーが要求しているデータを返すことができるように、Pythonにデータを投稿するjquery(post)を書く簡単な方法があるのではないかと思っています
私はphpに投稿するためのYouTubeチュートリアルを見ましたが、信じられないほど簡単に見えましたが、pythonへの投稿を検索するたびに結果がほとんど得られず、ほとんどすべてのフレームワークがそれに最適です. PHPに切り替えるべきではないかどうか、ほとんど疑問に思っています。
正しい方向に私を向けることができますか?web.py を廃棄して ajax と mod_python に切り替える必要がありますか?
腰を下ろして、djangoのドキュメントを徹底的に読む必要がありますか?
今週末は非常に遅いインターネットを使用する予定で、正しい方向性を見つけて研究することを望んでいたので、土曜日に自分の場所に戻ったときに、戦略ゲームの Web 部分の作業を開始できます。
コード例:
web.py スクリプト:
import web
from web import form
import pymongo
db = pymongo.Connection('localhost', 27017).bbarnes_test
render = web.template.render('templates/')
urls = (
'/', 'index',
'/register', 'register',
'/game', 'game')
app = web.application(urls, globals(), True)
login = form.Form(
form.Textbox("Username",
form.notnull),
form.Password("Password",
form.notnull))
class index:
def GET(self):
form = login()
return render.formtest(form)
def POST(self):
form = login()
if not form.validates():
return render.formtest(form)
else:
uname = db.users.find_one({'name' : form.d.Username, 'pw' : form.d.Password})
if uname != None:
return render.game(uname['name'])
else:
raise web.seeother('/register')
class register:
def GET(self):
form = login()
return render.register(form)
def POST(self):
form = login()
if not form.validates():
return render.register(form)
else:
db.users.insert({'name' : form.d.Username, 'pw' : form.d.Password})
uname = db.users.find_one({'name' : form.d.Username})
raise web.seeother('/')
class game:
def GET(self):
return render.game(form)
if __name__=="__main__":
web.internalerror = web.debugerror
app.run()
~
game.html
$def with(uname)
<html>
<!DOCTYPE html>
<head>
<script type="text/javascript" src="../static/jquery.js"></script>
<script type="text/javascript">
J = jQuery;
J(document).ready(function(){
J("p").click(function(){
J(this).hide();
});
});
</script>
<title>The Game</title>
</head
<body>
<p> This is a test of jQuery.</p>
<p> Welcome to the game $uname</p>
</body>
</html>