home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gold Fish 2
/
goldfish_vol2_cd1.bin
/
files
/
game
/
think
/
arachnid
/
karten.c
< prev
next >
Wrap
C/C++ Source or Header
|
1993-12-27
|
3KB
|
130 lines
#include <functions.h>
#include <stdlib.h>
#include <intuition/intuition.h>
extern BYTE Stack[],st[],f[];
extern BYTE PlayStack[][10];
extern BYTE EndStack[];
extern UWORD *SpielKarten[];
extern long UndoCounter,Punkte,CardOverlay,HiOff;
extern BOOL MBFlag;
extern struct Window *Wnd;
extern struct RastPort *RastPort;
extern struct Image Image;
extern struct Image ImRah;
extern struct IntuiText Text1;
void PrintPunkte(long pkt);
void CleanRow(long n)
{
long i;
for(i=0;i<7;i++) EraseImage(RastPort, &Image, n*62+10, i*66+80+HiOff);
DrawImage(RastPort, &ImRah, (n*62)+10, 80+HiOff);
}
void DrawRow(long n)
{
long i,KartenNr;
CleanRow(n);
for(i=1;i<=PlayStack[0][n];i++)
{
if(!(KartenNr = PlayStack[i][n])) break;
if(KartenNr > 0) Image.ImageData = SpielKarten[KartenNr];
else Image.ImageData = SpielKarten[53];
DrawImage(RastPort, &Image, (n*62)+10, (i-1)*CardOverlay+80+HiOff);
}
}
void KartenAnzeigen()
{
long i;
Text1.IText = (UBYTE *)"Talon :";
PrintIText(RastPort, &Text1, 71, 10+HiOff);
Text1.IText = (UBYTE *)"0 von 5";
PrintIText(RastPort, &Text1, 71, 20+HiOff);
Text1.IText = (UBYTE *)"Punkte:";
PrintIText(RastPort, &Text1, 71, 35+HiOff);
PrintPunkte(0);
for(i=0;i<10;i++)
{
if(i != 1) DrawImage(RastPort, &ImRah, i*62+10, HiOff);
if((i > 1)&&(EndStack[i-2]))
{
Image.ImageData = SpielKarten[EndStack[i-2]];
DrawImage(RastPort, &Image, i*62+10, HiOff);
}
}
Image.ImageData = SpielKarten[53];
DrawImage(RastPort, &Image, 10, HiOff);
for(i=0;i<10;i++)
{
DrawRow(i);
}
}
void KartenAusteilen()
{
long i,r;
MBFlag = TRUE;
UndoCounter=0;
Punkte = 0;
OffMenu(Wnd, 1);
/* SpielFeld löschen */
for(i=0;i<10;i++)
for(r=1;r<40;r++)
PlayStack[r][i] = 0;
for(i=0;i<8;i++) EndStack[i] = 0;
/* Karten austeilen */
for(i=0;i<10;i++) PlayStack[i/10][i%10] = 5;
for(i=10;i<50;i++) PlayStack[i/10][i%10] = Stack[114-i] * -1;
for(i=50;i<60;i++) PlayStack[i/10][i%10] = Stack[114-i];
for(i=0;i<4;i++)
{
PlayStack[6][f[i]] = Stack[54-i];
PlayStack[5][f[i]] *= -1;
PlayStack[0][f[i]] = 6;
}
for(i=51;i<105;Stack[i++] = 0);
Stack[0] = 50;
KartenAnzeigen();
}
void KartenMischen()
{
long i,r,temp[10];
/* mischen */
for(i=1;i<53;i++) st[i] = i;
for(i=53;i<105;i++) st[i] = i-52;
for(i=104;i>1;i--)
{
r = rand() % i + 1;
Stack[i] = st[r];
st[r] = st[i];
}
Stack[1] = st[1];
for(i=1;i<105;i++) st[i] = Stack[i];
for(i=0;i<10;i++) temp[i]=i;
for(i=4;i>0;i--)
{
r = rand() % (i+5);
f[i-1] = temp[r];
temp[r] = temp[i+5];
}
KartenAusteilen();
}