Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    Implementazione scacchiera

    Vorrei creare una scacchiera intesa come array di pezzi dove i pezzi non sono tutti dello stesso tipo (ad esempio i pezzi degli scacchi) ma ogni pezzo è dotato di un metodo pezzo.mossa(casella) in modo tale che a seconda del pezzo su cui richiamo la mossa venga eseguita una diversa funzione (es: la mossa del cavallo, la mossa della torre...).
    Come mi consigliate di gestire la cosa?

  2. #2
    Visto che, in molti casi, è il giocatore a decidere dove deve andare il pezzo, non sarebbe più logico implementare una serie di regole solo per convalidare la mossa richiesta dall'utente?

  3. #3
    Beh ma in quale altro modo le implementeresti?

  4. #4
    Una cosa tipo:

    Codice PHP:
    <?php

    abstract class ChessPiece {
        abstract function 
    canMove($rank$file);
        abstract function 
    isValidMove($rank$file);

        function 
    onBoard($rank$file) {
            
    // todo    
        
    }

        function 
    isEmpty($rank$file) {
            
    // todo    
        
    }
        
        function 
    isOpponentPiece($rank$file) {
            
    // todo    
        
    }
        

    }

    class 
    Pawn extends ChessPiece {

        function 
    isValidMove($rank$file) {
            if (
    $rank == $currentRank) {
                if (
    isWhite()) {
                    if (
    $currentFile 2) { // First Move
                        
    return (($file $currentFile == 2) || ($file $currentFile == 1));
                    } else {
                        return (
    $file $currentFile == 1);
                    }
                } else {
                    if (
    $currentFile 7) { // First Move
                        
    return (($currentFile $file == 2) || ($currentFile $file == 1));
                    } else {
                        return (
    $currentFile $file == 1);
                    }
                }
            }
            return 
    false;
        }

        function 
    canMove($rank$file) {
            if ( 
    $this->onBoard($rank$file) && 
                (
    $this->isEmpty($rank$file) || $this->isOpponentPiece($rank$file)) &&
                 
    $this->isValidMove($rank$file)
                ) {
                return 
    true;
            }
            return 
    false;
       }    
    }

    ?>

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    172
    da un occhiata qui ti può servire

    http://www.redlionwebdesign.com/phpchess.htm

  6. #6
    filippo era proprio questo che intendevo fare, quello che chiedevo è se fosse possibile creare un array di pezzi diversi, ad esempio alcuni pedoni, alcune torri ecc...

  7. #7
    Che cosa intendi con "creare un array di pezzi diversi"?
    A quale scopo? Per quale utilizzo?
    Un oggetto può essere inserito in un array come qualsiasi altro "tipo" del PHP.

  8. #8
    La mia scacchiera non è un array bidimensionale di ChessPiece ma di Pawn, di Rock, di King ecc...

  9. #9
    Originariamente inviato da filippo.toso
    Che cosa intendi con "creare un array di pezzi diversi"?
    A quale scopo? Per quale utilizzo?
    Un oggetto può essere inserito in un array come qualsiasi altro "tipo" del PHP.

  10. #10
    Quello che non so è come faccio a creare (ad esempio) un array di:
    TORRE-CAVALLO-ALFIERE-RE-REGINA-ALFIERE-CAVALLO-TORRE

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.