Publicado em 1 comentário

[VBA] – Criando um jogo de tiro ao alvo no Excel

Fala galera, segue nossa primeira série de videos de como desenvolver jogos em Excel usando os recursos do VBA.

Nesse primeiro jogo vamos aprender a desenvolver um jogo de tiro ao alvo usando 100% do Excel com os recursos do VBA.

Nesse jogo você vai aprender a usar o poderoso componente Shapes e a função VBA.DoEvents.

Todas as aulas estão disponíveis também no nossa canal do youtube. Não deixem de se inscrever lá.

Aula 1 – Desenvolvendo o cenário do jogo

Aula 2 – Configurando as funções reset e pause do jogo

Aula 3 – Configurando a função para iniciar o jogo

Aula 4 – Configurando as funções de atirar e derrubar o coco.

Código do Jogo

Dim sh As Worksheet
Dim gamesh As Worksheet

Dim bala As Shape
Dim coco As Shape


Sub Resetar()

    Set sh = ThisWorkbook.Sheets("Config")
    Set gamesh = ThisWorkbook.Sheets("Jogo")
    
    Set bala = gamesh.Shapes("Bala")
    Set coco = gamesh.Shapes("Coco")
    

    bala.Top = 211.43
    bala.Left = 161.81
    coco.Top = 76.43
    coco.Left = 579.31
    
    sh.Range("C2:c3").Value = "Stop"
    
    sh.Range("d2").Value = 0
    sh.Range("d3").Value = 10


End Sub

Sub Play_Game()

    Set sh = ThisWorkbook.Sheets("Config")
    Set gamesh = ThisWorkbook.Sheets("Jogo")
    
    Set bala = gamesh.Shapes("Bala")
    Set coco = gamesh.Shapes("Coco")
    
    
    sh.Range("c2").Value = "Move"
    
 
    
    
x:
    
    VBA.DoEvents
    
    If sh.Range("c2").Value = "Stop" Then Exit Sub
    
    coco.Top = coco.Top + sh.Range("b2").Value
    
    If coco.Top > 365.18 Then coco.Top = 76.43
    
    
GoTo x
    



End Sub

Sub Pause_Game()

    Set sh = ThisWorkbook.Sheets("Config")
    Set gamesh = ThisWorkbook.Sheets("Jogo")
    
    Set bala = gamesh.Shapes("Bala")
    Set coco = gamesh.Shapes("Coco")
    
    sh.Range("c2:c3").Value = "Stop"


End Sub


Sub shoot()

    Set sh = ThisWorkbook.Sheets("Config")
    Set gamesh = ThisWorkbook.Sheets("Jogo")
    
    Set bala = gamesh.Shapes("Bala")
    Set coco = gamesh.Shapes("Coco")
    
    If sh.Range("c2").Value = "Stop" Then
    
        MsgBox "Clique em iniciar primeiro"
        Exit Sub
        
    End If
    
     If sh.Range("d3").Value = 0 Then
    
        MsgBox "Você não tem mais bala, clique em iniciar"
        Exit Sub
        
    End If
    
    
    
    sh.Range("c3").Value = "Move"
    
x:
    
    VBA.DoEvents
    
    If sh.Range("c2").Value = "Stop" Then Exit Sub
    
    coco.Top = coco.Top + sh.Range("b2").Value
    
    If coco.Top > 365.18 Then coco.Top = 76.43
    
    If sh.Range("c3").Value = "Stop" Then Exit Sub
    
        bala.Left = bala.Left + sh.Range("b3").Value
        
    If bala.Left > 560 And bala.Left < 570 Then
    
        If coco.Top > 184 And coco.Top < 206 Then
        
            Call Drop_coco
        
        End If
    
    
    End If
    
    
    If bala.Left > 1157 Then
    
        sh.Range("C3") = "Stop"
        sh.Range("D3") = sh.Range("d3") - 1
        bala.Top = 211.43
        bala.Left = 161.81
        
        
    
    
    End If
        
    
    
GoTo x
    
    
    


End Sub


Sub Drop_coco()

    Set sh = ThisWorkbook.Sheets("Config")
    Set gamesh = ThisWorkbook.Sheets("Jogo")
    
    Set bala = gamesh.Shapes("Bala")
    Set coco = gamesh.Shapes("Coco")
    
    Dim coco1 As Shape
    Dim coco2 As Shape
    
    
    Set coco1 = gamesh.Shapes("coco1")
    Set coco2 = gamesh.Shapes("coco2")

    sh.Range("c2:c3").Value = "stop"
    
    bala.Top = 211.43
    bala.Left = 161.81
    coco.Top = 76.43
    coco.Left = 579.31
    
    coco1.Top = 186
    coco1.Left = 585.75
    coco2.Top = 221.99
    coco2.Left = 580.06
    
x:
    VBA.DoEvents
    
    coco1.Top = coco1.Top + sh.Range("b2").Value
    
    coco2.Top = coco2.Top + sh.Range("b2").Value
    coco2.Left = coco2.Left + sh.Range("b3").Value
    
    If coco1.Top > 369 Then
    
        sh.Range("D2").Value = sh.Range("d2") + 1
        Exit Sub
    
   End If
   
GoTo x
   


End Sub
Publicado em Deixe um comentário

[Jogo] – Tiro ao Alvo no Excel

Fala galera, segue mais um jogo clássico feito 100% em Excel, usando os recursos do VBA.

Se você quiser aprender a desenvolver o jogo clique aqui

Download link abaixo

Curso de como desenvolver o jogo

Código VBA

Dim sh As Worksheet
Dim gamesh As Worksheet

Dim bala As Shape
Dim coco As Shape


Sub Reset()

    Set sh = ThisWorkbook.Sheets("Config")
    Set gamesh = ThisWorkbook.Sheets("Jogo")
    
    Set bala = gamesh.Shapes("Bala")
    Set coco = gamesh.Shapes("Coco")
    
    Dim sp As Shape
    Set sp = gamesh.Shapes("Bala e Coco")
    
    Dim sp1 As Shape
    Set sp1 = gamesh.Shapes("Coco2")
    
    Dim sp2 As Shape
    Set sp2 = gamesh.Shapes("Coco3")
    
    bala.Top = 228.75
    bala.Left = 159
    coco.Top = 94.5
    coco.Left = 532.5
    
    sp.Top = 471
    sp.Left = 564.75
    
    sp1.Top = 471
    sp1.Left = 564.75
    
    sp2.Top = 471
    sp2.Left = 564.75
    
    sh.Range("c2:C3").Value = "Stop"
    sh.Range("D2").Value = 0
    sh.Range("D3").Value = 10

End Sub

Sub Play_Game()
    
    Set sh = ThisWorkbook.Sheets("Config")
    Set gamesh = ThisWorkbook.Sheets("Jogo")
    
    Set bala = gamesh.Shapes("Bala")
    Set coco = gamesh.Shapes("Coco")
    
    Dim sp As Shape
    Set sp = gamesh.Shapes("Bala e Coco")
    
    sh.Range("c2").Value = "Move"
    
x:
    
    VBA.DoEvents
    
    If sh.Range("c2").Value = "Stop" Then Exit Sub
    
    coco.Top = coco.Top + sh.Range("B2").Value
    
    If coco.Top > 400 Then coco.Top = 94.5
    
    
    GoTo x


End Sub

Sub Pause_Game()

    Set sh = ThisWorkbook.Sheets("Config")
    
    sh.Range("c2:C3").Value = "Stop"

End Sub

Sub Shoot()

    Set sh = ThisWorkbook.Sheets("Config")
    Set gamesh = ThisWorkbook.Sheets("Jogo")
    
    If sh.Range("C2").Value = "Stop" Then
    
        MsgBox "Clique em inicar primeiro"
        Exit Sub
        
    End If
    
    If sh.Range("d3").Value = "0" Then
    
        MsgBox "Você não tem mais bala" & vbLf & vbLf & "Clique no botão reiniciar"
        Exit Sub
        
    End If
    
    
    Set bala = gamesh.Shapes("Bala")
    Set coco = gamesh.Shapes("Coco")
    
    Dim sp As Shape
    Set sp = gamesh.Shapes("Bala e Coco")
    
    sh.Range("c3").Value = "Move"
    sh.Range("c3").Value = "Move"
    
x:
    
    VBA.DoEvents
    
    If sh.Range("c2").Value = "Stop" Then Exit Sub
    
        coco.Top = coco.Top + sh.Range("B2").Value
    
    If coco.Top > 300 Then coco.Top = 94.5
    
    
    If sh.Range("c3").Value = "Stop" Then Exit Sub
    
        bala.Left = bala.Left + sh.Range("B3").Value
    
    If bala.Left > 530 And bala.Left < 540 Then
    
        If coco.Top > 201 And coco.Top < 223 Then
            
            Call Drop_coco
            
            Call Play_Game
        
        End If
    
    End If
    
    If bala.Left > 1000 Then
    
        sh.Range("c3").Value = "Stop"
        sh.Range("D3").Value = sh.Range("D3").Value - 1
        bala.Top = 228.75
        bala.Left = 159
     
    
    End If
    
    GoTo x


End Sub

Sub Drop_coco()

Set sh = ThisWorkbook.Sheets("Config")
Set gamesh = ThisWorkbook.Sheets("Jogo")

Set bala = gamesh.Shapes("Bala")
Set coco = gamesh.Shapes("Coco")

Dim sp As Shape
Set sp = gamesh.Shapes("Bala e Coco")

Dim sp1 As Shape
Set sp1 = gamesh.Shapes("Coco2")

Dim sp2 As Shape
Set sp2 = gamesh.Shapes("Coco3")

sh.Range("c2:c3").Value = "Stop"

bala.Top = 228.75
bala.Left = 159
coco.Top = 94
coco.Left = 532

'sp.Top = 213.85
'sp.Left = 555.1

sp1.Top = 238
sp1.Left = 546.75

sp2.Top = 206.12
sp2.Left = 543.9

x:

VBA.DoEvents

'sp.Top = sp.Top + sh.Range("b2").Value
'sp.Left = sp.Left + sh.Range("b3").Value

sp1.Top = sp1.Top + sh.Range("b2").Value
'sp1.Left = sp1.Left + sh.Range("b3").Value

sp2.Top = sp2.Top + sh.Range("b2").Value
sp2.Left = sp2.Left + sh.Range("b3").Value

If sp1.Top > 380 Then

    sh.Range("d2").Value = sh.Range("d2").Value + 1
    Exit Sub
End If

GoTo x

End Sub
Publicado em Deixe um comentário

1.2 Usando o Editor do Visual Basic

O Editor do Visual Basic (ou VBE, como pode ser conhecido) é o local onde o código do VBA é inserido ou onde o código de uma macro gravada é colocado. Você pode encontrar o Editor do Visual Basic dentro da Guia de Desenvolvedor

Desenvolvedor -> Visual Basic

Ou você poderia usar o teclado; pressione ALT + F11 (o + indica que você deve manter pressionada a tecla ALT, pressione F11 e solte a tecla ALT).

A janela do Editor do Visual Basic

O Editor do Visual Basic será exibido. No canto superior esquerdo, você verá uma lista de itens semelhantes aos seguintes.

Se você clicar duas vezes em qualquer um desses itens, uma janela será aberta à direita. Esta janela é onde você pode digitar seu próprio código ou colar código de outros locais.

Não se preocupe com todos os comandos e opções no Editor do Visual Basic no momento. Vamos percorrer todas as características mais importantes nos próximos capítulos.

Se você precisar criar um Módulo, um Formulário ou um Módulo de Classe (mais sobre isso em seções futuras), clique com o botão direito do mouse em qualquer um dos números de Planilha ou EstaPasta_de_Trabalho e selecione a opção relevante.

Executando o código do VBA

Se você estiver copiando em um código específico, poderá copiá-lo. Se você não tiver nenhum código específico, copie e cole o seguinte:

Sub MinhaPrimeiraMacro()

    MsgBox "Olá Mundo!"

End Sub

Esta é a única vez que vou permitir que você quebre a 1 regra de ouro sobre o aprendizado do VBA.



Existem várias maneiras de executar o código do VBA. Você pode executar código do Excel, no entanto, por enquanto, vamos apenas olhar como nós codificamos a partir do Editor do Visual Basic. Primeiro, clique em qualquer lugar no código da macro, escolha uma das seguintes opções:

  1. Selecione Executar -> Executar Sub / Userform no menu na parte superior do Editor do Visual Basic.
  2. Usando o teclado, você pode pressionar ALT + F5 (lembrando-se de pressionar ALT enquanto pressiona F5)
  3. Usando o botão de reprodução no topo

O código que você digitou será executado agora.

É isso aí! Você fez isso. Veja, não foi tão assustador depois de tudo, foi?

Parte Anterior: 1.1 Ativar a Guia de Densenvolvedor

Próxima parte: 1.3 Gravando Macros

Publicado em Deixe um comentário

1.0 O que é o VBA?

Visual Basic for Applications (VBA) é a linguagem de programação criada pela Microsoft para controlar várias partes de seus aplicativos. A maioria das coisas que você pode fazer com o mouse e um teclado também podem ser feitas usando o VBA. No Excel você pode criar um gráfico, você também pode criar um gráfico usando o VBA, é apenas outro método de conseguir a mesma coisa.

Vantagens de usar o VBA

A maioria dos programas VBA fará o mesmo que você faria com o teclado e o mouse. Então, por que se preocupar em usar o VBA?

Poupa tempo:
O código VBA irá operar na velocidade que o seu computador permitir, o que será significativamente mais rápido do que você pode operar. Por exemplo, se você tiver que abrir 10 arquivos, imprimir os documentos e, em seguida, fechar o arquivo, pode levar 2 minutos com um mouse por teclado, mas com o VBA pode levar segundos.

Reduz erros:
Você já clicou nos ícones errados ou digitou as palavras erradas? Eu também, mas o VBA não. Ele fará a mesma tarefa repetidamente sem cometer erros. Não me interprete mal, você ainda tem que programar o código do VBA, então se você disser para fazer as coisas erradas, ele fará as coisas erradas. Mas se você conseguir acertar, poderá remover os erros criados pela interação humana.



Completa ações repetitivas sem reclamar:
Você já teve que realizar a mesma ação várias vezes? Talvez criar 100 gráficos ou imprimir 100 documentos ou alterar o título em 100 planilhas. Isso não é divertido, ninguém quer fazer isso. Mas a VBA está mais do que feliz em fazer isso por você. Pode fazer a mesma coisa várias vezes, na verdade, essa é uma das coisas que o VBA faz de melhor.

Integração com outras aplicações:
Você pode usar o VBA no Word, Access, Excel, Outlook e muitos outros programas, incluindo o próprio Windows. Mas não termina aí, você pode usar o VBA no Excel para controlar o Word e o Powerpoint, sem precisar do Word ou Powerpoint aberto.

O que é programação?

A programação é apenas o processo de escrever palavras de uma maneira que um computador possa entender. No entanto, você precisa ser muito específico sobre o que deseja que o computador faça. Essa é a habilidade de programar, aprendendo a transmitir a mensagem da maneira mais simples e eficiente possível.

Qual é a diferença entre uma macro e um VBA?

Esta é uma pergunta comum que pode ser confusa para iniciantes. Simplificando, o VBA é a linguagem usada para escrever uma macro – da mesma forma que um livro pode ser escrito usando o idioma inglês.

A 1ª regra de ouro da aprendizagem do VBA

Depois de passar os primeiros capítulos, você terá todas as ferramentas necessárias para usar o código VBA copiado da Internet. Embora copiar e colar código seja uma prática bastante comum, não ajudará você a aprender o VBA rapidamente. Aqui está a única regra que vou pedir para você manter. . . .

Se você deseja copiar o código que não entende, você deve digitá-lo você mesmo – não apenas copie e cole.

Por que estou pedindo para você fazer isso? Porque isso ajudará você a aprender a linguagem VBA muito mais rápido.

Vamos começar

Agora você sabe o que é o VBA, por que você deve usá-lo e a única regra de ouro que resta apenas uma coisa a fazer. . . vamos começar!



Próxima parte: 1.1 Ativar a Guia de Densenvolvedor