-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdraw_scene.c
66 lines (58 loc) · 2.39 KB
/
draw_scene.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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/*
[Description]
현재 게임의 그래픽적 요소를 화면에 출력해주는 함수.
*/
#include "Header.h"
void draw_scene(Game* g)
{
int current_coin_number; //현재 코인의 갯수를 알려주는 변수.
int current_enemy_number; //현재 적의 갯수를 알려주는 변수.
char print_data[2]; //콘솔 화면에 출력할 값을 저장해줄 컨테이너.
char print_score_life_data[100];
for (int y_position = 0; y_position < CELL_SIZE; y_position++)
{
for (int x_position = 0; x_position < CELL_SIZE; x_position++)
{
current_coin_number = has_coin_in_position(g, y_position, x_position);
current_enemy_number = has_enemy_in_position(g, y_position, x_position);
if (g->map.MAP[y_position][x_position] == WALL)
{
// 벽을 출력하는 파트.
set_color(RED);//Red 컬러로 출력 색상값 지정.
strcpy(print_data, "X "); //출력할 벽 문자열을 저장.
print_scene(x_position, y_position, print_data); //화면에 출력 및 다음 콘솔 버퍼에 저장.
}
else if (current_enemy_number >= 0)
{
// 적을 출력하는 파트.
set_color(LIGHTBLUE); //LightBlue 컬러로 지정.
strcpy(print_data, "o ");//출력할 적 문자열을 저장.
print_scene(x_position, y_position, print_data); //화면에 출력 및 다음 콘솔 버퍼에 저장.
}
else if (current_coin_number >= 0)
{
// 코인을 출력하는 파트.
set_color(YELLOW); //Yellow 컬러로 지정
strcpy(print_data, ". ");//출력할 코인 문자열을 저장.
print_scene(x_position, y_position, print_data); //화면에 출력 및 다음 콘솔 버퍼에 저장.
}
else if (g->pacman.pacman_vertical ==y_position && g->pacman.pacman_horizontal == x_position)
{
// 플레이어를 출력하는 파트.
set_color(WHITE);//White 컬러로 지정.
strcpy(print_data, "o "); //출력할 플레이어 문자열을 저장.
print_scene(x_position, y_position, print_data);//화면에 출력 및 다음 콘솔 버퍼에 저장.
}
else
{
// 길을 출력하는 파트.
strcpy(print_data, " "); // 공백값 저장.
print_scene(x_position, y_position, print_data);//화면에 출력 및 다음 콘솔 버퍼에 저장.
}
}
printf("\n"); // 줄 바꿈.
}
set_color(WHITE); //White 컬러로 지정.
sprintf(print_score_life_data, "Score: %d\nLifes: %d\n", g->score, g->lifes); //점수 및 생명값 출력
print_scene(0, 15, print_score_life_data);//15번째 줄, 0번째 좌표에 시작하는 점수 및 생명값 출력, 다음 콘솔 버퍼에 저장.
}