Advertisement
jsbsan

comporbar cuarteta de cuatro

Oct 4th, 2013
2,760
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
GAMBAS 3.09 KB | None | 0 0
  1. Public Function comprueba_linea_Cuatro(n As Integer, jugador As Integer) As Variant[] 'devuelve ganador y linea formada de 4 fichas
  2.  
  3.   Dim i, j, a As Integer
  4.   Dim ganador As Integer = 0
  5.   Dim num_lineas As Integer = 0
  6.   Dim lineas_posibles As Integer = 8 - n
  7.   Dim cuaterna, cuaterna1, cuaterna2, cuaterna3, cuaterna4 As New Integer[]
  8.   Dim linea, linea1, linea2, linea3, linea4 As New Integer[]
  9.   'buscas linea horizontal
  10.   For i = 0 To 6
  11.    
  12.     For j = 0 To lineas_posibles - 1
  13.       cuaterna.Clear()
  14.       linea.Clear()
  15.       For a = 0 To n - 1
  16.         cuaterna.Add(Me.casillas[i, j + a])
  17.         linea.Add(i)
  18.         linea.Add(j + a)
  19.       Next
  20.       If Me.casillas[i, j] <> 0 And If comparaCuaternaElemento(cuaterna, Me.casillas[i, j], n) Then
  21.         ganador = Me.casillas[i, j]
  22.        
  23.         Return [ganador, linea]
  24.        
  25.       Endif
  26.     Next
  27.   Next
  28.  
  29.   'buscar linea vertical
  30.   For i = 0 To 6
  31.    
  32.     For j = 0 To lineas_posibles - 1
  33.       cuaterna.Clear()
  34.       linea.Clear()
  35.       For a = 0 To n - 1
  36.         cuaterna.Add(Me.casillas[j + a, i])
  37.         linea.Add(j + a)
  38.         linea.Add(i)
  39.       Next
  40.       If Me.casillas[j, i] <> 0 And comparaCuaternaElemento(cuaterna, Me.casillas[j, i], n) Then
  41.         ganador = Me.casillas[j, i]
  42.        
  43.         Return [ganador, linea]
  44.        
  45.       Endif
  46.     Next
  47.   Next
  48.  
  49.   'buscar linea diagonal
  50.   For i = 0 To 3
  51.    
  52.     For j = 0 To lineas_posibles - i - 1
  53.       cuaterna1.Clear()
  54.       cuaterna2.Clear()
  55.       cuaterna3.Clear()
  56.       cuaterna4.Clear()
  57.       linea1.Clear()
  58.       linea2.Clear()
  59.       linea3.Clear()
  60.       linea4.Clear()
  61.       For a = 0 To n - 1
  62.         cuaterna1.Add(Me.casillas[i + j + a, j + a])
  63.         linea1.Add(i + j + a)
  64.         linea1.Add(j + a)
  65.         cuaterna2.Add(Me.casillas[j + a, i + j + a])
  66.         linea2.Add(j + a)
  67.         linea2.Add(i + j + a)
  68.         cuaterna3.Add(Me.casillas[i + j + a, 6 - (j + a)])
  69.         linea3.Add(i + j + a)
  70.         linea3.Add(6 - (j + a))
  71.         cuaterna4.Add(Me.casillas[j + a, 6 - (i + j + a)])
  72.         linea4.Add(j + a)
  73.         linea4.Add(6 - (i + j + a))
  74.       Next
  75.       If Me.casillas[i + j, j] <> 0 And comparaCuaternaElemento(cuaterna1, cuaterna1[0], n) Then
  76.         ganador = cuaterna1[0]
  77.        
  78.         Return [ganador, linea1]
  79.        
  80.       Else
  81.         If Me.casillas[j, i + j] <> 0 And If comparaCuaternaElemento(cuaterna2, cuaterna2[0], n) Then
  82.           ganador = cuaterna2[0]
  83.          
  84.           Return [ganador, linea2]
  85.          
  86.         Else
  87.           If Me.casillas[i + j, 6 - j] <> 0 And If comparaCuaternaElemento(cuaterna3, cuaterna3[0], n) Then
  88.             ganador = cuaterna3[0]
  89.            
  90.             Return [ganador, linea3]
  91.            
  92.           Else
  93.             If Me.casillas[j, 6 - (i + j)] <> 0 And If comparaCuaternaElemento(cuaterna4, cuaterna4[0], n) Then
  94.               ganador = cuaterna4[0]
  95.              
  96.               Return [ganador, linea4]
  97.              
  98.             Endif  
  99.           Endif  
  100.         Endif  
  101.       Endif  
  102.      
  103.     Next
  104.   Next
  105.  
  106.   Return [0, 0]
  107.  
  108. End
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement