QT/Embedded, iPop을 이용한 네트워크 오목게임 금오공과대학교 소프트웨어공학 20020933 이상제
목차 개요 구현기능 시스템 구성도 게임흐름도 게임패킷 오목확인 알고리즘 구현 현황 Q&A Observer 최종발표
개요 ◎ 임베디드 키트(iPop상에서 Qt/Embedded를 이용하여 간단한 1:1네트워크 게임 실행 ◎ 간단한 리눅스용 프로그램을 임베디드 키트상에 올려봄으로써 임베디드 기기와 리눅스에 대한 이해 Observer 제안서
구현기능 게임시작 Host PC가 Server, 임베디드 키트가 Client역할을 하며 상호 연결이 되면 게임 시작 승자 판단 가로, 세로, 대각선의 4방향을 검사하여 바둑돌이 5개가 연속되어 있으면 승리로 표시 바둑돌이 6개 이상 연결되어 있는 경우는 무효처리 Turn 자신의 차례가 아니면 클릭 이벤트를 무시 Observer 최종발표
구현기능 무르기(Undo) 기권 종료 무르기 신청을 하면 상대편 프로그램에 무르기를 요청 요청을 받아들이면 최근 한 수를 무르고 다시 시작 기권 기권을 선언하면 상태편의 승리로 게임이 종료 종료 게임이 끝나면 종료버튼으로 프로그램을 종료시킬 수 있음 Observer 최종발표
시스템 구성도 네트워크 Embedded Kit(iPop) Host PC(Linux) Observer 최종발표
게임 흐름도 iPop(Client) Host PC(Server) Game패킷 Game패킷 Game 적용 Game 적용 네트워크 연결 턴 방식 iPop(Client) Game패킷 Game 적용 Host PC(Server) Game패킷 Game 적용 네트워크 종료 게임종료 Observer 최종발표
게임 패킷 A : 기권 선언 U : 무르기 요청 N : 무르기 거부 Cxy : 무르기 허락, x,y는 허락한 쪽의 최근 바둑돌 좌표 Dxy : 무르기를 허락받은 경우, x,y는 요청한 쪽의 최근 바둑돌 좌표 E : 오목확인 알고리즘에 의해 게임이 종료됨을 알림 Sxy : 일반적인 바둑돌 놓기, x,y는 바둑돌의 좌표 Observer 최종발표
오목확인 알고리즘 ◎ BoundCheck함수를 이용하여 8방향으로 결과값이 1인동안 반복적으로 더해감 ◎ 서로 반대방향의 합이 5가 되면 승리로 판단 BoundCheck함수 int FiveStones::BoundCheck( int x, int y ) { if(x < 0 || x >= 10) return 0; if(y < 0 || y >= 10) return 0; int ch_imgidx=0; if(isBlack == 0){ch_imgidx = 2;} else{ch_imgidx = 3;} if(btnList[x][y]->getIdx() != ch_imgidx) return 0; return 1; } Observer 최종발표
구현현황 초기화면 Observer 최종발표
구현현황 네트워크 연결 성공 Observer 최종발표
구현현황 게임화면 Observer 최종발표
구현현황 무르기 신청 Observer 최종발표
구현현황 무르기 허락 Observer 최종발표
구현현황 무르기 허락(결과) Observer 최종발표
구현현황 무르기 거부(결과) Observer 최종발표
구현현황 기권선언 Observer 최종발표
구현현황 기권결과 Observer 최종발표
구현현황 승리종료 Observer 최종발표
Q&A Observer 최종발표