20/02/13 테트리스 만들기2

2021. 2. 13. 13:45C, C++

m.blog.naver.com/azure0777/220295388741

 

[C언어 게임 만들기] 테트리스 게임 (Tetris)

-----** 2017/12/22 : 이 게임의 자바스크립트 + Text Game Maker JS 버전이 A-MEAN-Blog.com에...

blog.naver.com

이 분의 테트리스 게임을 따라하며 만들어보기로 했다.

일단 어제에서 진도는 크게 안나갔다.

커서를 옮기는 gotoxy()의 함수와 전처리기define의 역할을 이해했다.

 

더보기

#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <malloc.h>
#include <windows.h>
#include <conio.h>

#define ESC 27
#define SPACE 32
#define LEFT 75 //키보드 방향키는 특수키로 인식 입력이 두 개의 수로 들어감
#define RIGHT 77 // 224 77, 이렇게 들어옴 224는 1byte인 char에서는 -32로 입력됨
#define UP 72
#define DOWN 80
#define H 104
#define S 115
#define X 3 //타이틀과 테트리스 칸이 시작되는 x좌표
#define Y 5

int keyControl();
void init();
void gotoxy(int x, int y);
void startScreen();
void infoScreen();
void gameScreen();


class Block {

};


int main() {
init();
while (true) {
system("cls");
startScreen();
if (keyControl() == S) {
gameScreen();
}
else if (keyControl() == H) {
infoScreen();
}
else if (keyControl() == ESC) {
break;
}

}



return 0;
}

void init() {
system("mode con:cols=100 lines=30 | title Tetris ver 1.0");

HANDLE consoleHandle = GetStdHandle(STD_OUTPUT_HANDLE); //콘솔 핸들 가져오기
CONSOLE_CURSOR_INFO ConsoleCursor;
ConsoleCursor.bVisible = 0; //false 또는 0 : 숨기기
ConsoleCursor.dwSize = 1;
SetConsoleCursorInfo(consoleHandle, &ConsoleCursor);
}

void gotoxy(int x, int y) {
COORD cur = { (SHORT)2*x,(SHORT)y }; //구조체 선언 때는 {변수값,...,변수값}가능
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), cur);

}

void startScreen() {
//메인 화면 출력


gotoxy(X, Y); printf("□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□");
gotoxy(X, Y+1); printf("□■■■■■■■□■■■■■■□□■■■■■■■□■■■■■□□□■□□□■■■■□□");
gotoxy(X, Y+2); printf("□□□□■□□□□■□□□□□□□□□□■□□□□■□□□□■□□■□□■□□□□■□");
gotoxy(X, Y+3); printf("□□□□■□□□□■□□□□□□□□□□■□□□□■□□□□■□□■□□■□□□□■□");
gotoxy(X, Y+4); printf("□□□□■□□□□■□□□□□□□□□□■□□□□■□□□□■□□■□□■□□□□□□");
gotoxy(X, Y+5); printf("□□□□■□□□□■■■■■■□□□□□■□□□□■■■■■□□□■□□□■■□□□□");
gotoxy(X, Y+6); printf("□□□□■□□□□■□□□□□□□□□□■□□□□■□□□□■□□■□□□□□■■□□");
gotoxy(X, Y+7); printf("□□□□■□□□□■□□□□□□□□□□■□□□□■□□□□■□□■□□□□□□□■□");
gotoxy(X, Y+8); printf("□□□□■□□□□■□□□□□□□□□□■□□□□■□□□□■□□■□□■□□□□■□");
gotoxy(X, Y+9); printf("□□□□■□□□□■□□□□□□□□□□■□□□□■□□□□■□□■□□■□□□□■□");
gotoxy(X, Y+10); printf("□□□□■□□□□■■■■■■□□□□□■□□□□■□□□□■□□■□□□■■■■□□");
gotoxy(X, Y+11); printf("□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□");
gotoxy(X, Y+12); printf("□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□");
gotoxy(X+17, Y+13); printf("Press 'H' to see info");
gotoxy(X+17, Y+14); printf("Press 'S' to start");




return;
}

void infoScreen() {

while (true) {
system("cls");

gotoxy(X+3, Y); printf("↑");
gotoxy(X+2, Y+1); printf("←↓→  ");
gotoxy(X+2, Y+2); printf("방향키로 간단하게");
gotoxy(X, Y+3); printf("스페이스바 누르면 스타트 화면으로");
if (keyControl() == SPACE)
break;
}

}

void gameScreen() {



while (true) {
system("cls");
for (int i = 0; i < 20; ++i) {
gotoxy(X, Y + i);
for (int j = 0; j < 10; ++j) {
printf("□");
}
printf("\n");
}
Sleep(1000);
}

}



int keyControl() {
return _getch();
}

'C, C++' 카테고리의 다른 글

20/02/17 C++ 공부  (0) 2021.02.17
20/02/15 C++ 공부  (0) 2021.02.15
20/02/12 테트리스 만들기1  (0) 2021.02.12
20/02/11 C++공부  (0) 2021.02.11
20/02/10 C++공부  (0) 2021.02.10