Newsgroup: it.comp.lang.pascal
Titolo: creazione di un mazzo di carte in ordine casuale

Ciao a tutti,
volendo provare a simulare un gioco di carte, vorrei creare un mazzo di 40
carte, divise in 10 numeri * 4 tipi (tipo napoletane) ordinate casualmente;
praticamente vorrei creare una procedura che mi mischi le 40 carte di un
mazzo e mi dica le carte in che ordine sono. Come si fa? E' possibile?
Stefano

 ha scritto nel
messaggio news:GGtj8.877$sP6....@tornado.fastwebnet.it...


carte, divise in 10 numeri * 4 tipi...
 Crea degli array multidimensionali e assegna a ciscuno un mazzo. Riempi
il vettore in questo modo:
var mazzo : ARRAY [1..10, 1..4] of byte;
    val,segno : byte;
PROCEDURE Riempi;
var a,b : byte;
BEGIN
for a:=1 to 10 do
begin
    for b:=1 to 4 do
    begin
        mazzo[a,b]:=0;
    end;
end;
END;
Poi, quando devi pescare una carta, chiama la procedura "pescacarta(valore,
segno)" :
PROCEDURE pescacarta(VAR val, VAR segno: byte);
BEGIN
  randomize;
  repeat
      val=random(10);
      segno=random(4);
  until (mazzo[val,segno]<>1)
  mazzo[val,segno]=1;
END;
 Se il contenuto dell'array è posto a 1, significa che la carta (val,
segno) è già stata pescata. Una volta chiamata la procedura, in "val"
e "segno" hai quello che ti serve.
 L'ho tirato giù di fretta, magari c'è da controllare qualche variabile.
Saluti.
--
    _
 Fa/_)io         A1200 PowerTower, WB 3.9, 060@60, 64MB, FireBall 13GB,
  /__)enedetti   Voodoo3, Digicom-10/100, Philips PCRW1208 - TFT-140/S.
/...mi ritornu in cantari/

 ciao
Grazie mille non ho ancora provato ma dovrebbe andare
ciao



Scrivi una funzione carta(40) che genera un numero casuale compreso
fra 1 e 40 (il numero di carte nel mazzo) - è solo un altro nome per
la funzione random(), e un'altra funzione scambiacarta(carta(40),
carta(40)) che le sostituisce. Iteri l'esecuzione dell'algoritmo un
numero di volte a piacere, e hai fatto mescolare il mazzo.
Ciao
PV

fatto mescolare il mazzo.
 Se ci pensi, è inutile... farlo prima. Basta farlo durante la
giocata. Ovviamente potrebbe anche succedere che sia necessario sapere
prima la disposizione del mazzo, se si deve ad esempio creare un
solitario.
Saluti.
--
    _
 Fa/_)io         A1200 PowerTower, WB 3.9, 060@60, 64MB, FireBall 13GB,
  /__)enedetti   Voodoo3, Digicom-10/100, Philips PCRW1208 - TFT-140/S.
/...da capu Corsu a Bonifaziu, aria de Roma e mare du Laziu/

 ha scritto nel messaggio
news:996.838T1763T8...@inwind.it...


 ha scritto nel
messaggio news:UqJj8.1029$sP6....@tornado.fastwebnet.it...


estratta la stessa carta due volte...
 Ma le hai viste le due procedure che ho postato ?
 Si riempe prima un array di byte (o ancora meglio booleano) e si setta
a 1 la coppia (valore, seme) della carta già estratta.
Saluti.
--
    _
 Fa/_)io         A1200 PowerTower, WB 3.9, 060@60, 64MB, FireBall 13GB,
  /__)enedetti   Voodoo3, Digicom-10/100, Philips PCRW1208 - TFT-140/S.
/...era un presagio dolce e lusinghiero/

 ha scritto nel messaggio
news:1154.836T864T1...@inwind.it...


non per niente... cmq mi sembra piu chiaro il mio...
 Sei sicuro ?? :)
 Anche solo per il numero delle righe e la presenza
di cose ridondanti (nomi dei semi delle carte nell'array)
che non fanno che appesantire inutilmente l'algoritmo. Non
parliamo poi della presenza di tutti le condizioni (if).
 Certo... il tuo algoritmo è più vicino al modo di fare
pratico della realtà, ma...
 Con le mie procedure, basta una variabile e posso gestire
mazzi a 40 o più carte (basta decrementare la variabile per
sapere quante carte possono ancora esser pescate). Nel tuo
caso, dovresti andare a modificare tutte le condizioni.
Saluti.
--
    _
 Fa/_)io         A1200 PowerTower, WB 3.9, 060@60, 64MB, FireBall 13GB,
  /__)enedetti   Voodoo3, Digicom-10/100, Philips PCRW1208 - TFT-140/S.
/...e a ciel sereno, ci tocca riposare/