VBA - Jogo do porco


Aprenda nesta dica como fazer para construir o código de um dos jogos mais clássicos no Microsoft Visual Basic.

Quais são as regras do jogo

Um de cada vez, um jogador atira um dado várias vezes até obter o número 1 ou que o jogador decide parar. Se o jogador obtiver um 1, não falta nada e é a vez do próximo jogador a atirar o dado. Se o jogador tirar outro número, ele é adicionado ao total desta rodada e o jogador continua a jogar. Se o jogador optar por ficar ali, o total de pontos da rodada é adicionado à sua pontuação geral, e o próximo jogador que atira o dado. O primeiro jogador a marcar 100 pontos ou mais ganha.

Como construir o código

Option Explicit
Sub porco()
Dim Scs() As Byte, Ask As Integer, Np As Boolean, Go As Boolean
Dim cp As Byte, Rd As Byte, NbP As Byte, ScBT As Byte

    Const INPTXT As String = "Número de jogadores:"
    Const INPTITL As String = "Unicamente digital"
    Const ROL As String = "Jogador ¤¤¤¤ lança o dado."
    Const MSG As String = "Você gostaria de guardar o seu resultado:"
    Const TITL As String = "Total se você guardar:"
    Const RES As String = "Le dé donne: ¤¤¤¤ points."
    Const ONE As String = "O dado dá: 1 ponto. Sinto muito!" & vbCrLf & "Próximo jogador."
    Const WIN As String = "O jogador ¤¤¤¤ ganhou o jogo do porco!"
    Const STW As Byte = 100

    Randomize Timer
    NbP = Application.InputBox(INPTXT, INPTITL, 2, Type:=1)
    ReDim Scs(1 To NbP)
    cp = 1
    Do
        ScBT = 0
        Do
            MsgBox Replace(ROL, "¤¤¤¤", cp)
            Rd = Int((Rnd * 6) + 1)
            If Rd > 1 Then
                MsgBox Replace(RES, "¤¤¤¤", Rd)
                ScBT = ScBT + Rd
                If Scs(cp) + ScBT >= STW Then
                    Go = True
                    Exit Do
                End If
                Ask = MsgBox(MSG & ScBT, vbYesNo, TITL & Scs(cp) + ScBT)
                If Ask = vbYes Then
                    Scs(cp) = Scs(cp) + ScBT
                    Np = True
                End If
            Else
                MsgBox ONE
                Np = True
            End If
        Loop Until Np
        If Not Go Then
            Np = False
            cp = cp + 1
            If cp > NbP Then cp = 1
        End If
    Loop Until Go
    MsgBox Replace(WIN, "¤¤¤¤", cp)
End Sub

Foto: © VBA.
Artigo original publicado por pijaku. Tradução feita por ninha25. Última modificação: 23 de fevereiro de 2018 às 14:07 por Pedro.CCM.
Este documento, intitulado 'VBA - Jogo do porco', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (https://br.ccm.net/) ao utilizar este artigo.