home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Games World (Happy Day Edition)
/
HAPPYDAY.ISO
/
happyday
/
bgpro
/
rand1.c
< prev
next >
Wrap
C/C++ Source or Header
|
1994-04-18
|
3KB
|
67 lines
/***************************************************************************/
/* RAND1.C */
/* Externer Zufallsgenerator für PC-Backgammon Pro */
/* Programmiersprache: Turbo-C, Autor: Michael Schellong */
/* */
/* Dieses Beispiel-Programm soll Ihnen demonstrieren, wie Sie in C eigene */
/* Zufallsgeneratoren für PC-Backgammon Pro V2.0 schreiben können. */
/* Der externe Zufallsgenerator wird von PC-Backgammon Pro zur Ermittlung */
/* der Würfelaugen aufgerufen. Als Parameter wird dem Generator ein Zeiger */
/* auf einen 32 Byte langen Speicherbereich übergeben, den er für seine ei-*/
/* genen Zwecke frei verwenden kann. Beispielsweise können hier Variablen- */
/* Inhalte gespeichert werden, die beim nächsten Aufruf wieder benötigt */
/* werden. Beim ersten Aufruf des Generators haben sämtliche Bytes des */
/* Speicherbereichs einen Wert von 0xFF. */
/* Als Programmbeendigungs-Code muss die ermittelte Zufallszahl (im Bereich*/
/* von 1 bis 6) zurückgeliefert werden. */
/***************************************************************************/
#include "time.h"
#include "stdio.h"
#include "stdlib.h"
unsigned long w;
/****************************************************/
/* Ermittelt eine Zufallszahl im Bereich 0..Range-1 */
/****************************************************/
unsigned MyRand(unsigned Range)
{
w=w*0x15a4e35L+1;
return (unsigned) (((w&0xFFFFu)*Range)/0x10000LU);
}
/******************************************/
/* Initialisierung des Zufallsgenerators */
/******************************************/
void InitMyRand(void)
{
w=(unsigned) time(NULL);
}
void main(int argc, char *argv[])
{
int Val;
void far *BufPtr;
if (argc<2) /* Anzahl der Aufrufparameter abfragen */
exit(0);
/* Den als Aufrufparameter übergebenen
Zeiger einlesen */
sscanf(argv[1],"%x:%x",(unsigned *) &BufPtr+1, &BufPtr);
if (*(unsigned long far*) BufPtr==0xFFFFFFFFL)
InitMyRand(); /* Beim ersten Aufruf Zufallsgenerator
initialisieren */
else
w=*(unsigned long far*) BufPtr; /* zwischengespeicherte Variable holen */
Val=MyRand(6)+1; /* Zufallszahl zwischen 1 und 6 ermitteln*/
*(unsigned long far*) BufPtr=w; /* Variable w für nächsten Aufruf sichern */
exit (Val); /* Programm wieder beenden */
}