Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: Có minigame, post lên mong mọi người góp ý

  1. #1
    Ngày gia nhập
    08 2008
    Bài viết
    3

    Mặc định Có minigame, post lên mong mọi người góp ý

    Em mới thuyết trình hôm qua, nhưng thầy bảo chỉ chấm điểm thuyết trình, ko quan tâm code thế nào, nên post lên mong mọi người góp ý giúp

    Em đặt tên là Finding Couple, game khá quen thuộc, lật 2 ô lên, nếu nó ko matched thì ẩn đi, còn matched thì show luôn, khi lật hết các ô thì thắng.

    C Code:
    1. /*=============================================================*
    2.     Finding Couple
    3.  
    4.     Last date modified: 05/12/2008
    5.  *=============================================================*/
    6.  
    7. #include <conio.h>
    8. #include <dos.h>
    9. #include <dir.h>
    10. #include <stdio.h>
    11. #include <stdlib.h>
    12. #include <string.h>
    13.  
    14. #define LEFT 3
    15. #define TOP 9
    16. #define RIGHT (LEFT+34)
    17.  
    18. typedef unsigned long time_h;
    19.  
    20. struct cls   //colors
    21. {
    22.     int tc; //textcolor
    23.     int bg; //background
    24.     int tbg; //table background
    25.     int tbs; //text background selected
    26.     int tbns; //text background none-selected
    27. };
    28.  
    29. time_h time_convh(struct time ti);
    30. time_h time_get( void);
    31. time_h time_diff( struct time t1, struct time t2);
    32. void time_delay(time_h t);
    33.  
    34. int message_slideshow( char str[], int cx, int cy, time_h timedelay);
    35.  
    36. int control(int *cx, int *cy, int level);
    37. int convertc(int *cx, int *cy, int level);
    38.  
    39. int table_create( char table[][9], char lib[][9], int sizelib, int level);
    40. int table_show( char table [][9], struct cls colorConf, int level);
    41. int table_hide(struct cls colorConf, int level);
    42.  
    43. int cell_show(char table[][9], int cx, int cy, int level);
    44. int cell_hide(int cx, int cy, struct cls colorConf);
    45.  
    46. int cell_change (int cx, int cy, char c, struct cls colorConf);
    47. int cell_verify(char table[][9], char lib[][9], int cx1, int cy1, int cx2, int cy2, int level);
    48. int cell_match( char str1[], char str2[], char lib[][9]);
    49.  
    50. int load(char lib[][9], time_h *timedelay, struct time highscore[4], struct cls *colorConf, int *level);
    51. int play( char lib[][9], int sizelib, time_h timedelay, struct cls colorConf, int level);
    52.  
    53. int save(char lib[][9], time_h timedelay, struct time highscore[4], struct cls colorConf, int level, int n);
    54.  
    55. int main(void)
    56. {
    57.     struct cls colorConf;
    58.     struct time highscore[4],t1,t2, hs;
    59.     time_h timedelay, tm, tmp;
    60.     int n, level, exit, ctrl = 0;
    61.     char lib[200][9], ch;
    62.  
    63.     do
    64.     {
    65.         /* load a config and lib file*/
    66.         n = load(lib, &timedelay, highscore, &colorConf, &level);
    67.         textmode( C40);
    68.         textbackground(colorConf.bg);
    69.         window(1,1,40,25);
    70.         clrscr();
    71.         textcolor(colorConf.tc);
    72.  
    73.         /* begin to calculating time*/
    74.         gettime( &t1);
    75.  
    76.         exit = play( lib, n, timedelay, colorConf, level);
    77.         if ( exit == 1)
    78.         {
    79.             gettime( &t2);
    80.             textbackground(colorConf.bg);
    81.             window(1,1,40,25);
    82.             clrscr();
    83.             tm = time_diff( t1, t2);
    84.             tmp = time_convh( highscore[level-1]);
    85.             tmp -= tm;
    86.             message_slideshow("YOU WIN!", 17, 7, 3);
    87.             hs.ti_hund = tm%100;
    88.             tm /= 100;
    89.             hs.ti_sec = tm %60;
    90.             tm /= 60;
    91.             hs.ti_min = tm%60;
    92.             tm /= 60;
    93.             hs.ti_hour = tm%60;
    94.             if ( tmp < 0 )
    95.             {
    96.                 cprintf("Time : %02dh:%02dm:%02ds:%02d", hs.ti_hour,
    97.                         hs.ti_min, hs.ti_sec, hs.ti_hund);
    98.             }
    99.             else if ( tmp == 0)
    100.             {
    101.                 message_slideshow(" You got the record!",10, 10,3);
    102.                 gotoxy( 14, 12);
    103.                 cprintf(" %02dh:%02dm:%02ds:%02d", hs.ti_hour,  hs.ti_min, hs.ti_sec,
    104.                         hs.ti_hund);
    105.             }
    106.             else
    107.             {
    108.                 message_slideshow(" You got a new record!",10, 10,3);
    109.                 gotoxy( 14, 12);
    110.                 highscore[level-1] = hs;
    111.                 cprintf(" %02dh:%02dm:%02ds:%02d", hs.ti_hour,  hs.ti_min, hs.ti_sec,
    112.                         hs.ti_hund);
    113.                 save(lib, timedelay, highscore, colorConf, level, n);
    114.             }
    115.             gotoxy( 9, TOP + 6);
    116.             cprintf("Do you want to play again? ");
    117.             do
    118.                 ch = getch();
    119.             while (ch != 'Y' && ch != 'y' && ch != 'N' && ch != 'n');
    120.             if (ch == 'N' || ch == 'n')
    121.             {
    122.                 cprintf("No");
    123.                 time_delay(50);
    124.                 ctrl = 1;
    125.             }
    126.             else
    127.             {
    128.                 cprintf("Yes");
    129.                 time_delay(50);
    130.             }
    131.         }
    132.         else if (exit == 0)
    133.         {
    134.             ctrl = 1;
    135.         }
    136.     }
    137.     while (ctrl == 0);
    138.     textbackground(colorConf.bg);
    139.     window(1,1,40,25);
    140.     clrscr();
    141.     message_slideshow("Closing game ...", 9, TOP + 2, 3);
    142.     time_delay(50);
    143.     return 0;
    144. }
    145.  
    146. time_h time_convh(struct time ti)
    147. {
    148.     int t;
    149.     t = ((ti.ti_hour*60 + ti.ti_min)*60 + ti.ti_sec)*100 + ti.ti_hund;
    150.     return t;
    151. } //end time_convh
    152.  
    153. time_h time_get( void)
    154. {
    155.     static struct time ti;
    156.     time_h t;
    157.     gettime( &ti);
    158.     t = time_convh(ti);
    159.     return t;
    160. } //end time_get
    161.  
    162. time_h time_diff( struct time t1, struct time t2)
    163. {
    164.     time_h tm1, tm2;
    165.     tm1 = time_convh(t1);
    166.     tm2 = time_convh(t2);
    167.     if (tm2 >= tm1)
    168.         return (tm2 - tm1);
    169.     else
    170.         return (tm1 - tm2);
    171. }// end time_diff
    172.  
    173. void time_delay(time_h t)
    174. {
    175.     time_h t1, t2;
    176.     t1 = time_get();
    177.     do
    178.     {
    179.         t2 = time_get();
    180.     }
    181.     while ( t2 - t1 < t);
    182. } //end time_delay
    183.  
    184. int message_slideshow( char str[], int cx, int cy, time_h timedelay)
    185. {
    186.     int k;
    187.     for (k = 0; k < (int) strlen(str); )
    188.     {
    189.         time_delay(timedelay);
    190.         gotoxy(cx, cy);
    191.         cprintf("%c", str[k++]);
    192.         cx++;
    193.     }
    194.     return 0;
    195. } //end message_slideshow
    196.  
    197. int control(int *cx, int *cy, int level)
    198. {
    199.     int c, m = *cx, n = *cy, btm, top;
    200.  
    201.     if ( level == 1)
    202.     {
    203.         top = TOP + 2;
    204.         btm = top + 2;
    205.     }
    206.     else if ( level == 2)
    207.     {
    208.         top = TOP;
    209.         btm = top + 6;
    210.     }
    211.     else if (level == 3)
    212.     {
    213.         top = TOP - 2;
    214.         btm = top + 10;
    215.     }
    216.     else
    217.     {
    218.         top = TOP - 3;
    219.         btm = top + 14;
    220.     }
    221.  
    222.     if (kbhit())
    223.     {
    224.         c = getch();
    225.         if (c == 77)
    226.             (*cx) += 9;         /* right*/
    227.         else if (c == 75)
    228.             (*cx) -= 9;         /* left*/
    229.         else if (c == 80)
    230.             (*cy) += 2;         /* down*/
    231.         else if (c == 72)
    232.             (*cy) -= 2;         /* up*/
    233.         else if (c == 13)
    234.             return -2;          /* Enter*/
    235.         else if (c == 27)
    236.             return -1;          /* ESC*/
    237.         else if (c == 'H' || c == 'h')
    238.             return 2;           /* H*/
    239.         else if (c == 'C' || c == 'c')
    240.             return 3;           /* C*/
    241.         else if ( c == 'R' || c == 'r')
    242.             return 4;           /* R*/
    243.     } //end if
    244.  
    245.     if ( *cx < LEFT) *cx = LEFT+27;
    246.     else if ( *cx > (LEFT + 27)) *cx = LEFT;
    247.     if ( *cy < top) *cy = btm;
    248.     else if ( *cy > btm) *cy = top;
    249.  
    250.     gotoxy( *cx, *cy);
    251.  
    252.     if ( m > *cx || m < *cx || n > *cy || n < *cy)
    253.         return 1;
    254.     else
    255.         return 0;
    256. } //end event_move
    257.  
    258. int convertc(int *cx, int *cy, int level)
    259. {
    260.     int swap;
    261.     *cx = (*cx - LEFT - 1) / 8;
    262.  
    263.     if ( level == 1)
    264.         *cy -= (TOP+2);
    265.     else if (level == 3)
    266.         *cy -= (TOP-2);
    267.     else if (level == 4)
    268.         *cy -= (TOP-3);
    269.  
    270.     switch (*cy)
    271.     {
    272.     case 2:
    273.         *cy -= 1;
    274.         break;
    275.     case 4:
    276.         *cy -= 2;
    277.         break;
    278.     case 6:
    279.         *cy -= 3;
    280.         break;
    281.     case 8:
    282.         *cy -= 4;
    283.         break;
    284.     case 10:
    285.         *cy -= 5;
    286.         break;
    287.     case 12:
    288.         *cy -= 6;
    289.         break;
    290.     case 14:
    291.         *cy -= 7;
    292.     }
    293.     swap = *cx;
    294.     *cx = *cy;
    295.     *cy = swap;
    296.     return 0;
    297. } //end convertc
    298.  
    299. int table_create( char table[][9], char lib[][9], int sizelib, int level)
    300. {
    301.     int A[32], B[32], i, j, k, temp, ctrl, sizetable;
    302.     sizetable = 8*level;
    303.     randomize();
    304.     for ( i = 0; i < sizetable; i += 2)
    305.     {
    306.         do
    307.         {
    308.             do
    309.             {
    310.                 temp = 2*random(sizelib/2);
    311.             }
    312.             while (strlen(lib[temp]) == 0);
    313.             k = 0;
    314.             for (j = 0; j < i; j += 2)
    315.                 if ( temp == A[j] )
    316.                     ++k;
    317.             if ( k == 0)
    318.             {
    319.                 A[i] = temp;
    320.                 A[i+1] = temp + 1;
    321.                 ctrl = 1;
    322.             }
    323.             else
    324.                 ctrl = 0;
    325.         }
    326.         while ( ctrl == 0);
    327.     }
    328.     randomize();
    329.     for ( i = 0; i < sizetable; ++i)
    330.     {
    331.         do
    332.         {
    333.             temp = random(sizetable);
    334.             k = 0;
    335.             for (j = 0; j < i; j++)
    336.                 if ( temp == B[j] )
    337.                     ++k;
    338.             if ( k == 0)
    339.             {
    340.                 B[j] = temp;
    341.                 ctrl = 1;
    342.             }
    343.             else
    344.                 ctrl = 0;
    345.         }
    346.         while (ctrl == 0);
    347.     }
    348.     for ( i = 0; i < sizetable; ++i)
    349.     {
    350.         B[i] = A[B[i]];
    351.     }
    352.     for ( i = 0; i < sizetable; ++i)
    353.         strcpy(table[i], lib[B[i]]);
    354.     return sizetable;
    355. } //end table_create
    356.  
    357. int table_show( char table [][9], struct cls colorConf, int level)
    358. {
    359.     int i,j, x = LEFT, y, Ax, Ay, sizetable;
    360.     sizetable = 8*level;
    361.     textbackground(colorConf.tbg);
    362.     if ( level == 1)
    363.     {
    364.         window(LEFT-1, TOP+1, RIGHT+1, TOP+5);
    365.         y = TOP + 2;
    366.     }
    367.     else if ( level == 2)
    368.     {
    369.         window(LEFT-1, TOP-1, RIGHT+1, TOP+7);
    370.         y = TOP;
    371.     }
    372.     else if (level == 3)
    373.     {
    374.         window(LEFT-1, TOP-3, RIGHT+1, TOP+9);
    375.         y = TOP - 2;
    376.     }
    377.     else
    378.     {
    379.         window(LEFT-1, TOP-4, RIGHT+1, TOP+12);
    380.         y = TOP - 3;
    381.     }
    382.     clrscr();
    383.  
    384.     Ax = x;
    385.     Ay = y;
    386.     gotoxy(x , y);
    387.  
    388.     textbackground(colorConf.tbns);
    389.     for (i = 0; i < sizetable/4; i++)
    390.     {
    391.         for (j = 0; j < 4; j++, x += 9)
    392.         {
    393.             window(x, y, x+7, y);
    394.             clrscr();
    395.             cprintf("%s", table[4*i+j]);
    396.         }
    397.         y += 2;
    398.         x = Ax;
    399.     }
    400.     gotoxy( Ax, Ay);
    401.     return 0;
    402. } //end table_show
    403.  
    404. int table_hide(struct cls colorConf, int level)
    405. {
    406.     int i, x = LEFT, y, Ax, Ay, sizetable;
    407.  
    408.     sizetable = 8*level;
    409.     if ( level == 1)
    410.         y = TOP + 2;
    411.     else if ( level == 2)
    412.         y = TOP;
    413.     else if (level == 3)
    414.         y = TOP - 2;
    415.     else
    416.         y = TOP - 3;
    417.  
    418.     Ax = x;
    419.     Ay = y;
    420.     gotoxy (x, y);
    421.     for (i = 0; i < sizetable; i+= 4)
    422.     {
    423.         textbackground(colorConf.tbns);
    424.         window(x, y, x+7, y);
    425.         clrscr();
    426.  
    427.         window(x+9, y, x+16, y);
    428.         clrscr();
    429.  
    430.         window(x+18, y, x+25, y);
    431.         clrscr();
    432.  
    433.         window(x+27, y, x+34, y);
    434.         clrscr();
    435.         y += 2;
    436.     }
    437.     gotoxy( Ax, Ay);
    438.     return 0;
    439. } // end table_hide
    440.  
    441. int cell_show(char table[][9], int cx, int cy, int level)
    442. {
    443.     int i = cx, j = cy;
    444.     convertc( &i, &j, level);
    445.     window(cx, cy, cx+7, cy);
    446.     clrscr();
    447.     cprintf("%s", table[4*i+j]);
    448.     return 0;
    449. } //end cell_show
    450.  
    451. int cell_hide(int cx, int cy, struct cls colorConf)
    452. {
    453.     textbackground(colorConf.tbns);
    454.     window(cx, cy, cx+7, cy);
    455.     clrscr();
    456.     return 0;
    457. } //end cell_hide
    458.  
    459. int cell_change (int cx, int cy, char c, struct cls colorConf)
    460. {
    461.     if (c == 's')
    462.         textbackground(colorConf.tbs);
    463.     else if (c == 'n')
    464.         textbackground(colorConf.tbns);
    465.     window(cx, cy, cx+7, cy);
    466.     clrscr();
    467.     return 0;
    468. } // end cell_change
    469.  
    470. int cell_verify(char table[][9], char lib[][9], int cx1, int cy1, int cx2, int cy2, int level)
    471. {
    472.     convertc( &cx1, &cy1, level);
    473.     convertc( &cx2, &cy2, level);
    474.     if ( cell_match( table[4*cx1+cy1], table[4*cx2+cy2], lib))
    475.         return 1;
    476.     else
    477.         return 0;
    478. } //end cell_verify
    479.  
    480. int cell_match( char str1[], char str2[], char lib[][9])
    481. {
    482.     int i, j, n = 0;
    483.     while ( strlen(lib[n]) != 0) n++;
    484.     for (i = 0; i < n; ++i)
    485.         if (!strcmp( str1, lib[i]))
    486.             break;
    487.     for (j = 0; j < n; ++j)
    488.         if (!strcmp( str2, lib[j]))
    489.             break;
    490.     if ((i%2 == 0 && j == (i+1)) || (i%2 == 1 && j == (i-1)))
    491.         return 1;
    492.     else
    493.         return 0;
    494. } //end cell_match
    495.  
    496. int load(char lib[][9], time_h *timedelay, struct time highscore[4], struct cls *colorConf, int *level)
    497. {
    498.     char libDefault[32][9] = {"Pen", "Pencil","Coffee","Tea", "Book", "Notbook","iPhone","N97",
    499.                               "Jeans","Shirt","Clock","Time","MacBook","Laptop","Hanoi","Saigon",
    500.                               "English","French", "Rose","Tulip", "C","C++", "Chicken","KFC",
    501.                               "Girl","Boy","Moon","Sun","Winter","Cold","Admin","Mod"
    502.                              };
    503.     char temp[200][100], str1[9], str2[9], *strFolder;
    504.     int i, j = 0, k, l, f, g, m, n = 0, tmp;
    505.     strFolder = (char*) malloc(sizeof(char)*100);
    506.  
    507.     /* highscore*/
    508.     for (i = 0; i < 4; ++i)
    509.     {
    510.         highscore[i].ti_hour = 59;
    511.         highscore[i].ti_min = 59;
    512.         highscore[i].ti_sec = 59;
    513.         highscore[i].ti_hund = 99;
    514.     }
    515.     /* time default*/
    516.     *timedelay = 100;
    517.     /* default level*/
    518.     *level = 2;
    519.     /* default colors*/
    520.     (*colorConf).tc = 14;
    521.     (*colorConf).bg = 0;
    522.     (*colorConf).tbg = 3;
    523.     (*colorConf).tbs = 4;
    524.     (*colorConf).tbns = 0;
    525.  
    526.     FILE *fp;
    527.     getcwd(strFolder, 100);
    528.     if ( strstr(strFolder, "fcouple") == NULL)
    529.     {
    530.         strcat( strFolder, "\\fcouple");
    531.         while (chdir(strFolder) != 0)
    532.             mkdir("fcouple");
    533.     }
    534.     fp = fopen( "fcouple.cfg", "r");
    535.  
    536.     if ( fp!= NULL)
    537.     {
    538.         /* read file*/
    539.         i = 0;
    540.         while (((tmp = fscanf(fp, "%[^\n]%*c", temp[i])) == 1 || tmp == 0) && i < 100)
    541.             i++;
    542.  
    543.         /* skip helps*/
    544.         while ( strstr(temp[j], "<--") == NULL && j < i)
    545.             j++;
    546.         while ( strstr(temp[j], "-->") == NULL && j < i)
    547.             j++;
    548.  
    549.         /* load config*/
    550.         /* level*/
    551.         while ( strstr(temp[j], "<level>") == NULL && j < i)
    552.             j++;
    553.         tmp = atoi(temp[j]+strlen("<level>"));
    554.         if (tmp >= 1 && tmp <= 4)
    555.             *level = tmp;
    556.  
    557.         /* load highscore*/
    558.         while ( strstr(temp[j], "<highscore1>") == NULL && j < i)
    559.             j++;
    560.         tmp = atoi(temp[j]+strlen("<highscore1>"));
    561.         if (tmp >=0 && tmp <= 60)
    562.             highscore[0].ti_hour = (unsigned char) tmp;
    563.         tmp = atoi(temp[j]+strlen("<highscore1>  :"));
    564.         if (tmp >=0 && tmp <= 60)
    565.             highscore[0].ti_min = (unsigned char) tmp;
    566.         tmp = atoi(temp[j]+strlen("<highscore1>  :  :"));
    567.         if (tmp >=0 && tmp <= 60)
    568.             highscore[0].ti_sec = (unsigned char) tmp;
    569.         tmp = atoi(temp[j]+strlen("<highscore1>  :  :  :"));
    570.         if (tmp >=0 && tmp <= 99)
    571.             highscore[0].ti_hund = (unsigned char) tmp;
    572.  
    573.         while ( strstr(temp[j], "<highscore2>") == NULL && j < i)
    574.             j++;
    575.         tmp = atoi(temp[j]+strlen("<highscore2>"));
    576.         if (tmp >=0 && tmp <= 60)
    577.             highscore[1].ti_hour = (unsigned char) tmp;
    578.         tmp = atoi(temp[j]+strlen("<highscore2>  :"));
    579.         if (tmp >=0 && tmp <= 60)
    580.             highscore[1].ti_min = (unsigned char) tmp;
    581.         tmp = atoi(temp[j]+strlen("<highscore2>  :  :"));
    582.         if (tmp >=0 && tmp <= 60)
    583.             highscore[1].ti_sec = (unsigned char) tmp;
    584.         tmp = atoi(temp[j]+strlen("<highscore2>  :  :  :"));
    585.         if (tmp >=0 && tmp <= 99)
    586.             highscore[1].ti_hund = (unsigned char) tmp;
    587.  
    588.         while ( strstr(temp[j], "<highscore3>") == NULL && j < i)
    589.             j++;
    590.         tmp = atoi(temp[j]+strlen("<highscore3>"));
    591.         if (tmp >=0 && tmp <= 60)
    592.             highscore[2].ti_hour = (unsigned char) tmp;
    593.         tmp = atoi(temp[j]+strlen("<highscore3>  :"));
    594.         if (tmp >=0 && tmp <= 60)
    595.             highscore[2].ti_min = (unsigned char) tmp;
    596.         tmp = atoi(temp[j]+strlen("<highscore3>  :  :"));
    597.         if (tmp >=0 && tmp <= 60)
    598.             highscore[2].ti_sec = (unsigned char) tmp;
    599.         tmp = atoi(temp[j]+strlen("<highscore3>  :  :  :"));
    600.         if (tmp >=0 && tmp <= 99)
    601.             highscore[2].ti_hund = (unsigned char) tmp;
    602.  
    603.         while ( strstr(temp[j], "<highscore4>") == NULL && j < i)
    604.             j++;
    605.         tmp = atoi(temp[j]+strlen("<highscore4>"));
    606.         if (tmp >=0 && tmp <= 60)
    607.             highscore[3].ti_hour = (unsigned char) tmp;
    608.         tmp = atoi(temp[j]+strlen("<highscore4>  :"));
    609.         if (tmp >=0 && tmp <= 60)
    610.             highscore[3].ti_min = (unsigned char) tmp;
    611.         tmp = atoi(temp[j]+strlen("<highscore4>  :  :"));
    612.         if (tmp >=0 && tmp <= 60)
    613.             highscore[3].ti_sec = (unsigned char) tmp;
    614.         tmp = atoi(temp[j]+strlen("<highscore4>  :  :  :"));
    615.         if (tmp >=0 && tmp <= 99)
    616.             highscore[3].ti_hund = (unsigned char) tmp;
    617.  
    618.         /* timedelay*/
    619.         while ( strstr(temp[j], "<timedelay>") == NULL && j < i)
    620.             j++;
    621.         tmp = atoi(temp[j]+strlen("<timedelay>"));
    622.         if (tmp >= 0)
    623.             *timedelay = tmp;
    624.  
    625.         /* textcolor*/
    626.         while ( strstr(temp[j], "<textcolor>") == NULL && j < i)
    627.             j++;
    628.         tmp = atoi(temp[j]+strlen("<textcolor>"));
    629.         if ( tmp >= 0 && tmp <= 15)
    630.             (*colorConf).tc = tmp;
    631.  
    632.         /* background*/
    633.         while ( strstr(temp[j], "<background>") == NULL && j < i)
    634.             j++;
    635.         tmp = atoi(temp[j]+strlen("<background>"));
    636.         if ( tmp >= 0 && tmp <= 15)
    637.             (*colorConf).bg = tmp;
    638.  
    639.         /* table background*/
    640.         while ( strstr(temp[j], "<table background>") == NULL && j < i)
    641.             j++;
    642.         tmp = atoi(temp[j]+strlen("<table background>"));
    643.         if ( tmp >= 0 && tmp <= 15)
    644.             (*colorConf).tbg = tmp;
    645.  
    646.         /* text background selected*/
    647.         while ( strstr(temp[j], "<text background selected>") == NULL && j < i)
    648.             j++;
    649.         tmp = atoi(temp[j]+strlen("<text background selected>"));
    650.         if ( tmp >= 0 && tmp <= 15)
    651.             (*colorConf).tbs = tmp;
    652.  
    653.         /* text background none-selected*/
    654.         while ( strstr(temp[j], "<text background none-selected>") == NULL && j < i)
    655.             j++;
    656.         tmp = atoi(temp[j]+strlen("<text background none-selected>"));
    657.         if ( tmp >= 0 && tmp <= 15)
    658.             (*colorConf).tbns = tmp;
    659.  
    660.         /* load lib*/
    661.         j = 0;
    662.         while ( strstr(temp[j], "<lib>") == NULL && j < i)
    663.             j++;
    664.         k = j;
    665.         while ( strstr(temp[k], "</lib>") == NULL && k < i)
    666.             k++;
    667.         for ( l = j+1; l < k; ++l)
    668.         {
    669.             m = 0;
    670.             f = strstr(temp[l], ":") - temp[l];
    671.             for ( g = 0; g < f; ++g)
    672.                 if ( g < 9)
    673.                     str1[g] = *(temp[l]+g);
    674.             str1[g] = '\0';
    675.             for ( g = f+1; g < (int) strlen(temp[l]); ++g)
    676.                 if ( m < 9)
    677.                     str2[m++] = *(temp[l]+g);
    678.             str2[m] = '\0';
    679.             strcpy( lib[n++], str1);
    680.             strcpy( lib[n++], str2);
    681.         }
    682.         n = 2*(k - j - 1);
    683.     }
    684.     fclose(fp);
    685.     if ( n == 0)
    686.     {
    687.         n = 32;
    688.         save(libDefault, *timedelay, highscore, *colorConf, *level, n);
    689.         for ( i = 0; i < n; ++i)
    690.             strcpy(lib[i], libDefault[i]);
    691.     }
    692.     fclose(fp);
    693.     *(strFolder+ strlen(strFolder) - strlen("fcouple")) = '\0';
    694.     chdir(strFolder);
    695.     return n;
    696. } //end load
    697.  
    698. int play( char lib[][9], int sizelib, time_h timedelay, struct cls colorConf, int level)
    699. {
    700.     int x = LEFT, y, xm, ym, ctrl = 0, A[8][4],
    701.         order = 0, xt, yt, xk = 0, yk = 0, count, sizetable, btm;
    702.     char table[32][9], *strFolder;
    703.     strFolder = (char*) malloc(sizeof(char)*100);
    704.  
    705.     getcwd(strFolder, 100); //cprintf("%s", strFolder); getch();
    706.     if ( strstr(strFolder, "fcouple") == NULL)
    707.     {
    708.         strcat( strFolder, "\\fcouple");
    709.         chdir(strFolder) != 0;
    710.     }
    711. //    getcwd(strFolder, 100); cprintf("%s", strFolder); getch();
    712.  
    713.     if ( level == 1)
    714.     {
    715.         y = TOP + 2;
    716.         btm = y + 2;
    717.     }
    718.     else if ( level == 2)
    719.     {
    720.         y = TOP;
    721.         btm = y + 7;
    722.     }
    723.     else if (level == 3)
    724.     {
    725.         y = TOP - 2;
    726.         btm = y + 9;
    727.     }
    728.     else
    729.     {
    730.         y = TOP - 3;
    731.         btm = y + 12;
    732.     }
    733.     sizetable = table_create(table, lib, sizelib, level);
    734.     for ( xt = 0; xt < sizetable/4; ++xt)
    735.         for ( yt = 0; yt < 4; ++yt)
    736.             A[xt][yt] = 0;
    737.  
    738.     gotoxy(3,3);
    739.     cprintf("Finding Couple   Level");
    740.     textcolor(colorConf.tbs);
    741.     cprintf(" %d", level);
    742.  
    743.     gotoxy(3, 24);
    744.     textcolor(colorConf.tc);
    745.     cprintf("Help");
    746.     textcolor(colorConf.tbs);
    747.     cprintf(" H");
    748.     textcolor(colorConf.tc);
    749.     cprintf(" Config");
    750.     textcolor(colorConf.tbs);
    751.     cprintf(" C");
    752.     textcolor(colorConf.tc);
    753.     cprintf(" Restart");
    754.     textcolor(colorConf.tbs);
    755.     cprintf(" R");
    756.     textcolor(colorConf.tc);
    757.     cprintf(" Exit");
    758.     textcolor(colorConf.tbs);
    759.     cprintf(" Esc");
    760.  
    761.     textcolor(colorConf.tc);
    762.     table_show( table, colorConf, level); // show a table
    763.     time_delay( timedelay); // A user have sometime to look through the table
    764.     table_hide(colorConf, level); // hide the table
    765.     window( x, y, RIGHT, btm);
    766.     cell_change( x, y, 's', colorConf);
    767.     do
    768.     {
    769.         xt = xm = x;
    770.         yt = ym = y;
    771.         convertc(&xt, &yt, level);
    772.         ctrl = control( &x, &y, level);
    773.  
    774.         if ( ctrl == 1)
    775.         {
    776.             cell_change( xm, ym, 'n', colorConf);
    777.             if (A[xt][yt] == 1)
    778.                 cell_show( table, xm, ym, level);
    779.             xt = x;
    780.             yt = y;
    781.             convertc(&xt, &yt, level);
    782.             cell_change( x, y, 's', colorConf);
    783.             if (A[xt][yt] == 1)
    784.                 cell_show( table, x, y, level);
    785.         }
    786.         else  if (ctrl == -2 && A[xt][yt] != 1)
    787.         {
    788.             order++;
    789.             if (order == 1)
    790.             {
    791.                 xk = x;
    792.                 yk = y;
    793.                 A[xt][yt] = 1;
    794.                 cell_change( x, y, 'n', colorConf);
    795.                 cell_show( table, x, y, level);
    796.             }
    797.             else if (order == 2)
    798.             {
    799.                 xt = xk;
    800.                 yt = yk;
    801.                 convertc(&xt, &yt, level);
    802.                 if ( !cell_verify(table, lib, x, y, xk, yk, level))
    803.                 {
    804.                     A[xt][yt] = 0;
    805.                     cell_show( table, x, y, level);
    806.                     time_delay(20);
    807.                     cell_change( xk, yk, 'n', colorConf);
    808.                     cell_change( x, y, 's', colorConf);
    809.                 }
    810.                 else
    811.                 {
    812.                     A[xt][yt] = 1;
    813.                     xt = x;
    814.                     yt = y;
    815.                     convertc(&xt, &yt, level);
    816.                     A[xt][yt] = 1;
    817.                     cell_show( table, x, y, level);
    818.                 }
    819.                 order = 0;
    820.             } //end if
    821.         }
    822.         else if ( ctrl == 2)
    823.         {
    824.             system("notepad help.txt");
    825.         }
    826.         else if ( ctrl == 3)
    827.         {
    828.             system("notepad fcouple.cfg");
    829.         } //end if
    830.         count  = 0;
    831.         for (xt = 0; xt < sizetable/4; ++xt)
    832.             for ( yt = 0; yt < 4; ++yt)
    833.                 if (A[xt][yt] == 1)
    834.                     count++;
    835.         if ( count == sizetable)
    836.         {
    837.             ctrl = -3;
    838.         }
    839.     }
    840.     while (ctrl != -1 && ctrl != -3 && ctrl != 4);
    841. //
    842.     *(strFolder+ strlen(strFolder) - strlen("fcouple")) = '\0';
    843.     chdir(strFolder);
    844.  
    845.     if ( ctrl == -1)
    846.         return 0; //exit game
    847.     else if (ctrl == -3)
    848.         return 1; //win game
    849.     else
    850.         return 2; //restart game
    851. } //end play
    852.  
    853. int save(char lib[][9], time_h timedelay, struct time highscore[4], struct cls colorConf, int level, int n)
    854. {
    855.     char *strFolder;
    856.     int i, rt;
    857.     strFolder = (char*) malloc(sizeof(char)*100);
    858.     FILE *fp;
    859.     getcwd(strFolder, 100);
    860.     if ( strstr(strFolder, "fcouple") == NULL)
    861.     {
    862.         strcat( strFolder, "\\fcouple");
    863.         while (chdir(strFolder) != 0)
    864.             mkdir("fcouple");
    865.     }
    866.     fp = fopen( "fcouple.cfg", "w+");
    867.  
    868.     if ( fp != NULL)
    869.     {
    870.         fprintf(fp, "<-- HELP:\n");
    871.         fprintf(fp, "<timedelay> you have some time to look through the table, then it is hidden\n\n");
    872.         fprintf(fp, "Config colors displayed: <textcolor>, <background>, <table background>,\n");
    873.         fprintf(fp, "<text background selected>, <text background none-selected>\n\n");
    874.         fprintf(fp, "COLOR TABLE:\n");
    875.         fprintf(fp, "Value  Name\n");
    876.         fprintf(fp, "0      BLACK\n");
    877.         fprintf(fp, "1      BLUE\n");
    878.         fprintf(fp, "2      GREEN\n");
    879.         fprintf(fp, "3      CYAN\n");
    880.         fprintf(fp, "4      RED\n");
    881.         fprintf(fp, "5      MAGENTA\n");
    882.         fprintf(fp, "6      BROWN\n");
    883.         fprintf(fp, "7      LIGHTRAY\n");
    884.         fprintf(fp, "8      DACKGRAY\n");
    885.         fprintf(fp, "9      LIGHTBLUE\n");
    886.         fprintf(fp, "10     LIGHTGREEN\n");
    887.         fprintf(fp, "11     LIGHTCYAN\n");
    888.         fprintf(fp, "12     LIGHTRED\n");
    889.         fprintf(fp, "13     LIGHTMAGENTA\n");
    890.         fprintf(fp, "14     YELLOW\n");
    891.         fprintf(fp, "15     WHITE\n\n");
    892.         fprintf(fp, "1  EASY\n");
    893.         fprintf(fp, "2  MEDIUM\n");
    894.         fprintf(fp, "3  HARD\n");
    895.         fprintf(fp, "4  VERY HARD\n");
    896.         fprintf(fp,"-->\n\n");
    897.  
    898.         fprintf(fp,"<level>%d\n\n", level);
    899.         fprintf(fp,"<highscore1>%02d:%02d:%02d:%02d\n", highscore[0].ti_hour, highscore[0].ti_min, highscore[0].ti_sec, highscore[0].ti_hund);
    900.         fprintf(fp,"<highscore2>%02d:%02d:%02d:%02d\n", highscore[1].ti_hour, highscore[1].ti_min, highscore[1].ti_sec, highscore[1].ti_hund);
    901.         fprintf(fp,"<highscore3>%02d:%02d:%02d:%02d\n", highscore[2].ti_hour, highscore[2].ti_min, highscore[2].ti_sec, highscore[2].ti_hund);
    902.         fprintf(fp,"<highscore4>%02d:%02d:%02d:%02d\n", highscore[3].ti_hour, highscore[3].ti_min, highscore[3].ti_sec, highscore[3].ti_hund);
    903.  
    904.         fprintf(fp, "\n<timedelay>%d\n", timedelay);
    905.         fprintf(fp, "<textcolor>%d\n", colorConf.tc);
    906.         fprintf(fp, "<background>%d\n", colorConf.bg);
    907.         fprintf(fp, "<table background>%d\n", colorConf.tbg);
    908.         fprintf(fp, "<text background selected>%d\n", colorConf.tbs);
    909.         fprintf(fp, "<text background none-selected>%d\n\n", colorConf.tbns);
    910.         fprintf(fp, "<lib>\n");
    911.         for ( i = 0; i < n; i += 2)
    912.             fprintf(fp, "%s:%s\n", lib[i], lib[i+1]);
    913.         fprintf(fp, "</lib>\n");
    914.         rt = 0;
    915.     }
    916.     else
    917.         rt = 1;
    918.     fclose(fp);
    919.     *(strFolder+ strlen(strFolder) - strlen("fcouple")) = '\0';
    920.     chdir(strFolder);
    921.     return rt;
    922. } //end save
    Đã được chỉnh sửa lần cuối bởi vuanhkhai : 06-12-2008 lúc 09:41 PM. Lý do: sửa lỗi chính tả :D

  2. #2
    Ngày gia nhập
    12 2008
    Bài viết
    235

    Code sai rùi bác ơi.Xem lại đi.Em chưa kịp xem nhưng chạy báo lỗi nhìu wá

  3. #3
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Trích dẫn Nguyên bản được gửi bởi ducthiem90 Xem bài viết
    Code sai rùi bác ơi.Xem lại đi.Em chưa kịp xem nhưng chạy báo lỗi nhìu wá
    Bạn chạy trong dos hay win vậy ?
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  4. #4
    Ngày gia nhập
    11 2007
    Nơi ở
    Biết để làm gì?
    Bài viết
    827

    Cái này chắc compile bằng TC hoặc BC for DOS vì thấy mấy cái dos.h với cả graphics.h . Hic, 2 cái IDE cổ lỗ đó ko có cái nào nên ko test được
    Cánh Chym ứ mỏi

  5. #5
    Ngày gia nhập
    06 2007
    Nơi ở
    UIT
    Bài viết
    44

    Trích dẫn Nguyên bản được gửi bởi dieucay555 Xem bài viết
    Cái này chắc compile bằng TC hoặc BC for DOS vì thấy mấy cái dos.h với cả graphics.h . Hic, 2 cái IDE cổ lỗ đó ko có cái nào nên ko test được
    BLC++ vs 5.02 let download

  6. #6
    Ngày gia nhập
    12 2008
    Bài viết
    21

    Mặc định Có minigame, post lên mong mọi người góp ý

    Sao ko xài VC vậy bạn ? Mua có 7k 1 CD thui mà.
    Hay bạn Compile ra rùi up lên mọi ng` chơi thử koi ^^

  7. #7
    Ngày gia nhập
    08 2008
    Bài viết
    3

    http://cid-24cb1a68ce5fd349.skydrive...ic/fcouple.zip

    Mình dùng Borland Compiler 5.5. Mình đã dịch trên Vista, không thấy lỗi. Chạy trực tiếp trên win (vista và xp) cũng bình thường mà.
    Đã được chỉnh sửa lần cuối bởi vuanhkhai : 10-12-2008 lúc 06:32 PM.

Các đề tài tương tự

  1. Mong mọi người góp ý.
    Gửi bởi protieusoi trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 07-10-2013, 12:13 AM
  2. Kỹ thuật C++ Xây dựng hàm tính thời gian chạy chương trình , mong được góp ý.
    Gửi bởi violent_feeling trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 22-09-2012, 01:20 PM
  3. Database Sơ đồ MCD chương trình quản lý nâng lương cán bộ! Mong các bạn góp ý !
    Gửi bởi Dark777 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 22-05-2012, 03:44 PM
  4. Tổng hợp ôn thi môn Giải thuật kính mong anh em đóng góp
    Gửi bởi kaiyo trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 27-05-2010, 01:45 PM
  5. Lớp tính toán với số nguyên lớn bằng C++. Mong mọi người đóng góp ý kiến nhé
    Gửi bởi thangit trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 14
    Bài viết cuối: 20-09-2008, 08:36 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn