게시판 인덱스

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

*프로젝트* 뼈대 코드와 설명 (12월 1일 1시 52분 수정)

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



가입: 2009년 12월 9일
올린 글: 337

올리기올려짐: 2010년12월1일 11:48    주제: *프로젝트* 뼈대 코드와 설명 (12월 1일 1시 52분 수정) 인용과 함께 답변

뼈대 코드의 간략한 틀을 제공해 드립니다.
전체적인 구조와 타입을 보시고, 조원과 상의하셔서 시작해 보세요.
실행기와 비주얼라이저도 곧 제공해 드리겠습니다.
 
cmo파일과 mli파일을 참고하셔서 서버의 내부 구현을 모른 채 구현이 가능합니다
cmo는 ocamlc –c server.ml 해서 만든 것이고
mli는 직접 server.ml에서 내부구현 지워서 만든 것입니다.
컴파일 방법은 Makefile을 참고하세요.
아래의 설명을 보시고, 궁금한 점은 게시판을 통해 질문해 주세요.

----
세 가지가 제공됩니다.
 
* server.mli 와 server.cmo
서버가 담겨 있습니다. 서버는 아바타와 센터 사이의 통신을 관장해 줍니다. 아래 두 파일을 만드실 때 참고하시라는 것입니다.
 
(1) Map (IMap 모듈 타입)
지도 모듈입니다.
 
t : 맵 타입입니다.
sol : 용액 타입입니다.
grid : 격자 타입입니다.
 
height : 맵을 받아 맵의 세로길이를 돌려줍니다.
width : 맵을 받아 맵의 가로길이를 돌려줍니다.
get: 맵과 x좌표와 y좌표를 받아 그 위치의 격자를 돌려줍니다. 좌표는 아래와 같습니다.
(0,0) (0,1) … (0, width-1)



(height-1, 0), (height-1, 1), …, (height-1, width-1)
numOfAvatars : 맵을 받아 맵 위에 몇 개의 아바타가 있는지 돌려줍니다.
locOfAvatar : 맵과 아바타의 번호를 받아 그 아바타의 위치를 x좌표와 y좌표의 순서쌍으로 돌려줍니다.
 
(2) InfoFromServer (IInfoFromServer 모듈 타입)
서버로부터 오는 정보 모듈입니다.
 
cmdResult : 각 아바타의 명령을 실행한 결과 타입
아바타의 명령이 제대로 해독되지 않았거나 해당 아바타의 기능이 아닌 명령을 돌려주었으면 Invalid
이동했으면 Moved
채집했으면 Collected(채집한 뒤의 격자, 채집한 자원의 이름)
촉진시켰으면 Accelerated(촉진시킨 뒤의 격자)
성분을 바꾸었으면 Transformed(성분 바꾼 뒤의 격자)
맵 정보를 전송했으면 Sending(보낸 정보)
 
t : 서버로부터 오는 정보 타입입니다.
turn : 서버로부터 오는 정보 모듈을 받아 현재 턴 수를 돌려줍니다.
result : 서버로부터 오는 정보 모듈과 아바타 번호를 받아 그 번호의 아바타의 명령을 실행한 결과 타입을 돌려줍니다.
 
(3) MessageList (IMessageList 모듈 타입)
 
msg : 문자열
msgList : 메시지들의 리스트 타입 (아바타들마다 하나씩 보내 주어야 하므로)
 
create: 정수(아바타의 개수)를 받아 그 개수만큼의 빈 스트링의 리스트를 msgList 타입으로 만들어 돌려줍니다.
setMessage : msgList 타입과 정수와 메시지를 받아서, 정수번째에 메시지를 업데이트 합니다.
getMessage : msgList 타입과 정수를 받아서, 그 번째의 메시지를 돌려줍니다.
 
 
 
이 둘은 구현하셔야 하는 부분입니다. 코드에 주석이 달려 있습니다.
 
* avatar.ml 아바타가 담겨 있습니다. 구현하셔야 합니다.
- Avatar (IAvatar 모듈 타입)
 
* center.ml 센터가 담겨 있습니다. 구현하셔야 합니다.
- Center (ICenter 모듈 타입)
 
----
 
프로젝트의 진행은 다음과 같이 됩니다.
 
1. 먼저 Center.make를 불러 센터를 만듭니다.
 
2. 1에서 받아온 센터와, 턴 수는 0이고 모든 실행결과는 Invalid인 InfoFromServer를 인자로 주고 Center.run을 실행시켜 새로운 센터와 메시지리스트를 받아옵니다.
 
3. 받아온 메시지리스트를 가지고, 각각의 아바타의 종류와, 이 아바타에게 온 메시지를 인자로 주고 Avatar.run을 실행시켜 명령을 해독합니다.
 
4. 각 아바타가 해독한 명령을 3에서 받아와 그대로 실행합니다. 아바타 번호 순서대로 차례로 수행합니다.
 
4-1. 받아온 명령 중 전송이 있는 경우, 해당 전송아바타에게 온 메시지와 지도를 인자로 주고 Avatar.createMessage 함수를 실행시켜 본부로 보낼 문자열을 받아옵니다.
 
5. 2에서 받아온 센터와, 2에서의 턴 수에서 1 증가시킨 턴 수와, 4에서 받아온 실행 결과(+ 전송의 경우 4-1에서 받아온 문자열까지)를 가지고 만든 InfroFromServer를 인자로 주고 Center.run을 실행시켜 새로운 센터와 메시지리스트를 받아옵니다.

6. 3 -> 4 -> 4-1 -> 5 를 반복하되, 턴 수가 꽉 차면 종료합니다.


--
12/1 13:55 오타를 수정했습니다.

http://ropas.snu.ac.kr/~ta/4190.210/10/prj/skelv12011355.tar.gz

OCaml version 3.11.2를 기준으로 작성되어 있습니다.
 


김진영_ 가 2010년12월6일 11:49에 수정함, 총 4 번 수정됨
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기
김태훈



가입: 2010년 9월 6일
올린 글: 91

올리기올려짐: 2010년12월1일 13:10    주제: 인용과 함께 답변

뼈대코드에 오타가 있는 것 같습니다.

avatar.ml에서 avatarType 에서 첫번째가 SendAatar 라고 되어있는데 SendAvatar의 오타가 아닌가 싶습니다. 아래쪽에도 그렇게 되어있구요.

편의를 위해 SendAvatar라고 하는 것이 좋을 것 같습니다.
위로
사용자 정보 보기 비밀 메시지 보내기
김진영_



가입: 2009년 12월 9일
올린 글: 337

올리기올려짐: 2010년12월1일 13:52    주제: 인용과 함께 답변

수정해서 다시 올렸습니다.
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기
장준영_



가입: 2010년 12월 2일
올린 글: 3

올리기올려짐: 2010년12월2일 1:24    주제: Makefile이 되지 않습니다. 인용과 함께 답변

코드:
The file server.cmo is not a bytecode object file


위와 같은 에러가 나면서 Makefile이 되지 않습니다.

알아본 결과 martini에 깔려있는 ocaml의 버전이 3.10.2로, 컴파일 된 ocaml 버전인 3.11.2와 다르기 때문인것 같습니다. Windows에서 쉽게 설치할 수 있는 최신 버전은 3.11.0으로 역시 컴파일 되지 않습니다.

확인해주시기 바랍니다.

p.s.
windows에서 server.cmo 파일을 Hex Editor로 열어서 맨 앞의
코드:
Caml1999O007


코드:
Caml1999O006

로 고쳐주면 컴파일이 되긴 되네요.
위로
사용자 정보 보기 비밀 메시지 보내기
김진영_



가입: 2009년 12월 9일
올린 글: 337

올리기올려짐: 2010년12월3일 15:02    주제: 인용과 함께 답변

https://ropas.snu.ac.kr/phpbb/viewtopic.php?t=2535 를 참조해 주세요. 이 쓰레드의 모든 내용보다 저 글이 우선합니다.
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.210 Principles of Programming (Fall 2010) 시간대: GMT + 9 시간(한국)
페이지 11

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


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