상세 컨텐츠

본문 제목

c 물고기 키우기

c언어

by bumychoi 2025. 3. 16. 14:58

본문

 

#include<stdio.h>
#include<time.h>
#include<stdlib.h>

//전연변수
int level;
int arrayFish[6];
int * cursor;

//함수 선언
void initData();
void printfFishes();
void decreaseWater(long elapsedTime);
int checkFishAlive();

int main(void) {
long startTime = 0; //게임 시작 시간
int num; //물을 줄 어항 번호
long totalElapsedTime = 0; //총 경과 시간
long prevElapsedTime = 0; //직전애 물을 준 시간(물을 준 시간 간격)
initData(); //게임 초기화 함수 호출
startTime = clock();//프로그램 실행 이후 현재까지 흐른 시간 저장
cursor = arrayFish; //포인트 변수에 어항 배열의 시작 주소 넣기

while (1) { //어항에 물주기
printfFishes(); //어항 물 높이 출력 함수 호출
printf("몇 번 어항에 물을 줄까요?(1~6)");
scanf_s("%d",&num); //어항 번호 입력
if (num < 1 || num > 6){ //입력값 확인
printf("\n입력값이 잘못됐습니다.\n");
continue;
}
//총 경과 시간, 초 단위로 표시
totalElapsedTime = (clock() - startTime) / CLOCKS_PER_SEC;
printf("총 경과 시간: %ld초\n", totalElapsedTime);
//물을 준 시간 간격
prevElapsedTime = totalElapsedTime - prevElapsedTime;
printf("최긍 경과시간:%ld초\n", prevElapsedTime);
decreaseWater(prevElapsedTime); // 어항의 물을 증발(감소)시키는 함수 호출
//사용자가 입력한 번호의 어항에 물 주기
//조건1. 어항의 물 높이가 0이하면 물을 주지 않음
if (cursor[num - 1] <= 0) {
printf("%d번 어항의 물고기는 이미 죽었으므로 물을 주지 않습니다.\n", num);
}
else if(cursor[num - 1] + 1 <= 100) {
printf("%d번 어항에 물을 줍니다.\n\n", num);
//물을 주면 물 높이 +1(cursor[num-1]=sursor[num-1]+1)
cursor[num - 1] += 1;
}
//레밸업 확인(20초마다 한번씩 수정)
if (totalElapsedTime / 20 > level - 1) {
level++; //레밸업
printf("*** 축하합니다. %d레밸에서 %d레밸로 올랐습니다. *** \n\n", level - 1, level);
if(level ==5){ //최고 레밸 확인 후 게임 종료
printf("\n\n축하합니다,. 최고 레밸을 달성했습니다. 게임을 종료합니다,\n\n");
exit(0);
}
}
//모든 물고기가 죽었는지 확인
if (checkFishAlive() == 0) {//물고기가 모두 죽음
printf("모든 물고기가 죽었습니다. ㅠㅠ \n\n");
exit(0);
}
else {// 물고기가 최소 한마리 이상 살아 있음
printf("물고가가 아직 살아 있어요!\n\n");
}
prevElapsedTime = totalElapsedTime;
}
return 0;
}
void initData() {//게임 초기화 함수
level = 1; //레벨 초기화(레벨 범위 1~5)
for (int i = 0; i < 6; i++) {
arrayFish[i] = 100;//어항 물 높이 초기화(물 높이 범위0~100)
}
}

void printfFishes(){//어항 물 높이 출력 함수
printf("%3d번 %3d번 %3d번 %3d번 %3d번 %3d번\n", 1, 2, 3, 4, 5, 6);
for (int i = 0; i < 6; i++) {
printf(" %3d", arrayFish[i]); //서식 지정자로 출력 결과 정렬
}
printf("\n\n"); //가독성을 위해 추가
}

void decreaseWater(long elapsedTime) {//어항의 물을 증발(감소)시키는 함수
for (int i = 0; i < 6; i++){//어항 6개
arrayFish[i] -= (level * 3 * (int)elapsedTime); // 증발하는 물의 양 계산
if (arrayFish[i] < 0) {//물 높이가 0 미만이면 물 높이를 0으로 고정
arrayFish[i] = 0;
}
}
}
int checkFishAlive(){//모든 물고기가 죽었는 지 확인하는 함수
for (int i = 0; i < 6; i++) {
if (arrayFish[i] > 0) {
return 1; //참(true)
}
}
return 0;
}

'c언어' 카테고리의 다른 글

c 배열 (발모제 찾기) 완성코드  (0) 2025.03.16
c 문자열 배열  (0) 2025.03.15
c array -2  (0) 2025.03.15
c언어 array  (0) 2025.03.15
비밀번호 마스터 c언어(함수)  (0) 2025.03.14

관련글 더보기