Aiuto - Cerca - Utenti - Calendario
Versione completa: Java!
GForum > Discussioni Tematiche > Informatica
RRR
il primo che mi spara un idea o un algoritmo su come calcolare gli strike consecutivi in un applicazione java che tiene i punti di un partita a bowling si becca la foto di una tizia nuda che ho trovato su google O.o

apparte gli scherzi, qualuno puo aiutarmi? il codice non deve essere necesariamente java mi basta l'lgoritmo. se vi torna piu facile scriverlo in un linguaggio che a parole, scrivetelo in php o C o VB o java script (o jingjing ae.gif ) che mi scoccia dover immagazinare altre conoscienze ._.''
Dege
CITAZIONE
Calcolo del punteggio [modifica]

Una partita di bowling è composta di 10 frames (frazioni) per ognuna delle quali si hanno a disposizione 2 tiri per cercare di abbattere tutti i birilli. Il punteggio viene annotato in una apposita scheda con 10 caselle principali, una per ogni turno di gioco e normalmente si possono incontrare queste situazioni:
1° caso - è il più semplice: se non vengono abbattuti tutti i birilli nei due tiri a disposizione si procede semplicemente alla somma matematica del totale dei birilli colpiti.
2° caso - se il tiro ha prodotto uno spare (cioè l'abbattimento di tutti i birilli al secondo tiro, segnalato solitamente con il segno "/") il punteggio da segnare nella casella del tiro viene lasciato in sospeso fino al turno successivo di gioco, dopo di che viene così calcolato: 10 + il numero dei birilli abbattuti con il 1° tiro successivo, pertanto dal minimo appunto di 10 nel caso non si abbatta alcun birillo sino al massimo di 20, risultante dall'ottenimento di uno strike con la palla successiva. Esempio: primo tiro: 8. secondo tiro: 2. (tutti i birilli colpiti). Frame successivo. Primo tiro: 6. secondo tiro: 3. Totale punteggio primo frame: 10 + 6 = 16, totale 2° frame: 9, totale: 25.
3° caso - se si realizza uno strike (segnalato con una "X"), il punteggio si calcola in questo modo: 10 + il numero di birilli abbattuti con le 2 bocce successive ; nel caso in cui il 1° tiro successivo sia un altro strike, si deve pertanto attendere un ulteriore turno prima di poter computare i punti. Esempio: primo tiro: 10 (X) fine del frame. Secondo Frame: primo tiro: 10 (X) Fine secondo frame. Terzo Frame: primo tiro: 8 Secondo tiro: 2, quindi Punteggio secondo frame: 10+8, Punteggio primo frame: 10(primo tiro) + 18(secondo tiro) = 28, in questo caso il totale sarebbe 28+18+10=56.
Risulta più facile andare a ritroso quando ci sono strike e spare, dato che il tiro precedente aggiunge i punti del successivo.
Inoltre, se al decimo frame si ottiene uno "spare" si avrà diritto a un ulteriore tiro; nel caso invece si ottenga uno "strike" (sempre al 10° frame) si avrà diritto a effettuare due tiri ulteriori, 2 di numero, nonostante venga effettuato un altro strike. La particolarità dei punti ottenuti con i tiri effettuati oltre il decimo frame sta nel fatto che non vengono moltiplicati secondo lo schema prima spiegato: se al 10° frame si effettua uno spare, il punteggio ottenuto con la boccia successiva non viene moltiplicato; se invece al 10° frame si ottiene uno strike, viene moltiplicato solo il primo dei due tiri a disposizione, mentre l'ultimo non viene moltiplicato.
Seppur apparentemente complicato nel sistema di calcolo del punteggio, il gioco del bowling è peraltro semplice, divertente e appassionante, inoltre è coadiuvato sempre da un pratico schermo con il punteggio!

da wikipedia

Ti basta creare una struttura/oggetto che funzioni come una schedina segnapunti del bowling, più semplice di così?
The_Boss
int punteggio=0,i,a,b,c,spare=0,strike=0;
a=tiro();// sarebbe il risultato del tiro
if(a<10){
punteggio+=a;
c=a;
b=tirosecondario©; //risultato di un tiro mancando lo strike al primo
punteggio+=b;
if((a+cool.gif==10){spare=1}
if(a==10){strike=1}
}
for(i=0;i<=8;i++){
if(strike){
a=tiro();
if(a<10){
punteggio=punteggio+20+a*2;
c=a;
b=tirosecondario©; //risultato di un tiro mancando lo strike al primo
punteggio=punteggio+b*2;

}
if((a+cool.gif==10){spare=1}
strike=0;
if(a==10){
strike=1;
}

}
if(spare){
punteggio+=a;
spare=0;
}
a=tiro();// sarebbe il risultato del tiro
if(a<10){
punteggio+=a;
c=a;
b=tirosecondario©; //risultato di un tiro mancando lo strike al primo
punteggio+=b;
}
if((a+cool.gif==10){spare=1}
if(a==10){
strike=1;
}



}





questo è lo spunto..ho tralasciato l'ultima clausola citata da dege il caso particolare dell'ultimo spare...
lo scritta alla veloce non sono sicuro funzioni!adesso scappo ciao!
The_Boss
asd forse ci voleva qualche commento ma non mi è mai piaciuto metterli xD vero dege? XD
ps l'indentazione cera ma si è fottuta <.<
Dege
Cotto forse dovevi metterlo dentro un codebox per evitare le faccine tongue.gif
RRR
CITAZIONE (Dege @ May 28 2010, 09:39 PM) *
da wikipedia

Ti basta creare una struttura/oggetto che funzioni come una schedina segnapunti del bowling, più semplice di così?


si li so i punti. il problema e' che gli strike consecutivi non vanno calcolati subito perche' uno strike raddoppia il punteggio dei 2 tiri della successiva frazione).
pero' ovviamente quando si fa strike si fa 1 solo tiro in quella frazione, quindi uno strike nella frazione X raddoppia il punteggio nei 2 tiri della frazine X+1. ma se nella frazione X+1 si fa n altro strike, lo strike della frazione X raddoppia lo strike della frazione X+1 e il primo tiro della frazione X+2 ammeno che non si faccia un altro strike anche nella frazione X+2...
il caso massimo (una partita perfetta) il punteggio del primo tiro viene calcolato solo dopo l'undicesima frazione (se fai strike o spare alla 10 frazione ti viene aggiunto un tiro in piu) a quel punto il calcolo del primo tiro sara' 10+(10*2)+(10*2*2)+(10*2*2)+(10*2*2)+(10*2*2)+(10*2*2)+(10*2*2)+(10*2*2)+(10*2*2
)+(10*2*2) quello del secondo 10+(10*2)+(10*2*2)+(10*2*2)+(10*2*2)+(10*2*2)+(10*2*2)+(10*2*2)+(10*2*2)+(10*2*2
) e cosi' via sempre togliendo un tiro.

questo sempre che io abbia capito bene come funiona il calcolo degli strike consecutivi xD
RRR
CITAZIONE (The_Boss @ May 28 2010, 10:13 PM) *
int punteggio=0,i,a,b,c,spare=0,strike=0;
a=tiro();// sarebbe il risultato del tiro
if(a<10){
punteggio+=a;
c=a;
b=tirosecondario©; //risultato di un tiro mancando lo strike al primo
punteggio+=b;
if((a+cool.gif==10){spare=1}
if(a==10){strike=1}
}
for(i=0;i<=8;i++){
if(strike){
a=tiro();
if(a<10){
punteggio=punteggio+20+a*2;
c=a;
b=tirosecondario©; //risultato di un tiro mancando lo strike al primo
punteggio=punteggio+b*2;

}
if((a+cool.gif==10){spare=1}
strike=0;
if(a==10){
strike=1;
}

}
if(spare){
punteggio+=a;
spare=0;
}
a=tiro();// sarebbe il risultato del tiro
if(a<10){
punteggio+=a;
c=a;
b=tirosecondario©; //risultato di un tiro mancando lo strike al primo
punteggio+=b;
}
if((a+cool.gif==10){spare=1}
if(a==10){
strike=1;
}



}





questo è lo spunto..ho tralasciato l'ultima clausola citata da dege il caso particolare dell'ultimo spare...
lo scritta alla veloce non sono sicuro funzioni!adesso scappo ciao!


si l'ho fatta anche io una cosa del genere con la differena che, temporanamnte uso il metodo math.random() per creare dei tiri immaginari. a vederla cosi' a occhio pare uguale alla mia m cmq me la copio su netbeans e vedo che cambia grazie tongue.gif
DragonIce
CITAZIONE (RRR @ May 28 2010, 09:15 PM) *
il primo che mi spara un idea o un algoritmo su come calcolare gli strike consecutivi in un applicazione java che tiene i punti di un partita a bowling si becca la foto di una tizia nuda che ho trovato su google O.o

apparte gli scherzi, qualuno puo aiutarmi? il codice non deve essere necesariamente java mi basta l'lgoritmo. se vi torna piu facile scriverlo in un linguaggio che a parole, scrivetelo in php o C o VB o java script (o jingjing ae.gif ) che mi scoccia dover immagazinare altre conoscienze ._.''

Dario sei un demente, potevi mandarmi un pm, un programma simile lo feci ai tempi della scuola in C/C++ e Java mellow.gif
RRR
CITAZIONE (DragonIce @ May 30 2010, 12:52 PM) *
Dario sei un demente, potevi mandarmi un pm, un programma simile lo feci ai tempi della scuola in C/C++ e Java mellow.gif


aspetto un un tuo pm ae.gif
Questa è la versione 'lo-fi' del forum. Per visualizzare la versione completa con molte più informazioni, formattazione ed immagini, per favore clicca qui.
Invision Power Board © 2001-2012 Invision Power Services, Inc.
 Runescape