Josualba84
08-06-2008, 14:46
Ciao a tutti...
Chiedo gentilmente aiuto per risolvere un esercizio...:help:
devo svolgere un progettino per l'università, è l'ultimo esame e sono un po' disperata...
Il progetto è il seguente...
-----------------------------------------------------------------------
Scrivere un programma Java che simuli una finale del campionato europeo di calcio in cui la
partita deve essere decisa ai rigori. Oltre all'arbitro, sono
coinvolti gli undici giocatori (uno ricopre il ruolo anche di portiere)
di ciascuna squadra. Inizialmente
vengono tirati 5 rigori per ogni squadra: se alla fine il numero di
reti segnate da ciascuna squadra e` uguale, si procede ad oltranza
tirando una coppia di rigori alla volta (la prima squadra che segna
quando l'altra fallisce, vince).
L'esecuzione del calcio di rigore e` modellata in questo modo: il
tiratore può decidere di colpire la rete in una delle 6 direzioni
Nord, NordEst, Est, Centro, Ovest, NordOvest; il portiere può
decidere di buttarsi in una delle medesime sei direzioni.
Inoltre il tiratore manda la palla fuori dallo specchio della porta
con probabilità 1/3.
Un rigore risulta fallito nelle seguenti situazioni
- tiratore e portiere scelgono la stessa direzione
- il tiro e` fuori
- il tiratore tira con troppo ritardo (> 10ms dal fischio dell'arbitro).
Per ogni rigore, valgono i seguenti vincoli:
- il tiratore non può effettuare il tiro fino a che l'arbitro non ha fischiato
- il portiere non può muoversi prima che siano passati 2 ms dal fischio dell'arbitro
- nessun calciatore può tirare un secondo rigore fino a quando tutti i componenti
della sua squadra non ne hanno tirato uno.
Poiché le squadre cercano di far tirare i giocatori con i nervi più saldi
(in realtà ordine casuale), è compito dell'arbitro controllare che i giocatori
non barino quando un giocatore si presenta per eseguire il calcio di rigore.
----------------------------------------------------------------------
Ho un problema: non riesco a gestire il portiere!!
Non riesco a gestire il fatto che il portiere oltre a parare possa anche tirare i calci di rigore...
...inizialmente avevo pensato di creare una classe Portiere extends Giocatore
ma non saprei poi come implementare il metodo run() del portiere...
La classe Giocatore l'ho impostata in questo modo:
public class Giocatori extends Thread{
private Stadio stadio;
private char inizialeSquadra;
public Giocatori(String nome, Stadio s, char c){
super(nome);
stadio = s;
inizialeSquadra = c;
}
public void run(){
//la scuadra entra in campo...
System.out.println("La squadra " + getInizialeSquadra() + " entra in campo!!");
while (true){
stadio.attesaFischio();
//stadio.verificaPossibilitaCalcio();
stadio.calcioRigore();
stadio.decisioneTiro();
}
}
public char getInizialeSquadra() {
return inizialeSquadra;
}
public void setInizialeSquadra(char inizialeSquadra) {
this.inizialeSquadra = inizialeSquadra;
}
}
Vi ringrazio tantissimissimo se riesciste a darmi una mano...!!
Aspetto con ansia qualche risposta!!!
GRAZIE!!!:D
Chiedo gentilmente aiuto per risolvere un esercizio...:help:
devo svolgere un progettino per l'università, è l'ultimo esame e sono un po' disperata...
Il progetto è il seguente...
-----------------------------------------------------------------------
Scrivere un programma Java che simuli una finale del campionato europeo di calcio in cui la
partita deve essere decisa ai rigori. Oltre all'arbitro, sono
coinvolti gli undici giocatori (uno ricopre il ruolo anche di portiere)
di ciascuna squadra. Inizialmente
vengono tirati 5 rigori per ogni squadra: se alla fine il numero di
reti segnate da ciascuna squadra e` uguale, si procede ad oltranza
tirando una coppia di rigori alla volta (la prima squadra che segna
quando l'altra fallisce, vince).
L'esecuzione del calcio di rigore e` modellata in questo modo: il
tiratore può decidere di colpire la rete in una delle 6 direzioni
Nord, NordEst, Est, Centro, Ovest, NordOvest; il portiere può
decidere di buttarsi in una delle medesime sei direzioni.
Inoltre il tiratore manda la palla fuori dallo specchio della porta
con probabilità 1/3.
Un rigore risulta fallito nelle seguenti situazioni
- tiratore e portiere scelgono la stessa direzione
- il tiro e` fuori
- il tiratore tira con troppo ritardo (> 10ms dal fischio dell'arbitro).
Per ogni rigore, valgono i seguenti vincoli:
- il tiratore non può effettuare il tiro fino a che l'arbitro non ha fischiato
- il portiere non può muoversi prima che siano passati 2 ms dal fischio dell'arbitro
- nessun calciatore può tirare un secondo rigore fino a quando tutti i componenti
della sua squadra non ne hanno tirato uno.
Poiché le squadre cercano di far tirare i giocatori con i nervi più saldi
(in realtà ordine casuale), è compito dell'arbitro controllare che i giocatori
non barino quando un giocatore si presenta per eseguire il calcio di rigore.
----------------------------------------------------------------------
Ho un problema: non riesco a gestire il portiere!!
Non riesco a gestire il fatto che il portiere oltre a parare possa anche tirare i calci di rigore...
...inizialmente avevo pensato di creare una classe Portiere extends Giocatore
ma non saprei poi come implementare il metodo run() del portiere...
La classe Giocatore l'ho impostata in questo modo:
public class Giocatori extends Thread{
private Stadio stadio;
private char inizialeSquadra;
public Giocatori(String nome, Stadio s, char c){
super(nome);
stadio = s;
inizialeSquadra = c;
}
public void run(){
//la scuadra entra in campo...
System.out.println("La squadra " + getInizialeSquadra() + " entra in campo!!");
while (true){
stadio.attesaFischio();
//stadio.verificaPossibilitaCalcio();
stadio.calcioRigore();
stadio.decisioneTiro();
}
}
public char getInizialeSquadra() {
return inizialeSquadra;
}
public void setInizialeSquadra(char inizialeSquadra) {
this.inizialeSquadra = inizialeSquadra;
}
}
Vi ringrazio tantissimissimo se riesciste a darmi una mano...!!
Aspetto con ansia qualche risposta!!!
GRAZIE!!!:D