Skip to content

thwldus/OSSW_project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

project

주제 선정

1. 오목 게임을 구현하기로 한다.

  • 콘솔로 플레이어가 두고자 할 위치를 입력받으면서 게임을 진행하려고 했으나, 플레이어가 바둑판의 위치를 확인하기에 어려움이 있음을 파악하였다.
  • GUI 창을 통해 플레이어들이 버튼을 통해 두고자 할 위치를 선택할 수 있도록 구현 방향을 설정하였다.

2. 프로그래밍 언어는 JAVA(자바)로 정하였다.

  • 세 팀원 모두 Eclipse로 IDE 통일하였다.

참조 오픈소스 링크

원본

네이버 블로그[호찌 이야기] - Day35|GUI버튼|오목

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=ghwls0905&logNo=221861817074

  • 네이버 블로그를 게시할 때, 저작자가 CCL(Creative Commons License)를 표시하지 않았다.

    • CCL(Creative Commons License)

      콘텐츠 저작자가 본인의 저작물에 대한 이용방법 및 조건을 표기하는 표준 약관이자 저작물 이용 허락 표시

  • 라이선스가 없는 오픈소스로, 사용 시 준수사항이 없으므로 프로젝트를 진행하면서 라이선스 관련 작업 X

  • fork 명령어를 실행하여 프로젝트를 진행하는 repository로 가져올 수 없으므로, omok.md 파일을 만들어 프로젝트 진행하였다.

    → 프로젝트 완성 코드는 omok.md에서 확인 가능

프로젝트 설계 방향

image

1. 참조 소스코드의 디자인 문제점 수정

  • 플레이어들이 게임을 즐기기에는 GUI 화면 창이 너무 컸다.
  • 바둑판을 둘러싸고 있는 공백이 아무런 기능 없이 너무 넓었다.
  • 오목게임의 승패가 결정되고 난 후, 새 라운드를 시작하기 위한 '다시 시작'버튼이 잘 보이지 않았다.

2. 참조 소스코드의 오목 규칙 위반 문제점 수정

  • 참조 소스코드의 오목 게임의 선 플레이어가 백돌을 두도록 구현되어있다.
    • 오목 게임의 규칙은 선 플레이어가 흑돌을 두어야 한다.
  • 후 플레이어가 바둑돌을 세로로 연속하여 5개 두어도, 승리로 판별하지 않고 게임이 계속 진행되었다.
    • 오목은 어떤 플레이어든 가로, 세로, 대각선으로 5개의 돌을 연속해서 두면 승리로 판별하고 게임을 종료해야한다.

3. 업그레이드 논의 사항 추가

  • 오목 게임이 더욱 흥미로워질 수 있는 요소를 추가한다.
    • 각 플레이어마다 각 턴에 바둑돌을 둘 수 있는 제한시간을 둔다.
    • 대부분의 게임이 찬스나 구제 기회가 있는 것에 기반하여, 각 플레이어마다 시간을 추가할 수 있는 기회를 게임 당 한번씩 부여한다.
  • 공백에 문구를 추가하여 GUI 창의 디자인을 발전시키도록 한다.
    • 대부분의 게임 창처럼 환영문구를 적어둔다.
    • 현재 게임의 진행상황을 안내하기 위해, 어느 플레이어 차례인지 안내하도록 한다.
    • 각 플레이어의 턴에 제한시간이 얼마나 남았는지 문구로 보여준다.
  • 게임 화면을 좀 더 다이나믹하게 구현한다.
    • 제한시간은 막대바로 구현하여 시간이 줄고 있음을 화면창을 역동적으로 구현한다.
    • 여러 버튼을 기능에 따라 다른 색깔로 디자인하여 좀 더 플레이하기 편하도록 한다.

역할 분담

1. 소지연

  • 오목판 및 GUI 창 크기를 설정하였다.
  • 게임을 다시 시작할 수있는 다시 시작 버튼의 위치를 지정하였다.
  • 플레이어 순서에 따른 바둑둘의 색깔을 수정하였다.
  • 플레이어의 순번에 따라 안내문구를 다르게 보여주기 위해 JLabel을 이용하여 update() 메소드를 구현하였다.
  • update()메소드를 통해 실시간으로 안내문구를 보여주게 하기 위해서 원본 소스코드에 while문을 추가하였다.
  • 시간 제한을 두는 메소드인 timelimit()메소드를 업그레이드 시켜 제한시간 막대를 통해 실시간으로 남은 시간을 직관적으로 파악할 수 있게 하였다.

2. 최우빈

  • 오목에서 각 플레이어마다 한턴에 쓸수 있는 시간을 제한 하기 위해 Thread.sleep() 메소드와 for문을 적절하게 사용해 timelimit() 메소드를 구현하였다.
  • 구현된 update() 메소드를 수정하여 플레이어의 남은 시간 안내 문구를 추가했다.
  • Thread.sleep() 메소드를 이용해 timelimit() 메소드를 수정하여 제한된 시간이 다 되었을때 뜨는 창을 자동으로 닫히도록 하였다.

3. 김태희

  • 참조한 코드의 오목 승리조건 조건 판별 메소드에 있는 오류를 발견하고 이를 수정하였다.
  • JButton을 이용하여 플레이어의 시간을 한게임당 한번만 10초를 늘릴수 있게 해주는 버튼을 구현하였다.
  • 버튼을 눌러서 10초의 추가시간을 얻었을때 제한시간 막대가 추가된 시간을 반영하도록 소스코드를 수정하였다.

사용한 git 명령어

1. git clone [email protected]:thwldus/project.git

2. git pull

  • 자신의 코드를 최종코드에 반영하기 위해, 다른 팀원의 수정 사항과 진행 사항 등을 불러옴

3. vim omok.md

  • 파일을 열어 분담 파트 관련 코드 수정

4. git add omok.md

  • omok.md의 변경 사항을 stage에 이동

5. git commit -m “(수정사항)”

  • 수정 작업을 마치고 새로운 버전으로 정의

6. git push

  • 변경 사항을 원격서버(GitHub)로 업로드

7. 추가로 사용한 git 명령어

  • git reset HEAD^

    잘못된 코드를 commit한 것을 취소하기 위한 명령어로, 가장 최근의 commit하기 전 상태로 되돌리기 위해 사용

  • git commit --amend "(변경사항 메세지)"

    가장 마지막에 commit한 메세지를 수정하기 위해 사용

초기 시행착오 부분

2022.11.02 - 2022.11.09

  • 바둑판 그리기 (16X16) - .을 이용해 격자를 만든다.
    • 바둑판은 2차원배열로 만들고, 0으로 초기값을 설정한다.
    • 기존 초기 인덱스 0에서 플레이어 1과 2가 선택한 인덱스는 각각 1과 2로 변경한다.
    • 플레이어 1과 2의 바둑돌 정보에 따라 원을 그린다.
  • 이름을 입력(2명)하고, 첫 판은 랜덤으로 순서를 정한다. 이후에는 포인트가 많은 사람을 선공으로 한다.
  • 게임을 진행하여 가로, 세로, 대각선으로 5개의 바둑알이 연결되면 게임을 종료하고 이긴 사람에게 포인트 1점을 부여한다.
  • 각자 플레이어의 창에 이름, 포인트, 차례를 나타낸다.
  • swing창에 바둑판을 구현하는 것은 난이도가 높기 때문에 콘솔창에서 게임을 구현하도록 했다.
  • 오목 승리조건을 파악하는 메소드, 플레이어의 입력값 판단 메소드, 입력값을 기반으로 바둑판의 돌을 바둑판 위에 놓는 메소드, 보드 초기화 메소드

//초기에 오픈소스를 사용하지 않고 프로젝트를 진행하고 있다는 문제를 발견하여 다음 차시부터 새롭게 진행함. → GUI 오목게임

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •