SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
19.11.2024

Lição: 079: Construindo Aplicações de Jogos na Solana

Nesta aula, exploraremos como construir aplicações de jogos na blockchain Solana. A Solana é conhecida por sua alta capacidade de transações e baixos custos, tornando-se uma excelente escolha para desenvolvedores de jogos. Cobriremos o básico sobre como configurar um projeto na Solana e criar uma aplicação de jogo simples.

Começando

Para começar a desenvolver na Solana, certifique-se de ter as ferramentas necessárias instaladas:

  1. Rust: A principal linguagem de programação utilizada para desenvolvimento na Solana.
  2. Solana CLI: A interface de linha de comando para interagir com a rede Solana.
  3. Anchor: Um framework para Solana que simplifica o desenvolvimento de contratos na Solana.

Configurando seu Ambiente

Se você ainda não instalou as ferramentas necessárias, aquí está como fazê-lo:

# Instalar Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# Adicionar os componentes necessários
rustup component add rustfmt
rustup component add clippy

# Instalar Solana CLI
sh -c "$(curl -sSfL https://release.solana.com/v1.10.32/install)"

# Instalar Anchor
cargo install --git https://github.com/project-serum/anchor anchor-cli --locked

Depois de ter tudo instalado, verifique sua instalação:

solana --version
anchor --version

Criando um Novo Projeto

Vamos criar um novo projeto Anchor para nossa aplicação de jogo:

anchor init meu_jogo
cd meu_jogo

Este comando criará um novo diretório chamado meu_jogo com os arquivos e a estrutura de diretórios necessários.

Escrevendo o Contrato Inteligente

Em seguida, vamos escrever um contrato inteligente simples para o nosso jogo. Neste exemplo, criaremos um jogo de "Adivinhe o Número", onde os jogadores podem enviar seus palpites e potencialmente ganhar tokens.

Abra o arquivo programs/meu_jogo/src/lib.rs e substitua seu conteúdo pelo seguinte código:

use anchor_lang::prelude::*;

declare_id!("SeuProgramIdAqui");

#[program]
pub mod meu_jogo {
    use super::*;

    pub fn inicializar(ctx: Context<Inicializar>, numero: u8) -> ProgramResult {
        let jogo = &mut ctx.accounts.jogo;
        jogo.numero = numero;
        jogo.vencedor = Pubkey::default();
        Ok(())
    }

    pub fn adivinhar(ctx: Context<Adivinhar>, palpite: u8) -> ProgramResult {
        let jogo = &ctx.accounts.jogo;

        if palpite == jogo.numero {
            // Atribuir o vencedor se o palpite estiver correto
            let vencedor = &mut ctx.accounts.vencedor;
            vencedor.key = ctx.accounts.jogador.key;
            // Lógica adicional para recompensas pode ser adicionada aqui
        }

        Ok(())
    }
}

#[account]
pub struct Jogo {
    pub numero: u8,
    pub vencedor: Pubkey,
}

#[derive(Accounts)]
pub struct Inicializar<'info> {
    #[account(init, payer = usuario, space = 8 + 32)]
    pub jogo: Account<'info, Jogo>,
    #[account(mut)]
    pub usuario: Signer<'info>,
    pub sistema_programa: Program<'info, System>,
}

#[derive(Accounts)]
pub struct Adivinhar<'info> {
    #[account(mut)]
    pub jogo: Account<'info, Jogo>,
    pub jogador: Signer<'info>,
    #[account(mut)]
    pub vencedor: Account<'info, Vencedor>,
}

#[account]
pub struct Vencedor {
    pub key: Pubkey,
}

Explicação do Código

  1. Inicialização do Programa: A função inicializar define um número aleatório que os jogadores devem adivinhar.
  2. Lógica da Adivinhação: A função adivinhar verifica se o palpite do jogador corresponde ao número armazenado e registra o vencedor se for o caso.
  3. Definições de Estruturas: Definimos as estruturas Jogo e Vencedor, que mantêm o estado do jogo.

Construindo e Implantando o Contrato Inteligente

Agora que temos nosso contrato inteligente, vamos compilá-lo e implantá-lo na devnet da Solana.

anchor build
anchor deploy

Uma vez implantado, anote a saída do ID do programa.

Interagindo com o Contrato Inteligente

Para interagir com nosso contrato inteligente, usaremos o Solana CLI. Primeiro, certifique-se de que você está na devnet:

solana config set --url devnet

Em seguida, podemos criar uma carteira e financiá-la para começar a jogar:

# Criar uma nova carteira
solana-keygen new --outfile ~/minha-carteira.json
# Definir a carteira como padrão
solana config set --keypair ~/minha-carteira.json

# Solicitar um airdrop de SOL para sua carteira
solana airdrop 1

Inicializando o Jogo

Para inicializar o jogo com um número, execute o seguinte comando usando a linha de comando:

anchor run inicializar --numero <numero>

Fazendo um Palpite

Os jogadores podem fazer um palpite invocando o método adivinhar:

anchor run adivinhar --palpite <palpite_jogador>

Conclusão

Nesta aula, criamos uma aplicação de jogos simples na Solana. Discutimos como configurar o ambiente, escrever um contrato inteligente, implantá-lo e interagir com ele usando o Solana CLI.

Embora este exemplo seja bastante básico, ele fornece uma base sobre a qual jogos mais complexos podem ser construídos. Aulas futuras podem explorar a integração de interfaces web ou o uso de recursos mais avançados da Solana. Boa codificação!

Did you like this article? Rate it from 1 to 5:

Thank you for voting!