학교에서 팀플로 프로젝트를 하게 되었습니다.
자유로운 주제로 파이썬을 이용한 프로그램 개발입니다.
1달도 안 되는 짧은 기간 동안의 프로젝트가 될 것 같습니다.
1. 주제 구상
우선 생각한 주제는 인공지능 숫자야구
전에 있던 대학교에서 C언어로 숫자야구 게임을 만들어봤던 기억이 나서 이 주제를 떠올렸습니다.
다만 그때는 컴퓨터가 만든 숫자를 사람이 맞추는 방법이라 그 반대로도 해본다면 어떨까 하는 마음으로 구상했습니다.
사용할 예정인 모듈은 GUI를 위한 tkinter 모듈과 난수 생성을 위한 랜덤 모듈 두 가지입니다.
구체적으로 들어가면
사람 vs 사람 / 사람 vs 컴퓨터
이 두 가지 모드를 고르는 것이 우선입니다.
(이렇게 쓰고 보니 컴퓨터 vs 컴퓨터로 해서 누가 이길지로 배팅하는 것도 재밌어 보입니다.)
(방금 내용을 쓰고보니 그럼 사람 vs 사람도 배팅 기능 추가하면 재밌을 것 같네요ㅎㅎ)
그다음은 세부 설정을 하도록 할 예정인데요
숫자가 중복이 되게 할 것인지
숫자들에 0을 넣어서 플레이할 수 있게 할 것인지
설정으로 떠 올린 건 이 두 가지입니다.
두 가지를 설정하고 나서 게임을 한다면 실제로 친구와 숫자야구 게임을 하듯 할 수 있게 하고 싶었습니다.
2. 게임 내용 구상
구체적인 게임 내용을 구상해보면 (사람 vs 사람은 너무 간단하니 패스하겠습니다)
1. 순서를 정하고
-> 어떻게 순서를 정할지도 팀원과 토의를 해봐야겠습니다.
2. 서로 '마음속으로' 숫자를 떠 올린 다음 순서대로 번갈아가며 숫자를 말하면 답변자가 판정해줍니다.
구글링에서 나온 인공지능 숫자야구의 경우 숫자를 입력하면 컴퓨터가 직접 판정해주더군요
사실 그렇게 하면 더 편할 것 같기도 한데, 아날로그 느낌으로 컴퓨터에 판정을 입력하는 것도 좋다고 생각합니다.
그럼 입력한 판정을 토대로 알고리즘이 판단하는 것이지요.
(적고 보니 이것도 설정에 넣을 수 있으면 좋겠다는 생각이 드네요. 자유도를 높이고 싶다는 의지ㅋㅋ)
만약 판정을 잘못 입력해서 알고리즘 내 모순으로 답을 구할 수 없게 된다면 거기에 맞는 에러 처리까지 하고 싶습니다
3. 순서를 바꿔 이번에는 다음 차례의 플레이어 또는 컴퓨터가 숫자를 말하면 판정해줍니다.
4. 먼저 답을 맞추는 쪽이 승리합니다.
적다가 떠오른 아이디어가 또 있네요.
첫 번째로 숫자 제시를 하는데 제한 시간을 두는 것입니다.
얼마를 제한 시간으로 할 지, 제한 시간을 둘 지 여부는 역시 설정하는 것으로ㅎㅎ
만약 이 기능을 사용한다면 datetime 모듈을 사용해야할 수도 있습니다.
두번째는 스코어 시스템입니다.
만약 두 플레이어 같은 횟수로 맞추었다면? 스코어로 승패를 가리게 하고 싶습니다.
자신이 제시한 숫자의 아웃, 스트라이크, 볼 개수별로 점수를 매기는 것입니다.
물론 여러번 시도하면 당연히 누적 스트라이크, 볼 개수가 증가할테니
여러번 시도한 것에 대한 점수 패널티를 어떻게 줄 지는 따로 생각해봐야겠죠ㅎㅎ
이 부분들은 팀원분과 상의를 해봐야할 것 같네요ㅎㅎ
계획 및 아이디어 요약
인공지능 숫자야구를 만들려고 한다.
사람 vs 사람 / 사람 vs 컴퓨터 선택, 핵심은 사람 vs 컴퓨터 의 구현
점수시스템, 시간제한 시스템, 횟수제한 시스템, 순서를 어떻게 정할 지
숫자의 중복 여부, 0의 포함 여부를 설정할 수 있도록
반드시 1대1로 할 필요는 없으니 몇명까지 참가할 수 있도록 할 것인지
아이디어가 쏟아져 나오네요ㅎㅎ
차근차근 구현해나가면 좋을 것 같습니다
'팀 프로젝트 > [2020] 인공지능 숫자야구' 카테고리의 다른 글
[팀프로젝트 01] 인공지능 숫자야구 만들기(4) : tkinter 입히기 (0) | 2020.06.03 |
---|---|
[팀프로젝트 01] 인공지능 숫자야구 만들기(3) : 알고리즘 수정 (0) | 2020.06.02 |
[팀프로젝트 01] 인공지능 숫자야구 만들기(2) : 인공지능 구현 (0) | 2020.05.28 |