Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    107

    Gioco del labirinto

    Ciao,

    dato un array bidimensionale (labirinto) , una cella di partenza p e una cella di arrivo a, devo creare una funzione che mi dica se è possibile andare da p ad a passando solo per celle di valore 0 (le celle di valore 1 rappresentano i muri). Uso VB 5.0

    Devo utilizzare una pila
    Ho buttato giu un po di codice ma sono in difficoltà, mi sapete dare uno spunto per realizzare la cosa nel modo più semplice ?

    Codice PHP:
    Dim labirinto(1 To 51 To 5) As Integer
    Dim x 
    As Integer
    Dim y 
    As Integer

    Private Sub Form_Load()
        
    labirinto(11) = 0
        labirinto
    (12) = 0
        labirinto
    (13) = 0
        labirinto
    (14) = 1
        labirinto
    (15) = 0
        labirinto
    (21) = 0
        labirinto
    (22) = 1
        labirinto
    (23) = 1
        labirinto
    (24) = 1
        labirinto
    (25) = 0
        labirinto
    (31) = 0
        labirinto
    (32) = 0
        labirinto
    (33) = 0
        labirinto
    (34) = 1
        labirinto
    (35) = 1
        labirinto
    (41) = 0
        labirinto
    (42) = 1
        labirinto
    (43) = 0
        labirinto
    (44) = 0
        labirinto
    (45) = 0
        labirinto
    (51) = 0
        labirinto
    (52) = 0
        labirinto
    (53) = 1
        labirinto
    (54) = 1
        labirinto
    (55) = 0
        
        
    'Partenza
        x = 1
        y = 1
        
        '
    Arrivo
        a_x 
    5
        a_y 
    5
        
        Call raggiungiDestinazione
    (xy)
    End Sub

    Private Sub raggiungiDestinazione(ByRef x As IntegerByRef y As Integer)
        If (
    <> a_x And <> a_yThen
            
    'Provo ad andare a destra
            If labirinto(x, y + 1) = 0 Then
                y = y + 1
                '
    push(x,y)
                
    Call raggiungiDestinazione(xy)
            
    End If
            
            
    'Provo ad andare a sinistra
            If labirinto(x, y - 1) = 0 Then
                y = y - 1
                '
    push(x,y)
                
    Call raggiungiDestinazione(xy)
            
    End If
            
            
    'Provo ad andare in su
            If labirinto(x - 1, y) = 0 Then
                x = x - 1
                '
    push(x,y)
                
    Call raggiungiDestinazione(xy)
            
    End If
            
            
    'Provo ad andare in giù
            If labirinto(x + 1, y) = 0 Then
                x = x + 1
                '
    push(x,y)
                
    Call raggiungiDestinazione(xy)
            
    End If
        
        Else
            
    MsgBox ("Arrivato a destinazione !")
        
    End If
    End Sub 

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    759
    Vedo due problemi.
    Il primo è che prima di fare un qualunque "spostamento" dovresti verificare che la cella di destinazione esista. Basta controllare i valori dei due indici

    Il secondo è che le quattro decisioni di andare in direzioni diverse devono essere mutuamente esclusive. Considerando la ricorsività immagino che tu incorra in un esaurimento dello stack delle chiamate.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.