Esercizio 1 1. Si crei una classe AccumulatoreSomma, avente il suo valore double iniziale specificato nel costruttore, un metodo per sommare algebricamente un valore, e un metodo per ottenere il risultato. 2. Si crei una classe AccumulatoreSommaProdotto avente le stesse caratteristiche di AccumulatoreSomma, con in piu la possibilita di moltiplicare un valore. 3. Si crei una classe AccumulatoreSommaProdottoDivisione, che ha in piu la possibilita di dividere il numero memorizzato per un valore. 1
Esercizio 2 Si modifichi il design delle classi implementate nell esercizio 1 in modo che tutte offrano un metodo aggiuntivo calcola avente due parametri: il primo l operatore che si vuole utilizzare, il secondo l operando su cui si vuole operare. Operazioni effettuate con operatori errati devono essere ignorate (oppure produrre un errore). Suggerimento: si utilizzi una gerarchia di classi che parta da una classe astratta Accumulatore che implementa calcola come metodo vuoto (oppure come metodo che lancia un eccezione). Utilizzando i meccanismi di Input/Input di Java si crei un interfaccia testuale per utilizzare la classe Accumulatore. 2
Esercizio 3 PARTE 1. Si crei una opportuna gerarchia di classi per rappresentare una versione semplificate del gioco degli scacchi. Sapendo che: Si ha una griglia 8x8 denominata Scacchiera Ogni elemento della griglia si chiama Casella In ogni casella ci puo essere un Pezzo I pezzi possono essere: Torre, Cavallo, Alfiere, Regina, Re, ognuno con differenti capacita di movimento (si ignori il Pedone per il momento). La scacchiera viene creata con dei pezzi dentro le caselle posizionati opportunamente. Una casella puo essere vuota o avere un pezzo al suo interno. Un pezzo puo appartenere al giocatore Bianco o al giocatore Nero e puo spostarsi da una casella ad un altra secondo determinate regole dipendenti dal pezzo. Un pezzo puo muoversi solo verso una casella vuota od una casella occupata da un pezzo avversario. In questo secondo caso il pezzo avversario viene rimosso. 3
Design: Esercizio 3
Esercizio 3 PARTE 2. Si implementino i seguenti punti: Inizializzazione della scacchiera Implementazione logica di gioco della scacchiera: Turni di movimento alternati tra giocatore Bianco e giocatore Nero. Esecuzione del movimento di un pezzo. Se un pezzo viene mosso in una casella occupata da un altro pezzo avversario, il pezzo di destinazione viene rimosso. Se il pezzo e dello stesso giocatore, la mossa non e consentita. Condizione di vittoria (un giocatore rimuove l ultimo pezzo dell avversario) Descrizione movimenti: Re: si muove da una casella alla casella adiacente (verticale, orizzontale, diagonale) Regina: si muove da una casella ad una casella di lontananza arbitraria (verticale, orizzontale, diagonale) purche non ci siano pezzi tra la casella di partenza e quella di destinazione. Torre e Alfiere: come Regina, ma il primo si muove solo in orizzontale/verticale, il secondo solo in diagonale. Cavallo: si muove a L : due movimenti in orizzontale (verticale) e uno in verticale (orizzontale), il movimento e permesso anche se ci sono pezzi tra la casella di destinazione e la casella di partenza. PER IL MOMENTO NON SI IMPLEMENTI IL PEDONE 5
Posizioni iniziali: Esercizio 3
Esercizio 3 PARTE 3. Si modifichi l esercizio precedente aggiungendo il supporto per il PEDONE, sapendo che il pedone si muove in questo modo: 1. Mossa normale: si muove in verticale di una sola posizione, purche non sia presente un pezzo nella casella di destinazione. 2. Mossa per mangiare: si muove in diagonale di una sola posizione, purche sia presente un pezzo avversario nella casella di destinazione. 3. Mossa doppia: si muove in verticale di due posizioni nella stessa direzione, purche non sia presente un pezzo in entrambe le posizioni e lo stesso pedone non abbia mai eseguito mosse dall inizio della partita. PARTE 4. Utilizzando gli strumenti di input/output di Java si gestisca una partita dall inizio alla fine sapendo che la partita e vinta quando tutti i pezzi di un giocatore sono stati rimossi dalla scacchiera. 7