

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 步驟 1：在本機上部署及測試
<a name="TicTacToe.Phase1"></a>

**Topics**
+ [1.1：下載並安裝必要套件](#TicTacToe.Phase1.InstallApp)
+ [1.2：測試遊戲應用程式](#TicTacToe.RunAppLocally)

在此步驟中您會在您的本機電腦上下載、部署及測試井字遊戲應用程式。您並不會使用 Amazon DynamoDB Web 服務，而是將 DynamoDB 下載至您的電腦，並在該位置建立必要的資料表。

## 1.1：下載並安裝必要套件
<a name="TicTacToe.Phase1.InstallApp"></a>

若要在本機上測試此應用程式，您需要下列項目：
+ Python 
+ Flask (Python 的微框架)
+ 適用於 Python (Boto) 的 AWS SDK
+ 在您電腦上執行的 DynamoDB
+ Git 

若要取得這些工具，請執行下列作業：

1. 安裝 Python。如需逐步說明，請參閱 [Download Python](https://www.python.org/downloads/)。

   井字遊戲應用程式已使用 Python 2.7 版測試。

1.  適用於 Python (Boto) 的 AWS SDK 使用 Python 套件安裝程式 (PIP) 安裝 Flask 和 ：
   + 安裝 PIP。

     如需說明，請參閱 [Install PIP](http://pip.readthedocs.org/en/stable/installing/)。在安裝頁面上，選擇 **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
     ```

1. 將 DynamoDB 下載到您的電腦。如需執行方式的說明，請參閱 [設定 DynamoDB 本機版 (可下載版本)](DynamoDBLocal.md)。

1. 下載井字遊戲應用程式：

   1. 安裝 Git。如需說明，請參閱 [git Downloads](http://git-scm.com/downloads)。

   1. 執行下列程式碼以下載應用程式。

      ```
      git clone https://github.com/awslabs/dynamodb-tictactoe-example-app.git
      ```

## 1.2：測試遊戲應用程式
<a name="TicTacToe.RunAppLocally"></a>

若要測試井字遊戲應用程式，您需要在您的電腦本機上執行 DynamoDB。

**執行井字遊戲應用程式**

1. 啟動 DynamoDB。

1. 啟動井字遊戲應用程式的 Web 伺服器。

   若要執行此作業，請開啟命令終端機，導覽至您下載井字遊戲應用程式的所在資料夾，並使用下列程式碼在本機上執行應用程式。

   ```
   python.exe application.py --mode local --serverPort 5000 --port 8000
   ```

   在 Linux 上，您不需要指定 `.exe` 副檔名。

1. 開啟您的 Web 瀏覽器，然後輸入如下內容。

   ```
   http://localhost:5000/ 
   ```

   瀏覽器會顯示出首頁。  
![應用程式首頁螢幕擷取畫面，其中包含建立按鈕與遊戲、邀請和歷程記錄的連結。](http://docs.aws.amazon.com/zh_tw/amazondynamodb/latest/developerguide/images/tic-tac-toe-ddb-local-play-5.png)

1. 在 **Log in** (登入) 方塊中輸入 **user1**，以 user1 身分登入。
**注意**  
此範例應用程式不會執行任何使用者身分驗證。使用者 ID 僅會用於識別玩家。若兩名玩家使用同一個別名登入，應用程式仍會運作，如同您在兩個不同的瀏覽器中玩遊戲一樣。

1. 若這是您第一次玩遊戲，則會顯示一個頁面，要求您在 DynamoDB 中建立必要的資料表 (`Games`)。選擇 **CREATE TABLE** (建立資料表)。  
![應用程式中建立資料表按鈕的螢幕擷取畫面。](http://docs.aws.amazon.com/zh_tw/amazondynamodb/latest/developerguide/images/tic-tac-toe-ddb-local-play-10.png)

1. 選擇 **CREATE** (建立) 建立第一個井字遊戲。

1. 在 **Choose an Opponent** (選擇對手) 方塊中輸入 **user2**，然後選擇 **Create Game\!** (建立遊戲！)  
![顯示對手選擇對話方塊及遊戲建立按鈕的螢幕擷取畫面。](http://docs.aws.amazon.com/zh_tw/amazondynamodb/latest/developerguide/images/tic-tac-toe-ddb-local-play-20.png)

   執行此作業會在 `Games` 資料表中新增項目，而建立遊戲。它會將遊戲狀態設為 `PENDING`。

1. 開啟另一個瀏覽器視窗，並輸入如下內容。

   ```
   http://localhost:5000/ 
   ```

   瀏覽器會透過 Cookie 傳遞資訊，因此建議您使用無痕 (incognito) 模式或隱私瀏覽，以免留下您的 Cookie。

1. 以 user2 登入。

   此時將出現一個頁面，顯示 user1 發送的待定邀請。  
![顯示應用程式首頁及待定邀請的螢幕擷取畫面。](http://docs.aws.amazon.com/zh_tw/amazondynamodb/latest/developerguide/images/tic-tac-toe-ddb-local-play-30.png)

1. 選擇 **accept** (接受) 接受邀請。  
![空白井字遊戲格線與進行中遊戲狀態的螢幕擷取畫面。](http://docs.aws.amazon.com/zh_tw/amazondynamodb/latest/developerguide/images/tic-tac-toe-ddb-local-play-40.png)

   遊戲頁面會隨即顯示，其中有一個空白的井字遊戲方格。該頁面也會顯示相關的遊戲資訊，例如遊戲 ID、目前輪到哪一方及遊戲狀態。

1. 玩遊戲。

使用者每移動一步，Web 服務就會傳送請求到 DynamoDB，以條件式更新 `Games` 資料表中的遊戲項目。例如，條件會確保移動有效、方格可供使用者選擇，以及輪到該使用者移動。若移動有效，更新操作會為棋盤上的選擇新增對應屬性。更新操作也會將現有屬性的值設為可移動下一步的使用者。

在遊戲頁面上，應用程式每秒皆會發出非同步的 JavaScript 呼叫，最多達 5 分鐘，以檢查 DynamoDB 中的遊戲狀態是否已變更。若狀態已變更，應用程式會以新的資訊更新頁面。5 分鐘後，應用程式會停止發出請求，您必須重新整理頁面才能取得更新資訊。