Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updating the NFT Game build #119

Merged
merged 21 commits into from
Feb 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 12 additions & 2 deletions NFT_Game/pt-br/Section_0/Lesson_1_What_Are_We_Building.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,23 @@
### 👋 Bem vindo.
### 👋 Bem vindo

Você conseguiu - é isso aí! Bem vindo :). Meu nome é danicuki e serei seu instrutor. Esse projeto é para desenvolvedores que querem conhecer e entrar mais no mundo de tecnologia cripto. Tudo que você precisa saber para entrar nisso são **algumas habilidades com o terminal, um pouco de javascript e um pouco de React.js**. O resto você aprende no caminho.

### 🛠 O projeto.
### 🛠 O projeto

Então, o que vamos construir aqui :)? Aqui está um pequeno vídeo:

[Loom](https://www.loom.com/share/bfea6f9e52444d189952ade6ab89605d)

👀 No final, ganhe um NFT da WEB3DEV
-------------------

Quando você chegar no fim deste projeto, poderá ganhar um NFT.
**Realizaremos o airdrop de um NFT para a sua carteira conectada se você terminar o projeto dentro de 9 dias após o kick-off.**

![Imagem do NFT](https://i.imgur.com/U8leQpj.png)

A sua turma terá um nome especial que aparecerá no NFT - cada turma tem um nome diferente! Além disso, o # embaixo à direita será o # cunhado que dependerá de quando você conquistar o NFT.

### **🤘 Vê um problema? Quer melhorar algo? Conserte você mesmo ;). 🤘**

**[Todo esse conteúdo é completamente open-source](https://github.com/w3b3d3v/buildspace-projects/tree/web3dev-version/NFT_Game)**. Se você vir um problema, erro de digitação, etc - você pode consertar você mesmo facilmente e fazer um Pull Request!
Expand Down
12 changes: 6 additions & 6 deletions NFT_Game/pt-br/Section_0/Lesson_2_Gaming_And_Crypto_Intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ Por que as pessoas estão perdendo a cabeça desse jeito?

![Untitled](https://i.imgur.com/wkPSIjR.png)

**Nota: isso é uma NFT "Axie" - que é o personagem que você joga dentro de Axie Infinity! Jogadores compram NFTs Axie primeiro, e depois vão jogar o jogo. Bem estranho, certo? Comprar os personagens antes de você jogar o jogo!**
> 💡**Nota:** isso é uma NFT "Axie" - que é o personagem que você joga dentro de Axie Infinity! Jogadores compram NFTs Axie primeiro, e depois vão jogar o jogo. Bem estranho, certo? Comprar os personagens antes de você jogar o jogo!

A filosofia da WEB3DEV é entender construindo e mexendo com a tecnologia. Mas, eu gostaria de passar por um exemplo rápido e informal ;)!
A filosofia da WEB3DEV é entender construindo e mexendo com a tecnologia. Mas, eu gostaria de passar por um exemplo rápido e informal 😉!

### 🎮 Um exemplo rápido com a Nintendo.
### 🎮 Um exemplo rápido com a Nintendo

**Vamos dizer que você é a Nintendo** e você criou o Super Mario Bros. Mario é agora **sua** Propriedade Intelectual. **Você** é o criador ou criadora. Ninguém está permitido criar mais jogos com o Mario exceto **você**. Você também quer controlar quem ganha % em cima dos seus personagens/universo.

Expand Down Expand Up @@ -40,7 +40,7 @@ Isso é causado basicamente pela inflação do mercado. Só uma quantidade de Ax

"_O crescimento da população Axie é um grande fator dentro do ecossistema Axie. Até agora em nenhum momento existiu uma taxa de inflação que nos permitiu crescer até nosso potencial máximo. Muito lento e os preços do Axie estão muito altos para pessoas nova entrarem; especialmente os Axies competitivos. Muito rápido e você tem uma inflação não saudável._"

### 🛠 Construindo jogos abertos.
### 🛠 Construindo jogos abertos

Eu quero passar por um outro benefício. Fazer jogos e universos que qualquer um pode construir em cima via NFTs facilmente.

Expand All @@ -56,10 +56,10 @@ $5 Iriam diretamente para a wallet da Nintendo, e $5 para a wallet do desenvolve

As possibilidades são literalmente infinitas porque nós podemos programar o sistema de royalty para funcionar como quisermos.

### 💪 Vamos ao trabalho;
### 💪 Vamos ao trabalho

Nós falamos muito. Vamos construir nossa pequena versão de um jogo NFT. No final, eu espero que tudo isso se torne bem mais concreto, e talvez você esteja no seu caminho de construir o próximo hit dos jogos NFT ;).

### 🚨 Reporte seu Progresso!
### 🚨 Reporte seu Progresso

Poste uma screenshot em #progresso com o nome do seu video game favorito! Ajude a levantar o ânimo de jogadores na galera!
78 changes: 51 additions & 27 deletions NFT_Game/pt-br/Section_1/Lesson_1_Get_Local_Env_Setup.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
_Nota: Se você já fez outros projetos na WEB3DEV, vários dos itens de configuração das próximas duas aulas são repetidos de projetos passados. Se você ja entende, incrível! Você é um pro. Sinta-se livre para passar por eles bem rápido._
>_Se você já fez outros projetos na WEB3DEV, vários dos itens de configuração das próximas duas aulas são repetidos de projetos passados. Se você ja entende, incrível! Você é um pro. Sinta-se livre para passar por eles bem rápido._

### **📚 Um pequeno resumo sobre blockchain.**

Expand All @@ -8,27 +8,30 @@ Por agora, tudo o que você precisa saber é que um contrato inteligente é um p

O quadro maior aqui é:

1 -- **Nós vamos escrever um contrato inteligente**. Esse contrato terá toda a lógica acerca do nosso jogo.
1. **Nós vamos escrever um contrato inteligente**. Esse contrato terá toda a lógica acerca do nosso jogo.

2 -- **Nosso contrato inteligente será implantado na blockchain (deployed)**. Desse jeito, qualquer pessoa no mundo poderá acessar e rodar nosso contrato inteligente - e nós vamos deixá-los acessar nosso jogo.
2. **Nosso contrato inteligente será implantado na blockchain (deployed)**. Desse jeito, qualquer pessoa no mundo poderá acessar e rodar nosso contrato inteligente - e nós vamos deixá-los acessar nosso jogo.

3 -- **Nós vamos construir um site para o cliente**. Isso vai deixar as pessoas conectarem suas carteiras Ethereum facilmente e jogar nosso jogo.
3. **Nós vamos construir um site para o cliente**. Isso vai deixar as pessoas conectarem suas carteiras Ethereum facilmente e jogar nosso jogo.

Eu recomendo ler [essas](https://ethereum.org/pt/developers/docs/intro-to-ethereum/) documentações quando você puder, por diversão. Esses são os melhores guias da internet para entender como o Ethereum funciona, na minha opinião!
Eu recomendo ler [essas](https://ethereum.org/pt-br/developers/docs/intro-to-ethereum/) documentações quando você puder, por diversão. Esses são os melhores guias da internet para entender como o Ethereum funciona, na minha opinião!

### **⚙️ Configurando ferramentas locais.**

Nós vamos usar uma muito ferramenta chamada **Hardhat**, a qual vai nos deixar compilar e testar contratos inteligentes rapidamente e localmente. Primeiro você precisa ter o node/npm. Se você não tiver, vá até [aqui](https://hardhat.org/tutorial/setting-up-the-environment.html).
Nós vamos usar uma muito ferramenta chamada **Hardhat**, a qual vai nos deixar compilar e testar contratos inteligentes rapidamente e localmente. Primeiro você precisa ter o node/npm. Se você não tiver, vá até [aqui](https://hardhat.org/tutorial/setting-up-the-environment).

_Nota: Eu estou usando o Node 16. Eu sei que algumas pessoas tiveram "erros de falta de memória" em versões mais velhas, então, se isso acontecer, pegue o Node 16!_
> 💡**Nota:** Eu estou usando o Node 16. Eu sei que algumas pessoas tiveram "erros de falta de memória" em versões mais velhas, então, se isso acontecer, utilize um versão do Node `>=16.0`!

Depois, vamos para o terminal. Vá em frente e `cd` para o diretório que você quer trabalhar. Uma vez que estiver lá, rode esses comandos:
Depois, vamos abrir o terminal. Crie a pasta chamada `epic-game` acesse ela pelo terminal utilizando o comando `cd`. Uma vez que estiver lá, rode esses comandos:

```javascript
```bash
# Criar uma pasta e acessá-la
mkdir epic-game
cd epic-game

# Inicializar o projeto
npm init -y
npm install --save-dev hardhat@2.9.9
npm install --save-dev hardhat@2.19.4
```

Você pode ver uma mensagem sobre vulnerabilidades depois de rodar o último comando e instalar o Hardhat. Toda vez que você instalar algo do NPM, existe uma triagem de segurança para ver se algum dos pacotes da biblioteca que você está instalando teve alguma vulnerabilidade reportada. Isso é mais como um aviso para que você esteja ciente! Pesquise no google um pouco mais sobre essas vulnerabilidades se quiser saber mais!
Expand All @@ -37,46 +40,67 @@ Você pode ver uma mensagem sobre vulnerabilidades depois de rodar o último com

Legal, agora nós temos o hardhat. Vamos colocar um projeto experimental funcionando.

```javascript
npx hardhat
```bash
npx hardhat init
```

_Nota: Se você estiver no Windows usando Git Bash para instalar o Hardhat, você pode dar de cara com um erro nesse passo (HH1). Você pode tentar usar a CMD Windows para performar a instalação do HardHat se você tiver problemas. Informações adicionais podem ser encontradas [aqui](https://github.com/nomiclabs/hardhat/issues/1400#issuecomment-824097242)._
> 💡**Nota:** Se você estiver no Windows usando Git Bash para instalar o Hardhat, você pode dar de cara com um erro nesse passo (HH1). Você pode tentar usar a CMD Windows para performar a instalação do HardHat se você tiver problemas. Informações adicionais podem ser encontradas [aqui](https://github.com/nomiclabs/hardhat/issues/1400#issuecomment-824097242).

1. Esse comando irá te fazer algumas perguntas para saber que tipo de projeto você deseja criar, vamos criar um projeto JavaScript:

Escolha a opção de criar um projeto básico. Diga sim para tudo.
```bash
What do you want to do?
┗ Create a JavaScript project
```

O projeto vai pedir para você instalar `hardhat-waffle` e `hardhat-ethers`. Essas são outras coisas que vamos usar mais tarde.
2. Onde você deseja criar o projeto do hardhat:

```bash
Hardhat project root:
┗ Enter
```

Vá em frente e instale essas outras dependências em caso delas não terem sido instaladas automaticamente.
3. Se deseja criar o arquivo `.gitignore`:

```javascript
npm install --save-dev @nomiclabs/hardhat-waffle ethereum-waffle chai @nomiclabs/hardhat-ethers ethers
```bash
Do you want to add a .gitignore?
┗ Y
```

Você também vai querer instalar algo chamado **OpenZeppelin** , que é outra biblioteca muito usada para desenvolver contratos inteligentes seguros. Vamos aprender mais sobre ela depois. Por agora, só a instale :).
4. Se deseja já instalar as dependências do projeto:

```bash
Do you want to install this sample project's dependencies with npm (@nomicfoundation/hardhat-toolbox)?
┗ Y
```

O projeto vai pedir para você instalar o `@nomicfoundation/hardhat-toolbox`. Vamos utilizar isso mais tarde.

Você também vai querer instalar algo chamado **OpenZeppelin** , que é outra biblioteca muito usada para desenvolver contratos inteligentes seguros. Vamos aprender mais sobre ela depois. Por agora, só a instale 😃.

```javascript
npm install @openzeppelin/contracts
```bash
npm install @openzeppelin/contracts@4.9.5
```

Depois rode:

```javascript
npx hardhat run scripts/sample-script.js
```bash
npx hardhat run scripts/deploy.js
```

Boom! Se você vir algumas coisas no seu terminal sobre um contrato sendo implantado (deployed), isso significa que seu ambiente local está configurando **e** você também rodou/implantou um contrato inteligente numa blockchain local.
Boom! Se você vir algumas coisas no seu terminal sobre um contrato sendo implantado **deployed**.
Isso **significa que seu ambiente local está configurando** e você também implantou **um contrato inteligente numa blockchain local** 🥳.

Isso é bastante épico. Vamos mais a fundo nisso, mas basicamente o que está acontecendo aqui é:

1. O Hardhat compila seu contrato inteligente de solidity para bytecode.
2. O Hardhat vai rodar uma "blockchain local" no seu computador. É como uma mini versão de teste do Ethereum rodando no seu computador para ajudar você a rapidamente testar coisas.
3. O Hardhat vai então fazer o "deploy" do seu contrato inteligente compilado. Esse é o endereço que você vê no final. É o seu contrato inteligente já implantado, na nossa mini versão do Ethereum.

Se estiver curioso, sinta-se livre para olhar o código dentro do projeto e ver como ele funciona. Especificamente, olhe `Greeter.sol` que é o contrato inteligente e `sample-script.js` que roda o contrato.
Se estiver curioso, sinta-se livre para olhar o código dentro do projeto e ver como ele funciona. Especificamente, olhe `Lock.sol` que é o contrato inteligente e `deploy.js` que roda o contrato.

Uma vez que tiver explorado, vamos para a próxima seção e começar o contrato do nosso jogo.

### 🚨 Reporte seu Progresso!
### 🚨 Reporte seu Progresso

Poste uma screenshot em #progresso com a saída do terminal quando você rodou `sample-script.js` para mostrar que seu ambiente local tá rodando :).
Poste uma screenshot em #progresso com a saída do terminal quando você rodou `deploy.js` para mostrar que seu ambiente local tá rodando 😃.
Loading