컴퓨터네트워크 - 자바 소켓프로그래밍을 이용한 야구게임

1. 컴퓨터네트워크 - 자바 소켓프로그래밍.hwp
2. 컴퓨터네트워크 - 자바 소켓프로그래밍.pdf
컴퓨터네트워크 - 자바 소켓프로그래밍을 이용한 야구게임
( 컴퓨터네트워크 - 프로젝트1 : 야구게임 )

이 프로그램은 TCP 소켓으로 선택하여 진행하였다. 서버에서 중복되지 않은 임의의 숫자 3개를 생성 한 후 클라이언트에서 중복되지 않은 숫자 3개를 입력 받는다. 클라이언트에서 중복된 숫자를 입력하면 다시 입력하도록 한다.
서버에서는 클라이언트로부터 숫자3개를 전송받고 서버의 숫자와 클라이언트의 숫자들을 비교한다. 만약 숫자의 자리와 숫자가 일치하면 스트라이크(S), 숫자만 일치하면 볼(B)이다. 서버는 스트라이크와 볼이 몇 개인지 클라이언트에 알려준다. 만약 스트라이크와 볼이 없으면 Out을 보내준다.
클라이언트는 총 10번의 도전을 할 수 있고 10번이 지나면 접속이 종료된다. 만약 클라이언트가 3스트라이크가 된다면 성공 메시지를 보여주고 접속이 종료된다.

1. 클라이언트 – 서버 흐름도

2. 클라이언트 입력 및 출력

클라이언트는 세자리의 숫자를 입력하는 중복된 숫자를 입력할 수 없도록 하였다. 스트링으로 숫자를 입력받은 후 char[]로 변환하여 중복 검사를 하였다. 중복이 되었다면 “input error”라는 문구를 출력한 후 다시 입력 받도록 하였다.

아래는 실제 야구 게임의 예시이다.

클라이언트 실행 시 10번의 기회가 주어진다.
서버에서 만든 세자리 수는 730이다.

클라이언트가 456을 입력했다.

일치하는 자리와 숫자가 없기 때문에 서버는 Out이라는 스트링을 생성하여 클라이언트에 보내주고 클라이언트는 서버의 응답을 출력한다. 기회를 한번 썼기 때문에 9번의 기회가 남는다.

123을 입력하면 서버에서는 0Strike 1Ball이라 판정하여 응답한다. 3이라는 숫자가 있지만 자릿수가 맞지 않기 때문이다.

073을 입력하면 0Strike 3Ball이 된다. 모든 7,3,0 이 모두 나왔지만 자릿수가 모두 맞지 않기 때문이다.

732를 입력하면 2Strike 0Ball이 된다. 7,3은 자리와 숫자가 맞지만 0이 없기 때문이다.

....