제작 기간
- 총 4일
게임 클래스 구성
GameManager
- 클래스 멤버는 WordManager, Player, Rank를 가지고있고, 베네치아 이야기를 스크롤링하기 위해 string vector를 멤버로 가지고 있다.
- Main 함수에서 GameManager의 객체를 생성한 뒤, 게임을 실행한다.
- 게임 시작 시, 베니치아 스토리 데이터를 로드해서 저장한다.
- 각 화면은 정적 클래스(Draw)에 화면을 그리는 함수를 정의해서 GameManager에서 호출하여 그린다.
WordManager
- 게임에 사용할 단어들을 로드해서 배열로 저장하고, 게임 중에 사용하기 위한 Word 클래스의 List를 멤버로 가지고 있다.
- 일정 시간을 주기로, 랜덤 확률 체크를 하여 Word 객체를 만들어서 List에 넣는다.
- 단어를 입력하면 맞는 객체의 포인터를 반환한다.
Word
- 좌표, 단어, 아이템 정보를 멤버로 가지고 있다.
- 객체가 생성될 때, 아이템 효과를 랜덤하게 부여한다.
- 아이템 효과는 속도 조절, 숨기기, 화면 비우기 등이 있다.
Rank
- Player 클래스의 List를 멤버로 가지고 있다.
- 랭킹 데이터를 파일 입출력으로 관리한다.
- 랭킹의 순서는 내림차순으로 10개만 보여지지만, 데이터는 플레이한 모든 유저의 데이터를 관리한다.
Player
- 유저 이름, 라이프, 최고 기록(스테이지, 점수)을 멤버로 가지고 있다.
Draw
- 게임 화면을 그리기 위한 함수를 정의해 놓았다.
- 문자열 중앙 정렬로 그리기, 박스 그리기, 지우기 등이 정의되어있다.
저장되어 있는 데이터 구조
- 랭킹, 게임에 사용될 단어 데이터
겪은 문제
- 화면을 그릴때 프레임이 지연되는 문제
- 원인 : 화면의 정보를 반복문으로 문자 1개씩 print하는게 원인.
- 해결 : 문자열로 모든 화면의 정보를 더한 뒤, 문자열을 한번에 그려서 해결.
특정 구역만 지워야 할 때는 화면 전체를 새로 그리지 않고 해당 구역만 지워서 해결.
'Game > Personal development' 카테고리의 다른 글
[WIN API] 서커스 찰리 게임 (0) | 2022.02.05 |
---|---|
[WIN API] 카드 맞추기 게임 (0) | 2022.01.30 |
RPG 게임 제작 (C++) (0) | 2022.01.22 |
뱀 게임 제작 (C++) (0) | 2022.01.22 |
오목 게임 제작 (C++) (0) | 2022.01.21 |