Skip to content

[부산대 FE_송지혁] 미션 제출합니다.#48

Open
00306 wants to merge 30 commits intonext-step:mainfrom
00306:main
Open

[부산대 FE_송지혁] 미션 제출합니다.#48
00306 wants to merge 30 commits intonext-step:mainfrom
00306:main

Conversation

@00306
Copy link

@00306 00306 commented May 5, 2024

Description

웹 기반 숫자 야구 게임을 개발했습니다.

Works

게임 타이틀

  • 사이트 진입 시 나타나는 타이틀 화면
  • fade in 애니메이션과 함께 게임 제목이 나타남
  • Start 버튼 클릭 시 fade out 애니메이션과 함께 인 게임 진입

인 게임

타이틀 및 규칙, 입력, 결과, 기록 영역으로 분할

타이틀 및 규칙 영역

  • 디자인 요구사항에 부합하는 스타일 적용

입력 영역

  • 디자인 요구사항에 부합하는 스타일 적용
  • 인 게임 진입, 답 제출, 게임 재시작 시 텍스트필드를 포커스함으로써 UX 개선
  • 'Enter' 키 입력 시에도 답 제출이 가능하도록 구현하여 UX 개선
  • 규칙에 어긋나는 답을 제출할 경우, 에러 메시지 표시 후, 다시 입력
  • 유저가 정답을 맞춘 후, 의도치 않은 입력으로 오류가 발생하지 않도록 텍스트 필드 및 버튼 비활성화

결과 영역

  • 디자인 요구사항에 부합하는 스타일 적용
  • 답 제출 시 답에 대한 결과가 표시
  • 정답 시, 재시작 메시지 및 게임 재시작 버튼, 게임 종료 버튼 표시
  • 재시작 버튼 클릭 시 게임 기록 초기화 및 입력 영역 텍스트필드 포커스
  • 게임 종료 버튼 클릭 시 게임 기록 초기화 및 게임 타이틀 화면 진입

기록 영역

  • 유저들이 입력한 값과 그에 대한 결과를 리스트 형태로 표시
  • 규칙에 어긋난 값 제출 시, 표시되지 않음
  • 리스트가 기록 영역을 초과할 경우, 세로 스크롤바 생성

CheckLists

  • 과제 제출 전 체크 리스트를 확인했는가?
  • README.md에 구현할 기능 목록을 정리했는가?
  • 기능 요구 사항을 모두 구현했는가?
  • 실행 결과 스크린샷의 디자인 요구사항을 최대한 준수했는가?
  • 프로그래밍 요구사항1을 최대한 준수했는가?
  • 프로그래밍 요구사항2를 최대한 준수했는가?
  • favicon 및 타이틀이 정상적으로 출력되는가?
  • 게임 타이틀 진입 시 fade in 애니메이션이 정상적으로 작동하는가?
  • 게임 타이틀 시작 버튼에 호버 시 글자색이 빨간색으로 바뀌는가?
  • 인 게임 진입 시 fade out 애니메이션이 정상적으로 작동하는가?
  • 인 게임 진입 시 텍스트필드에 포커스가 잡히는가?
  • 규칙에 어긋나는 답 제출 시 에러 메시지가 출력되는가?
  • 정상적인 답 제출 시 올바른 결과값이 출력되는가?
  • 정상적인 답 제출 시 기록 영역에 출력되는가?
  • 정답 제출 시 입력 텍스트필드 및 버튼이 비활성화 되는가?
  • 정답 제출 시 결과 메시지가 정상적으로 출력되는가?
  • 정답 제출 시 재시작 메시지가 정상적으로 출력되는가?
  • 정답 제출 시 게임 재시작 및 종료 버튼이 정상적으로 나타나는가?
  • 게임 재시작 버튼 클릭시 입력 텍스트필드 및 버튼이 활성화되는가?
  • 게임 재시작 버튼 클릭 시 입력 텍스트필드로 포커스되는가?
  • 게임 재시작 버튼 클릭 시 기록, 결과 메시지, 재시작 메시지가 초기화되는가?
  • 게임 종료 버튼 클릭 시 게임 타이틀 화면으로 전환되는가?
  • 게임 타이틀에서 시작 버튼 클릭 시 정상적으로 게임이 동작하는가?
  • 게임 종료 버튼 클릭 시 메시지 및 기록들이 초기화되는가?
  • 규칙에 어긋난 답 제출 시 기록이 표시되지 않는가?
  • 정상적인 답 제출 시 기록이 표시되는가?
  • 기록 영역 초과 시 스크롤바가 생기는가?

ScreenShots

게임 타이틀

스크린샷 2024-05-06 오전 4 23 53

인 게임

스크린샷 2024-05-06 오전 4 25 01

스크린샷 2024-05-06 오전 4 25 25

Video

2024-05-06.2.45.59.mov

00306 and others added 30 commits April 30, 2024 22:57
기능 목록 정리
게임 타이틀과 규칙 및 예시 UI를 구현했습니다:
-  <h1> 태그로 게임 타이틀 표시
-  <section class="rules"> 태그로 규칙 및 예시 코드 분리
- <b> 태그로 특정 단어 강조
텍스트 필드 및 확인 버튼 UI를 구현했습니다:
-  디자인 요구 사항에 맞춰 <br> 태그로 줄 바꿈
-  <section class="input"> 태그로 코드 분리
- �<input type="text" />로 텍스트 필드 구현
- <Input type="button" />로 버튼 구현
결과 UI를 구현했습니다:
- <h3> 태그로 결과 타이틀 표시
- 추후 힌트가 표시될 태그 구현
- 유저에게 제안하는 메시지가 표시될 태그 구현
- 게임 재시작 버튼 태그 구현
- 버튼의 속성을 나타내는 css 선택자 구현
�게임의 상태 및 로직을 관리하는 Game 클래스를 구현했습니다.
- 1~9까지 서로 다른 세 개의 정수를 만드는 generateRandomNumber 메서드 구현
- user의 input값을 통해 결과를 도출하는 compareResult 메서드 구현
- user의 input값을 통해 strike, ball, nothing을 판별하는 countHits 메서드 구현
- 유저 input값의 유효성을 검사하는 isValid 메서드 구현
- input 값을 초기화하고 focus를 주는 resetInputEl 메서드 구현
- 에러메시지를 출력하고, resetInputEl 메서드를 출력하는 alertHandler 메서드 구현
- strike, ball, nothing 값에 따라 결론 값을 생성하는 setResult 메서드 구현
- result 값을 출력할 수 있는 getResult 메서드 구현
코드 가독성을 위해
String 타입의 includes() 메서드 값을 반전시킨 값을 return 하는
isNotIncludes 메서드를 구현했습니다.
�게임의 상태 및 로직을 관리하는 Game 클래스를 구현했습니다.
- 1~9까지 서로 다른 세 개의 정수를 만드는 generateRandomNumber 메서드 구현
- user의 input값을 통해 결과를 도출하는 compareResult 메서드 구현
- user의 input값을 통해 strike, ball, nothing을 판별하는 countHits 메서드 구현
- 유저 input값의 유효성을 검사하는 isValid 메서드 구현
- input 값을 초기화하고 focus를 주는 resetInputEl 메서드 구현
- 에러메시지를 출력하고, resetInputEl 메서드를 출력하는 alertHandler 메서드 구현
- strike, ball, nothing 값에 따라 결론 값을 생성하는 setResult 메서드 구현
- result 값을 출력할 수 있는 getResult 메서드 구현
코드 가독성을 위해
String 타입의 includes() 메서드 값을 반전시킨 값을 return 하는
isNotIncludes 메서드를 구현했습니다.
HTML 문서 내 태그 이벤트와 게임 로직을 결합했습니다.
- Game 클래스 import 후 인스턴스 생성
- input 버튼 클릭 시 입력된 값을 바탕으로 결론을 도출하는 compareResult 메서드 실행
- 정답 시 게임 재시작 버튼 및 메시지 출력
- 재시작 버튼 클릭 시 게임 초기화 및 새 게임 시작
디자인 요구사항에 맞춰 스타일을 적용했습니다.
HTML 구조에 맞게 태그 이름을 수정했습니다.
디자인 요구사항에 맞춰 컴포넌트들의 위치를 수정했습니다.
- span 태그를 div 태그로 변경하여 컴포넌트 수직 배치
feat: 게임 동작 및 관리 로직 구현
게임 타이틀과 로그 section 구현 및 스타일을 적용했습니다.
Dom 조작 로직을 모듈로 분리했습니다.
프로그램 전반에서 메시지를 관리하고 재사용하기 위한 constants 모듈
프로그램 전체에서 요소에 쉽게 접근하고 코드의 가독성을 향상 시키기 위해 elements 모듈로 분리했습니다.
게임 인스턴스와의 상호작용이 가능하며, 사용자 상호작용을 처리할 수 있습니다.
- game 인스턴스를 의존성 주입하는 initGameInstance 함수 구현
- TextField에서 'Enter' 입력 시의 로직을 처리하는 handleInputTextFieldKeyPress 함수 구현
- 확인 버튼 클릭시의 로직을 처리하는 handleInputBtnClick 함수 구현
- 재시작 버튼 클릭시의 로직을 처리하는 handleRestartBtnClick 함수 구현
- 게임 타이틀 시작 버튼 클릭 시의 로직을 처리하는 handleTitleStartBtnClick 함수 구현
- DOM 로딩 완료시의 로직을 처리하는 handleDOMContentLoaded 함수 구현
- 게임 종료 버튼 클릭 시의 로직을 처리하는 handleFinishBtnClick 함수 구현
main.js에 있던 코드들을 모듈화 했습니다.
- 에러 메시지, 결과 메시지를 constants.js 모듈의 상수로 대체하였습니다.
- 로그를 출력하는 addLog 함수가 추가되었습니다.
- 마지막 로그 값을 반환하는 getLastLog 함수가 추가되었습니다.
- 순차적 동작을 위해 setResult에 콜백함수가 추가되었습니다.
feat: 게임 타이틀 및 로그 기능 추가
- 야구공 모양의 favicon이 추가되었습니다.
- '숫자 야구' 라는 제목의 타이틀이 추가되었습니다.
디자인 요구사항에 부합하도록 margin-bottom 값을 수정했습니다.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant