Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 깊이 우선 탐색
- 유니티 시야 가림
- 유니티 리소스매니저
- LookRotation
- 이진트리
- LFS
- 유니티 InputManager
- 유니티
- unity
- Mathf.Clamp
- 유니티 ResourceManager
- 코드블럭 테마
- git-lfs
- 오브젝트 풀링
- Raycast
- eulerAngles
- c++
- 유니티 머신러닝
- 유니티 Rotate
- 너비 우선 탐색
- InputManager
- 알고스팟
- ML-Agents
- 소스코드 줄번호
- c++ 문자열 자르기
- 유니티 오브젝트 풀링
- Quaternion.Euler
- 유니티 Collision
- 유니티 Vector3
- LayerMask
Archives
- Today
- Total
무민은귀여워
cgame 프레임워크 본문
반응형
Screen.h
1
2
3
4
5
6
7
|
#pragma once
void ScreenInit();
void ScreenFlipping();
void ScreenScreenClear();
void ScreenRelease();
void ScreenPrint(int x, int y, char* string);
void setColor(unsigned short color);
|
cs |
Screen.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
#include<windows.h>
static int g_nScreenIndex;
static HANDLE g_hScreen[2];
void ScreenInit()
{
CONSOLE_CURSOR_INFO cci;
g_hScreen[0] = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, 0, NULL, CONSOLE_TEXTMODE_BUFFER, NULL);
g_hScreen[1] = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, 0, NULL, CONSOLE_TEXTMODE_BUFFER, NULL);
// 커서 숨기기
cci.dwSize = 1;
cci.bVisible = FALSE;
SetConsoleCursorInfo(g_hScreen[0], &cci);
SetConsoleCursorInfo(g_hScreen[1], &cci);
}
void ScreenFlipping()
{
SetConsoleActiveScreenBuffer(g_hScreen[g_nScreenIndex]);
g_nScreenIndex = !g_nScreenIndex;
}
void ScreenScreenClear()
{
COORD coor = { 0, 0 };
DWORD dw;
FillConsoleOutputCharacter(g_hScreen[g_nScreenIndex], ' ', 80 * 25, coor, &dw);
}
void ScreenRelease()
{
CloseHandle(g_hScreen[0]);
CloseHandle(g_hScreen[1]);
}
void ScreenPrint(int x, int y, char* string)
{
DWORD dw;
COORD CursorPosition = { x, y };
SetConsoleCursorPosition(g_hScreen[g_nScreenIndex], CursorPosition);
WriteFile(g_hScreen[g_nScreenIndex], string, strlen(string), &dw, NULL);
}
void setColor(unsigned short color)
{
SetConsoleTextAttribute(g_hScreen[g_nScreenIndex], color);
}
|
cs |
main.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
#include<stdio.h>
#include "Screen.h"
void Init(); // 초기화
void Update(); // 데이터 갱신
void Render(); // 화면 출력
void Release(); // 데이터 해제
int main()
{
ScreenInit();
Init();
while (1)
{
Update();
Render();
}
Release();
ScreenRelease();
return 0;
}
void Init()
{
}
void Update()
{
}
void Render()
{
ScreenScreenClear();
ScreenFlipping();
}
void Release()
{
}
|
cs |
화면 출력 부분
프레임 값을 기준으로 대기상태 진입
1초는 1000밀리세컨드이다. 1초에 30번의 화면 전환이 이루어지기 위해서는 한 번 화면이 출력되는데 33밀리세컨드가 걸리면 된다. 현재 시간과 이전 시간을 비교하여 33밀리세컨드가 넘으면 다시 화면 출력을 해주게 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#include<time.h>
int g_nFrameCount; // 프레임 계산을 위해
while (1)
{
CurTime = clock();
if (CurTime - OldTime > 33)
{
OldTime = CurTime;
break;
}
}
g_nFrameCount++;
|
cs |
키보드 입력 부분
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#include<conio.h>
if (_kbhit())
{
nKey = _getch();
if (nKey == 'q')
break;
switch (nKey)
{
case 'j':
printf("jjjj\n");
break;
case 'i':
printf("iiii\n");
break;
default:
break;
}
}
|
cs |
https://nowcampus.tistory.com/entry/3%EC%9E%A5?category=655340
반응형
'IT > c, c++' 카테고리의 다른 글
[c++] map 사용 예제 (0) | 2019.11.28 |
---|---|
[c++] next_permutation 조합 구하기 (0) | 2019.11.20 |
error) c4996 에러 #pragma warning(disable:4996) (0) | 2019.07.12 |
memo) 바이트 패딩 (0) | 2019.07.12 |
rvalue 참조 (0) | 2019.07.12 |
Comments