멘토링 (codeup & 코딩도장 & 기타 문제)

부루마블을 만들자! C언어 코딩

HHH1 2021. 5. 28. 02:16

부르마블을 만들자!

 

반복...//

조금 다르게 자동으로 만들어보았다.. 

 

변수와 헤더파일을 선언해준다.

 

먼저 랜드를 쓰기위한 헤더파일을 적어준다.<stdlib.h> 

다음은 랜드의 시드값을 변환하기 위한 타임 헤더파일 <time.h>

 

 

함수이름은 모두 알아보기 쉽게 만들었다.

game 은 게임진행 함수고

rand_dice 는 주사위를 굴리는 함수

event 는 플레이어가 특정 부분에 위치했을때 island , tel , back 를 실행시키는 함수.

finish 는 끝났을때 결과를 출력하는 함수

move_1 은 플레이어1 의 움직임을 조정하는 함수.

move_2 는 플레이어2 의 움직임을 조정하는 함수.

island,  tel,  back 는 무인도와 순간이동 뒤로가는 칸의 위치를 갖고있는 변수.

player1[2] , player2[2] 는 플레이어의 위치를 갖고있는 변수로 0번은 플레이어의 위치 , 1번은 무인도의 여부를 알린다.

first_p 는 누가 선 인지를 갖고있는 변수.

next_on 은 다음에 얼마나 이동할지 정보를 임시로 갖고 넘겨주는 변수

 

먼저 메인함수,  시드값을 시간당으로 바꿔주기위해 srand를 썼다.

첫번째 do while 문을 사용해서 각 플레이어의 주사위가 동일하면 한번 더 돌리게 만들었다.

주사위는 rand_dice 로 rand 값을 반환해 주었다.

그리고 만약 동일하지 않으면 통과시켜 숫자가 더 큰 쪽의 번호를  first_p에 넣어주었다.

 

두번쨰 do while 문은 무인도와 순간이동, 뒤로이동하는 칸의 위치를 정해줄때

1과 50 사이로 설정해야만 통과할수 있도록 만들었다.

 

그리고 first_p 의 값을 통해 누가 선인지 확인하고 게임함수를 호출한 후 메인함수는 종료..

게임함수이다.

 

먼저 플레이어들의 위치를 0으로 초기화 시켜주고, do while 문으로 50이 나올때까지 반복하도록 만들었다.

통과하면 finish 함수를 호출하게 된다.

 

while 안 if 문은 누가 선인지 first_p 값에 따라서 순서를 다르게 하여 게임을 진행하게 하는 역할이다

 

게임함수 내 if 문으로 바깥 if 문은 누가 선인지를 판별하고,

 

안의 if 문은 무인도인지 아닌지에 따라서 움직이지 말지를 결정하게 만들었다.

 

player[1] 의값이 1이면 움직이지 않고, 값을 0으로 바꿔 다음번엔 진행할수 있도록 했다.

 

0인경우 p1 이 선이므로 1번을 움직이게 하는 move1을 호출하게된다. 다음은 move2를 호출.

 

아래의 player2 의 경우는 반대가 된다.

 

rand_dice 함수이다

1~6 까지의 주사위를 굴림.

 

move 함수이다.

주사위를 두개를 굴려서 dice1 ,2 에 각각 값을 넣어주고 출력함.

그리고 dice1,2 의 값을 next_on 에 넣어서 다음에 몇칸 움직일지를 출력함.

만약 주사위 두개가 같은 숫자이면 1칸을 더 이동하도록 if 문으로 설정함.

 if 문으로 딱 50이 되지 않으면 제자리임을 출력하게 함 else 일경우는 player[0]에 next 값을 더해서 이동함을 알림.

 

만약 무인도나 순간이동 뒤로한칸 지역에 도착하면 이벤트를 호출함.

move2 도 동일.

 

이벤트함수이다.

if 의 내부이다.

 

 

무인도에 위치했다면 player[1]에 1을 넣어 무인도에 들어갔음을 알림.

순간이동이라면 플레이어 변수에 3을더해 3칸 앞으로 이동시킴

뒤로한칸이라면 -1을 해서 뒤로한칸 이동시킴

 

똑같은 if 문을 player 2 로 하나 더 만들어서 작성함

 

finish 함수이다 

누군가가 50에 도착하면 게임이 끝났음을 출력하게 됨.

자동 부르마블 .cpp
0.00MB