30. marts 2002 - 18:08Der er
4 kommentarer og 1 løsning
Kender du også Visual Basic?
Baggrund: Jeg er ved at lave en klon af Windows-spillet Napoleon (Freecell) i VB. -Ingen problemer jeg har gameplay osv (anvender Cards.dll og tilhørende API-kald).
Problem: Jeg vil gerne lave de samme spil (dvs give kort på samme måde) som i Windows-udgaven. Spillet er oprindeligt programmeret i C++, og "blande-algoritmen" (er offentlig) ser sådan ud:
for (i = 0; i < 52; i++) // put unique card in each deck loc. deck[i] = i;
srand(gamenumber); // gamenumber is seed for rand() for (i = 0; i < 52; i++) { j = rand() % wLeft; card[(i%8)+1][i/8] = deck[j]; deck[j] = deck[--wLeft]; }
card() er et array (9,21) der indeholder kort-værdien (0-51) (fra Cards.dll)
Mit problem er: De tilsvarende funktioner i VB (srand=Randomize og rand()=rnd()) giver IKKE de samme værdier! Altså: Der skal gives 52 kort, og hvert nyt kort randomiseres efter det sidste. Første kort randomiseres efter spilnummeret (i win-98 udgaven: 1-32000).
Spørgsmål: Kan jeg på nogen måde kalde C++-funktionerne srand og rand i VB?, eller -alternativt: Hvordan fungerer disse to funktioner helt præcist? -kan jeg hardkode mig ud af problemet? (det sidste er jo nok det mest relevante i denne kategori, men jeg HAR prøvet i VB-kategorien -uden held :-)
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Hvad mener du med at de (VB-funktionerne) ikke giver de samme værdier?
Du skulle jo ikke gerne få de samme værdier hvis du først prøver med C++-funktionerne og dernæst med de tilsvarende fra VB (eller omvendt).
Funktionerne giver dig jo ikke et "helt" tilfældigt tal, men kun et pseudo-tilfældigt tal, altså et tal der er genereret udfra en skiftende faktor, i dette tilfælde systemets tid.
>>jpk Netop, og tallene SKAL også kun være pseudo-tilfældige til dette formål. Hvis funktionen køres med seedværdi X, så distribueres tallene fra 0 til 51 i en bestemt rækkefølge, som skal være den samme hver gang. (med X). Jeg kan IKKE få den samme rækkefølge, når jeg anvender den samme seedværdi og de tilsvarende VB-funktioner, og det er mit problem. Jeg ønsker at kunne generere de samme distributioner med VB-funktionerne, -hvordan?
Jeg kommer netop i tanke om: funktionerne srand() og rand() ligger måske i en dll-fil? Hvis dette er tilfældet kan jeg kalde dem direkte i VB! -Så points går til den der kan fortælle mig hvilken dll der indeholder disse to funktioner (hvis det er tilfældet).
Ingen held. -Lukker spm. og åbner nyt i VB-kategorien. /tjacob
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.