'Project (C++)/1 Month Project'에 해당되는 글 24건

  1. 2019.11.13 1주차 - 셋째날
  2. 2019.11.12 1주차 - 둘째날
  3. 2019.11.11 1주차 - 첫째날
  4. 2019.11.09 1개월 C++(Win API) 2D Game Project

오늘의 할 일 :  

모션추가를 위한 코드정리.

모션 추가...!

....

 

하지만 한 것 :

클래스 구조 연구,

클래스로 변환(70%)

이동 모션 조건 자동설정,

처음 시작시 내려오는 모션(흉내) 등 짜짤짜잘...

 

 

 

 

 

 

 

 

(누가 시키지도 않은) 클래스의 구조에 대해 고민을 엄청 많이했다.

 

일단 C++의 특징이 무엇인가! 바로 객체지향이라는 점..

타일 하나 하나도 전부 다 하나의 객체.

별도의 존재로 생성해 주어야 하고, 소멸도 일어나야 한다...

 

하지만 이전 코드는 메인 하나에 ,, 타일도 배열로 만들었다.

왜냐? 어차피 전체적인 타일의 개수는 변하지 않으니까....

메모리의 개념에서 생각했다고 해야하나.. 전형적인 절차지향ㅎ..ㅎ.....ㅎ.....

 

그러다가 생각을 고쳐먹기로 하고, 처음부터 다시 연구해보았다.

뭐 결과적으로는 기획서의 클래스 형태로 왔는데.. 

타일매니져? 비슷한걸 만들려고 삽질과 시도를 하다가,,

결국 코드 재사용도 없고.. 뭐 그래서 그냥 블록부분이 관리하는 형태로 만들었다.

 

 

타일에서 블록으로 명칭 수정도 했다.

 

 

 

 

 

 

 

 

 

뭔가 출력물적으로는 변한게 없고 오히려 퇴화된 것 같지만..

클래스를 썼다는 엄청난 내부적 구조 변화가 있었다는 점..?

 

 

 

 

 

 

내일의 할일..

클래스 전환 완료시키기(어제 한 부분까지.)

오늘 다 못한 무빙 완성시키기.

일치안하면 돌아오기 기능이 자동으로 추가될 듯..

 

 

 

고민들..

4~5개 특수블록 전환은 원래 계획대로 금요일까진 할 수 있을 것 같다.

근데 특수블록 효과는 어케해야하냐....

하..

밑줄부터 챡챡챡 나오게 하려면 어케해야할까..

인덱스를 가로부터 하지 말고 세로부터 줄까.. 그리고 가로 출력되면 세로 출력되게..? 으으.. 모션 주는거 너무 어렵고요..

 

 

오늘 뚝배기를 많이 굴렸더니 피곤쓰...

일찍 자야지...Zzzzz..

 

 

 

 

'Project (C++) > 1 Month Project' 카테고리의 다른 글

1주차 - 다섯째날  (0) 2019.11.15
1주차 - 넷째날  (0) 2019.11.14
1주차 - 둘째날  (0) 2019.11.12
1주차 - 첫째날  (0) 2019.11.11
1개월 C++(Win API) 2D Game Project  (0) 2019.11.09
Posted by 파인애옹
,

   오늘 해야 할 일.

1) 가로세로 3개가 일치하는지 검사,    ------------ clear 

2) 일치하면 데이터(숫자)삭제,           ------------ clear

3) 위쪽에 있는 데이터가 아래로 내려오고.. ------- clear

4) 만약 최상단이면 새로 생성해서 내려오는..------ clear

 

 

 

[+]

각각의 숫자에 RGB값을 대입해서 색을 입혀 추가했다.

 

[+]

좌우상하 방향 결정하는 함수 별도로 작성,

코드가 50줄정도 사라지고 글자수도 절반이상 줄었다!!

 

 

 

 

 

 


 

 

 

 

tile 구조체 안에 bool 함수를 두개 추가했다.

그래서 가로 또는 세로, 가로세로 동시(나중에 3개 이상 했을 때 필요할거 같아) 했을 때

네모로 표시되게 했다.

 

 

1. 일치 조건 검사 함수

bool isLowMatched;
bool isColMatched; 
//////////////////////////

void GameBoard::validateToMatch(int index)
{
	int x = index % TILE_QUANTITY_X;
	int y = index / TILE_QUANTITY_Y;

// 세로줄 체크하기
	int c1 = index;
	int c2 = index + TILE_QUANTITY_X;
	int c3 = index + TILE_QUANTITY_X * 2;
		
	if (y < 1) //상위 두줄 되돌리기용
	{
		if (tile[c1].num != tile[c2].num ||
			tile[c2].num != tile[c3].num)
		{
			tile[c1].isColMatched = false;
			tile[c2].isColMatched = false;
		}
	}
	if (y < (TILE_QUANTITY_Y - 2)) //세로체크
	{

		if (tile[c1].num == tile[c2].num &&
			tile[c1].num == tile[c3].num)
		{
			tile[c1].isColMatched = true;
			tile[c2].isColMatched = true;
			tile[c3].isColMatched = true;
		}
		else tile[c3].isColMatched = false;
	}

 

숫자가 바뀌었을 때, 매치처리 되어있던 애들 다시 false로 돌려주는 과정에서 조금 고생했다...

조건문 예외처리 하는데만 3시간 정도 걸린거 같음...

 

 

 

 

 

 

 

 

 

 

2. 

조금 더 명시적으로 확인하기 위해,, 각각의 숫자에 RGB값을 대입하여 색을 칠했다.

색이 너무 찐해서 지금은 파스텔톤으로 바꾼 상태.

 

 

 

나중에 타일일 교체 시, 모션을 주기위해서.. 

기준으로 쓸 베이스타일 만들었는데, 영상에서 보면 알겠지만 삐죽빼죽 나온다.

왜 그러지..?

아무리 생각해봐도 베이스타일은 초기에 생성하고, 출력용으로 쓰는거 말고는 건들이지 않는데..

이거 Window API 문제인거 같다..

그래서 일단 update에서 계속 베이스타일을 생성하는걸로 ㅋㅋㅋㅋ....

 

 

출력 기준을 각각의 타일로 했더니 저런 문제는 없어졌다.

 

 

 

 

오늘의 목표가 생각보다 일찍 끝나서... 

좌우상하 방향 조절하는 함수를 추가하여 코드를 정리했다.

엄청 짧아져서 뿌 ㅡ 듯.

 

 

 

 

근데...

모션이... 생각보다 어렵다... 잘 안된다 ㅠㅠ

그래서 전체적으로 코드 정리를 해야할 것 같다...

 

 

 

내일의 할일,

모션추가를 위한 코드정리.

그리고 모션 추가...!

 

내일 하는게 매우 중요한 과정 중의 하나 같다...

 

'Project (C++) > 1 Month Project' 카테고리의 다른 글

1주차 - 다섯째날  (0) 2019.11.15
1주차 - 넷째날  (0) 2019.11.14
1주차 - 셋째날  (0) 2019.11.13
1주차 - 첫째날  (0) 2019.11.11
1개월 C++(Win API) 2D Game Project  (0) 2019.11.09
Posted by 파인애옹
,

 

첫주차는 기본 로직 만드는거에 힘쓰기로 했다..

우선 오늘의 목표는 상하좌우 데이터 바꾸는,

쓰리매치 게임의 가장 기본 중의 기본인 로직을 만드는 것이다.

 

1. 타일 그리기

2. 숫자 넣기

3. 클릭으로 교체하기

4. 슬라이딩으로 교체하기

 

이런식으로 계획을 세우고 진행했는데..

캬하.. 목표를 해냈다! 뿌-듯.

 

 

 

 

 


 

 

바닥 베이스 타일 0~63개를 배열로 지정했는데..

상하좌우 가생이 체크가 계속 반복되어서, 함수로 뺐다.

 

뭔가 더 깔끔한 코드가 있을까..?

 

자주 일어나는 데이터 교체도,, 코드 반복사용을 위해서

<교체용 함수>와 <어느쪽으로 교체할건지 방향을 지정해서 교체>하는 함수를 만들었다.

 

 

 

 

 

이렇게 하니까 그나마 코드가 확 줄어서 스스로 매우 뿌ㅡ듯.

만약 일치하지 않으면 다시 원래 자리로 돌아가는 것도 해야하는데..

이건 우선 매치하는 검사를 한 다음에 하기로 -.

 

 

쓰리매치 게임 보면,, 클릭 또는 슬라이딩.. 2가지 플레이가 있어서...

모두 다 사용 할 수 있게 하려다 보니 머리가 매우 아팠으나..

 

bool isFirstSelected;
int selectedTileIndex;

 

요렇게 두개의 변수를 주는걸로 간단히 해결해버렸다...

상하좌우 맞는 범위안에서 클릭 또는 슬라이딩 하면 교체후 false로, 범위 밖이면 교체없이 false로 변경했다.

 

 

크게 보면 별거 아닌 것 같은데.. 나름 많은 고민 끝에 탄생한 코드라.. 보람차다. .ㅎ...

 

 

 

 

 

내일은 우선

1) 가로세로 3개가 일치하는지 검사,

2) 일치하면 데이터(숫자)삭제,

3) 위쪽에 있는 데이터가 아래로 내려오고..

4) 만약 최상단이면 새로 생성해서 내려오는... 

또 제일 중요한 기본 로직을 만들어봐야겠다.

 

 

고민거리.

나중에는 데이터 교체가 아닌 이미지의 교체. 그것도 모션과 함께 이루어 져야하는데...

흐으으음..

시간이 오래 걸릴거 같은 불길한한 예감..

 

 

 

'Project (C++) > 1 Month Project' 카테고리의 다른 글

1주차 - 다섯째날  (0) 2019.11.15
1주차 - 넷째날  (0) 2019.11.14
1주차 - 셋째날  (0) 2019.11.13
1주차 - 둘째날  (0) 2019.11.12
1개월 C++(Win API) 2D Game Project  (0) 2019.11.09
Posted by 파인애옹
,

프로그래밍을 처음 배우고 이제 4개월차에 들어간다.

수업시간에 만든 C++ 프레임워크로 2D게임을 한달이란 시간 내에 만들어야 한다...

우선 만들 게임을 선정해야 하는데... 모작은 왠지 내키지 않는다.

 

애초에 모작으로 하고 싶었던 게임인 그라비티의 Lars: the wanderer 라든지,, 악튜러스는..

리소스에 대한 스뚜레스가 매우 컸다..

그래서 내가 이미지를 직접 만들 수 있는 퍼즐류를 생각하게 되었고,..

비쥬얼드나 애니팡 같은 3 - match 게임을 만들기로 결정했다.

 

하기는 엄청 많이 했는데, 이걸 과연 내가 구현 할 수 있을까?

솔직히 자신이 없다...ㅋㅋㅋ.... 그냥 RPG가 어찌보면 쉬울 것도 같고..

 

1주일 2D 프로젝트때 제작했던 것이, 명탐정 코난을 테마로 한 Bushiroad사의 Run게임 모작인데..

이 소스를 응용해서 만들면, 게임에 뭔가더 재미있는 스토리를 넣을 수도 있을 것 같은 느낌?

 

우선 가로 세로 3개 이상을 맞추어 없앤다는, 가장 기본적인 로직을 짜는 것을 최 우선 목표로

한달동안 달려보려고 한다.

 

 

지킬수 있을지 없을지 모르지만 일단 세워보는 계획

 

 

1 좌우 상하 데이터 바꾸기
2 가로 세로 3개 일치하는지 검사, 일치하는것 없애기
3 아래칸이 없어지면 윗칸이 빈 공간으로 옮겨지기
4 3개 이상 맞추기 (4개, 5개, T자형, L자형)
5 No more 검사 및 재배치
6 하강 애니메이션효과 추가
7 콤보
8 Score
9 특수효과 아이템1,2,3 추가
10 랭킹시스템
11 메인 UI
12 영상제작

 

일단 구체적으로 해야 할 것들을 적어보긴 했는데..

으 역시 이런거 적는건 트렐로가 최고여..

 

 

 

별 찍기도 힘들어 하던 내가 쓰리매치를 만들라고 하다니 ㅋㅋㅋ

잘 만들 수 있음 좋겠다.. 런게임도 쓰리매치도 엄마도 좋아하시고 나도 좋아하니까..

'Project (C++) > 1 Month Project' 카테고리의 다른 글

1주차 - 다섯째날  (0) 2019.11.15
1주차 - 넷째날  (0) 2019.11.14
1주차 - 셋째날  (0) 2019.11.13
1주차 - 둘째날  (0) 2019.11.12
1주차 - 첫째날  (0) 2019.11.11
Posted by 파인애옹
,