Quien me puede asesorar con un error al momento de hacer un llamado a un sub programa visual basic
Publicado por oswaldo (3 intervenciones) el 04/10/2018 17:35:23
Buenas tardes muchachos estoy programando el juego de tic tac, en mi caso lo conozco como la vieja, tengo un inconveniente creo un sub programa que recibe unos datos por valor y una matriz por referencia, pero al momento de llamar al sub programa que coloco la matriz me sale el siguiente error No se puede convertir un valor de tipo '2-matriz dimensional de String' en '2-matriz dimensional de Integer' debido a que 'String' no se deriva de 'Integer', si alguien es tan amable de ayudarme dejare el código en la descripción para lo puedan observar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
Module Module1
Sub turnoj(ByVal turno As Integer, ByVal jugador1 As String, ByVal jugador2 As String, ByRef turnojugador As Integer, ByRef dato As String)
jugador1 = "1"
jugador2 = "2"
If turno Mod 2 = 0 Then 'este if es el que controla de quien es el turno
turnojugador = jugador1
dato = "x"
Else
turnojugador = jugador2
dato = "o"
End If
End Sub
Sub verificarpx(ByVal pos1 As Integer)
Do While pos1 > 2 Or pos1 < 0 'comparo el valor que metieron en la coordenada para que no exceda de 3 y no sea menor que 1
Console.WriteLine("Las posiciones deben ser entre 1 y 3")
Console.WriteLine("Ingrese la posicion X de nuevo") 'esto es por si la posicion no es valida
pos1 = Console.ReadLine - 1 'resto 1 para que el valor que introduzca concuerde con el de la matriz
Loop
End Sub
Sub verificarpy(ByVal pos2 As Integer)
Do While pos2 > 2 Or pos2 < 0
Console.WriteLine("Las posiciones deben ser entre 1 y 3")
Console.WriteLine("Ingrese la posicion Y de nuevo")
pos2 = Console.ReadLine - 1 'resto 1 para que el valor que introduzca concuerde con el de la matriz
Loop
End Sub
'A CONTINUACION ES EL SUBPROGRAMA QUE ESCRIBI Y QUE ME ARROJA EL ERROR
Sub posenuso(ByVal pos1 As Integer, ByVal pos2 As Integer, ByRef matriz(,) As Integer, ByRef contador As Integer)
contador = 0
If matriz(pos1, pos2) = "x" Then
Console.WriteLine("La posicion ya esta en uso")
ElseIf matriz(pos1, pos2) = "o" Then 'esto es por si la posicion ya esta en uso
Console.WriteLine("La posicion ya esta en uso")
Else
contador = contador + 1 'inicio el conteo para saber si nadie gana, eso sucede cuando contador llega a 9
End If
End Sub
Sub Main()
Console.BackgroundColor = ConsoleColor.Magenta 'cambiar el color de fondo de la pantalla
Console.ForegroundColor = ConsoleColor.Black 'cambiar el fondo de las letras
Console.Clear()
Dim k, j As Integer
k = 3
j = 3
Dim jugador1 As String
Dim jugador2 As String
Dim aux As Integer = 0 'variables de ayuda
Dim turno As Integer
Dim turnojugador As String = "1"
Dim pos1, pos2 As Integer
Dim matriz(k, j) As String 'declaramos la matriz cono string
Dim dato As String = "1"
Dim contador As Integer
Console.WriteLine("Juego creado por oswaldo suarez")
Console.WriteLine()
Console.WriteLine("Ingrese el nombre del jugador 1...")
jugador1 = Console.ReadLine 'asignamos el nombre que escribio a una vairable
Console.WriteLine("Ingrese el nombre del jugador 2...")
jugador2 = Console.ReadLine 'asignamos el nombre que escribio a una vairable
Console.WriteLine()
Console.WriteLine("A continuacion podra ver las coordenadas para hacer su jugada")
Console.WriteLine("- - - - - - -")
Console.WriteLine("- 11 12 13 -")
Console.WriteLine("- 21 22 23 -")
Console.WriteLine("- 31 32 33 -")
Console.WriteLine("- - - - - - -")
Console.WriteLine()
Console.WriteLine("Aprieta la tecla R para restaurar el juego")
Console.WriteLine()
Console.WriteLine("¡Inicio del Juego!")
For pos1 = 0 To 2
For pos2 = 0 To 2 'con este for hacemos que cada posicion de la matriz sea una linea
matriz(pos1, pos2) = "_"
Next
Next
Do While aux = 0 'este do while va a hacer que se repita el turno
turnoj(turno, jugador1, jugador2, turnojugador, dato) 'sub programa para saber de quien es el turno
Console.WriteLine()
Console.WriteLine("Es el turno de " & turnojugador & " Ingresa la posicion que eliges.")
Console.WriteLine("Posicion en X ?")
pos1 = Console.ReadLine - 1 'aqui asignamos el valor en X
verificarpx(pos1) 'sub programa para verificar que los valores no excedan a 3 ni menor que 1
Console.WriteLine("Posicion en Y ?") 'comparo el valor que metieron en la coordenada para que no exceda de 3 y no sea menor que 1
pos2 = Console.ReadLine - 1 'aqui asignamos el valor en Y
verificarpy(pos2) 'sub programa para verificar que los valores no excedan a 3 ni menor que 1
posenuso(pos1, pos2, matriz, contador) 'AQUI ES DONDE APARECE EL ERROR CUANDO INSTRODUZCO LA MATRIZ
.
.
.
.
EL CODIGO CONTINUA YA LO HABIA PROBADO SIN HACER LA SUB RUTINA Y ME CORRIO PERFECTO, PERO QUERIA PROBAR HACIENDO ESE ARREGLO PARA PRACTICAR PERO ME ARROJA ESE ERROR
Valora esta pregunta


0