#include #include /* Mac の人は cls を clear に変更 */ #define CLS "cls" #define SIZE 32 #define WIDTH 3 #define HEIGHT 3 #define MAX 5 /* 画面切り替えが速すぎる場合は WAIT を増やす */ #define WAIT 15000 typedef struct player { char name[SIZE]; int x; int y; } PLAYER; void move(PLAYER *p, int dx, int dy); /* ハンターを自分に向かって 1 歩近づける */ void approach(PLAYER *p_you, PLAYER *p_hunter) { int dx, dy, dxa, dya; dx = p_you->x - p_hunter->x; dy = p_you->y - p_hunter->y; if ( dx != 0 || dy != 0 ) { dxa = dx; dya = dy; if ( dx < 0 ) { dxa *= -1; } if ( dy < 0 ) { dya *= -1; } if ( dxa > dya ) { if ( dx > 0 ) { (p_hunter->x)++; } else { (p_hunter->x)--; } } else { if ( dy > 0 ) { (p_hunter->y)++; } else { (p_hunter->y)--; } } } } /* 名前と現在位置を表示 */ void print_position(PLAYER p) { printf(" %s : (%d,%d) \n", p.name, p.x, p.y); } /* 画面切り替えの前に行う時間稼ぎ */ void waiting(void) { int i, j; for(i = 0; i < WAIT; i++ ){ for ( j = 0; j < WAIT; j++ ); } } /* 全体のマップを表示 */ void print_map(PLAYER you, PLAYER hunter) { int x, y, i, k; waiting(); system(CLS); print_position(you); print_position(hunter); for ( y = HEIGHT-1; y >= 0; y-- ) { if ( y < HEIGHT-1 ) { for ( k = 0; k < 2; k++ ) { for ( i = 0; i < WIDTH; i++ ) { printf(" | "); } printf("\n"); } } for ( x = 0; x < WIDTH; x ++ ) { if ( x > 0 ) { printf("---"); } if ( you.x == x && you.y == y && hunter.x == x && hunter.y == y ) { printf("(X)"); } else if ( you.x == x && you.y == y ) { printf("[Y]"); } else if ( hunter.x == x && hunter.y == y ) { printf("[H]"); } else { printf(" + "); } } printf("\n"); } printf("\n"); }