/********************************/ /* アスキーアート */ /* シューティングゲーム */ /* */ /* 敵UFO キャラクター: M */ /* ビーム: $ */ /* */ /* プレイヤー キャラクター: A */ /* ビーム: | */ /* */ /* キー操作 左右移動: ←,→ */ /* ビーム発射: ↑ */ /* 終了: Esc */ /********************************/ #include #include #include #include #define XMAX 80 #define YMAX 24 void main( ) { char buf[YMAX][XMAX]; // 文字配列(フィールド) int xM=30,yM=0; // キャラクタM 位置 int dxM=1; // キャラクタM 移動量(左右) int xMb,yMb=YMAX; // キャラクタM ビーム$ 位置 int xA=40,yA=YMAX-1; // キャラクタA 位置 int xAb,yAb=-1; // キャラクタA ビーム| 位置 int i,j; // 文字配列添字 while( 1 ) { system("cls"); // 画面消去 memset(&buf[0][0],' ',XMAX*YMAX); // 文字配列クリア buf[yM][xM]='M'; // M 配置 buf[yA][xA]='A'; // A 配置 if ( yMb=0 ) buf[yAb][xAb]='|'; // | 配置 for( i=0; i=0 ) yAb-=1; // | 1行上へ if ( kbhit( )!=0 ) // キーが押された { j=getch( ); // キー番号 if ( j==27 ) break; // Esc(終了) if ( j== 0 ) j=getch( ); // 特殊キー if ( j==75 ) // ← { xA-=3; // M 3桁左へ if ( xA<0 ) xA=0; // 左端 } else if ( j==77 ) // → { xA+=3; // M 3桁右へ if ( xA>=XMAX ) xA=XMAX-1; // 右端 } if ( j==72 && yAb<0 ) // ↑,|なし { xAb=xA; yAb=yA-1; } // | 発射 } if ( xA==xM && yMb>=YMAX ) // A,M x同位置,$なし { xMb=xM; yMb=1; } // $ 発射 Sleep(50); } }