

# Etapa 1: implantar e testar localmente
<a name="TicTacToe.Phase1"></a>

**Topics**
+ [1.1: baixar e instalar os pacotes obrigatórios](#TicTacToe.Phase1.InstallApp)
+ [1.2: testar a aplicação de jogo](#TicTacToe.RunAppLocally)

Nesta etapa, você faz download, implanta e testa o aplicativo Jogo da velha em seu computador local. Em vez de usar o serviço da Web Amazon DynamoDB, você fará download do DynamoDB para seu computador e criará a tabela necessária localmente. 

## 1.1: baixar e instalar os pacotes obrigatórios
<a name="TicTacToe.Phase1.InstallApp"></a>

Para testar este aplicativo localmente, será necessário o seguinte:
+ Python 
+ Flask (um microframework para Python)
+ AWS SDK para Python (Boto)
+ Execução do DynamoDB no computador
+ Git 

Para aproveitar essas ferramentas, faça o seguinte:

1. Instalar o Python. Para obter instruções detalhadas, acesse [Fazer download do Python](https://www.python.org/downloads/). 

   O aplicativo Jogo da velha foi testando com a versão 2.7 do Python. 

1. Instale o Flask e o AWS SDK para Python (Boto) usando o Python Package Installer (PIP):
   + Instale o PIP. 

     Para obter instruções, consulte [Instalar PIP](http://pip.readthedocs.org/en/stable/installing/). Na página de instalação, selecione o link **get-pip.py** e, em seguida, salve o arquivo. Em seguida, abra um terminal de comando como administrador e digite as informações a seguir no prompt de comando.

     ```
     python.exe get-pip.py
     ```

      No Linux, você não especifica a extensão `.exe`. Você só especifica `python get-pip.py`. 
   + Usando o PIP, instale os pacotes Flask e Boto usando o código a seguir.

     ```
     pip install Flask
     pip install boto
     pip install configparser
     ```

1. Baixe o DynamoDB para o seu computador. Para obter instruções sobre como executá-lo, consulte [Configurar o DynamoDB local (versão para download)](DynamoDBLocal.md).

1. Faça download do aplicativo Jogo da velha:

   1. Instale o Git. Para obter instruções, consulte [downloads do git](http://git-scm.com/downloads).

   1. Execute o código a seguir para fazer download da aplicação.

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

## 1.2: testar a aplicação de jogo
<a name="TicTacToe.RunAppLocally"></a>

Para testar a aplicação Jogo da velha, é necessário executar o DynamoDB localmente no seu computador. 

**Para executar a aplicação Jogo da velha**

1. Inicie o DynamoDB. 

1. Inicie o servidor web do aplicativo Jogo da velha. 

   Para isso, abra um terminal de comando, navegue para a pasta na qual você fez download do aplicativo jogo da velha e execute o aplicativo localmente usando o código a seguir.

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

   No Linux, você não especifica a extensão `.exe`. 

1. Abra seu navegador da web e digite as informações a seguir.

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

   O navegador mostra a página inicial.  
![Captura de tela da página inicial do aplicativo com um botão de criação e links para jogos, convites e histórico recente.](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/images/tic-tac-toe-ddb-local-play-5.png)

1. Digite **user1** na caixa **Log in (Login)** para fazer login como user1.
**nota**  
Este aplicativo de exemplo não realiza autenticação de usuário. O ID de usuário só é usado para identificar os jogadores. Se dois jogadores fizerem login com o mesmo alias, o aplicativo funciona como se você estivesse jogando em dois navegadores diferentes.

1. Se esta for a primeira vez que você está jogando, uma página solicitando a criação da tabela obrigatória (`Games`) no DynamoDB será mostrada. Selecione **CREATE TABLE (Criar tabela)**.  
![Captura de tela do botão de criação de tabela no aplicativo.](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/images/tic-tac-toe-ddb-local-play-10.png)

1. Selecione **CREATE (Criar)** para criar o primeiro jogo da velha.

1. Digite **user2** na caixa **Choose an Opponent (Escolher um oponente)** e selecione **Create Game\! (Criar jogo\!)**.  
![Captura de tela mostrando a caixa de diálogo para escolher um oponente e o botão para criação do jogo.](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/images/tic-tac-toe-ddb-local-play-20.png)

   Desse modo, o jogo é criado adicionando um item na tabela `Games`. Isso define o status do jogo como `PENDING`. 

1. Abra outra janela do navegador e digite as informações a seguir.

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

   O navegador passa informações por meio de cookies. Portanto, você deve usar o modo incognito ou navegação privada para que seus cookies não sejam estendidos.

1. Faça login como user2.

   É exibida uma página que mostra um convite pendente do user1.   
![Captura de tela mostrando a página inicial do aplicativo com um convite pendente.](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/images/tic-tac-toe-ddb-local-play-30.png)

1. Selecione **accept (aceitar)** para aceitar o convite.   
![Captura de tela de uma tabela de jogo da velha vazia com o status do jogo em andamento.](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/images/tic-tac-toe-ddb-local-play-40.png)

   A página do jogo é exibida com uma grade de jogo da velha vazia. A página também mostra informações relevantes do jogo, como o ID do jogo, de quem é a vez e o status do jogo. 

1. Jogue o jogo.

Para cada movimento do usuário, o serviço da Web envia uma solicitação para o DynamoDB atualizar condicionalmente o item do jogo na tabela `Games`. Por exemplo, as condições garantem que o movimento é válido, que o quadrado que o usuário escolheu está disponível e que era a vez do usuário que fez o movimento. Para um movimento válido, a operação de atualização adiciona um novo atributo correspondente à seleção no quadro. A operação de atualização também define o valor do atributo existente para o usuário que pode fazer o próximo movimento. 

Na página do jogo, a aplicação faz chamadas JavaScript assíncronas a cada segundo, por até 5 minutos, para verificar se o estado do jogo no DynamoDB foi alterado. Caso tenha sido, o aplicativo atualiza a página com novas informações. Depois de cinco minutos, o aplicativo para de fazer as solicitações e você precisa atualizar a página para obter informações atualizadas.