07/10/12 11:01
Ultimo
write('Vuole fare una puntata? (si\no) '); readln(inizio); if inizio=('si') then begin write('Vuole giocare un ambo o un terno? '); readln(tipo); ambo:=1; case tipo of 1 : begin Write('Inserisci il primo numero che vuoi puntare: '); readln(numa); Write('Inserisci il secondo numero che vuoi puntare: '); readln(numb); lol:=0; for a:=1 to 11 do lol:=0; for b:=1 to 5 do begin if (numa=tab[a,b]) then lol = lol+1; if (numb=tab[a,b]) then lol = lol+1; if lol = 2 then begin Writeln('Hai vinto'); end; end; If lol < 2 then writeln('Hai perso!'); end; end;
Può essere migliorato ancora
Ultima modifica effettuata da Ultimo 07/10/12 11:11
If ok Then GOTO Avanza else GOTO Inizia
07/10/12 12:42
Grazie mille, in effetti così funziona alla perfezione.
Però continuo a non capire perchè non dovrebbe funzionare se metto un AND tra le due condizioni...
Ho modificato un pò il codice come mi hai suggerito, solo che ogni tanto quando i due numeri sono presenti nella prima ruota al posto di stamparmi "Hai vinto" solo uan volta lo fa 3 o 4 volte.
Però continuo a non capire perchè non dovrebbe funzionare se metto un AND tra le due condizioni...
Ho modificato un pò il codice come mi hai suggerito, solo che ogni tanto quando i due numeri sono presenti nella prima ruota al posto di stamparmi "Hai vinto" solo uan volta lo fa 3 o 4 volte.
procedure gioca; var inizio,terno:string; numa,numb,numc,band,a,b,ambo:integer; tipo:char; begin write(' Vuole fare una puntata(si\no)? '); readln(inizio); if inizio=('si') then begin write(' Vuole giocare un ambo o un terno? '); readln(tipo); ambo:=1; case tipo of 'a' : begin Write(' Inserisci il primo numero che vuoi puntare: '); readln(numa); Write(' Inserisci il secondo numero che vuoi puntare: '); readln(numb); band:=0; a:=1; for b:=1 to 5 do begin if (numa=tab[a,b]) then band:=band+1; if (numb=tab[a,b]) then band:=band+1; if band=2 then begin textcolor(green); Writeln(' Hai vinto!'); end; end; If band<2 then begin textcolor(red); writeln(' Hai perso!'); end; end; 't': write('ciao'); end; end;end;
Ultima modifica effettuata da 07/10/12 13:19
07/10/12 14:00
Ultimo
Come ho scritto io, si può ripetere più di una volta perchè le ruote sono 11, vuol dire che quell'ambo si è
ripetuto su più di una ruota
ripetuto su più di una ruota
Ultima modifica effettuata da Ultimo 07/10/12 14:03
If ok Then GOTO Avanza else GOTO Inizia
07/10/12 14:07
Hai ragione, però nel nuovo codice che ti ho messo ho stabilito a:=1 quindi dovrebbe lavorare solo sulla prima ruota. Eppure continua, ogni tanto, a stamparmi più di un "Hai vinto".
EDIT: C'entra qualcosa con il fatto che li memorizza da prima. Infatti se metto un clrscr ne stampa solo uno
Poi stavo facendo la parte in cui l'utente può decidere in che ruota giocare e mi è venuto un dubbio:
come faccio a trasformare l'input dell'utente (tipo "Nazionale" in un numero (in questo caso 1)?
In pratica a:=<Numero che indica la ruota> . Il problema è che non so come trasformare la ruota in lettere che mi dà l'utente in un numero.
Comunque ecco il codice aggiornato:
Il resto del programma è nel primo post
EDIT: C'entra qualcosa con il fatto che li memorizza da prima. Infatti se metto un clrscr ne stampa solo uno
Poi stavo facendo la parte in cui l'utente può decidere in che ruota giocare e mi è venuto un dubbio:
come faccio a trasformare l'input dell'utente (tipo "Nazionale" in un numero (in questo caso 1)?
In pratica a:=<Numero che indica la ruota> . Il problema è che non so come trasformare la ruota in lettere che mi dà l'utente in un numero.
Comunque ecco il codice aggiornato:
procedure gioca; var inizio,terno:string; numa,numb,numc,band,b,a,ruota:integer; tipo:char; begin write(' Vuole fare una puntata(si\no)? '); readln(inizio); if inizio=('si') then begin write(' Vuole giocare un ambo o un terno? '); readln(tipo); case tipo of 'a' : begin Write(' Inserisci il primo numero che vuoi puntare: '); readln(numa); Write(' Inserisci il secondo numero che vuoi puntare: '); readln(numb); Write(' Inserisci il nome(numero) della ruota in cui vuoi giocare: '); readln(ruota); band:=0; a:=ruota; for b:=1 to 5 do begin if (numa=tab[a,b]) then band:=band+1; if (numb=tab[a,b]) then band:=band+1; if band=2 then begin textcolor(green); Writeln(' Hai vinto!'); end; end; If band<2 then begin textcolor(red); writeln(' Hai perso!'); end; end; 't': writeln(' Work in progress'); end; end; if inizio='no' then write(' Premi invio per uscire'); end;
Il resto del programma è nel primo post
Ultima modifica effettuata da 07/10/12 14:13
07/10/12 14:19
Ultimo
Non è difficile, gli scrivi tu i numeri corrispondenti alla ruota da 1 a 11 che dovrà digitare
If ok Then GOTO Avanza else GOTO Inizia
07/10/12 15:54
si una cosa del tipo
readln(ruota);
1:=Nazionale;
a:=<Qui mi blocco, cosa devo mettere?>
readln(ruota);
1:=Nazionale;
a:=<Qui mi blocco, cosa devo mettere?>
07/10/12 17:37
Ultimo
Postato originariamente da stichtom:
si una cosa del tipo
readln(ruota);
1:=Nazionale;
a:=<Qui mi blocco, cosa devo mettere?>
si una cosa del tipo
readln(ruota);
1:=Nazionale;
a:=<Qui mi blocco, cosa devo mettere?>
Puoi inserire dei
case ruota
immetti tutti i casi possibili, cioè le ruote possibili e per ognuna assegni alla variabile "a" il numero
corrispondente.
If ok Then GOTO Avanza else GOTO Inizia