|
#include<stdio.h>
: : : #include<conio.h>
: : : #include<stdlib.h>
: : : #include<windows.h>
: : :
: : : #define SCREEN_X 12
: : : #define SCREEN_Y 28
: : : #define MAX_EN 3
: : : #define MAX_SPEED 100
: : : #define MIN_SPEED 2000
: : :
: : : char arr[SCREEN_X][SCREEN_Y],
: : : en_xy[2][MAX_EN],
: : : frame, life, player_st;
: : :
: : : int i, h, score, speed;
: : : char player_x, player_y;
: : :
: : : void clear_arr(){
: : : for(i=0; i<SCREEN_Y; i++)
: : : {
: : : for(h=0; h<SCREEN_X; h++)
: : : {
: : : arr[h][i]='"';
: : : }
: : : }
: : : }
: : :
: : : void reset()
: : : {
: : : for(i = 0; i < MAX_EN; ++i){
: : : en_xy[0][i] = 100;
: : : }
: : : clear_arr();
: : : player_x=SCREEN_X /2;
: : : player_y=SCREEN_Y-8;
: : : arr[player_x][player_y]='A';
: : : life = 5;
: : : score = 0;
: : : frame = 0;
: : : player_st = 0;
: : : speed = MIN_SPEED;
: : : }
: : :
: : :
: : : void key()
: : : {
: : : switch(getch()){
: : : case 'K' :
: : : if(player_x != 0) player_x-=3;
: : : break;
: : : case 'M' :
: : : if(player_x !=9) player_x+=3;
: : : break;
: : : case 'r' :
: : : if(life == 0) reset();
: : : break;
: : : }
: : : }
: : :
: : : void drowscreen()
: : : {
: : : if(life == 0 && player_st >0){
: : : arr[player_x][player_y]= (i%2 == player_st%2)?' ' : 'X';
: : : arr[player_x+1][player_y]= (i%2 == player_st%2)?'X' : 'N';
: : : arr[player_x][player_y+1]= (i%2 == player_st%2)?'N' : 'X';
: : : arr[player_x+1][player_y+1]=(i%2 == player_st%2)?' ' : 'M';
: : : arr[player_x+2][player_y+1]=(i%2 == player_st%2)?'N' : 'X';
: : : arr[player_x][player_y+2]=(i%2 == player_st%2)?'X' : ' ';
: : : arr[player_x+1][player_y+2]=(i%2 == player_st%2)?'N' : 'X';
: : : arr[player_x][player_y+3]=(i%2 == player_st%2)?'X' : 'M';
: : : arr[player_x+1][player_y+3]=(i%2 == player_st%2)?'N' : 'M';
: : : arr[player_x+2][player_y+3]=(i%2 == player_st%2)?'X' : ' ';
: : : player_st--;
: : : }
: : : else if(!player_st && !life == 0){
: : : arr[player_x+1][player_y]='A';
: : : arr[player_x][player_y+1]= (i%2 == frame%2)?'Z' : 'E';
: : : arr[player_x+1][player_y+1]='A';
: : : arr[player_x+2][player_y+1]=(i%2 == frame%2)?'Z' : 'E';
: : :
: : : arr[player_x+1][player_y+2]='A';
: : : arr[player_x][player_y+3]=(i%2 == frame%2)?'Z' : 'E';
: : : arr[player_x+1][player_y+3]='A';
: : : arr[player_x+2][player_y+3]=(i%2 == frame%2)?'Z' : 'E';
: : : }
: : : else if(player_st >0){
: : : arr[player_x+1][player_y]= (i%2 == frame%2)?'N' : 'M';
: : : arr[player_x][player_y+1]= (i%2 == frame%2)?'N' : 'M';
: : : arr[player_x+1][player_y+1]=(i%2 == frame%2)?'N' : 'M';
: : : arr[player_x+2][player_y+1]=(i%2 == frame%2)?'N' : 'M';
: : :
: : : arr[player_x+1][player_y+2]=(i%2 == frame%2)?'N' : 'M';
: : : arr[player_x][player_y+3]=(i%2 == frame%2)?'N' : 'M';
: : : arr[player_x+1][player_y+3]=(i%2 == frame%2)?'N' : 'M';
: : : arr[player_x+2][player_y+3]=(i%2 == frame%2)?'N' : 'M';
: : : player_st--;
: : : }
: : :
: : :
: : : for(i = 0; i < MAX_EN; ++i){
: : : if(en_xy[0][i] != 100)
: : : {
: : : arr[en_xy[0][i]+1][en_xy[1][i]] = 'E';
: : : arr[en_xy[0][i]][en_xy[1][i]+1] = (i%2 == frame%2)?'Z' : 'E';
: : : arr[en_xy[0][i]+1][en_xy[1][i]+1] = 'E';
: : : arr[en_xy[0][i]+2][en_xy[1][i]+1] = (i%2 == frame%2)?'Z' : 'E';
: : :
: : : arr[en_xy[0][i]+1][en_xy[1][i]+2] = 'E';
: : : arr[en_xy[0][i]][en_xy[1][i]+3] = (i%2 == frame%2)?'Z' : 'E';
: : : arr[en_xy[0][i]+1][en_xy[1][i]+3] = 'E';
: : : arr[en_xy[0][i]+2][en_xy[1][i]+3] = (i%2 == frame%2)?'Z' : 'E';
: : : }
: : : }
: : :
: : : for(i=0; i<SCREEN_Y-4; i++)
: : : {
: : : for(h=0; h<SCREEN_X; h++)
: : : {
: : : if(!(h % 3))
: : : {
: : : printf("%s", (i%2 == frame%2)?"┃" : " ");
: : : }
: : :
: : : switch(arr[h][i]){
: : : case'A':
: : : printf("▣");
: : : break;
: : : case'E':
: : : printf("□");
: : : break;
: : : case'Z':
: : : printf("■");
: : : break;
: : : case'N':
: : : printf("△");
: : : break;
: : : case'M':
: : : printf("▽");
: : : break;
: : : case'X':
: : : printf("※");
: : : break;
: : : default:
: : : printf(" ");
: : : }
: : :
: : : }
: : : printf("%s", (i%2 == frame%2)?"┃" : " ");
: : :
: : : switch(i){
: : : case 0:
: : : case 1:
: : : printf("▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒", score);
: : : break;
: : : case 2:
: : : printf("▒ ☜ 자동차 게임 ☞ ▒", score);
: : : break;
: : : case 3:
: : : case 4:
: : : case 5:
: : : printf("▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒", score);
: : : break;
: : : case 6:
: : : printf("▒ SPEED: %3dKm ▒", ((MIN_SPEED+400) - speed) / 10);
: : : break;
: : : case 7:
: : : printf("▒ SCORE: %5d ▒", score);
: : : break;
: : : case 8:
: : : printf("▒ LIFE: %5d ▒", life);
: : : break;
: : : case 12:
: : : printf("%s", (life == 0)? "▒ OH~ SHIT! GAME OVER ▒" : "▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒");
: : : break;
: : : case 13:
: : : printf("%s", (life == 0)? "▒R키를 누르시면 계속됩니다!▒" : "▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒");
: : : break;
: : : default:
: : : printf("▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒", score);
: : :
: : : }
: : :
: : :
: : : printf("\n");
: : : }
: : :
: : : }
: : :
: : : void en(){
: : : if(!frame){
: : : for(i = 0; i < MAX_EN; ++i){
: : : if(en_xy[0][i] == 100)
: : : {
: : : en_xy[0][i] = (rand()%4)*3;
: : : en_xy[1][i] = 0;
: : : break;
: : : }
: : : }
: : : }
: : :
: : : for(i = 0; i < MAX_EN; ++i){
: : : if(en_xy[0][i] != 100)
: : : {
: : : en_xy[1][i]++;
: : :
: : : if(en_xy[1][i]+3 >= player_y && en_xy[0][i] == player_x){
: : : life--;
: : : player_st = 10;
: : : en_xy[0][i] = 100;
: : : speed = MIN_SPEED;
: : : }
: : :
: : : if(en_xy[1][i] >= SCREEN_Y-4){
: : : en_xy[0][i] = 100;
: : : score += 50;
: : : }
: : : }
: : : }
: : : }
: : :
: : : void gotoxy(int x, int y)
: : : {
: : : COORD Cur;
: : : Cur.X=x;
: : : Cur.Y=y;
: : : SetConsoleCursorPosition (GetStdHandle ( STD_OUTPUT_HANDLE),Cur);
: : : }
: : :
: : : void main()
: : : {
: : : reset();
: : : while(1)
: : : {
: : : if(life)
: : : {
: : : en();
: : : frame = frame > 10? 0 : frame+1;
: : : speed = (speed > MAX_SPEED)? speed-=7 : MAX_SPEED;
: : : score++;
: : :
: : : }
: : : gotoxy(0,0);
: : : drowscreen();
: : : clear_arr();
: : : for(i=0; i<speed; i++) if(kbhit()) key();
: : : }
: : : }
: : :
: : :
: : : 이소스를 빌더로 돌려볼려고하는데 가능한건가요? 한번도 못써봐서요.. 꼭빌더로해야하는데.. 휴...
: : :
: : : 어디 강좌같은거없나요 빠르게 익혀야해서요..
|