2021. 2. 13. 13:45ㆍC, 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 |