none
Quien me puede asesorar con un error al momento de hacer un llamado a un sub programa visual basic_ RRS feed

  • Pregunta

  • 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

    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


     
    jueves, 4 de octubre de 2018 15:21

Respuestas

Todas las respuestas