ÅìµþÍý²ÊÂç³Ø infoserv¡Î¹¹¿·Æü¡Ï2000.10.23


¼¡¤ÎÌä11¤«¤éÌä14¤Þ¤Ç¤Î4Ìä¤Ë¤Ä¤¤¤Æ¤Ï¡¤¤³¤ÎÃ椫¤é1Ìä¤òÁªÂò¤·¡¤
Åú°ÆÍÑ»æ¤ÎÁªÂòÍó¤Î¤ò ¥Þ¡¼¥¯¤·¤Æ²òÅú¤·¤Æ¤¯¤À¤µ¤¤¡£
¡¡¤Ê¤ª¡¤2Ìä°Ê¾åÁªÂò¤·¤¿¾ì¹ç¤Ë¤Ï¡¤¤Ï¤¸¤á¤Î1Ìä¤Ë¤Ä¤¤¤ÆºÎÅÀ¤·¤Þ¤¹¡£

Ì䣱£± ¡¡¼¡¤Î C ¥×¥í¥°¥é¥à¤ÎÀâÌÀµÚ¤Ó¥×¥í¥°¥é¥à¤òÆɤó¤Ç¡¤ÀßÌä 1 ¡Á 4 ¤ËÅú¤¨¤è¡£

¡Ì¥×¥í¥°¥é¥à¤ÎÀâÌÀ¡Í

²èÌ̾å¤Ëɽ¼¨¤µ¤ì¤¿¥â¥°¥é¤ËÂФ·¤Æ¡¤¥Þ¥¦¥¹¤Ç¥Ý¥¤¥ó¥¿¤ò°ÜÆ°¤·¡¤¥¯¥ê¥Ã¥¯¤·¤ÆÆÀÅÀ¤ò ¶¥¤¦¥×¥í¥°¥é¥à¤Ç¤¢¤ë¡£

(1)

²èÌ̾å¤Ë¤Ï¡¤½Ä²£ 16 ¸Ä¤º¤Ä¤ÎÀµÊý·Á¤Î ¡¡ÌܤËʬ³ä¤µ¤ì¤¿¥¦¥£¥ó¥É¥¦¤¬¤¢¤ë¡£ ¾£ÌܤνĵڤӲ£¤Î²èÁÇ¿ô¤Ï 24 ¤Ç¤¢¤ê¡¤¥¦¥£¥ó¥É¥¦¤Ï½Ä 384¡ß²£ 384 ¤Î²èÁÇ¤Ç ¹½À®¤µ¤ì¤Æ¤¤¤ë¡Ê¿Þ 1 ¡Ë¡£ ²èÁǤκÂɸÃͤϡ¤¥¦¥£¥ó¥É¥¦¤Îº¸¾å¶ù¤ò´ðÅÀ (0, 0) ¤È¤·¤¿²£ºÂɸµÚ¤Ó½ÄºÂɸ¤ÎÁȹ礻¤Ç¤¢¤ë¡£

(2)

Íð¿ô¤òÍѤ¤¤ÆÁªÂò¤·¤¿¾£Ìܤˡ¤1 ɤ¤Î¥â¥°¥é¤Î³¨¡Ê¿Þ 2 ¡Ë¤òɽ¼¨¤¹¤ë¡£ ¥â¥°¥é¤Î³¨¤Ï¥×¥í¥°¥é¥àÆâ¤ÇÀë¸À¤µ¤ì¤¿²ó¿ô¤Î·«ÊÖ¤·½èÍý¤Î´Ö¤À¤±É½¼¨¤µ¤ì¤Æ¤ª¤ê¡¤ ·«ÊÖ¤·½èÍý¤Î½ªÎ»¤ÈƱ»þ¤Ë²èÌ̤«¤é¾Ã¤¨¤ë¡£

(3)

¥â¥°¥é¤¬²èÌ̤Ëɽ¼¨¤µ¤ì¤Æ¤¤¤ë´Ö¤Ë¡¤¾£ÌÜÆâ¤ò¥¯¥ê¥Ã¥¯¤Ç¤­¤ì¤Ð¡¤¾£Ìܤ㨤¬ ¿Þ 3 ¤ËÊѤï¤ê¡¤ÆÀÅÀ¤¬ÆÀ¤é¤ì¤ë¡£

(4)

¥¯¥ê¥Ã¥¯¸¡½ÐµÚ¤Ó¥¯¥ê¥Ã¥¯¤µ¤ì¤¿²èÁǤκÂɸ¤Ï¡¤´Ø¿ô sense ¤ò»ÈÍѤ·¤Æ³ÍÆÀ¤¹¤ë¡£

(5)

¤³¤Î¥×¥í¥°¥é¥à¤Ç¤Ï¡¤¼¡¤Î»°¤Ä¤Î´Ø¿ô¤òÍøÍѤ·¤Æ¤¤¤ë¡£

­¡´Ø¿ô rand16

­¢´Ø¿ô mogura

­¡¡¡´Ø¿ô sense

¡Ì¥×¥í¥°¥é¥à¡Í

¡Ê¹ÔÈÖ¹æ¡Ë

01  #include  <stdio.h>
02  #define   ON        1
03  #define   OFF       0
04  #define   HIT       1
05  #define   CMAX      16
06  #define   BLKSZ     24
07  #define   MGNCNT    200
08  #define   DSPCNT    250
09  #define   STOP      3000
10  typedef struct { int flg; int st; } mbox;
11  int  rand16(void);
12  int  sense( int*, int* );
13  void mogura( char*, int, int );
14  main(void) {
15      int mflg=OFF, hitpt=0;
16      int hitck[BLKSZ][BLKSZ], gcnt, gx, gy, ix, iy;
17      mbox mg[CMAX][CMAX];
18      for ( ix=0; ix<CMAX; ix++ ) 
19          for ( iy=0; iy<CMAX; iy++ ) {
20              mg[ix][iy].flg = OFF;
21              mg[ix][iy].st = 0;
22          }
23      for ( ix=0; ix<BLKSZ; ix++ )
24          for ( iy=0; iy<BLKSZ; iy++ ) hitck[ix][iy] = HIT;

25      for ( gcnt=0; gcnt<STOP; gcnt++ ) {
26          if ( gcnt % MGNCNT == 0 ) {
27              ix = rand16();
28              iy = rand16();
29              if ( mg[ix][iy].flg == OFF ) {
30                  mg[ix][iy].flg = ON;
31                  mg[ix][iy].st = gcnt;
32                  mogura( "open", ix, iy );
33              }
34          }
35          mflg = sense( &gx, &gy );
36          if ( mflg == ON ) {
37              if ( mg[gx/BLKSZ][gy/BLKSZ].flg == ON &&
38                   hitck[gx%BLKSZ][gy%BLKSZ] == HIT ) {
39                  hitpt += 10;
40                  mogura( "hit", gx/BLKSZ, gy/BLKSZ );
41                  mg[gx/BLKSZ][gy/BLKSZ].flg = OFF;
42                  mg[gx/BLKSZ][gy/BLKSZ].st = 0;
43              }
44              else hitpt--;
45          }
46          for ( ix=0; ix<CMAX; ix++ ) {
47              for ( iy=0; iy<CMAX; iy++ )
48                  if ( mg[ix][iy].flg == ON ) {
49                      if ( (gcnt-mg[ix][iy].st)>DSPCNT ) {
50                          mg[ix][iy].flg = OFF;
51                          mg[ix][iy].st = 0;
52                          mogura( "close", ix, iy );
53                      }
54                  }
55          }
56      }
57      printf( "¥²¡¼¥à½ªÎ»\n¤¢¤Ê¤¿¤ÎÆÀÅÀ¤Ï%d¤Ç¤¹\n", hitpt );
58 }

ÀßÌ䣱 ¤³¤Î¥×¥í¥°¥é¥à¤Ç¤Ï¡¤¥²¡¼¥à½ªÎ»¤Þ¤Ç¤Ë¿Þ 2 ¤Î¥â¥°¥é¤¬ ºÇÂ粿²ó½Ð¸½¤¹¤ë¤«¡¤²òÅú·²¤ÎÃ椫¤éÁª¤Ù¡£

²òÅú·²

¥¢ 12¡¡¡¡¡¡¥¤ 15¡¡¡¡¡¡¥¦ 16¡¡¡¡¡¡¥¨ 20

¥ª 24¡¡¡¡¡¡¥« 25¡¡¡¡¡¡¥­ 32

ÀßÌ䣲 ¥×¥í¥°¥é¥à¤ÎÆâÍƤ˴ؤ¹¤ëµ­½Ò¤È¤·¤Æ¡¤Àµ¤·¤¯¤Ê¤¤¤â¤Î¤ò²òÅú·²¤ÎÃ椫¤é Æó¤ÄÁª¤Ù¡£

²òÅú·²

¥¢¡¡¹ÔÈÖ¹æ 7 ¤Î MGNCNT ¤ò 400 ¤Ë¤¹¤ë¤ÈÆÀÅÀ¤¬ÆÀ¤ä¤¹¤¯¤Ê¤ë¡£

¥¤¡¡¹ÔÈÖ¹æ 8 ¤Î DSPCNT ¤ò 400 ¤Ë¤¹¤ë¤ÈÆÀÅÀ¤¬ÆÀ¤ä¤¹¤¯¤Ê¤ë¡£

¥¦¡¡¿Þ 2 ¤Î¥â¥°¥é¤Îɽ¼¨²ó¿ô¤ÎÁý¸º¤Ë¤è¤Ã¤Æ¡¤¿Þ 2 ¤¬É½¼¨¤µ¤ì¤Æ¤«¤é¾Ã¤¨¤ë¤Þ¤Ç¤Î»þ´Ö¤¬ÊѲ½¤¹¤ë¡£

¥¨¡¡¥â¥°¥é¤¬É½¼¨¤µ¤ì¤¿¾õÂÖ¤Ç¥×¥í¥°¥é¥à¤¬½ªÎ»¤¹¤ë¤³¤È¤¬¤¢¤ë¡£

¥ª¡¡¥â¥°¥é¤¬É½¼¨¤µ¤ì¤Æ¤¤¤Ê¤¤¤È¤³¤í¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤ÈÆÀÅÀ¤Ë±Æ¶Á¤¬¤¢¤ë¡£

ÀßÌ䣳 ¥¯¥ê¥Ã¥¯¤Ë¤è¤ëÆÀÅÀ¤À¤±¤Ç¤Ê¤¯¡¤¸«Æ¨¤·¤¿¥â¥°¥é¤â¿ô¤¨¤ë¤³¤È¤Ë¤·¤¿¡£ ¤½¤³¤Ç¡¤½é´üÃͤ¬ 0 ¤Ç¤¢¤ë int ·¿ÊÑ¿ô scnt ¤òÀë¸ÀÉô¤ËÄɲä·¡¤¹ÔÈÖ¹æ 57 ¤Î printf ¤ò¼¡¤Î¤è¤¦¤ËÊѹ¹¤·¤¿¡£

printf ( "¥²¡¼¥à½ªÎ»\n ¤¢¤Ê¤¿¤ÎÆÀÅÀ¤Ï%d¡¤¸«Æ¨¤·¤Ï%d ɤ¤Ç¤¹\n",
hitpt, scnt );

´Ø¿ô main ¤Ø¤ÎÊѹ¹¤È¤·¤ÆŬÀڤʤâ¤Î¤ò¡¤²òÅú·²¤ÎÃ椫¤éÁª¤Ù¡£

²òÅú·²

¥¢¡¡¹ÔÈÖ¹æ 33 ¤Îľ¸å¤Ë else scnt++; ¤òÄɲ乤롣

¥¤¡¡¹ÔÈÖ¹æ 34 ¤Îľ¸å¤Ë else scnt++; ¤òÄɲ乤롣

¥¦¡¡¹ÔÈÖ¹æ 44 ¤ò else { hitpt--; scnt++; } ¤ËÃÖ¤­´¹¤¨¤ë¡£

¥¨¡¡¹ÔÈÖ¹æ 45 ¤Îľ¸å¤Ë else scnt++; ¤òÄɲ乤롣

¥ª¡¡¹ÔÈÖ¹æ 52 ¤Îľ¸å¤Ë scnt++; ¤òÄɲ乤롣

ÀßÌ䣴 ¹ÔÈÖ¹æ 6 ¤Îľ¸å¤Ë¡¤¼¡¤Î #define ¤Î¹Ô¤òÄɲä·¡¤¹ÔÈÖ¹æ 24 ¤Îľ¸å¤Ë¼¡¤Î forʸ¤Ë¤è¤ë·«ÊÖ¤·½èÍý¤òÄɲä·¤¿¡£ ¤½¤Î·ë²Ì¡¤¾£ÌÜÆâ¤Ç¤Î¥â¥°¥é¤Î¥¯¥ê¥Ã¥¯¤òǧ¼±¤¹¤ëÎΰ褬ÊѲ½¤·¤¿¡£ Êѹ¹¸å¤Î¥¯¥ê¥Ã¥¯Ç§¼±²èÁÇÎΰè¤Ë¶á¤¤¿Þ·Á¤ò²òÅú·²¤ÎÃ椫¤éÁª¤Ù¡£ ¤³¤³¤Ç¡¤¿ÞÃæ¤Î³¥¿§¤ÎÎΰ褬¥¯¥ê¥Ã¥¯¤òǧ¼±¤¹¤ëÎΰè¤Ç¤¢¤ë¡£

     #define  TSZ   BLKSZ/3
 
     for ( ix=0; ix<TSZ; ix++ ) {
         for ( iy=0; iy<TSZ-ix; iy++ ) {
             hitck[ix        ][iy        ] = OFF;
             hitck[ix        ][BLKSZ-iy-1] = OFF;
             hitck[BLKSZ-ix-1][iy        ] = OFF;
             hitck[BLKSZ-ix-1][BLKSZ-iy-1] = OFF;
         }
     }

²òÅú·²


ÅìµþÍý²ÊÂç³Ø infoserv Ìá¤ë ¼¡ÊÇ¡§Ìä12