Array tjek - spilkort

Tags:    visual-basic

User
Bruger #488 @ 09.03.06 10:55
Hej.

Jeg bruger Visual Basic 6. Jeg skal bruge en metode til at deale et spilkort ud, dvs. at et kort ikke må bruges flere gange. Jeg er lidt mangel på ideer.



4 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Hej.

Jeg bruger Visual Basic 6. Jeg skal bruge en metode til at deale et spilkort ud, dvs. at et kort ikke må bruges flere gange. Jeg er lidt mangel på ideer.



der mange måde det kan løse på, men man kunne f.esk. lave et array af hver kulør

Fold kodeboks ind/udKode 


så kunne du tjkke om den var sat til true, og hvis den var , må den prøve f.esk. den næste i rækken.





Hey Jakobsen, sjov opgave så jeg kunne ikke lade være med at kode det hele. Hvis du gerne vil prøve selv, kan du nøjes med at kigge på min tekst for inspiration, og vente med koden til senere sammenligninger.

----

Jeg ville bruge Objekt Orienteret Programmering (OOP), og lave et 'Class Module' kaldet "clsDealer". Denne klasse skulle så indeholde de basale funktioner som kortgiveren skal benytte sig af. Det vil sige ting som at skaffe et sæt kort, blande dem, og trække kort.

For ikke at undgå besværret med at tjekke hvilke kort der var tilbage, ville jeg lade hvert kort være et objekt for sig. Alle disse objekter kunne så samles i en 'Collection' kaldet "Deck". Når dette sæt kort skulle blandes, ville man bare kunne trække tilfældige kort fra bunken, over i en ny bunke, som man da ville tage i anvendelse.

Med mindre du har tænkt dig at vise kortene grafisk, ville jeg også anbefale et 'Module' til at omskrive mellem den notation mennesker foretrækker, og den computeren bedst kan arbejde med. Det er klart for enhver, hvilket kort der har hvilken værdi, men at tillægge værdier til kortenes kulør kan være et problem. Derfor ville jeg klart lave en 'public enum', så programmøren aldrig behøver at tænker over andet end kulørernes navne. Dette samlede modul kunne du kalde "modNotations".

Hvis du er interesseret, kunne den beskrevne kode se ud som følger. Der er færre kommentare end jeg plejer, så jeg håber du finder koden lige så selvforklarende som mig.

clsDealer
Fold kodeboks ind/udKode 


modNotations
Fold kodeboks ind/udKode 




Nåhh ja, glemte jeg helt.. I tilfælde af at du får brug for flere sæt kort på samme tid, og gerne vil blande dem samtidigt, har jeg tilføjet et vilkårligt parameter "Rate" til blandingsfunktionen. Så kan du kalde de mange sæt kort med et forskelligt parameter, og opnå forskellige resultater.

En bedre løsning ville måske være at smide den helt væk, og i stedet placere 'Randomize Now' i 'Private Sub Class_Initialize()'. Her ville du opnå den præcis samme funktionalitet.



User
Bruger #488 @ 27.03.06 12:18
Genialt HAP. Jeg takker mange gange :D Ville gerne kunne give flere UP for dit svar.



t