#include #include #define B_LIMIT 5 #define B_CHARGE 2 #define B_DAMAGE 3 void charge(int *pb) { (*pb) += B_CHARGE; if ( (*pb) > B_LIMIT ) { (*pb) = B_LIMIT; } printf("充電しました(バッテリー残量:%d)\n", (*pb)); } void damage(int *pb) { (*pb) -= B_DAMAGE; if ( (*pb) < 0 ) { (*pb) = 0; } printf("放電されました(バッテリー残量:%d)\n", (*pb)); } /* この関数を完成させよ */ void walk(int *px, int *py, int *pb, int move) { (*pb)--; printf("現在地:(%d,%d); バッテリー残量: %d\n", (*px), (*py), (*pb)); damage(); charge(); } int main(void) { int x, y, b, move; x = 0; y = 0; b = B_LIMIT; printf("現在地:(%d,%d); バッテリー残量: %d\n", x, y, b); while (1) { if ( b == 0 ) { printf("バッテリー切れです\n"); break; } printf("どの方向に移動しますか?(1:右,-1:左,2:上,-2:下,0:終了)\n> "); scanf("%d", &move); if ( move == 0 ) { break; } if ( move >= -2 && move <= 2 ) { walk(&x, &y, &b, move); } } printf("終了します\n"); }