'________________________BARCMemo____________________________
' (Para ver situación barcos modo texto >> Entrar)
DECLARE FUNCTION prueba! (c$)
DECLARE SUB ponerbarco (l!)
DECLARE SUB pinta.mi ()
Dim Shared mi.mar(0 To 9, 0 To 9)
Dim Shared tu.mar(0 To 9, 0 To 9)
Randomize Timer
I = 0
XX = 0
Color 9, 1: Cls
Locate 24, 55: Print "Para salir escribir 00";
Rem dibuja el tablero de juego
Palette 1, 8
Palette 12, 36
For v = 3 To 12
Color 15: Locate v, 8: Print Chr$(62 + v)
For h = 10 To 28 Step 2
Color 15: Locate 2, h - 1: Print (h / 2) - 5
Color 9: Locate v, h: Print "ú"
Next
Next
Rem coloca los barcos en el tablero
For n = 2 To 6
ponerbarco n
Next
Rem borra el fichero de registro
Outputfile$ = "Barfile.txt"
Open Outputfile$ For Output As #2
Close #2
Barcopinta (XX)
Rem comienza la jugada
Color 15
Do
Color 3
Locate 20, 10: Print Space$(60)
Locate 21, 10: Print Space$(60)
XX = XX + 2
Locate 20, 10: Input "Coordenada: ", coord$
Locate 15, 10: Print " "
coord1$ = UCase$(coord$)
letra$ = UCase$(Mid$(coord$, 1, 1))
Rem****** compueba en el archivo Barfile.txt y si no se repite la adjunta (variable cct<>1)
cct = 0
Open Outputfile$ For Input As #2
Do While Not EOF(2)
Line Input #2, coord2$
coord3$ = Mid$(coord2$, 1, 2)
If coord3$ = coord1$ Then cct = 1
Loop
Close #2
If cct <> 1 Then Archiva (coord$)
num = Val(Mid$(coord$, 2, 1))
If cct <> 1 Then Locate 15, 5: Print letra$; num
ccc = prueba(coord$)
coord1$ = UCase$(coord$)
If coord1$ = "XX" Then Barcopinta (XX)
If coord1$ = "" Then Barcolectura
Rem If coord1$ = "YY" Then Barcotocado
comp = prueba(coord$)
If comp = 1 Then ccc = 1
letra3$ = UCase$(Mid$(coord$, 3, 3))
If letra3$ <> "" Then ccc = 1
If ccc = 1 Then
Rem Print , , "Coordenada no valida"
Beep
Else
v = Asc(letra$) - 65
h = num
vv = v + 3
hh = (h * 2) + 10
Select Case mi.mar(v, h)
Case 0: Tip$ = "W": Color 9: Locate vv, hh: Print "": If cct <> 1 Then Sound 200, 3: Locate 15, 10: Print "agua "
Case Else: Tip$ = "S": Color 12: Locate vv, hh: Print "+": If cct <> 1 Then Sound 2000, 3: Locate 15, 10: Print "Barco"
End Select
Color 15
End If
Loop Until coord$ = "00"
Sub Barcolectura
Rem lectura archivo Barcofile.txt
Barcotocado
Locate 25, 1
Barcofile$ = "Barcofile.txt"
Open Barcofile$ For Input As #1
Do While Not EOF(1)
Line Input #1, linea$
Print linea$; "-";
Loop
Close #1
Sleep 5
Barcoborra
End Sub
Sub Barcoborra
Rem Borra la linea inferior
Locate 24, 1
Print linea$; " ";
Locate 25, 1
Print linea$; " ";
End Sub
Sub ponerbarco (l)
Do
ocu = 0
If Rnd < .5 Then
alto = l: ancho = 1: h = Int(Rnd * 10): v = Int(Rnd * (10 - l))
Else
alto = 1: ancho = l: v = Int(Rnd * 10): h = Int(Rnd * (10 - l))
End If
For hh = h To h + ancho - 1
For vv = v To v + alto - 1
If mi.mar(hh, vv) <> 0 Then ocu = ocu + 1
Next
Next
Loop Until ocu = 0
For hh = h To h + ancho - 1
For vv = v To v + alto - 1
mi.mar(hh, vv) = l
Next
Next
End Sub
Sub Barcotocado
Rem lectura archivo Barfile.txt
Locate 24, 1
Barfile$ = "Barfile.txt"
Rem Open Barfile$ For Input As #1
Rem Do While Not EOF(1)
Rem Line Input #1, linea$
Rem Loop
Rem Close #1
Rem Sleep 5
Rem Borra la pantalla y dibuja el tablero
Color 9, 1: Cls
Locate 25, 55: Print "XX >> Situacion Barcos Barcofile.txt >> Salir 00 "; Rem "Entrar";
Rem (Barco=S Agua=W)
Rem Locate 24, 55: Print "Para salir escribir 00";
Palette 1, 8
Palette 12, 36
For v = 3 To 12
Color 15: Locate v, 8: Print Chr$(62 + v)
For h = 10 To 28 Step 2
Color 15: Locate 2, h - 1: Print (h / 2) - 5
Color 9: Locate v, h: Print "ú"
Next
Next
Open Barfile$ For Input As #1
Color 7: Locate 21, 1
Do While Not EOF(1)
Line Input #1, linea$
coord$ = Mid$(linea$, 1, 2)
restaura (coord$)
Rem letra3$ = UCase$(Mid$(linea$, 3, 3))
Rem If letra3$ = "S" Then Print Letra12$; "-";
Loop
Close #1
End Sub
Sub restaura (coord$)
Rem restaura situacion jugada
letra$ = UCase$(Mid$(coord$, 1, 1))
num = Val(Mid$(coord$, 2, 1))
Rem ccc = prueba(coord$)
Rem ccc = 1 Then Print , , "" Else
v = Asc(letra$) - 65
h = num
vv = v + 3
hh = (h * 2) + 10
Select Case mi.mar(v, h)
Case 0: Color 9: Locate vv, hh: Print ""
Case Else: Color 12: Locate vv, hh: Print "+"
End Select
End Sub
Sub Barcopinta (XX)
Rem las subrutina no guarda los valores de las variables y al comenzar las pone todas a 0
Rem I = 0 no hace falta poner la variable del contador a 0
Barcofile$ = "Barcofile.txt"
Open Barcofile$ For Output As #1
Do
Locate 20, 10: Print Space$(60)
Locate 21, 10: Print Space$(60)
I = I + 1
If I < 102 Then
' If I = 1 Then coord$ = "A0" Else If I = 2 Then coord$ = "A1" Else If I = 3 Then coord$ = "A2" Else If I = 4 Then coord$ = "A3"
' If I = 5 Then coord$ = "A4" Else If I = 6 Then coord$ = "A5" Else If I = 7 Then coord$ = "A6" Else If I = 8 Then coord$ = "A7" Else If I = 9 Then coord$ = "A8" Else If I = 10 Then coord$ = "A9" ......
Select Case I
Case 1
coord$ = "A0"
Case 2
coord$ = "A1"
Case 3
coord$ = "A2"
Case 4
coord$ = "A3"
Case 5
coord$ = "A4"
Case 6
coord$ = "A5"
Case 7
coord$ = "A6"
Case 8
coord$ = "A7"
Case 9
coord$ = "A8"
Case 10
coord$ = "A9"
Case 11
coord$ = "B0"
Case 12
coord$ = "B1"
Case 13
coord$ = "B2"
Case 14
coord$ = "B3"
Case 15
coord$ = "B4"
Case 16
coord$ = "B5"
Case 17
coord$ = "B6"
Case 18
coord$ = "B7"
Case 19
coord$ = "B8"
Case 20
coord$ = "B9"
Case 21
coord$ = "C0"
Case 22
coord$ = "C1"
Case 23
coord$ = "C2"
Case 24
coord$ = "C3"
Case 25
coord$ = "C4"
Case 26
coord$ = "C5"
Case 27
coord$ = "C6"
Case 28
coord$ = "C7"
Case 29
coord$ = "C8"
Case 30
coord$ = "C9"
Case 31
coord$ = "D0"
Case 32
coord$ = "D1"
Case 33
coord$ = "D2"
Case 34
coord$ = "D3"
Case 35
coord$ = "D4"
Case 36
coord$ = "D5"
Case 37
coord$ = "D6"
Case 38
coord$ = "D7"
Case 39
coord$ = "D8"
Case 40
coord$ = "D9"
Case 41
coord$ = "E0"
Case 42
coord$ = "E1"
Case 43
coord$ = "E2"
Case 44
coord$ = "E3"
Case 45
coord$ = "E4"
Case 46
coord$ = "E5"
Case 47
coord$ = "E6"
Case 48
coord$ = "E7"
Case 49
coord$ = "E8"
Case 50
coord$ = "E9"
Case 51
coord$ = "F0"
Case 52
coord$ = "F1"
Case 53
coord$ = "F2"
Case 54
coord$ = "F3"
Case 55
coord$ = "F4"
Case 56
coord$ = "F5"
Case 57
coord$ = "F6"
Case 58
coord$ = "F7"
Case 59
coord$ = "F8"
Case 60
coord$ = "F9"
Case 61
coord$ = "G0"
Case 62
coord$ = "G1"
Case 63
coord$ = "G2"
Case 64
coord$ = "G3"
Case 65
coord$ = "G4"
Case 66
coord$ = "G5"
Case 67
coord$ = "G6"
Case 68
coord$ = "G7"
Case 69
coord$ = "G8"
Case 70
coord$ = "G9"
Case 71
coord$ = "H0"
Case 72
coord$ = "H1"
Case 73
coord$ = "H2"
Case 74
coord$ = "H3"
Case 75
coord$ = "H4"
Case 76
coord$ = "H5"
Case 77
coord$ = "H6"
Case 78
coord$ = "H7"
Case 79
coord$ = "H8"
Case 80
coord$ = "H9"
Case 81
coord$ = "I0"
Case 82
coord$ = "I1"
Case 83
coord$ = "I2"
Case 84
coord$ = "I3"
Case 85
coord$ = "I4"
Case 86
coord$ = "I5"
Case 87
coord$ = "I6"
Case 88
coord$ = "I7"
Case 89
coord$ = "I8"
Case 90
coord$ = "I9"
Case 91
coord$ = "J0"
Case 92
coord$ = "J1"
Case 93
coord$ = "J2"
Case 94
coord$ = "J3"
Case 95
coord$ = "J4"
Case 96
coord$ = "J5"
Case 97
coord$ = "J6"
Case 98
coord$ = "J7"
Case 99
coord$ = "J8"
Case 100
coord$ = "J9"
Case 101
coord$ = "00"
End Select
End If
letra$ = UCase$(Mid$(coord$, 1, 1))
num = Val(Mid$(coord$, 2, 1))
ccc = prueba(coord$)
If ccc = 1 Then
Print , , ""
Else
v = Asc(letra$) - 65
h = num
vv = v + 3
hh = (h * 2) + 10
Select Case mi.mar(v, h)
Case 0: Color 9: Locate vv, hh: Print ""
Case Else: Color 12: Locate vv, hh: Print "+"
Rem graba posicion Barco en archivo
Print #1, coord$
End Select
Color 15
End If
Loop Until coord$ = "00"
Close #1
If XX > 1 Then Sleep 2
Rem Input "Dibujo el tablero "
Color 9, 1: Cls
Locate 25, 55: Print "XX >> Situacion Barcos Barcofile.txt >> Salir 00 ";
Rem (Barco=S Agua=W) "
Rem Locate 24, 55: Print "Para salir escribir 00";
Palette 1, 8
Palette 12, 36
For v = 3 To 12
Color 15: Locate v, 8: Print Chr$(62 + v)
For h = 10 To 28 Step 2
Color 15: Locate 2, h - 1: Print (h / 2) - 5
Color 9: Locate v, h: Print "ú"
Next
Next
Barcotocado
End Sub
'______________________________________________________________________
'
Sub Archiva (coord$)
Rem tipifica el disparo W=agua S=Barco
letra$ = UCase$(Mid$(coord$, 1, 1))
letra2$ = UCase$(Mid$(coord$, 2, 2))
If letra$ = "X" Then GoTo Fin
If letra$ = "Y" Then GoTo Fin
If letra$ = "" Then GoTo Fin
comp = prueba(coord$)
If comp = 1 Then GoTo Fin
If letra2$ = "10" Then GoTo Fin
If letra2$ = "11" Then GoTo Fin
num = Val(Mid$(coord$, 2, 1))
v = Asc(letra$) - 65
h = num
vv = v + 3
hh = (h * 2) + 10
Select Case mi.mar(v, h)
Case 0: Tip$ = "W"
Case Else: Tip$ = "S"
End Select
coord1$ = UCase$(coord$)
Outputfile$ = "Barfile.txt"
Open Outputfile$ For Append As #2
Print #2, coord1$; Tip$
Fin:
Close #2
End Sub
'______________________________________________________________________
'
Function prueba (coord$)
comp = 0
Select Case UCase$(Mid$(coord$, 1, 1))
Case "A"
Case "B"
Case "C"
Case "D"
Case "E"
Case "F"
Case "G"
Case "H"
Case "I"
Case "J"
Case Else: comp = 1
End Select
prueba = comp
End Function