home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 2 / goldfish_vol2_cd1.bin / files / game / think / arachnid / karten.c < prev    next >
C/C++ Source or Header  |  1993-12-27  |  3KB  |  130 lines

  1. #include <functions.h>
  2. #include <stdlib.h>
  3. #include <intuition/intuition.h>
  4.  
  5. extern BYTE Stack[],st[],f[];
  6. extern BYTE PlayStack[][10];
  7. extern BYTE EndStack[];
  8. extern UWORD *SpielKarten[];
  9. extern long UndoCounter,Punkte,CardOverlay,HiOff;
  10. extern BOOL MBFlag;
  11. extern struct Window *Wnd;
  12. extern struct RastPort *RastPort;
  13. extern struct Image Image;
  14. extern struct Image ImRah;
  15. extern struct IntuiText Text1;
  16.  
  17. void PrintPunkte(long pkt);
  18.  
  19. void CleanRow(long n)
  20. {
  21.   long i;
  22.   for(i=0;i<7;i++) EraseImage(RastPort, &Image, n*62+10, i*66+80+HiOff);
  23.   DrawImage(RastPort, &ImRah, (n*62)+10, 80+HiOff);
  24. }
  25.  
  26. void DrawRow(long n)
  27. {
  28.   long i,KartenNr;
  29.  
  30.   CleanRow(n);
  31.   for(i=1;i<=PlayStack[0][n];i++)
  32.   {
  33.     if(!(KartenNr = PlayStack[i][n])) break;
  34.     if(KartenNr > 0) Image.ImageData = SpielKarten[KartenNr];
  35.     else Image.ImageData = SpielKarten[53];
  36.     DrawImage(RastPort, &Image, (n*62)+10, (i-1)*CardOverlay+80+HiOff);
  37.   }
  38. }
  39.  
  40. void KartenAnzeigen()
  41. {
  42.   long i;
  43.  
  44.   Text1.IText = (UBYTE *)"Talon :";
  45.   PrintIText(RastPort, &Text1, 71, 10+HiOff);
  46.   Text1.IText = (UBYTE *)"0 von 5";
  47.   PrintIText(RastPort, &Text1, 71, 20+HiOff);
  48.   Text1.IText = (UBYTE *)"Punkte:";
  49.   PrintIText(RastPort, &Text1, 71, 35+HiOff);
  50.   PrintPunkte(0);
  51.  
  52.   for(i=0;i<10;i++)
  53.   {
  54.     if(i != 1) DrawImage(RastPort, &ImRah, i*62+10, HiOff);
  55.     if((i > 1)&&(EndStack[i-2]))
  56.     {
  57.       Image.ImageData = SpielKarten[EndStack[i-2]];
  58.       DrawImage(RastPort, &Image, i*62+10, HiOff);
  59.     }
  60.   }
  61.  
  62.   Image.ImageData = SpielKarten[53];
  63.   DrawImage(RastPort, &Image, 10, HiOff);
  64.  
  65.   for(i=0;i<10;i++)
  66.   {
  67.     DrawRow(i);
  68.   }
  69. }
  70.  
  71. void KartenAusteilen()
  72. {
  73.   long i,r;
  74.  
  75.   MBFlag = TRUE;
  76.   UndoCounter=0;
  77.   Punkte = 0;
  78.  
  79.   OffMenu(Wnd, 1);
  80.   /* SpielFeld löschen */
  81.   for(i=0;i<10;i++)
  82.     for(r=1;r<40;r++)
  83.       PlayStack[r][i] = 0;
  84.   for(i=0;i<8;i++) EndStack[i] = 0;
  85.  
  86.   /* Karten austeilen */
  87.   for(i=0;i<10;i++)  PlayStack[i/10][i%10] = 5;
  88.  
  89.   for(i=10;i<50;i++) PlayStack[i/10][i%10] = Stack[114-i] * -1;
  90.  
  91.   for(i=50;i<60;i++) PlayStack[i/10][i%10] = Stack[114-i];
  92.   for(i=0;i<4;i++)
  93.   {
  94.     PlayStack[6][f[i]] = Stack[54-i];
  95.     PlayStack[5][f[i]] *= -1;
  96.     PlayStack[0][f[i]] = 6;
  97.   }
  98.   for(i=51;i<105;Stack[i++] = 0);
  99.   Stack[0] = 50;
  100.  
  101.   KartenAnzeigen();
  102. }
  103.  
  104. void KartenMischen()
  105. {
  106.   long i,r,temp[10];
  107.  
  108.   /* mischen */
  109.   for(i=1;i<53;i++) st[i] = i;
  110.   for(i=53;i<105;i++) st[i] = i-52;
  111.  
  112.   for(i=104;i>1;i--)
  113.   {
  114.     r = rand() % i + 1;
  115.     Stack[i] = st[r];
  116.     st[r] = st[i];
  117.   }
  118.   Stack[1] = st[1];
  119.   for(i=1;i<105;i++) st[i] = Stack[i];
  120.  
  121.   for(i=0;i<10;i++) temp[i]=i;
  122.   for(i=4;i>0;i--)
  123.   {
  124.     r = rand() % (i+5);
  125.     f[i-1] = temp[r];
  126.     temp[r]  = temp[i+5];
  127.   }
  128.   KartenAusteilen();
  129. }
  130.