고급 시스템 프로그래밍 및 실습 Term Project : Qt 프로그래밍을 이용한 오목 게임 200200119 고탁균 200203421 최진범 200503531 최혜림
☺고급 시스템 프로그래밍 및 실습☺ Contents 프로젝트 개요 프로젝트 파트 별 진행 계획 게임 인터페이스 설계 요구/개선 사항
☺고급 시스템 프로그래밍 및 실습☺ 프로젝트 개요 임베디드 시스템(X-Station)상에서 Qt/E를 이용하여 간단한 오목 게임의 수행 간단한 리눅스용 프로그램을 임베디드 시스템상에 올려봄으로써 임베디드 기기와 리눅스에 대한 이해
☺고급 시스템 프로그래밍 및 실습☺ 프로젝트 파트별 진행순서(오목게임) 마우스 클릭시 클릭이벤트에 따른 점찍기 찍은 점을 UDP를 이용하여 서버/클라이언트에 전송 전송된 패킷에 따른 서버/클라이언트에 점찍기 오목알고리즘에 따른 승리조건 체크
☺고급 시스템 프로그래밍 및 실습☺ 프로젝트 파트별 진행순서(포팅) 보드로 간단한 Qt/E용 프로그램 포팅 test HelloWorld 프로그램 보드에서의 터치스크린 인식여부 확인 키트에서의 소켓통신 여부 테스트 에코 서버/클라이언트 이용 Static 라이브러리를 이용한 포팅
☺고급 시스템 프로그래밍 및 실습☺ 게임 인터페이스 설계 start quit black white Your turn 메뉴 버튼 (좌부터) . start . quit start quit black 검은 돌/하얀 돌 놓은 개수 표시 오목판 14x14 -> 9x9 white 턴 알림 Your turn
☺고급 시스템 프로그래밍 및 실습☺ 게임 - 알고리즘 게임보드는 9*9 크기의 2차원 배열을 적용하여 배열상에서 흰돌과 검은돌을 넣고 뺄 수 있도록 한다. 오목게임의 룰을 적용하여 연속으로 5개의 같은 돌이 놓였을 경우 게임이 끝나게 된다.
☺고급 시스템 프로그래밍 및 실습☺ 게임 - 알고리즘 돌을 놓을 경우 첫 번째 배열부터 Vertical, Horizontal, LeftDown, RightDown 체크를 하여 연속된 돌이 5개 있는지 체크한다. 오목판에 돌이 다 차면 비기고 새 게임이 시작된다.
☺고급 시스템 프로그래밍 및 실습☺ 진행 - 개요 턴 방식의 게임 진행을 한다. 하나의 프로그램에서 서버 / 클라이언트의 역할을 동시에 하고, 유저는 클라이언트가 된다. 항상 클라이언트부터 게임을 시작한다.
☺고급 시스템 프로그래밍 및 실습☺ 게임 - 흐름도 Server Client 네트워크 연결 턴 방식 (Client First) Start Start ok Game 패킷 Game 패킷 게임적용 게임적용 네트워크 종료 게임 종료
☺고급 시스템 프로그래밍 및 실습☺ 클래스 Qobject QDialog QWidget QMainWindow CSockIO 소켓통신(UDP)관련 클래스 QDialog CConnectDlg 접속대화상자관련 클래스 QWidget CGameBoard 오목게임 메인 클래스 QMainWindow MainWindow MainWindow폼 클래스
☺고급 시스템 프로그래밍 및 실습☺ 네트워크 - 프로토콜 command x y message COMMAND CONNECT 접속요청 CONNECT_ACK 접속에 대한 응답 CLOSE 게임종료 SHOOT 돌 놓기 SHOOT_ACK 돌 놓기 응답 MESSAGE 사용 안 함
OnNewPacketConnect() OnNewPacketConnectAck() OnNewPacketShootAck() ☺고급 시스템 프로그래밍 및 실습☺ 네트워크 - 흐름도 client server connect OnNewPacketConnect() connect_ack OnNewPacketConnectAck() game start shoot OnNewPacketShoot() shoot_ack OnNewPacketShootAck() ...... close OnNewPacketShoot() game quit
☺고급 시스템 프로그래밍 및 실습☺ 요구/개선방향 설계시 고려한 프로그램 개선사항 3*3 체크 무르기 및 비기기 신청 기능 보드의 키패드를 이용한 아이피 입력(구현중)
☺고급 시스템 프로그래밍 및 실습☺ 고찰 기본적인 리눅스 사용법 이해 Qt 프로그래밍 PXA255기반의 X-station에 대한 이해 프로그램의 임베디드 시스템으로의 포팅 방법(static, shared) 이해