lento Pubblicato: 8 Dicembre 2011 Segnalazione Share Pubblicato: 8 Dicembre 2011 (modificato) Dato che dovevo rispondere con un esempio di sokoban a 'Nalcwap' ne approfitto per metterlo un po piu in luce. Tenete presente che è ridotto all'osso, i livelli non sono stati implementati. (E' comunque estremamente facile aggiungerli.) Per renderlo piu comprensibile ho utilizzato solo if..then riducendo al minimo anche l'uso delle funzioni. Anche le dimensioni dello scenario sono ridotte (Essendo solo un esempio per 'Nalcwap'). Come al solito lascio a voi il piacere di completarlo e aumentarne le potenzialità. La mia logica del gioco non sarà la migliore...ma piuttosto di niente... sokoban.txt Modificato 8 Dicembre 2011 da lento Link to comment Condividi su altri siti More sharing options...
Nalcwap Pubblicato: 8 Dicembre 2011 Segnalazione Share Pubblicato: 8 Dicembre 2011 Very thanks lento for this game Link to comment Condividi su altri siti More sharing options...
lento Pubblicato: 9 Dicembre 2011 Autore Segnalazione Share Pubblicato: 9 Dicembre 2011 Come richiesto da 'Nalcwap' posto la versione completa di due livelli di gioco. Aggiungere ulteriori livelli è estremamente facile. Cosi pure ingrandire l'area di gioco. Cosi pure aumentare il numero di casse (Attualmente ne prevedo max 5). Qui ho dovuto creare due funzioni, ma se avete analizzato il precedente programma dovreste riuscire a capire cosa fanno. Non chiedetemi di metterci anche le musichette mi raccomando!. sokoban1.txt Link to comment Condividi su altri siti More sharing options...
Nalcwap Pubblicato: 9 Dicembre 2011 Segnalazione Share Pubblicato: 9 Dicembre 2011 Very very thanks lento Link to comment Condividi su altri siti More sharing options...
Nalcwap Pubblicato: 17 Dicembre 2011 Segnalazione Share Pubblicato: 17 Dicembre 2011 Sorry my confusion but where in the code 1-i move the boxes? 2- what part fix the box and square1when my square1 push the box and collide the wall? Can you please post this 2 examples separate for understand? Ps:i know now the part the square1 collide wall example if x+1<=maxCol and level[y][x+1]=0 then g.put(x*10,y*10,vuota); x=x+1; g.put(x*10,y*10,square1); end; Very thanks lento Link to comment Condividi su altri siti More sharing options...
lento Pubblicato: 20 Dicembre 2011 Autore Segnalazione Share Pubblicato: 20 Dicembre 2011 Il primo if verifica se la mossa da compiere x+1<=maxCol esce dalle dimensioni consentite maxCol e se dove ci si dovrebbe muovere è presente il muro (wall) level[y][x+1]#1 . elsif tasto=ui.rightkey then // sposta a destra sqaure1 if x+1<=maxCol and level[y][x+1]#1 then if level[y][x+1]=0 then g.put(x*10,y*10,vuota); x=x+1; elsif level[y][x+1]=2 and x+2<=maxCol and level[y][x+2]=0 then level[y][x]=0; g.put(x*10,y*10,vuota); x=x+1; level[y][x]=0; level[y][x+1]=2; g.put((x+1)*10,y*10,box); end; end; Il secondo if verifica se dove ci si deve muovere è una piastrella vuota. in tal caso deve solo cancellare square1 dalla attuale piastrella e incrementare la x alla piastrella successiva (in fondo al programma poi verrà disegnato square1 usando la nuova posizione di x.) elsif: se non è vuota verifica se nella nuova posizione è presente box ma verifica anche se la casella subito dopo x+2 sia vuota allora muove square1 in x+1 e box in x+2 Link to comment Condividi su altri siti More sharing options...
Nalcwap Pubblicato: 20 Dicembre 2011 Segnalazione Share Pubblicato: 20 Dicembre 2011 Thanks lento i will try read this code more carefull sorry for my questions and thanks Link to comment Condividi su altri siti More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Accedi Ora