게시판 인덱스

 
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 

프로젝트 명세 수정

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.210 Principles of Programming (Spring 2006)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
박대준



가입: 2005년 10월 7일
올린 글: 245

올리기올려짐: 2006년6월9일 10:24    주제: 프로젝트 명세 수정 인용과 함께 답변

예정드린대로 프로젝트 명세가 수정되었습니다.

바뀐 부분은 네 부분입니다.

첫번째,
함수들의 타입 정의에 사용된 도메인 중, Board 의 정의가 수정되었습니다.
기존에는 Pos를 키로하고 State를 값으로 하는 Dictionary타입이었지만,
이제는 (Pos * State) list 로 바뀌었습니다.
코드:
<Pos,State> Dictionary -> (Pos * State) list


두번째,
보드판의 좌표구성이 수정되었습니다.
지금은 보드판의 가장 왼쪽 아래부분을 원점으로 하여 좌표를 구성하고 있지만,
이제부터는 보드판의 한 가운데를 원점으로 하는 좌표계로 변경되었습니다.
좌표계는 다음과 같습니다.
코드:
 3|
 2|
 1|
 0|
-1|
-2|
-3|_____________
  -3-2-1 0 1 2 3


세번째,
A팀과 B팀의 진영이 변경되었습니다.
기존에는 A팀이 아래쪽, B팀이 위쪽이었으나,
이제는 A팀이 위쪽, B팀이 아래쪽의 진영을 가지게 됩니다.
A팀 : (-3, 3) 부터 (3, 1)까지의 (3*7) 직사각형
B팀 : (-3, -3) 부터 (3, -1)까지의 (3*7) 직사각형


네번째,
상대팀에게 잡아 먹힌 유닛의 좌표가 모두 (-7, -7)로 변경되었습니다.
기존에는 잡아 먹힌 순서에 따라서 좌표가 변경되었으나,
지금은 일괄적으로 모두 같은 좌표를 사용하게 됩니다.


바뀐 내용에 관해 예를 들어보겠습니다.
다음과 같이 보드판이 초기화 되었다고 합시다.
대문자로 표시된 유닛은 A팀, 소문자로 표시된 유닛을 B팀입니다.
(기존에 A팀의 진영과 B팀의 진영이 서로 바뀌었음을 유의하시기 바랍니다.)
코드:
 3|   B B B B B
 2|   R R R R R
 1|
 0|
-1|
-2|   r r r r r
-3|___b_b_b_b_b__
   -3-2-1 0 1 2 3

위와 같이 보드판이 초기화되기 위해서는 A팀과 B팀의 init 함수를 불렀을 때,
다음과 같은 결과가 나와야 합니다.
( ";" 다음에 나오는 부분은 출력 화면에 표시된 내용을 그대로 옮겨 놓은 것입니다.)

A팀의 init 을 호출했을 때
코드:
(init)
; (((-2 . 3) . "Blue")
   ((-1 . 3) . "Blue")
   ((0 . 3) . "Blue")
   ((1 . 3) . "Blue")
   ((2 . 3) . "Blue")
   ((-2 . 2) . "Red")
   ((-1 . 2) . "Red")
   ((0 . 2) . "Red")
   ((1 . 2) . "Red")
   ((2 . 2) . "Red"))

B팀의 init 을 호출했을 때
코드:
(init)
; (((-2 . -3) . "Blue")
   ((-1 . -3) . "Blue")
   ((0 . -3) . "Blue")
   ((1 . -3) . "Blue")
   ((2 . -3) . "Blue")
   ((-2 . -2) . "Red")
   ((-1 . -2) . "Red")
   ((0 . -2) . "Red")
   ((1 . -2) . "Red")
   ((2 . -2) . "Red"))



다음 그림은 게임 중반의 보드판 모습의 예입니다.
지금 A팀이 B팀의 빨간색 유닛 1개, 파란색 유닛 1개를 가져왔고,
B팀이 A팀의 빨간색 유닛 1개, 파란색 유닛 2개를 가져온 모습을 보여줍니다.
코드:
   r b

 3|     B B   B
 2|     R   R
 1|   R
 0|       R
-1|     r   r
-2|   r b     r
-3|_b_____b_____b
   -3-2-1 0 1 2 3

            B B R

위와 같은 보드판에서,
A팀과 B팀의 move 함수에 주어지는 input은 다음과 같습니다.

A팀의 move 함수에 주어지는 input
코드:
(list (cons (cons -7 -7) (cons "B" "Red"))
      (cons (cons -7 -7) (cons "B" "Blue"))
      (cons (cons -7 -7) (cons "A" "Blue"))
      (cons (cons -7 -7) (cons "A" "Blue"))
      (cons (cons -7 -7) (cons "A" "Red"))

      (cons (cons -2 1) (cons "A" "Red"))
      (cons (cons -1 3) (cons "A" "Blue"))
      (cons (cons -1 2) (cons "A" "Red"))
      (cons (cons 0 3) (cons "A" "Blue"))
      (cons (cons 0 0) (cons "A" "Red"))
      (cons (cons 1 2) (cons "A" "Red"))
      (cons (cons 2 3) (cons "A" "Blue"))

      (cons (cons -3 -3) (cons "B" "White"))
      (cons (cons -2 -2) (cons "B" "White"))
      (cons (cons -1 -1) (cons "B" "White"))
      (cons (cons -1 -2) (cons "B" "White"))
      (cons (cons 0 -3) (cons "B" "White"))
      (cons (cons 1 -1) (cons "B" "White"))
      (cons (cons 2 -2) (cons "B" "White"))
      (cons (cons 3 -3) (cons "B" "White")))

B팀의 move 함수에 주어지는 input
코드:
(list (cons (cons -7 -7) (cons "B" "Red"))
      (cons (cons -7 -7) (cons "B" "Blue"))
      (cons (cons -7 -7) (cons "A" "Blue"))
      (cons (cons -7 -7) (cons "A" "Blue"))
      (cons (cons -7 -7) (cons "A" "Red"))

      (cons (cons -2 1) (cons "A" "White"))
      (cons (cons -1 3) (cons "A" "White"))
      (cons (cons -1 2) (cons "A" "White"))
      (cons (cons 0 3) (cons "A" "White"))
      (cons (cons 0 0) (cons "A" "White"))
      (cons (cons 1 2) (cons "A" "White"))
      (cons (cons 2 3) (cons "A" "White"))

      (cons (cons -3 -3) (cons "B" "Blue"))
      (cons (cons -2 -2) (cons "B" "Red"))
      (cons (cons -1 -1) (cons "B" "Red"))
      (cons (cons -1 -2) (cons "B" "Blue"))
      (cons (cons 0 -3) (cons "B" "Blue"))
      (cons (cons 1 -1) (cons "B" "Red"))
      (cons (cons 2 -2) (cons "B" "Red"))
      (cons (cons 3 -3) (cons "B" "Blue")))

위의 예에서 알 수 있듯이,
move 함수에 주어지는 input 은 상대팀의 유닛의 위치는 모두 표시해 줍니다.
하지만, 상대팀 유닛의 색깔은 White 로 가려지게 됩니다.
다른 편에게 잡아 먹힌 유닛은 보드판 바깥으로 나가게 됩니다.
(보드판 바깥에 있는 유닛의 위치는 모두 (-7, -7) 로 변경되었음을 유의하십시오.)
보드판 바깥에 있는 유닛은 상대팀이라 할지라도 색깔이 올바르게 표시됩니다.
주어지는 input list 의 length 는 항상 20 (모든 유닛의 총 개수) 입니다.


프로젝트 시연은 예정대로 오늘 (6월 9일 금요일) 저녁 6시에,
302동 308호 강의실에서 진행됩니다.
프로젝트에 참여한 모든 분들은 시연에 참여하셔야 합니다.
시연의 원활한 진행을 위해, init 과 move 함수가 정의된 .scm 파일은
오늘 오후 5시까지 제출하여 주시기 바랍니다.

프로젝트 명세에 모호한 사항이나 의문점은 게시판을 이용하시기 바랍니다.


박대준 가 2006년6월10일 21:17에 수정함, 총 1 번 수정됨
위로
사용자 정보 보기 비밀 메시지 보내기
황창호



가입: 2006년 4월 17일
올린 글: 12

올리기올려짐: 2006년6월9일 12:05    주제: 인용과 함께 답변

move의 리턴값에 대한 예시도 보여주시면 좋겠습니다.

Up, Down 같은 것이 Red, Blue 처럼 "로 쌓줘야 하는지 등도 검토해 볼 겸 말이죠.
위로
사용자 정보 보기 비밀 메시지 보내기
박대준



가입: 2005년 10월 7일
올린 글: 245

올리기올려짐: 2006년6월9일 12:29    주제: 인용과 함께 답변

위에서 예로 든 move 함수의 input 을 B 라고 하면,
다음과 같이 A팀의 move 함수를 호출했을 때,
코드:
(move B)

나올 수 있는 출력의 4가지 예는 다음과 같습니다.
코드:
((0 . 0) . "Up")
((0 . 0) . "Down")
((0 . 0) . "Left")
((0 . 0) . "Right")


그리고, .scm 파일의 제출은 이희종 조교(ihji@ropas.snu.ac.kr)에게 해주시면 됩니다.
위로
사용자 정보 보기 비밀 메시지 보내기
신상협
손님





올리기올려짐: 2006년6월9일 15:24    주제: 프로젝트 인용과 함께 답변

그럼 bottm 이 있는 대신에

없는 좌표는
리스트 안에 아예 없는건가요

예를들어
(2 , 3) 이 비었으면

리스트 상에
(cons 2 3)이 존재 않하는거죠?
위로
박대준



가입: 2005년 10월 7일
올린 글: 245

올리기올려짐: 2006년6월9일 16:52    주제: 인용과 함께 답변

네.
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.210 Principles of Programming (Spring 2006) 시간대: GMT + 9 시간(한국)
페이지 11

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다


Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group
Translated by kss & drssay