本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
步驟 1:在本機上部署及測試
在此步驟中您會在您的本機電腦上下載、部署及測試井字遊戲應用程式。您並不會使用 Amazon DynamoDB Web 服務,而是將 DynamoDB 下載至您的電腦,並在該位置建立必要的資料表。
1.1:下載並安裝必要套件
若要在本機上測試此應用程式,您需要下列項目:
-
Python
-
Flask (Python 的微框架)
-
AWS SDK for Python (Boto)
-
在您電腦上執行的 DynamoDB
-
Git
若要取得這些工具,請執行下列作業:
-
安裝 Python。如需 step-by-step 指示,請參閱下載 Python
。 井字遊戲應用程式已使用 Python 2.7 版測試。
-
安裝燒瓶並 AWS SDK for Python (Boto) 使用 Python Package 安裝程序(PIP):
-
安裝 PIP。
如需說明,請參閱 Install PIP
。在安裝頁面上,選擇 get-pip.py 連結,然後儲存檔案。接著以管理員身分開啟命令終端機,在命令提示中輸入如下內容。 python.exe get-pip.py
在 Linux 上,您不需要指定
.exe
副檔名。只要指定python get-pip.py
就可以了。 -
利用 PIP 使用下列程式碼安裝 Flask 和 Boto 套件。
pip install Flask pip install boto pip install configparser
-
-
將 DynamoDB 下載到您的電腦。如需執行方式的說明,請參閱 設定 DynamoDB Local (可下載版本) 。
-
下載井字遊戲應用程式:
-
安裝 Git。如需說明,請參閱 git Downloads
。 -
執行下列程式碼以下載應用程式。
git clone https://github.com/awslabs/dynamodb-tictactoe-example-app.git
-
1.2:測試遊戲應用程式
若要測試井字遊戲應用程式,您需要在您的電腦本機上執行 DynamoDB。
執行 tic-tac-toe 應用程式
-
啟動 DynamoDB。
-
啟動井字遊戲應用程式的 Web 伺服器。
若要執行此作業,請開啟命令終端機,導覽至您下載井字遊戲應用程式的所在資料夾,並使用下列程式碼在本機上執行應用程式。
python.exe application.py --mode local --serverPort 5000 --port 8000
在 Linux 上,您不需要指定
.exe
副檔名。 -
開啟您的 Web 瀏覽器,然後輸入如下內容。
http://localhost:5000/
瀏覽器會顯示出首頁。
-
在 Log in (登入) 方塊中輸入
user1
,以 user1 身分登入。注意
此範例應用程式不會執行任何使用者身分驗證。使用者 ID 僅會用於識別玩家。若兩名玩家使用同一個別名登入,應用程式仍會運作,如同您在兩個不同的瀏覽器中玩遊戲一樣。
-
若這是您第一次玩遊戲,則會顯示一個頁面,要求您在 DynamoDB 中建立必要的資料表 (
Games
)。選擇 CREATE TABLE (建立資料表)。 -
選擇 [建立] 以建立第一個 tic-tac-toe遊戲。
-
在 Choose an Opponent (選擇對手) 方塊中輸入
user2
,然後選擇 Create Game! (建立遊戲!)執行此作業會在
Games
資料表中新增項目,而建立遊戲。它會將遊戲狀態設為PENDING
。 -
開啟另一個瀏覽器視窗,並輸入如下內容。
http://localhost:5000/
瀏覽器會透過 Cookie 傳遞資訊,因此建議您使用無痕 (incognito) 模式或隱私瀏覽,以免留下您的 Cookie。
-
以 user2 登入。
此時將出現一個頁面,顯示 user1 發送的待定邀請。
-
選擇 accept (接受) 接受邀請。
遊戲頁面會顯示空白 tic-tac-toe 格線。該頁面也會顯示相關的遊戲資訊,例如遊戲 ID、目前輪到哪一方及遊戲狀態。
-
玩遊戲。
使用者每移動一步,Web 服務就會傳送請求到 DynamoDB,以條件式更新 Games
資料表中的遊戲項目。例如,條件會確保移動有效、方格可供使用者選擇,以及輪到該使用者移動。若移動有效,更新操作會為棋盤上的選擇新增對應屬性。更新操作也會將現有屬性的值設為可移動下一步的使用者。
在遊戲頁面上,應用程式每秒進行一次非同步 JavaScript 呼叫 (最多 5 分鐘),以檢查 DynamoDB 中的遊戲狀態是否已變更。若狀態已變更,應用程式會以新的資訊更新頁面。5 分鐘後,應用程式會停止發出請求,您必須重新整理頁面才能取得更新資訊。