• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

godofwar

Jogo em VB6

15 mensagens neste tópico

Boas pessoal sera que me podem dar uma ajudinha aqui no jogo da batalha naval, estou a fazer o jogo do tipo para 2 jogadores em que um esconde os barcos e o outro tenta adivinhar o sitios deles, em que tera um sistema de recordes etc....mas por agora tou a fazer a contagem do numero de barcos decidi por:

1 de 5 canos

1 de 4 canos

1 de 3 canos

2 de canos

que dá 16 no total e eu tava a ver se conseguia por alguma cena para depois de ele ter os 16 barcos ele nao punha mais. Mas nao tou a conseguir vou por aqui o codigo pa verem o k faz e para quem tem o vb o jogo completo se me puderem ajudar agradecia.

cumps

http://rapidshare.com/files/117208814/Batalha_Naval.zip.html jogo completo

código:

Dim Colocar As Integer
Dim qt As Integer

Private Sub cmdsair_Click()
End
End Sub

Private Sub Form_Load()
qt = 16
Colocar = 1
End Sub

Private Sub Picture1_Click(Index As Integer)
For i = 1 To qt
    If Colocar <> qt Then
        Picture1(Index).BackColor = &HFFFF& 'amarelo
        Colocar = Colocar + 1
    Else
        MsgBox ("Número de Barcos chegou ao fim, pode guardar o jogo")
        Picture1(Index).Enabled = False
    End If
Next
End Sub

este é o codigo todo o que acontece é que quando carrego nas pics antes de chegar as dezasseis vezes akilo da loop mas se acontecer isso basta carregarem 16 vezes no botao e ta resolvido e parar claro

desde ja obrigado alguma duvida digam

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nao podes postar isso noutro lado, ou entao enviar por e-mail..

é que nao ainda nao consegui acertar com os gatospara fazer o dowload.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Dim Colocar As Integer
Dim qt As Integer

Private Sub cmdsair_Click()
End
End Sub

Private Sub Form_Load()
qt = 16
Colocar = 0
End Sub

Private Sub Picture1_Click(Index As Integer)
For i = 0 To qt
    If Colocar <> qt Then
        Picture1(Index).BackColor = &HFFFF& 'amarelo
        Colocar = Colocar + 1
        Exit For
    Else
        MsgBox ("Número de Barcos chegou ao fim, pode guardar o jogo")
        Picture1(Index).Enabled = False
        Exit For
    End If
Next
End Sub

Ve lá agora se funciona... só acrescentei o exit for... caso contrário ele continuava sempre a acrescentar clique até tingir os 16

Mudei os índices pk ele só estava  marcar 15 . passei colocar e i a 0.

Pareceu-me funcionar... nao sei se seria este  objectivo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

testei e funciona obrigado desde ja agora precisava de ajuda para uma cena, vocem sabem como se faz aqueles menus com os saves todos do tipo dos emuladores pas consolas no "Carregar Jogo" com uma setinha pa frente com os saves todos?

cumps e obrigado desde ja

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

da para ser mais específico. Não estou mesmo a ver  :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ok ok vou tentar ser mais explicito tas a ver no windows xp quando carregas com o botao direito e aparece "Dispor Icones" , etc... no "dispor icones tem uma setinha a dizer por nome, tipo, tamanho etc...eu gostava de fazer isso com os saves que os users criar entendem?

cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Parece-me que o tu queres é um submenu.

Eu estive aqui a fazer e ele funcionou...

Basta ires ao editor de menus e crias filhos para a opção save...

Ficou assim.. não sei se era mesmo isto..mas pareceu-me

menu.jpg

menu2.jpg

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

exacto era isso agr do tipo imagina assim um command guardar jogo e o nome que ele metia ex: xpto era o k ia aparecer ali entendes?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

isso terá que ser feito por codigo.. só não estou a ver como ;-)

Ou gravas o jogo com o nome que estiver ali... ou carregas o menu dinamicamente de acordo com os jogos que ele encontrou guardados.

Tipo os documentos recentes do word...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois era isso so que nao sabes mesmo umas luzinhas pa isso?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boas tive a ler o artigo mas nao percebi mt bem sera que me podes dar um exemplo sff?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boas consegui avançar um grande bocado no projecto vou por pa download e o codigo aqui

link:http://rapidshare.com/files/118691622/Batalha_Naval.rar.html

o codigo e este:

Dim Linha As Integer

Dim Coluna As Integer

Dim Batalha(1 To 10, 1 To 10) As String

Dim Texto As String

Dim colocar As Integer

Dim qt As Integer

Private Sub cmdGuardar_Click()

For i = 0 To 99

    Picture1(Index).BackColor = &HFF8080

Next

Call GuardarFicheiro

End Sub

Private Sub cmdLimpar_Click()

Call InicializaArray

End Sub

Private Sub cmdsair_Click()

End

End Sub

Private Sub Form_Load()

qt = 16

Call InicializaArray

End Sub

Private Sub AbrirFicheiro()

cdlFicheiro.InitDir = App.Path

cdlFicheiro.Filter = "(*.txt) |*.txt"

cdlFicheiro.Flags = cdlOFNOverwritePrompt + cdlOFNPathMustExist

On Error GoTo No_Open

cdlFicheiro.ShowOpen

Open cdlFicheiro.FileName For Input As #1

For i = 1 To 10

    Line Input #1, Texto

    For j = 1 To 10

        Batalha(i, j) = Mid(Texto, j, 1)

    Next j

Next i

Close #1

'Call Teste

Exit Sub

No_Open:

Resume ExitLine

ExitLine:

Exit Sub

End Sub

Private Sub mnuAbrirJogo_Click()

Call AbrirFicheiro

End Sub

Private Sub Teste()

For j = 1 To 10

        picFundo(j).Print Batalha(1, j)

Next

End Sub

Private Sub GuardarFicheiro()

cdlFicheiro.InitDir = App.Path

cdlFicheiro.Filter = "(*.txt) |*.txt"

cdlFicheiro.Flags = cdlOFNOverwritePrompt + cdlOFNPathMustExist

On Error GoTo No_Save

cdlFicheiro.ShowSave

Open cdlFicheiro.FileName For Output As #1

For i = 1 To 10

    For j = 1 To 10

        Texto = Texto & Batalha(i, j)

    Next j

    Print #1, Texto

    Texto = ""

Next i

Close #1

Exit Sub

No_Save:

Resume ExitLine

ExitLine:

End Sub

Private Sub Picture1_Click(Index As Integer)

'Para Inserir Jogo

Linha = CalculaLinha(Index)

Coluna = CalculaColuna(Index)

'If colocar <> qt Then

'    If Picture1(Index).BackColor = &HFF8080 Then    'azul

'        colocar = colocar + 1

'        Picture1(Index).BackColor = &HC0C0&    'amarelo

'        Batalha(Linha, Coluna) = "1"

'    Else    'amarelo

'        Picture1(Index).BackColor = &HFF8080

'        Batalha(Linha, Coluna) = "0"

'    End If

'Else

'    MsgBox ("Número de Barcos chegou ao fim, pode guardar o jogo")

'    Picture1(Index).Enabled = False

'End If

'Para Jogar

Linha = CalculaLinha(Index)

Coluna = CalculaColuna(Index)

If Batalha(Linha, Coluna) = "1" Then

        Picture1(Index).BackColor = &HC0C0& 'amarelo

        Picture1(Index).Enabled = False

    Else

        Picture1(Index).BackColor = &HFFFF00    'água

        Picture1(Index).Enabled = False

    End If

End Sub

Private Function CalculaLinha(N As Integer) As Integer

Select Case N

Case 1 To 10

    CalculaLinha = 1

Case 11 To 20

    CalculaLinha = 2

Case 21 To 30

    CalculaLinha = 3

Case 11 To 40

    CalculaLinha = 4

Case 41 To 50

    CalculaLinha = 5

Case 51 To 60

    CalculaLinha = 6

Case 61 To 70

    CalculaLinha = 7

Case 71 To 80

    CalculaLinha = 8

Case 81 To 90

    CalculaLinha = 9

Case 91 To 100

    CalculaLinha = 10

End Select

End Function

Private Function CalculaColuna(N As Integer) As Integer

Dim Resto As Integer

If N >= 1 And N <= 9 Then

    CalculaColuna = N

ElseIf N Mod 10 = 0 Then

    CalculaColuna = 10

Else

    CalculaColuna = N Mod 10

End If

End Function

Private Sub InicializaArray()

For i = 1 To 10

    For j = 1 To 10

        Batalha(i, j) = "0"

    Next j

Next i

End Sub

agora os meus problemas:

1- Ai no codigo a uma parte comentada que é a parte em que o utilizador insere os barcos e outra pa jogar voces nao tem uma sugestão para por os dois activos e sem problemas?

2- quando acabo de por os barcos em campo e faço guardar jogo os barcos continuam la ja tentei por um For para as pics ficarem da mesma cor de origem mas nada...

3- Nao consigo criar menus com a opção sair com aquelas divisorias todas bonitas se alguem souber como se faz isso no menu editor diga

e é tudo se alguem precisar de algum esclarecimento diga, já agora respondam conforme o número sff

cumps e obgd

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora