X Visual Basic.....battaglia navale

giovedì 26 aprile 2007 - 19.38

xxpiccolaxx Profilo | Newbie

avrei bisogno di qualcuno ke mi dia una mano...seriamente xkè sto andando in crisi..
questo programma lo uso con scuola e devo fare 1 programma di battaglia navala usando i vettori e non ne vengo fuori
è lunga da spiegare...
qualcuno piò darmi 1 mano xfavore? vi prego!!
contattatemi...

grazie!

motogpdesmo16 Profilo | Senior Member

Ciao. Inizia a scrivere quali sono le tue perplessità o le tue difficoltà a riguardo.
Sarebbe controproducente che qualcuno ti dia il codice del programmino già bello e pronto poichè non rimarrebbe nulla a te....

Hai già fatto un algoritmo di quello che dovrebbe essere il tuo programma??'

xxpiccolaxx Profilo | Newbie

qualcosa si....ma sn 1pò nel pallone...

vi spiego...
devo fare una battaglia navale dando la possibilità all'utente di scegliere da quante caselle (2o3o4) fare le 3 navi a disposizione e permettere allo stesso l'inserimento delle coordinate ke andranno a rienpire degli appositi vettori(array) con 'visualizzazione' in una skermata composta da dei botton con righe dalla A alla F e colonne dall'1 al 5..
fare vari controlli tipo ke le navi non si intersichino o che le coordinate di una nave vadano in verticale o orizzontale attaccate (qsti controlli non riesco proprio a capire come farli!!!!!!!!!!!!!!).

vi prego aiutatemi!
nn vi kiedo tutto il codice ma qlk spunto qlk pezzo...
voi siete bravi ed espentri!!!

xxpiccolaxx Profilo | Newbie

se vi posto il pezzo di programma ke ho fatto..qualcuno mi aiuta?

se no vi kiedo i pezzettini,i particolari ke nn riesco a fare e mi aiutate su quelli...

un bacione!!!

xxpiccolaxx

motogpdesmo16 Profilo | Senior Member

Inizia a postare qualcosa....senza che inserisci del codice penso che per chiunque sarebbe difficile aiutarti procedendo "a tentoni".

xxpiccolaxx Profilo | Newbie

QUESTO è A GRANDI LINEE IL PEZZETTO DI CODICE KE HO FATTO.....è ancora 1 bozza...

Dim i, x As Integer
Dim nave1() As Integer
Dim nave2() As Integer
Dim nave3() As Integer


Private Sub cmdgioca_Click()
If txtx1a.Text = "a" Or "A" Then
txt1a.Text = 1
ElseIf txt1a.Text = "b" Or "B" Then
txt1a.Text = 2
ElseIf txt1a.Text = "c" Or "C" Then
txt1a.Text = 3
ElseIf txt1a.Text = "d" Or "D" Then
txt1a.Text = 4
ElseIf txt1a.Text = "e" Or "E" Then
txt1a.Text = 5
ElseIf txt1a.Text = "f" Or "F" Then
txt1a.Text = 6
End If
If txtx2a.Text = "a" Or "A" Then
txt2a.Text = 1
ElseIf txt2a.Text = "b" Or "B" Then
txt2a.Text = 2
ElseIf txt2a.Text = "c" Or "C" Then
txt2a.Text = 3
ElseIf txt2a.Text = "d" Or "D" Then
txt2a.Text = 4
ElseIf txt2a.Text = "e" Or "E" Then
txt2a.Text = 5
ElseIf txt2a.Text = "f" Or "F" Then
txt2a.Text = 6
End If
If txtx3a.Text = "a" Or "A" Then
txt3a.Text = 1
ElseIf txt3a.Text = "b" Or "B" Then
txt3a.Text = 2
ElseIf txt3a.Text = "c" Or "C" Then
txt3a.Text = 3
ElseIf txt3a.Text = "d" Or "D" Then
txt3a.Text = 4
ElseIf txt3a.Text = "e" Or "E" Then
txt3a.Text = 5
ElseIf txt3a.Text = "f" Or "F" Then
txt3a.Text = 6
End If

If (txtx1a.Text) > 5 Or (txtx1b.Text) > 6 Or (txtx1a.Text) < 1 Or (txtx1b.Text) < 1 Or (txtx2a.Text) > 5 Or (txtx2b.Text) > 6 Or (txtx2a.Text) < 1 Or (txtx2b.Text) < 1 Or (txtx3a.Text) > 5 Or (txtx3b.Text) > 6 Or (txtx3a.Text) < 1 Or (txtx3b.Text) < 1 Then
lblxy.Caption = "inserisci di nuovo i valori richiesti!"
txtx1a.Text = " "
txtx1b.Text = " "
txtx2a.Text = " "
txtx2b.Text = " "
txtx3a.Text = " "
txtx3b.Text = " "
txtx1a.SetFocus
Else

nave1(1) = Val(txtx1a.Text)
nave1(2) = Val(txtx1b.Text)
If optordx1.Value = True Then
nave1(3) = nave1(1) + 1
nave1(4) = nave1(2)
nave1(5) = nave1(3) + 1
nave1(6) = nave1(2)
nave1(7) = nave1(5) + 1
nave1(8) = nave1(2)
ElseIf optorsx1.Value = True Then
nave1(3) = nave1(1) - 1
nave1(4) = nave1(2)
nave1(5) = nave1(3) - 1
nave1(6) = nave1(2)
nave1(7) = nave1(5) - 1
nave1(8) = nave1(2)
ElseIf optversu1.Value = True Then
nave1(3) = nave1(1)
nave1(4) = nave1(2) - 1
nave1(5) = nave1(1)
nave1(6) = nave1(4) - 1
nave1(7) = nave1(1)
nave1(8) = nave1(6) - 1
ElseIf optvergiu1.Value = True Then
nave1(3) = nave1(1)
nave1(4) = nave1(2) + 1
nave1(5) = nave1(1)
nave1(6) = nave1(4) + 1
nave1(7) = nave1(1)
nave1(8) = nave1(6) + 1
Else
lblservizio.Caption = "inserisci TUTTI i criteri per costruire le navi!"
End If

nave2(1) = Val(txtx2a.Text)
nave2(2) = Val(txtx2b.Text)
If optordx2.Value = True Then
nave2(3) = nave2(1) + 1
nave2(4) = nave2(2)
nave2(5) = nave2(3) + 1
nave2(6) = nave2(2)
nave2(7) = nave2(5) + 1
nave2(8) = nave2(2)
ElseIf optorsx2.Value = True Then
nave2(3) = nave2(1) - 1
nave2(4) = nave2(2)
nave2(5) = nave2(3) - 1
nave2(6) = nave2(2)
nave2(7) = nave2(5) - 1
nave2(8) = nave2(2)
ElseIf optversu2.Value = True Then
nave2(3) = nave2(1)
nave2(4) = nave2(2) - 1
nave2(5) = nave2(1)
nave2(6) = nave2(4) - 1
nave2(7) = nave2(1)
nave2(8) = nave2(6) - 1
ElseIf optvergiu2.Value = True Then
nave2(3) = nave2(1)
nave2(4) = nave2(2) + 1
nave2(5) = nave2(1)
nave2(6) = nave2(4) + 1
nave2(7) = nave2(1)
nave2(8) = nave2(6) + 1
Else
lblservizio.Caption = "inserisci TUTTI i criteri per costruire le navi!"
End If

nave3(1) = Val(txtx3a.Text)
nave3(2) = Val(txtx3b.Text)
If optordx3.Value = True Then
nave3(3) = nave3(1) + 1
nave3(4) = nave3(2)
nave3(5) = nave3(3) + 1
nave3(6) = nave3(2)
nave3(7) = nave3(5) + 1
nave3(8) = nave3(2)
ElseIf optorsx3.Value = True Then
nave3(3) = nave3(1) - 1
nave3(4) = nave3(2)
nave3(5) = nave3(3) - 1
nave3(6) = nave3(2)
nave3(7) = nave3(5) - 1
nave3(8) = nave3(2)
ElseIf optversu3.Value = True Then
nave3(3) = nave3(1)
nave3(4) = nave3(2) - 1
nave3(5) = nave3(1)
nave3(6) = nave3(4) - 1
nave3(7) = nave3(1)
nave3(8) = nave3(6) - 1
ElseIf optvergiu3.Value = True Then
nave3(3) = nave3(1)
nave3(4) = nave3(2) + 1
nave3(5) = nave3(1)
nave3(6) = nave3(4) + 1
nave3(7) = nave3(1)
nave3(8) = nave3(6) + 1
Else
lblservizio.Caption = "inserisci TUTTI i criteri per costruire le navi!"
End If

For i = 1 To x Step 2
If (nave1(x) <= 0) Or (nave1(x) > 5) Then
lblservizio.Caption = "la nave da te scelta esce dal campo..inserisci di nuovo!"
Next i
For i = 2 To x Step 2
If (nave1(x) <= 0) Or (nave1(x) > 6) Then
lblservizio.Caption = "la nave da te scelta esce dal campo..inserisci di nuovo!"
Next i
For i = 1 To x Step 2
If (nave2(x) <= 0) Or (nave2(x) > 5) Then
lblservizio.Caption = "la nave da te scelta esce dal campo..inserisci di nuovo!"
Next i
For i = 2 To x Step 2
If (nave2(x) <= 0) Or (nave2(x) > 6) Then
lblservizio.Caption = "la nave da te scelta esce dal campo..inserisci di nuovo!"
Next i
For i = 1 To x Step 2
If (nave3(x) <= 0) Or (nave3(x) > 5) Then
lblservizio.Caption = "la nave da te scelta esce dal campo..inserisci di nuovo!"
Next i
For i = 2 To x Step 2
If (nave3(x) <= 0) Or (nave3(x) > 6) Then
lblservizio.Caption = "la nave da te scelta esce dal campo..inserisci di nuovo!"
Next i

For i = 1 To x Step 2
if nave1(x)
controllare sovrapposizione!!!!
se qualche coppia di coordinata è uguale ad un'altra coppia di coordinate delle altre 2 navi deve segnare errore!!

End Sub

Private Sub cmdok_Click()
If optn2.Value = True Then
ReDim nave1(4)
ReDim nave2(4)
ReDim nave3(4)
x = 4
ElseIf optn3.Value = True Then
ReDim nave1(6)
ReDim nave2(6)
ReDim nave3(6)
x = 6
ElseIf optn4.Value = True Then
ReDim nave1(8)
ReDim nave2(8)
ReDim nave3(8)
x = 8
Else
lblservizio.Caption = "inserisci il criterio per costruire le navi!"
End If
End Sub


spero possiate capire qualcosa...




un bacione!!!

xxpiccolaxx

motogpdesmo16 Profilo | Senior Member


Una domanda:
potresti spiegarmi cosa hai intenzione di fare quando fai "if..... = "A" or "a"; if ..... = "B" or "b""... personalmente, pur conoscendo il gioco della battaglia navale, non l'ho capita quella sequenza di operazioni.
Volevi forse delimitare la dimensione dell'area di gioco??? (3x3, 4x4, 5x5, 6x6)

Cerca di rispondere a questa domanda così qualcosa sarà più chiaro....

xxpiccolaxx Profilo | Newbie

è semplicemente xk il campo è formato da 1-2-3-4-5 colonne e da A-B-C-D-E-F righe e l'utente x immettere le coordinate delle navi x il loro posizionamento inserisce una lettera e un numero... l'operazione consiste poi nel cambiare la lettera in numero x semplificare il lavoro nel codice ed utilizzare solo numeri nonostante l'utente abbia inserito anke lettere nelle coordinate.
un bacione!!!

xxpiccolaxx

motogpdesmo16 Profilo | Senior Member

E perchè questa "conversione" la fai per tre volte??? txt1a, txt2a, txt3a????

...come non detto....ho riletto il sorgente e mi son accorto che crei, contestualmente, 3 vettori perchè le navi sono 3.


xxpiccolaxx Profilo | Newbie

si esatto...le navi sono 3..
faccio la conversione solo3 volte xk sn 3 le lettere ke l'utente inserisce..

un bacione!!!

xxpiccolaxx

progradanitro Profilo | Newbie

ciao .
scolta una soluzione per controllare se le navi si intersecano , è immaginare il campo di battaglia come una matrice.
nel momento in cui un nave viene posizionata , tu nella matrice,nelle rispettive posizioni , inserisci un numero tipo 1.
quando l'utente inserirà una nuova nave ti basterà controllare che nei punti dove lui vuole posizionare la nave , la matrice sia diversa da 0 .
ti può essere utile ?
alla prossima

Walimay Profilo | Newbie

una cosa che ti semplifica la lettura del codice e' modificare questo:

If txtx1a.Text = "a" Or "A" Then
txt1a.Text = 1
ElseIf txt1a.Text = "b" Or "B" Then
txt1a.Text = 2
ElseIf txt1a.Text = "c" Or "C" Then
txt1a.Text = 3
ElseIf txt1a.Text = "d" Or "D" Then
txt1a.Text = 4
ElseIf txt1a.Text = "e" Or "E" Then
txt1a.Text = 5
ElseIf txt1a.Text = "f" Or "F" Then
txt1a.Text = 6

con:

Select case txtx1a.text.tolower

case "a"
txtx1a.text= 1
case "b"
...

end select

per il resto farei una matrice bidimensionale da x,x celle e gestirei con 1/0 il fatto che ci sia la nave o meno.

la cosa funziona sia che serva controllare sovrapposizioni sia per controllare il colpo a segno o meno.

ciao !!

Waly
Walimay

newbie developer in vb.net

Sistemista ambiente MSWindows

xxpiccolaxx Profilo | Newbie

grazie mille!

avrei bisogno di sapere una cosa xò.. cos'è "TOLOWER" (?) nel ciclo case?

baci..

p.s. le matrici purtroppo il prof nn ce le lascia usare in qsto programma...
un bacione!!!

xxpiccolaxx

kasuken Profilo | Newbie

il tolower è una funzione che trasforma un testo in un testo con tutti i caratteri minuscoli... ad esempi CASA, cAsA, caSa in casa.

ciao

xxpiccolaxx Profilo | Newbie

ah! grazie...

uso la funz. Ucase ke è la stessa cosa...

grazie mille!
un bacione!!!

xxpiccolaxx
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5