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 :-)
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
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.