kwan's note

Simple tetris from scratch(C++) 본문

project/others

Simple tetris from scratch(C++)

kwan's note 2022. 6. 4. 21:10
반응형

cpp를 이용해 간단한 토이 프로젝트를 진행하였습니다.

추가적인 파일이나 라이브러리 추가 없이 빈 파일에서 커맨드라인에서 실행되는 테트리스를 구현하는것을 목표로 하였습니다.

 

 

콘솔창에서 구동되는 실행 화면은 다음과 같습니다.

 

게임 플레이 화면

 

게임 종료 화면은 다음과 같습니다

 

게임 종료 화면

 

먼저 main.cpp 에서는 다음과 같이 Game header를 포함하고 이름을 받아와 해당 아이디로 게임을 실행합니다.

#include "Game.h"

int main()
{
	std::cout << "Enter user name" << std::endl;
	std::string name;
	std::cin >> name;
	Application game(name);
	game.Run();
}

 

Game.h에서는 application을 선언하고 게임 플레이에 필요한 함수를 application.cpp에서 구현하였다.

이때 블록에 관한 정보는 block.h에 정의하였습니다.

#include <stdlib.h>
#include <windows.h>
#include <string>
#include <iostream>

#include "Block.h"

#include <chrono>
#include <thread>

#define WALL 10
#define FLOOR 11
#define AIR 13

class Application
{
private:
	std::string userName;
	unsigned int score=0;
	std::chrono::steady_clock::time_point currentTime;

	char map[12][12];
	bool blockGenerated=false;
	bool needUpdate = false;
	bool isOver = false;

public:
	Application(std::string ="anonymous user");
	void Run();
	void Render();
	void BlockScore(Block* block);
	Block* GenBlock(unsigned int genNum);
	void CheckKey(Block* currentBlock);
	void AddBlockToMap(Block* currentBlock);
	void DelBlockFromMap(Block* currentBlock);
	void BlockMove(Block* theBlock, int leftx = 0, int upy = 0);
	unsigned int CheckBlock(Block* theBlock ,int leftx=0, int upy=0 );
};

어플리케이션을 생성하고 Run하면 게임이 실행됩니다.

게임이 실행되면 1초마다 block을 생성합니다. 생성된 블럭은 currentBlock으로 runtime내에 관리되고 만약 벽이나 바닥 혹은 다른 블럭과 부딛히면 해당 블럭의 위치를 map에 그려주며 currenBlock의 메모리를 해제시킵니다.

 

Block은 화살표로 움직일 수 있으며 위 화살표를 누르면 회전합니다.

만약 맨 위 생성 위치에 블록이 도달하면 종료합니다.

 

 

https://github.com/kwanyun/Simple-Tetris

 

GitHub - kwanyun/Simple-Tetris: Simple tetris from scratch in command line

Simple tetris from scratch in command line. Contribute to kwanyun/Simple-Tetris development by creating an account on GitHub.

github.com

 

반응형