Newsgroup: it.comp.java
Titolo: Scegliere Progetto per Esame Java di Giugno

Premetto che ho iniziato da poco ad entrare nel mondo Java.
Frequento l'Univ. e a Giugno dovrò sostenere un esame che consiste
nella
presentazione di un progetto e un colloquio orale
il progetto deve essere corredato da breve relazione e dal manuale
utente. 
Vorrei scegliere un progetto non difficile da realizzare per aver modo
di farlo tutto
da solo o con l'aiutino di qualcuno su qualche passaggio che si
presentasse ostico.
I progetti sono da scegliere fra questi:
1) Sodoku applicazione : scrivere un’applicazione che permetta ad un
utente di giocare  a Sodoku. Il programma presenterà all’utente uno
schema 9x9 con la configurazione iniziale; l’utente, selezionando una
cella vuota, riceverà una lista con i numeri che è possibile inserire
in quella cella e il numero scelto comparirà sullo schermo. Il
programma dovrà segnalare all’utente la soluzione del gioco.
 
2) Sodoku applet.
3) Disegno Simmetrico applicazione : realizzare un’applicazione che
permetta all’utente di realizzare semplici disegni con il mouse e che
durante la realizzazione costruisca automaticamente il disegno
simmetrico rispetto ad un’asse orizzontale. Il candidato si immagini
una finestra divisa a metà nel senso orizzontale: nella parte
inferiore della finestra potrà disegnare con il mouse e in quella
superiore il programma disegnerà automaticamente la figura simmetrica
rispetto alla linea di separazione.
4) Disegno Simmetrico applet.
5) Campionato applicazione.
Il candidato definisca due classi per rappresentare i tipi risultato e
campionato relativi ai risultati di un gruppo di N squadre che giocano
un campionato di calcio.
Il risultato e’ costituito da una coppia di interi che rappresentano
il numero di goal fatti rispettivamente dalla squadra di casa e dalla
squadra ospite, -1 nel primo intero codifica il fatto che la partita
non e’ stata giocata.
Il tipo campionato deve rappresentare i nomi delle N squadre del
campionato ed una matrice quadrata NxN che contiene nell’elemento di
coordinate (i,j) il risultato dell’incontro in cui la squadra di casa
i e la squadra in trasferta j. Si noti che gli elementi della
diagonale principale della matrice non sono significativi in quanto
una squadra non gioca mai con se stessa. Gli indici delle squadre
nella matrice corrispondono alla rispettiva squadra nel vettore dei
nomi.
Il  candidato definisca inoltre
•	un metodo mediatrasf che data una squadra restituisce la media
dei goal fatti in trasferta nelle partite giocate (restituisce -1 se
la squadra non e’ presente nel campionato).
•	un metodo puntitot che data una squadra restituisce il totale
dei punti acquisiti dalla squadra in tutte le partite giocate
(restituisce -1 se la squadra non e’ presente nel campionato).
•	una funzione prima che dato come parametro un campionato
restituisce il nome della squadra con il maggior numero di punti in
classifica  (o una delle prime in caso di parita’).
•	un’interfaccia grafica che permetta all’utente di
inizializzare un campionato inserendo i nomi delle squadre che
parteciperanno, di aggiornare i risultati delle partite giocate, di
visualizzare la classifica e di utilizzare le funzionalità descritte
sopra.
6) Campionato applet.
7) Compagnia Telefonica  applicazione
Una compagnia telefonica cellulare gestisce in un file i messaggi SMS
inviati dai propri utenti per la festa di San Valentino. Per ciascun
messaggio vengono memorizzate una stringa contenente il numero
telefonico del mittente e un carattere  che ne codifica il sesso (‘M’
o ‘F’), una stringa e un carattere per numero tel. e sesso del
destinatario ed una stringa destinata al testo del messaggio.
I dati sono memorizzati in un file come una sequenza di dati separati
da spazi, come ad esempio:
00393482929449 M 00443335552222 F Sei l’unica per sempre
00393482929449 M 00393393446444 F Sei l’unica per sempre
00443335552222 F 00393482929449 M Anche tu 
00443335552222 F 00393281112222 M Sei l’unico per sempre
00393281112222 M 00443335552222 F Anche tu
00393281112222 M 00443221112222 M Sei solo tu!
00393395556677 M 00443283338899 F Con la lieta occasione invio
distinti saluti
 
Il candidato definisca opportune classi che descrivano i tipi SMS,
GruppoSMS (per rappresentare rispettivamente un singolo messaggio ed
un gruppo di messaggi) e gli altri tipi che riterrà necessari.
Implementi inoltre: 
•	Un metodo maxsms che restituisce il numero telefonico del
mittente che all’interno di un gruppo di messaggi ha inviato il
maggior numero di messaggi a persone di sesso diverso dal proprio (un
numero qualsiasi tra i primi in caso di parità).
•	Un metodo catena che date due stringhe A e B contenenti numeri
di telefono, restituisce 1 se nel gruppo di messaggi esiste almeno un
messaggio da A ad un numero X e da X a B, restituisce 0 altrimenti.
Nell’esempio restituisce 1 se A=”00393482929449” B=”00393281112222”
poichè esiste X=”00443335552222” che verifica la condizione per il
primo e quarto SMS.
•	Un metodo media che dato un parametro di tipo GruppoSMS
restituisce il numero medio di messaggi inviato da ciascun mittente.
•	Un metodo listasms che dato un numero di telefono restituisce
l’elenco dei numeri a cui ha innviato sms.
•	Un’interfaccia grafica che permetta all’utente di
visualizzare/inserire/cancellare/ modificare  i dati contenuti in un
file e di utilizzare le funzionalità descritte sopra. 
8) Compagnia Telefonica applet.
9) Immagine in Pixel applicazione
Una immagine è un’area rettangolare descritta dalle sue dimensioni
(dei lati in pixel) e da un’insieme di pixel. Un pixel RGB, è una
struttura che contiene la descrizione del colore di un punto
dell’immagine espressa attraverso le intensità di colore
rispettivamente di Red (Rosso), Green (Verde) e Blue (Blù),
l’intensità di un colore è espressa da un intero tra 0 e 255, in
questo modo la tripletta [0,0,0] codifica il colore nero,
[255,255,255] il  bianco e, ad esempio, [255,0,0] il rosso puro e
[120,0,120] una forma di viola.
Per esempio: 
255   0     0        0     0     0         0    0     0           0 0
0
0       0     0        0     255 0         0    0     0           0 0
0
0       0     0        0     0     0         0    255 0           0 0
0
codifica una immagine di tipo mybitmap di 3x3 pixel che contiene una
riga diagonale verde.
Il candidato, attraverso opportune classi, descriva i tipi immagine,
pixel e gli altri tipi che riterrà necessari. Implementi inoltre:
•	 Un metodo Diagonale che data una qualsiasi immagine disegna
una riga nera diagonale discendente a 45° dall’angolo in alto a
sinistra verso il basso a destra e dall’angolo in basso a sinistra
verso l’alto a destra dell’immagine. In modo da creare una sorta di X
•	Un metodo FlipHorizontal che data un’immagine la inverte
specularmene sull’asse verticale.
Esempio                                           dopo FlipHorizontal
•	Un metodo SalvaMyBitmap che dato un elemento di tipo Immagine
ed una stringa che rappresenta il nome di un file, scrive sul file i
dati dell’immagine nel formato MyBitMap sopra descritto.
•	Un’interfaccia grafica che permetta all’utente di scegliere le
dimensioni di un’immagine, ne visualizzi la mappa pixel, permetta
all’utente di colorarla pixel per pixel e di usare le funzionalità
descritte sopra.
10) Immagine in Pixel applet.
11) Registro dei Voti applicazione
Un docente di Inglese di una scuola media superiore registra in un
file di testo i voti riportati dai propri alunni nelle diverse
valutazioni relative a interrogazioni orali (O) o prove scritte (S).
In ciascuna riga memorizza i seguenti dati separati da spazi: la data,
il cognome e il nome, un carattere che indica il tipo di valutazione
(“O” o “S”), il voto riportato (fra 0 e 10). 
Le righe sono memorizzate in un file, ordinate per data, come una
sequenza di dati separati da spazi  come ad esempio:
10032005  Rossi  Mario  S  6
10032005  Neri  Luca  S  9
10032005  Gialli  Teresa  S  4
07052005  Neri  Luca  O  9
07052005  Rossi  Mario  O  6
31052005  Neri  Luca  O  9
31052005  Gialli  Teresa  O  4
Il candidato definisca opportune classi  che descrivano i tipi Voto,
Registro (per rappresentare rispettivamente un singolo voto ed un
insieme di voti o registro) e gli altri tipi che riterrà necessari.
Implementi inoltre:
•	Un metodo media che dati come parametri il cognome e nome di
un alunno, restituisce la votazione media riportata nelle prove
scritte, quella riportata nelle prove orali e la votazione media
ottenuta in tutte le prove.
•	Un metodo promosso che dati come parametri il cognome e nome
di un alunno, true se l’alunno ha riportato una media generale
sufficiente ( >= 6 ).
•	Un metodo tuttiPromossi che restituisce l’elenco dei nomi
degli studenti promossi. 
•	Un’interfaccia grafica che permetta di inserire e cancellare
dati nel file, cercare i dati sulle prove di uno studente per la
visualizzazione e/o la modifica e permetta di utilizzare le
funzionalità sopra descritte.
12) Registro dei Voti applet.
13) Il labirinto applicazione : data una matrice mxn con elementi a
valori 0,1 che codifica un labirinto piano (0=indica posizione libera,
1= posizione bloccata) si vuole costruire un programma che permetta
all’utente di giocare. 
L’interfaccia grafica disegnerà il labirinto e dovrà permettere al
giocatore di muoversi usando il mouse o le frecce per raggiunge una
prefissata uscita di coordinate (xu, yu). Il programma bloccherà le
mosse non lecite del giocatore.
Il programma dovrà inoltre visualizzare la soluzione su richiesta.
Si tenga conto che ad ogni passo è possibile muoversi in una casella
adiacente se esiste ed è libera (si considerano adiacenti soltanto le
4 caselle confinanti) secondo le direzioni dei quattro punti
cardinali. N,S,E,O, non sono dunque ammessi "movimenti in diagonale".
14) Il labirinto applet.
15)  Life applicazione.  Scrivere una applicazione che simuli
l’andamento della vita di una popolazione di individui monocellulari
su una matrice. In un universo toroidale, (rappresentato da una
matrice A di dimensioni mxn in cui gli elementi della prima riga si
considerano adiacenti a quelli dell'ultima riga, e quelli della prima
colonna adiacenti all'ultima)  vivono microorganismi cellulari
booleani (A[i,j]= true rappresenta che "esiste una cellula nella
posizione i,j" ).
Inizialmente gli organismi possono essere inseriti casualmente o
dall'utente tramite mouse.
La vita nella matrice si evolve di istante in istante secondo le
seguenti regole:
•	Sesso ternario. Le cellule si riproducono attraverso una
sessualità ternaria: se una casella vuota all'istante i è circondata
esattamente da 3 cellule, all'istante i+1 verrà generata una nuova
cellula in tale casella.
•	Morte per isolamento. Se una cellula non è circondata da
alcuna altra cellula, all'istante successivo essa muore per isolamento
e quindi la corrispondente casella sarà vuota in tale istante.
•	Morte per sovrappopolazione. Se una cellula è circondata da 4
o più cellule essa muore per sovrappopolazione all'istante successivo.
Si considerano adiacenti ad una casella le 8 caselle confinanti, anche
in diagonale.
16)  Life applet : come il precedente, ma con un applet
17) Master mind applicazione : scrivere una applicazione che permetta
all’utente di giocare contro il computer. 
18)  Master mind applet : come il precedente, ma con un applet
19) Battaglia navale applicazione : scrivere una applicazione che
permetta all’utente di giocare  contro il computer. 
20) Battaglia navale applet : come il precedente, ma con un applet.
21)  Il simulatore di ABACO applicazione : si vogliono simulare le 4
operazioni su di un abaco cinese virtuale, compreso l'algoritmo del
contadino russo.
Il programma deve accettare sequenze di operazioni e ne mostra
l'esecuzione  attraverso i movimenti delle sfere di un abaco cinese
riprodotto graficamente.
22) Il simulatore di ABACO applet : come il precedente come applet

Mio consiglio personale, forse stupido ... mi sembrano tutti progetti di 
complessità + o - equivalente .... io ti suggerirei di scegliere la cosa 
che ti piace di +, quello che trovi + acattivante :)))
fare un progetto per il quale nn hai interesse.... è veramente 
stressante (almeno per me :) )


Mi piacerebbe fare il Mastermind, che tra l'altro è anche un gioco
carino.
Potresti darmi qualche dritta su come impostarlo?

@ the Genius® @ wrote:

Io partirei da un bel foglio di carta.... mi butterei giu bene le regole 
... non me le ricordo tutte ....e poi da li a salire stabilirei cosa mi 
serve per fare il gioco .... non mi sembrava molto difficile come regole 
ovvero se nn ricordo male avevi una sequenza di 4 palline da indovinare, 
ognuna poteva essere di un colore diverso tra 6 colori
ed il computer dovrebbe darti bianco, nero o niente per dirti se :
hai indovinato un colore ma nn ti viene detto quale
hai indovinato un colore in posizione sbagliata
fatti un paio di partite sulla carta... ti sarà poi tutto + chiaro :)
ciao

@ the Genius® @ wrote:

potrei aiutarti.. sempre che tu non ne trovi giusto il contrario..
-- 
www.iuz-lab.info
Home Politics - 
http://www.iuz-lab.info/homepolitics.php

Beh, il MasterMind a mio modo di vedere è uno dei più semplici.
Comunque quoto il consigli di Pierpaolo.
Consigli.
1) Rendilo parametrizzabile: numero di colori a scelta, numero di
colori da indovinare a scelta.
2) Se vuoi introdurre un fattore di complessità, metti anche numero di
giocatori a scelta e, metti il computer come giocatore (anche se è lui
a generare la sequenza da indovinare, non è detto che debba
conoscerla...:-)). Ser lo fai, stai sicuro che la prima cosa che il
prof proverà è tentare di battere il computer. Se non ci riesce vuol
dire che il programma (algoritmicamente parlando) è buono.
3) (Il più importante). Lavora a oggetti.

 I progetti sono da scegliere fra questi:
[cut]
Chissa' perche', ma questi progetti non mi suonano nuovi!
L'altra volta mi incuriosiva l'applicazione Life, questa volta mi suona 
simpatico il Sudoku (qualcosa di nuovo :P)
Saluti
CarMas

Ancora per poco...:-)
Dovrei rilasciare un progettino a breve...

Io ho realizzato un Life .. o se così lo posso definire, ma ahimè ha
ancora molte pecche. Volevo sapere se, qualcuno avesse qualche sito da
darmi per leggere più o meno le regole generali di "riproduzione" dei
pixel, virus, quadratini o come volete kiamarli. Meglio ancora se avete
direttamente l'applicativo, così mi studio come lavora nel creare e
distruggere gli esserini. Grazie ancora. 
Saluti Marco

 writes:
M> kiamarli.
Si chiamano (col ch) cellule. Life di Conway è facile da implementare,
rileggiti bene le regole e guadagnati il voto finale.
-- 
 /\           ___
/___/\_|_|\_|__|___Gian Uberto Lauri_____
  //--\| | \|  |   Integralista GNUslamico
\/                 e coltivatore diretto di Software

Per curiosita' sei nella sede di modena?

 rileggiti bene le regole e guadagnati il voto finale.
ho 'pescato' questo
http://www.ibiblio.org/lifepatterns/october1970.html
bye
DKano