Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 

Repository files navigation

⚾️ swift로 야구게임 만들기

📖 목차

  1. 프로젝트 소개
  2. 프로젝트 계기
  3. 주요기능
  4. 개발기간
  5. 기술스택
  6. Language
  7. Trouble Shooting

👨‍🏫 프로젝트 소개

숫자 야구 게임은 두 명이 즐길 수 있는 추리 게임으로, 상대방이 설정한 3자리의 숫자를 맞히는 것이 목표입니다. 각 자리의 숫자와 위치가 모두 맞으면 '스트라이크', 숫자만 맞고 위치가 다르면 '볼'로 판정됩니다. 예를 들어, 상대방의 숫자가 123일 때 132를 추리하면 1스트라이크 2볼이 됩니다. 이러한 힌트를 활용하여 상대방의 숫자를 추리해 나가는 게임입니다.

프로젝트 계기

스파르타코딩클럽에서 iOS를 수강 중 swift문법 심화 주차에 과제로 부여받은 개인프로젝트입니다.

주요기능

  • 게임 메뉴 : [ 게임시작 / 기록보기 / 종료하기 ] 3가지 중 하나를 선택할 수 있습니다.

  • 정답 생성 : 0~9까지의 숫자를 무작위로 조합해 3자리 숫자를 생성합니다. 숫자는 중복이 안되며, 맨 앞자리 숫자는 0이 될 수 없습니다.

  • 입력값과 정답 비교 : 입력값과 정답을 비교하여 스트라이크, 볼 힌트 메세지를 출력합니다. 정답이라면 게임 메뉴로 돌아갑니다.

  • 게임 기록 보기 : 게임 차수별 몇 번을 시도했는지 시도 회수를 확인할 수 있습니다.

⏲️ 개발기간

  • 2024.11.04(월) ~ 2024.11.07(목)

📚️ 기술스택

✔️ Language

Trouble Shooting

image image

  • 랜덤값 생성 방식(1) : Array에 담은 랜덤값 3개를 100의자리수, 10의자리수, 1의자리수로 만들어 합치기 위해 제곱근 함수pow()를 사용하려 했지만 오류메세지가 발생했다. 메세지는 Cannot convert value of type 'Decimal' to expected argument type 'Int'. pow()가 반환하는 decimal이라는 타입을 Int타입으로 변환할 수 없다고 한다. 타입이 달라 발생하는 문제인 것 같다. 그래서 pow()의 결과값을 Int로 타입캐스팅 해줬지만 또 다른 에러메세지를 만났다. "BinaryInteger" 라는 프로토콜은 정수 타입이 따르는 프로토콜인데 Decimal은 소수를 포함하기에 호환되지 않는 다는 내용이다. 따라서 pow()의 인자를 Double로 수정함으로써 해결했다.

  • 랜덤값 생성 방식(2) - 아이디어 : 처음에 생각했던 랜덤값을 만드는 아이디어는 이렇다. (1)배열에 랜덤값 3개 입력. (2)배열을 반복문을 통해 중복제거. (3)중복이 제거되었을 경우 다시 랜덤값 추가. 이러한 방식은 반복문이 너무 많이 필요하고 코드가 지저분해지게 되어 다른 방법을 찾았다. 중복 제거를 생각하다 보니 set의 특성이 생각나서 set에 반복문을 통해 count가 3이 될때까지 랜덤값을 넣는 방식으로 변경했다. set은 중복을 허용하지 않아 같은 랜덤값일 경우 자동으로 삭제되기 때문에 간단하게 랜덤값을 만들 수 있었다.

  • 랜덤값 생성 방식(3) - String타입에서 Int타입으로 변환 : 배열에 담긴 랜덤값을 String으로 변환 후 Int값으로 변환해 return을 하려고 했다. 여기서 발생한 문제는 숫자 맨 앞자리가 0일 경우 ex) 023 Int로 타입 변환을 하면 0이 사라지고 23이 된다는 것이다. 해결방안으로 처음에 생각한 방법은 숫자를 생성할 때 부터 맨 앞자리에 0이 오지 않도록 조건문을 설정하는 것이었다. 하지만 더 간단하게 만들고자 고민한 결과, 아직 문제의 정답으로 설정된 것이 아니기 떄문에 2자리로 생성된 경우 10을 곱해 023일 경우 230이 되도록 수정했다.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages