Newsgroup: it.comp.lang.delphi
Titolo: Aiuto classifica scacchi calcio

il codice di cui sotto fa parte di un algoritmo
 
per stilare la classifica di un torneo di scacchi(un pò più articolata che 
del calcio).
 
Il tutto si base sugli insiemi Set del Delphi7 e la classifica
 
funziona perfettamente solo se i giocatori non superano il numero di 255.
 
Il problema è che i Set non possono contenere più di 255 elementi
 
mentre un torneo di scacchi può arrivare anche a 400-500 partecipanti
 
Pertanto devo per forza lavorare con gli array.
 
Qualche tempo fa mi fu suggerito l'utilizzo delle funzioni
 
Contains e SetBit di cui sotto,rispettivamente al posto della
 
clausa IN e INCLUDE dei Set,lo amico che me le ha inviate
 
non le ha testate ed io nonostante molti sforzi non sono riuscito
 
a risolvere il problema.
 
Si tratterebbe di sostituire le clause IN e INCLUDE con funzioni
 
adatte agli array.
 
Inoltre vorrei sapere come si fa a vuotare un array,con i Set
 
bastava Set1[] o Set2[]
 
Grazie per chi mi può aiutare anche dandomi solo qualche idea
 
Voltolini Luigi
 
?
 
/////////Funzioni suggerite
 
type
 
TMySet = array[0..63] of Byte; // 86 byte = 512 bit
 
function Contains( const S : TMyset; bit : integer ) : boolean;
 
begin
 
Result := (S[ bit div 8 ] and (1 shr (bit mod 8) )) <> 0;
 
end;
 
procedure SetBit( var S : TMyset; bit : integer );
 
begin
 
S[ bit div 8 ] := S[ bit div 8 ] or (1 shr (bit mod 8) );
 
end;
 
//////
 
 
?
 
Codice funzionante con i SET da sostituire
 
con gli ARRAY....
 
?
 
?
 
////// Set1, Set2: set of 1..255;
 
?
 
with Giocatore[ColonnaA] do
 
begin
 
if (ColonnaB in Set1) then begin
 
Include(Set2, ColonnaB)
 
end;
 
 
if not (ColonnaB in Set1) then begin
 
Include(Set1, ColonnaB);
 
end;
 
....
 
with Giocatore[ColonnaB] do
 
begin
 
if (ColonnaA in Set1) then begin
 
Include(Set2, ColonnaA)
 
end;
 
 
if not (ColonnaA in Set1) then begin
 
Include(Set1, ColonnaA);
 
end;
 
 

setlenght?
 
A parte tutto, lo sai gia: io avrei usato delle classi....
 
Tornei di scacchi. Carino. 
A me piace molto giocare a scacchi ma riesco solo a fare partite in differita su gameknot...
 
 
A.

 del calcio).
 
Potresti essere più preciso?
 
Da quanto dici, sembra che stai usando codice molto vecchio: magari puoi 
risolvere passando ad un software open source, vedi qui:
http://www.dmoz.org/Games/Board_Games/Abstract/Battle_Games/Chess/Software/Tournament_Software/
 
 
Ad ogni modo, se il problema è solo il calcolo dei punteggi, mostra 
l'algoritmo e magari qualcuno potrà modificartelo al volo.
 
PS: io gioco sul server FICS e mi piace giocare le varianti: suicide, 
atomic, losers, crazyhouse e (raramente) bughouse. Ora ho iniziato ad 
esplorare le aperture della Wild chess.
 
-- 
Morde

 l'algoritmo e magari qualcuno potrà modificartelo al volo.
 
Grazie per la risposta.
L'algoritmo veramente l'ho già mostrato nel mio post,
si tratta di sostituire i SET con gli ARRAY e sostituire
le clause IN e INCLUDE con funzioni compatibili con gli array poi per me è 
facile ottenere la classifica.
Per quanto riguarda i riferimenti ai software che mi hai indicato quelli 
sono anni che li conosco,io sto costruendo un mio software per gli 
accoppiamenti negkli scacchi e l'ho già fatto,solo che il calcolo delle 
varie classifiche con più di 100 partecipanti mi diventa lento,ecco perchè 
devo usare gli array al posto dei cicli for e if sulle varie StringGrid.
 
 
 

 A parte tutto, lo sai gia: io avrei usato delle classi....
Caro Alberto,
nel codice che ho postato premetto che non posso usare gli insiemi SET in 
ogni caso in quanto essi non possono contenere elementi duplicati di cui 
invece ho bisogno,altrimenti in caso di match ripetuti tra gli stessi 
giocatori con i SET codesti Match ripetuti non mi vengono considerati.
Detto questo fai una eccezione solo per me e cioè:
modificami al volo il mio codice,non farmi soffrire come l'altra volta!!Tra 
l'altro il codice di allora non era proprio pertinente,mentre il codice 
attuale l'ho proprio ridotto all'osso.
La funzione Contains che mi suggerivi,l'ho provata e riprovata in questi 
giorni,ma non mi intercetta niente.
Idem per la Procedura SetBit che non mi inserisce niente.
Se vuoi puoi scrivermi in privato.
Comunque grazie per una nuova tua eventuale risposta. 
 
 

Non ho una tua mail. Scrivimi in privato.
 
A.