home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / BEEHIVE / GAMES / BLACKJAC.ARC / CARDS80.C < prev    next >
Text File  |  1988-08-07  |  2KB  |  105 lines

  1. /*
  2.     This program illustrates the assembly language subroutines for the
  3.     display of playing cards on the 80 * 24 screen.
  4.  
  5.     card no :- 
  6.  
  7.            1 - 13 = spades, 
  8.           14 - 26 = clubs, 
  9.           27 - 39 = diamonds, 
  10.           40 - 52 = hearts.
  11.                53 = joker.
  12.                54 = back of card.
  13.  
  14.           ace = 1, jack = 11, queen = 12, king = 13. 
  15.  
  16.      function prototypes.
  17. */
  18. int    open (char *, int);
  19. int    read (int, char *, int);
  20. char   *malloc (int);
  21. void   copy_bytes (char *, int, int);
  22. void   draw_border (int, int, int, int);
  23.  
  24. int    card_no;
  25. int     x_card;  /* x at top left corner of card. */
  26. int     y_card;  /* y at top left corner of card. */
  27.                  /* note :- top  of screen = 0.   */
  28.                  /*         left of screen = 0.   */
  29.  
  30. int    j;
  31. char   message [80];
  32.  
  33. /*
  34.   Procedure to read the file CARDS.FON and set up the PCG characters
  35.   used to display the cards.
  36. */
  37. void get_pcg()
  38. {
  39.    char *pcgdat;
  40.    int pcg_file;
  41.    int result;
  42.  
  43.    pcg_file = open ("CARDS.FON",0);
  44.  
  45. /*
  46.     An array of bytes is obtained from free memory and is returned when
  47.     the data has been placed into the PCG memory.
  48.  
  49.     Note that it is not possible to read the data directly into PCG memory
  50.     because the BIOS changes the memory banks and the PCG memory is not
  51.     found at $F800.
  52. */
  53.     
  54.     pcgdat = malloc (2048);  /* get some memory */
  55.  
  56.     result = read (pcg_file, pcgdat, 2048);     /* read 2048 bytes */
  57.  
  58.     copy_bytes (pcgdat, 0xF800, 2048);
  59.  
  60.     close (pcg_file);
  61.  
  62.     free (pcgdat);    /* Return memory */
  63. }
  64.  
  65. main()
  66. {
  67. char clear= 0x1A; 
  68.  
  69.     get_pcg();
  70.     putchar (clear);
  71.     j = 1;
  72.     while (j != 0)
  73.     {
  74.         x_card  = 2;
  75.         y_card  = 1;
  76.  
  77.         printf (" Card No : ");
  78.         scanf ("%d",&j);
  79.         printf (" Message : ");
  80.         cgets (message);
  81.  
  82.         card_no = j;
  83.  
  84.         draw_border (0, 0, 80, 24);
  85.  
  86.         for (j = 1; j <= 16; j++)
  87.         {
  88.             show_card (card_no, x_card, y_card);
  89.             card_no++;
  90.             x_card += 9;
  91.             if (j == 8) 
  92.             {
  93.                 x_card = 2;
  94.                 y_card = 8;
  95.             }
  96.         }
  97.  
  98.         put_string (2, 18, &message);
  99.  
  100.         scanf ("%d",&j);
  101.         putchar (clear);
  102.     }
  103.  
  104. }
  105.