경로표시를 하기전에 초기작업을 먼저 보고오면 그나마(?) 편하게 이해하기 쉽습니다.
https://baseballgrammer.tistory.com/37
먼저 경로는
char road[100];
for (int i=0; i<sizeof(road); i++)
{
road[i] = 'O';
}
이라고 경로를 모두 대문자 O로 만듭니다.
그 다음에 동물들의 레이싱 경로 길이는 10칸이므로
배열의 인덱스로 0번째가 아닌 1번째부터 11번째까지 보여주면 됩니다.
(0번째는 동물들이 잡히거나 시작전에 있는 위치)
그 다음 동물의 달리는 속도를 계속 더해줘서 거리가 완성이 됩니다.
그 배열의 Index에 그 거리에 해당하는 동물의 이니셜을 'O' 에서 'T'(호랑이)등 다르게 바꿔주면 됩니다.
호랑이의 거리가 6이다?
그러면 배열의 6번째 index를 T로 바꿔주는 코드를 만들면 레이싱에서의 동물들 위치표시는 끝입니다 !
개구리가 먹이사슬 최하위 이므로 개구리를 예로 들면
if ((f_info->frog_loc() == s_info->snake_loc() || f_info->frog_loc() == e_info->eagle_loc() || f_info->frog_loc() == t_info->tiger_loc()))
loc[b] = 0;//뛰기전 먹혔을경우
road[loc[b]] = 'O';//자기가 있던 위치를 0으로 설정
loc[b] = f_info->eating_check(loc[b]);//뛰기전 먹혔는지 확인
f_info->run();//뛰기
loc[b] = f_info->frog_loc();//위치 수신
소스코드 설명
1. 자기가 먹혔을 경우 자기의 위치는 0으로 바꿉니다.
2. 뛰기전에 자기가 있었던 위치를 다시 길을 나타내는 대문자'O'로 나타내줍니다.
3. 뛰고나서 자기의 위치를 자기의 이니셜로 배열의 index에 값을 바꿔줍니다.
사진 설명을 보려면 클릭하세요
저렇게 한cycle 경로표시를 한다면
첫번째 뱀이 한칸가기(뱀 : 1, 개구리 : 0, 호랑이 : 0, 독수리 : 0)
두번째 뱀이 한칸갔는데 개구리가 두칸을 뛰었지만 먹이사슬로 인해 먹혀버림(뱀 : 2, 개구리 : 0, 호랑이 : 0, 독수리 : 0)
세번째 뱀이 한칸가고 개구리가 두칸을 갔지만 호랑이가 세칸을가서 먹이사슬로 인해 뱀이 먹혀버림
(뱀 : 0, 개구리 : 2, 호랑이 : 3, 독수리 : 0)
네번째 뱀이 한칸가고 개구리가 두칸가고 호랑이가 세칸가고 독수리가 네칸을가서 독수리가 개구리를 먹어버림
(뱀 : 1, 개구리 : 0, 호랑이 : 6, 독수리 : 4)
다섯번째 뱀이 한칸갔는데 개구리가 두칸을 뛰어서 개구리는 뱀에게 잡아먹히고 호랑이는 세칸 독수리는 네칸을 감
(뱀 : 2, 개구리 : 0, 호랑이 : 9, 독수리 : 8)
다음 시간에는 결승선을 통과하고나서, 통과하기전을 관해서 포스팅을 하겠습니다.
#이 문제의 출처는 kw대학교 컴퓨터정보공학부 2021년 1학기 객체지향 프로그래밍 과제 문제입니다.
3-5 원형 연결리스트(circular linked list)를 이용한 러시안룰렛 (0) | 2021.12.21 |
---|---|
3-1 연결리스트를 통한 영단어 끝말잇기 (0) | 2021.12.20 |
2-8 먹이사슬 동물레이싱 경주-(0) : 초기작업 (0) | 2021.08.11 |
댓글 영역