// 출력 void Render() { char string[100] = { 0 }; ScreenClear(); int gLength, i; // 출력 시작 if (p_GameState == RUNNING) { // 좌우에 벽을 만듬 (클리핑) if (Player.X < 0) ScreenPrint(0, Player.MoveY, &strPlayer[Player.X * (-1)]); else if (Player.MoveX + (Length - Player.MoveX + Player.CenterX + 1) > 79) { strncat(string, strPlayer, Length - ((Player.MoveX + Player.CenterX + 1) - 79)); ScreenPrint(Player.X, Player.Y, string); } else { ScreenPrint(Player.X, Player.Y, strPlayer); } ScreenPrint(Ball.bMoveX, Ball.bMoveY, "◎"); sprintf(string, "주인공 이동좌표 : %d, %d 점 수 : %d/%d 초기화 : R 버튼 ", Player.MoveX, Player.Y, BallCount, p_GoalCount); ScreenPrint(0, 0, string); //골대 출력 ScreenPrint(Goal.gMoveX, Goal.gMoveY, "ㅁ"); gLength = Goal.gLength * 2 + 1; for (i = 0; i < gLength; i++) ScreenPrint(Goal.gLineX[i], Goal.gMoveY, "ㅡ"); ScreenPrint(Goal.gLineX[gLength - 1] + 2, Goal.gMoveY, "ㅁ"); //세레머니 출력 if (GoalIn == 1) { //ScreenClear(); //GoalCere(10,5); ScreenPrint(50, 5, "** G O A L I N **"); } } // 상태 출력 ScreenPrint(20, 10, StateString); //출력 끝 ScreenFlipping(); }
void Render() { clock_t CurTime = clock(); int j = 0; ScreenClear(); for (int i = startIndex; i < startIndex + printStr - 1; i++, j++) { ScreenPrint(15, j, IntroPrint[i]); // (15,j) 지점에 출력 // 수진언니 편집 } if (upFlag == true) { if (CurTime - OldTime > PrintTime) // 문구 올라가는 시간 : 2초 { if (startIndex >= printStr) upFlag = false; startIndex++; OldTime = CurTime; } } ScreenFlipping(); }
void CScreen_Dudagi::MangchiReady(int x, int y) { ScreenPrint(x - 4, y - 2, " ∩"); ScreenPrint(x - 4, y - 1, " ┏━┓"); ScreenPrint(x - 4, y, " ┃ ┃"); ScreenPrint(x - 4, y + 1, " ┗━┛"); ScreenPrint(x - 4, y + 2, " ∥"); ScreenPrint(x - 4, y + 3, " ∥"); ScreenPrint(x - 4, y + 4, " ∩"); ScreenPrint(x - 4, y + 5, " ∪"); }
void Render() { ScreenClear(); char InBoxNum[5]; char temp[5]; /* if (GameStatus == START) { ScreenPrint(10, 2, startPrint); } */ StatusPrint(); // GameStatus에 따른 문구 출력 if (GameStatus == RUNNING || GameStatus == FINISH) { sprintf(guidePrint, "숫자 세 개를 입력하세요. 남은 목숨 : %d \n", Player.life); ScreenPrint(10, 5, guidePrint); // 입력한 수 출력 for (int i = 0; i < 3; i++) { if (InBox[i].num != -1) // 숫자가 있는 것만 출력 { sprintf(InBoxNum, "%d", InBox[i].num); ScreenPrint(InBox[i].X, InBox[i].Y, InBoxNum); } } /* // 테스트용 정답 출력 sprintf(temp, "%d", Computer.x); ScreenPrint(10, 13, temp); sprintf(temp, "%d", Computer.y); ScreenPrint(10, 16, temp); sprintf(temp, "%d", Computer.z); ScreenPrint(10, 19, temp); */ ScreenPrint(10, 10, gueAftPrint); // 추측 후 메시지 출력 } ScreenFlipping(); }
void cDMangchi::MangchiReady(int _x, int _y) { ScreenPrint(_x - 4, _y - 2, " ↘"); ScreenPrint(_x - 4, _y - 1, " 旨收旬"); ScreenPrint(_x - 4, _y, " 早 早"); ScreenPrint(_x - 4, _y + 1, " 曲收旭"); ScreenPrint(_x - 4, _y + 2, " ‵"); ScreenPrint(_x - 4, _y + 3, " ‵"); ScreenPrint(_x - 4, _y + 4, " ↘"); ScreenPrint(_x - 4, _y + 5, " ↙"); }
void Render() { char string[100] = {0}; ScreenClear(); int gLength, i; // 출력 시작 // 좌우에 벽을 만듬 (클리핑) if(Player.X < 0) ScreenPrint(0, Player.MoveY, &strPlayer[Player.X * (-1)]); else if(Player.MoveX + (Length - Player.MoveX + Player.CenterX + 1) > 79) { strncat_s(string, strPlayer, Length - ((Player.MoveX + Player.CenterX + 1) - 79)); ScreenPrint(Player.X, Player.Y, string); }else{ ScreenPrint(Player.X, Player.Y, strPlayer); } ScreenPrint(Ball.bMoveX, Ball.bMoveY, "○"); sprintf_s(string, "주인공 이동좌표 : %d, %d", Player.MoveX, Player.Y); ScreenPrint(0, 0, string); //골대 출력 ScreenPrint(Goal.gMoveX, Goal.gMoveY, "ㅁ"); gLength = Goal.gLength * 2 + 1; for(i = 0; i < gLength; i++) ScreenPrint(Goal.gLineX[i], Goal.gMoveY, "ㅡ"); ScreenPrint(Goal.gLineX[gLength - 1] + 2, Goal.gMoveY, "ㅁ"); //출력 끝 ScreenFlipping(); }
void CScreen_Dudagi::ReadyScreen() { ScreenPrint(0, 0, "┏━━━━━━━━━━━━━━━━━━━━┓"); ScreenPrint(0, 1, "┃■■■■■■■■■■■■■■■■■■■■┃"); ScreenPrint(0, 2, "┃■■■■■■■■■■■■■■■■■■■■┃"); ScreenPrint(0, 3, "┃■■■■■■■■■■■■■■■■■■■■┃"); ScreenPrint(0, 4, "┃■■■■■■■■■■■■■■■■■■■■┃"); ScreenPrint(0, 5, "┃■■■■■■■■■■■■■■■■■■■■┃"); ScreenPrint(0, 6, "┃■■■■■■■■■■■■■■■■■■■■┃"); ScreenPrint(0, 7, "┃■■■■■■■■■■■■■■■■■■■■┃"); ScreenPrint(0, 8, "┃■■■■■■■■■■■■■■■■■■■■┃"); ScreenPrint(0, 9, "┃■■■■■■■■■■■■■■■■■■■■┃"); ScreenPrint(0, 10, "┃■■■■■ ■■■■■┃"); ScreenPrint(0, 11, "┃■■■■■ 스테이지 ■■■■■┃"); ScreenPrint(0, 12, "┃■■■■■ ■■■■■┃"); ScreenPrint(0, 13, "┃■■■■■■■■■■■■■■■■■■■■┃"); ScreenPrint(0, 14, "┃■■■■■■■■■■■■■■■■■■■■┃"); ScreenPrint(0, 15, "┃■■■■■■■■■■■■■■■■■■■■┃"); ScreenPrint(0, 16, "┃■■■■■■■■■■■■■■■■■■■■┃"); ScreenPrint(0, 17, "┃■■■■■■■■■■■■■■■■■■■■┃"); ScreenPrint(0, 18, "┃■■■■■■■■■■■■■■■■■■■■┃"); ScreenPrint(0, 19, "┃■■■■■■■■■■■■■■■■■■■■┃"); ScreenPrint(0, 20, "┃■■■■■■■■■■■■■■■■■■■■┃"); ScreenPrint(0, 21, "┃■■■■■■■■■■■■■■■■■■■■┃"); ScreenPrint(0, 22, "┃■■■■■■■■■■■■■■■■■■■■┃"); ScreenPrint(0, 23, "┗━━━━━━━━━━━━━━━━━━━━┛"); }
void Sogo_Draw::BossTalk() { ScreenPrint(0, 0, "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"); ScreenPrint(0, 1, "┃ ┃"); ScreenPrint(0, 2, "┃ ┃"); ScreenPrint(0, 3, "┃ ┃"); ScreenPrint(0, 4, "┃ ┃"); ScreenPrint(0, 5, "┃ ┏┓━━━┏┓ ┃"); ScreenPrint(0, 6, "┃ ┗┛ ┃ ┃┗┛ ┃"); ScreenPrint(0, 7, "┃ ┃ ▽ ┃♡ ┃"); ScreenPrint(0, 8, "┃ ━━━━ ┃"); ScreenPrint(0, 9, "┃ ┃"); ScreenPrint(0, 10, "┃ ┃"); ScreenPrint(0, 11, "┃ ┃"); ScreenPrint(0, 12, "┃ ┃"); ScreenPrint(0, 13, "┃ /| ━ // ━ |\ ┃"); ScreenPrint(0, 14, "┃ //q ● ● p\ ┃"); ScreenPrint(0, 15, "┃ (┗┳━┳┛) ┃"); ScreenPrint(0, 16, "┃ ~ ┃ㅣ┃ ┃"); ScreenPrint(0, 17, "┃ ┗━┛ ┃"); ScreenPrint(0, 18, "┃ :+: 우하하 !!! 웃기는 구나 ┃"); ScreenPrint(0, 19, "┃ ┃"); ScreenPrint(0, 20, "┃ :+: 나를 상대하겠다고 ? 우하하 ┃"); ScreenPrint(0, 21, "┃ ┃"); ScreenPrint(0, 22, "┃ ┃"); ScreenPrint(0, 23, "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"); }
void CScreen_Dudagi::InitScreen() { ScreenPrint(0, 0, "┏━━━━━━━━━━━━━━━━━━━━┓"); ScreenPrint(0, 1, "┃ ┃"); ScreenPrint(0, 2, "┃ ┃"); ScreenPrint(0, 3, "┃ ┃"); ScreenPrint(0, 4, "┃ ┃"); ScreenPrint(0, 5, "┃ ┃"); ScreenPrint(0, 6, "┃ ┃"); ScreenPrint(0, 7, "┃ ┃"); ScreenPrint(0, 8, "┃ //////// ┃"); ScreenPrint(0, 9, "┃ ┃\ /┃ \│/ ┃"); ScreenPrint(0, 10, "┃ ┃··┃┏┳┳┓ ┃"); ScreenPrint(0, 11, "┃ ┗┓┏┛┗┓┏┛ ┃"); ScreenPrint(0, 12, "┃ ┃"); ScreenPrint(0, 13, "┃ ┃"); ScreenPrint(0, 14, "┃ ┃"); ScreenPrint(0, 15, "┃ 두더지 잡기 게임 ┃"); ScreenPrint(0, 16, "┃ ┃"); ScreenPrint(0, 17, "┃ space 키를 눌러주세요 ┃"); ScreenPrint(0, 18, "┃ ┃"); ScreenPrint(0, 19, "┃ ┃"); ScreenPrint(0, 20, "┃ ┃"); ScreenPrint(0, 21, "┃ ┃"); ScreenPrint(0, 22, "┃ ┃"); ScreenPrint(0, 23, "┗━━━━━━━━━━━━━━━━━━━━┛"); }
void Sogo_Draw::ResultScreen() { ScreenPrint(0, 0, "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"); ScreenPrint(0, 1, "┃ ┃"); ScreenPrint(0, 2, "┃ ┃"); ScreenPrint(0, 3, "┃ ┃"); ScreenPrint(0, 4, "┃ ┃"); ScreenPrint(0, 5, "┃ ┃"); ScreenPrint(0, 6, "┃ ┃"); ScreenPrint(0, 7, "┃ ┃"); ScreenPrint(0, 8, "┃ ┏━━━━━━━━┓ ┃"); ScreenPrint(0, 9, "┃ ┃★ Sogo ★┃ ┃"); ScreenPrint(0, 10, "┃ ┗━━━━━┳━━┛ ┃"); ScreenPrint(0, 11, "┃ /)/) ┃ ☆ ┃"); ScreenPrint(0, 12, "┃ ★(*'')/ ┃"); ScreenPrint(0, 13, "┃ 총점 : ┃"); ScreenPrint(0, 14, "┃ ┃"); ScreenPrint(0, 15, "┃ ◈◈◈◈◈◈◈ Game Over ◈◈◈◈◈◈◈ ┃"); ScreenPrint(0, 16, "┃ ┃"); ScreenPrint(0, 17, "┃ ┃"); ScreenPrint(0, 18, "┃ ┃"); ScreenPrint(0, 19, "┃ ┃"); ScreenPrint(0, 20, "┃ ┃"); ScreenPrint(0, 21, "┃ ┃"); ScreenPrint(0, 22, "┃ ┃"); ScreenPrint(0, 23, "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"); }
void CScreen_Dudagi::Mangchi(int x, int y) { ScreenPrint(x - 4, y - 1, "☆┏━┓"); ScreenPrint(x - 4, y, "⊂┃꽝┃〓〓⊂⊃"); ScreenPrint(x - 4, y + 1, "☆┗━┛"); }
void Render() { char BarPrint[100]; ScreenClear(); // GameStatus에 따른 화면 출력 함수 StatusPrint(); // RUNNIG 시 출력 문구 if (GameStatus == RUNNING) { // 상태바 출력 sprintf(BarPrint, "남은 뒤집기 : %d 맞춘 카드 : %d 남은 카드 : %d", selectChance, matchCardCount, (Stage.CardCount / 2) - matchCardCount); ScreenPrint(16, 2, BarPrint); // Board 출력 // 각모서리 ScreenPrint(Board.leftX, Board.topY, "┌"); // 좌측 상단 ScreenPrint(Board.rightX, Board.topY, "┐"); // 우측 상단 ScreenPrint(Board.leftX, Board.bottomY, "└"); // 좌측 하단 ScreenPrint(Board.rightX, Board.bottomY, "┘"); // 우측 하단 // 위아래벽 for (int i = Board.leftX + 2; i < Board.rightX; i++) { ScreenPrint(i, Board.topY, "-"); ScreenPrint(i, Board.bottomY, "-"); } // 좌우벽 for (int i = Board.topY + 1; i < Board.bottomY; i++) { ScreenPrint(Board.leftX, i, "│"); ScreenPrint(Board.rightX, i, "│"); } // Card 출력 if (Stage.CardCount == 12) { for (int i = 0; i < Stage.CardCount; i++) { ScreenPrint(Card[i].X, Card[i].Y, Card[i].PrintForm); } } else { for (int i = 0; i < Stage.CardCount; i++) { ScreenPrint(Card[i].X, Card[i].Y - 2, Card[i].PrintForm); } } // Choice 출력 if (Stage.CardCount == 12) { ScreenPrint(Choice.X, Choice.Y, "▷"); } else { ScreenPrint(Choice.X, Choice.Y - 2, "▷"); } } /* //test 시작 for (int i = 0; i < 4; i++) { ScreenPrint(24 + (10*i), 8, "※"); } for (int i = 0; i < 4; i++) { ScreenPrint(24, 8 + (4*i), "※"); } //test 끝 */ ScreenFlipping(); }
void cDMangchi::Mangchi(int _x, int _y) { ScreenPrint(_x - 4, _y - 1, "≧旨收旬"); ScreenPrint(_x - 4, _y, "↖早統早㏑㏑↖↗"); ScreenPrint(_x - 4, _y + 1, "≧曲收旭"); }
void Render() { char string[100]; char MoveLine[] = { "===============================================================================" }; // 행동범위 제한 ScreenClear(); // 렌더링 StatusPrint(); if (GameStatus == RUNNING || GameStatus == STOP || GameStatus == GO) { sprintf(string, "\tLife : %d Star : %d (총 %d 점 ) 게임 종료 : Q 버튼\n", Player.Life, Star.Catch, Star.SumCatch); ScreenPrint(0, 0, string); ScreenPrint(0, 1, MoveLine); // 1, 2 스테이지에서 MoveLine if (Stage != 2) { ScreenPrint(0, Player.Y - 1, MoveLine); ScreenPrint(0, Player.Y + 1, MoveLine); } ScreenPrint(Player.X, Player.Y, Player_Shape); // 플레이어 표시 // Dot 표시 switch (Stage) { case 2: for (int i = DotNum * 2; i < DotNum * 3; i++) // → { ScreenPrint(Dot[i].X, Dot[i].Y, Dot_Shape[2]); // 점 표시 } for (int i = DotNum * 3; i < DotNum * 4; i++) // ← { ScreenPrint(Dot[i].X, Dot[i].Y, Dot_Shape[3]); // 점 표시 } case 1: for (int i = DotNum; i < DotNum * 2; i++) // ↑ { ScreenPrint(Dot[i].X, Dot[i].Y, Dot_Shape[1]); // 점 표시 } for (int i = 0; i < DotNum; i++) // ↓ { ScreenPrint(Dot[i].X, Dot[i].Y, Dot_Shape[0]); // 점 표시 } break; case 0: for (int i = 0; i < Zero; i++) // ↓ { ScreenPrint(Dot[i].X, Dot[i].Y, Dot_Shape[0]); // 점 표시 } break; } ScreenPrint(Star.X, Star.Y, Star_Shape); // Star 표시 } ScreenFlipping(); }
void DrawUI() { ScreenPrint(0, 0, " # #"); ScreenPrint(0, 1, " # #"); ScreenPrint(0, 2, " # #"); ScreenPrint(0, 3, " # #"); ScreenPrint(0, 4, " # #"); ScreenPrint(0, 5, " # #"); ScreenPrint(0, 6, " # #"); ScreenPrint(0, 7, " # #"); ScreenPrint(0, 8, " # #"); ScreenPrint(0, 9, " # #"); ScreenPrint(0, 10, " # #"); ScreenPrint(0, 11, " # #"); ScreenPrint(0, 12, " # #"); ScreenPrint(0, 13, " # #"); ScreenPrint(0, 14, " # #"); ScreenPrint(0, 15, " # #"); ScreenPrint(0, 16, " # #"); ScreenPrint(0, 17, " # #"); ScreenPrint(0, 18, " # #"); ScreenPrint(0, 19, " # #"); ScreenPrint(0, 20, " ##############################################################"); }
void Sogo_Draw::PlayerTalk() { ScreenPrint(0, 0, "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"); ScreenPrint(0, 1, "┃ ┃"); ScreenPrint(0, 2, "┃ ┃"); ScreenPrint(0, 3, "┃ ┃"); ScreenPrint(0, 4, "┃ /| ━ // ━ |\ ┃"); ScreenPrint(0, 5, "┃ //q ● ● p\ ┃"); ScreenPrint(0, 6, "┃ (┗┳━┳┛) ┃"); ScreenPrint(0, 7, "┃ 우하하~ ┃ㅣ┃ ┃"); ScreenPrint(0, 8, "┃ ┗━┛ ┃"); ScreenPrint(0, 9, "┃ ┏┓━━━┏┓ ┃"); ScreenPrint(0, 10, "┃ ┗┛ ┃ ┃┗┛ ┃"); ScreenPrint(0, 11, "┃ ┃ ▽ ┃♡ ┃"); ScreenPrint(0, 12, "┃ ━━━━ ┃"); ScreenPrint(0, 13, "┃ ┃"); ScreenPrint(0, 14, "┃ :+:이번에는 너를 꼭 처단하리라:+: ┃"); ScreenPrint(0, 15, "┃ ┃"); ScreenPrint(0, 16, "┃ :+: 받아라 나의 정의의 칼을 :+: ┃"); ScreenPrint(0, 17, "┃ ┃"); ScreenPrint(0, 18, "┃ ┃"); ScreenPrint(0, 19, "┃ ┃"); ScreenPrint(0, 20, "┃ ┃"); ScreenPrint(0, 21, "┃ ┃"); ScreenPrint(0, 22, "┃ ┃"); ScreenPrint(0, 23, "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"); }
void StatusPrint() { clock_t CurTime; CurTime = clock(); switch (GameStatus) { case START: sprintf(StatString, "\t\t\t [화살표 피하기 게임] \n\n" "\t\t===================================\n\n" "\t\t날아오는 화살표를 피하는 게임입니다.\n" "\t\t각 스테이지 당 Life는 3 입니다.\n" "\t\tLife가 0이 되면 다음 스테이지로 넘어갑니다.\n" "\t\tStar(★)를 획득하면 점수가 오릅니다.\n" "\t\t스테이지는 총 3레벨로 구성되어있습니다.\n\n" "\t\t===================================\n\n" "\t\t\t - 조 작 법 -\n\n" "\t\t이동 : 방향키 | 일시정지 : SPACE BAR\n" "\t\t* : 플레이어 | ★ : Star (목표)\n\n" "\t\t-----------------------------------\n" "\t\t게임 시작 : SPACE BAR | 게임 종료 : q\n\n\n\n"); ScreenPrint(0, 3, StatString); break; case INIT: if (CurTime - Stat_OldTime < PrintTime) { DotInit(); // Dot 초기화 StarInit(); // Star 초기화 Star.Catch = 0; // Player 초기화 Player.X = 35; Player.Y = 15; Player.Life = 3; if (Stage == 0) { sprintf(StatString, "[INIT] 게임 초기화 \n\n"); ScreenPrint(25, 10, StatString); } else // Stage != 0 { sprintf(StatString, "[INIT] 게임 초기화 \n\n", Stage + 1); ScreenPrint(25, 10, StatString); } } else { GameStatus = READY; Stat_OldTime = CurTime; } break; case READY: if (CurTime - Stat_OldTime < PrintTime) { sprintf(StatString, "[READY] %d 스테이지",Stage+1); ScreenPrint(25, 10, StatString); } else { GameStatus = GO; Stat_OldTime = CurTime; } break; case GO: sprintf(StatString, "SPACE : 게임 시작 "); ScreenPrint(30, 10, StatString); case RUNNING: Stat_OldTime = CurTime; break; case STOP: sprintf(StatString, "[ STOP 화면 ]\n\n" "\t\t\t SPACE : 게임화면으로 돌아감 "); ScreenPrint(30, 10, StatString); break; case NEXT: if (CurTime - Stat_OldTime < PrintTime) { sprintf(StatString, " %d 스테이지 GAME OVER", Stage + 1); ScreenPrint(25, 10, StatString); } else { Stat_OldTime = CurTime; if (Stage < 2) { Stage++; GameStatus = INIT; } else GameStatus = RESULT; } break; case RESULT: sprintf(StatString, "[ 게임 결과 ]\n\n" "\t\t\t 획득한 Star 개수 : %d", Star.SumCatch); ScreenPrint(30, 10, StatString); break; } }
void Sogo_Draw::SuccessScreen() { ScreenPrint(0, 0, "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"); ScreenPrint(0, 1, "┃ ┃"); ScreenPrint(0, 2, "┃ ┃"); ScreenPrint(0, 3, "┃ ┃"); ScreenPrint(0, 4, "┃ ┃"); ScreenPrint(0, 5, "┃ ┃"); ScreenPrint(0, 6, "┃ *. .* ┃"); ScreenPrint(0, 7, "┃ *.┏┓┏┓.*대 ┃"); ScreenPrint(0, 8, "┃ ┏┻┫┣┻┓단 ┃"); ScreenPrint(0, 9, "┃ ┃━┫┣━┃해 ┃"); ScreenPrint(0, 10, "┃ ┃━┫┣━┃요~ ┃"); ScreenPrint(0, 11, "┃ ┗━┛┗━┛ ┃"); ScreenPrint(0, 12, "┃ ┃"); ScreenPrint(0, 13, "┃ ┃"); ScreenPrint(0, 14, "┃ You Win!! ┃"); ScreenPrint(0, 15, "┃ ┃"); ScreenPrint(0, 16, "┃ ┃"); ScreenPrint(0, 17, "┃ ┃"); ScreenPrint(0, 18, "┃ ┃"); ScreenPrint(0, 19, "┃ ┃"); ScreenPrint(0, 20, "┃ ┃"); ScreenPrint(0, 21, "┃ ┃"); ScreenPrint(0, 22, "┃ ┃"); ScreenPrint(0, 23, "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"); }
void Sogo_Draw::ReadyScreen() { ScreenPrint(0, 0, "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"); ScreenPrint(0, 1, "┃ ┃"); ScreenPrint(0, 2, "┃ ┃"); ScreenPrint(0, 3, "┃ ┃"); ScreenPrint(0, 4, "┃ ┃"); ScreenPrint(0, 5, "┃ ┃"); ScreenPrint(0, 6, "┃ ┃"); ScreenPrint(0, 7, "┃ ┃"); ScreenPrint(0, 8, "┃ ● ┃"); ScreenPrint(0, 9, "┃ ☜〓━┃┑ ┃"); ScreenPrint(0, 10, "┃ ☜〓┛ ┃"); ScreenPrint(0, 11, "┃ ┏┻┓ ┃"); ScreenPrint(0, 12, "┃ ┃"); ScreenPrint(0, 13, "┃ ┃"); ScreenPrint(0, 14, "┃ ┃"); ScreenPrint(0, 15, "┃ ┃"); ScreenPrint(0, 16, "┃ ┃"); ScreenPrint(0, 17, "┃ ┃"); ScreenPrint(0, 18, "┃ ┃"); ScreenPrint(0, 19, "┃ ┃"); ScreenPrint(0, 20, "┃ ┃"); ScreenPrint(0, 21, "┃ ┃"); ScreenPrint(0, 22, "┃ ┃"); ScreenPrint(0, 23, "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"); }
void Sogo_Draw::InitScreen() // 게임 소개 화면 { ScreenPrint(0, 0, "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"); ScreenPrint(0, 1, "┃ ┃"); ScreenPrint(0, 2, "┃ ┃"); ScreenPrint(0, 3, "┃ ┃"); ScreenPrint(0, 4, "┃ ┃"); ScreenPrint(0, 5, "┃ ┃"); ScreenPrint(0, 6, "┃ ┏━━━━━━━━┓ ┃"); ScreenPrint(0, 7, "┃ ┃★ Sogo(쏘고) ★┃ ┃"); ScreenPrint(0, 8, "┃ ┗━━━━━┳━━┛ ┃"); ScreenPrint(0, 9, "┃ /)/) ┃ ☆ ┃"); ScreenPrint(0, 10, "┃ ★(*'')/ ┃"); ScreenPrint(0, 11, "┃ ┃"); ScreenPrint(0, 12, "┃ ┃"); ScreenPrint(0, 13, "┃ ┃"); ScreenPrint(0, 14, "┃ ┃"); ScreenPrint(0, 15, "┃ ┃"); ScreenPrint(0, 16, "┃ ┃"); ScreenPrint(0, 17, "┃ ┏━━━┓★ 스페이스 키를 눌러 주세요!! ┃"); ScreenPrint(0, 18, "┃ ┃┃┃┃┣┓ ┃"); ScreenPrint(0, 19, "┃ ┗┻┻┻┻┛ ┃"); ScreenPrint(0, 20, "┃ ┃"); ScreenPrint(0, 21, "┃ ┃"); ScreenPrint(0, 22, "┃ ┃"); ScreenPrint(0, 23, "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"); }
// 상태에 따른 출력 & 변화 void StatusPrint() { clock_t CurTime = clock(); switch (GameStatus) { case START: sprintf(StatString, "[시작화면]"); ScreenPrint(25, 10, StatString); break; case INIT: // 초기화 for (int i = 0; i < 4; i++) { Portal[i].IsEnable = false; // 모든 Portal 비활성화 } // Start, Goal 지점 초기화 Goal.X = 70; Goal.Y = 18; SetStartGoal(); // Map 초기화 MapIndex = StartP.whereMap; CreateBlock(MapIndex); // Player 초기화 Player.X = PlayerFirstX; Player.Y = PlayerFirstY; Player.Life = 15; Player.Direction = M_RIGHT; Player.OldTime = clock(); Player.IsReady = 1; Player.MoveTime = 170; // 화면 출력 if (CurTime - Stat_OldTime < PrintTime) { sprintf(StatString, "[INIT 화면]"); ScreenPrint(30, 10, StatString); } else { GameStatus = READY; Stat_OldTime = CurTime; } break; case READY: if (CurTime - Stat_OldTime < PrintTime) { sprintf(StatString, "[READY 화면]"); ScreenPrint(30, 10, StatString); } else { GameStatus = RUNNING; Stat_OldTime = CurTime; } break; case RUNNING: if (Player.Life <= 0) { GameStatus = FAILED; // 게임 오버 } break; case SUCCESS: sprintf(StatString, "[SUCCESS 화면]"); ScreenPrint(30, 10, StatString); break; case FAILED: sprintf(StatString, "[FAILED 화면]"); ScreenPrint(30, 10, StatString); break; case RESULT: sprintf(StatString, "[RESULT 화면]"); ScreenPrint(30, 10, StatString); break; default: break; } }
void StatusPrint() // GameStatus에 따른 화면 출력 및 상태 변화 { clock_t CurTime = clock(); // 현재 시각 switch (GameStatus) { case START: // 시작 문구 초기화 sprintf(statPrint, "숫 자 야 구\n\n" "지금부터 숫자야구를 시작하겠습니다.\n\n" "게임 규칙\n\n" "정해진 세 자리 수를 맞추는 게임입니다.\n정해진 수를 예측하고 세 자리 수를 입력하면,\n" "숫자와 자리가 맞을 경우 스트라이크\n" "숫자는 맞는데 자리가 틀릴 경우 볼입니다.\n" "ex) 정답 123, 입력한 값 132 -> 1 스트라이크 2볼\n\n" "입력방법 : 숫자를 하나씩 입력하며, 전부 입력한 후엔 [Enter]를 누릅니다.\n\n" "[Space Bar]키를 누르면 시작합니다."); // 출력 ScreenPrint(10, 2, statPrint); break; case INIT: // 게임 초기화 (void Init()에서 따왔음) // Computer의 정답 설정 SetAnswer(); // 목숨 설정 Player.life = 10; // strike, ball 개수 설정 strike = 0; ball = 0; // InputBox 초기화 for (int i = 0; i < 3; i++) { InBox[i].num = -1; InBox[i].X = 10 + (4 * i); InBox[i].Y = 9; } // 추측 문구 초기화 sprintf(gueAftPrint, "%d 스트라이크, %d 볼, 남은 목숨 : %d", strike, ball, Player.life); // 화면출력 if (CurTime - stat_OldTime < 3 * 1000) // 3초 동안 출력 { sprintf(statPrint, "[컴퓨터 숫자 세팅 중]"); ScreenPrint(25, 8, statPrint); } else { GameStatus = RUNNING; // 3초 출력 후, 게임 시작. stat_OldTime = CurTime; // 마지막 실행 시각 = 현재 시각 } break; case RUNNING: break; case FINISH: break; default: break; } }
void Render() { ScreenClear(); char TheTopBar[81]; StatusPrint(); // 상태별 화면 출력 // 게임 화면 if (GameStatus == RUNNING) { // 상단바 출력 sprintf(TheTopBar, "현 스테이지 : %d | Life : %d \t\t [Map%d]", Stage.level + 1, Player.Life, MapIndex); ScreenPrint(17, 2, TheTopBar); // Board 출력 // 각모서리 ScreenPrint(Board.leftX, Board.topY, "┌"); // 좌측 상단 ScreenPrint(Board.rightX, Board.topY, "┐"); // 우측 상단 ScreenPrint(Board.leftX, Board.bottomY, "└"); // 좌측 하단 ScreenPrint(Board.rightX, Board.bottomY, "┘"); // 우측 하단 // 위아래벽 for (int i = Board.leftX + 2; i < Board.rightX; i++) { ScreenPrint(i, Board.topY, "-"); ScreenPrint(i, Board.bottomY, "-"); } // 좌우벽 for (int i = Board.topY + 1; i < Board.bottomY; i++) { ScreenPrint(Board.leftX, i, "│"); ScreenPrint(Board.rightX, i, "│"); } // Goal 출력 if (Goal.IsEnable) { ScreenPrint(Goal.X, Goal.Y, "G"); } // Player 출력 ScreenPrint(Player.X, Player.Y, "-●-"); // Block 출력 for (int i = 0; i < MaxBlockCount; i++) { if (Block[i].X == 0 && Block[i].Y == 0) continue; // 좌표가 주어지지 않은 Block 표시 X ScreenPrint(Block[i].X, Block[i].Y, "■"); } // Portal 출력 for (int i = 0; i < 4; i++) { if (Portal[i].IsEnable == false) // 유효하지 않은 포탈이면 continue; ScreenPrint(Portal[i].X, Portal[i].Y, "★"); } } ScreenFlipping(); }
void CScreen_Dudagi::FailureScreen() { ScreenPrint(0, 0, "┏━━━━━━━━━━━━━━━━━━━━┓"); ScreenPrint(0, 1, "┃ ┃"); ScreenPrint(0, 2, "┃ ┃"); ScreenPrint(0, 3, "┃ ┃"); ScreenPrint(0, 4, "┃ ┃"); ScreenPrint(0, 5, "┃ ┃"); ScreenPrint(0, 6, "┃ ┎-━━-┒ ┃"); ScreenPrint(0, 7, "┃ d ご,.ご b ┃"); ScreenPrint(0, 8, "┃ ┃┭─┮┃ ┃"); ScreenPrint(0, 9, "┃ ┖┦│┞┚ ┃"); ScreenPrint(0, 10, "┃ ┕┷┙ ┃"); ScreenPrint(0, 11, "┃ 스테이지 ┃"); ScreenPrint(0, 12, "┃ ┃"); ScreenPrint(0, 13, "┃ 미션 실패 !!!! ┃"); ScreenPrint(0, 14, "┃ ┃"); ScreenPrint(0, 15, "┃ ┃"); ScreenPrint(0, 16, "┃ ┃"); ScreenPrint(0, 17, "┃ 다시 하시겠습니까? ( y/n ) ┃"); ScreenPrint(0, 18, "┃ ┃"); ScreenPrint(0, 19, "┃ ┃"); ScreenPrint(0, 20, "┃ ┃"); ScreenPrint(0, 21, "┃ ┃"); ScreenPrint(0, 22, "┃ ┃"); ScreenPrint(0, 23, "┗━━━━━━━━━━━━━━━━━━━━┛"); }
void StatusPrint() { clock_t CurTime = clock(); switch (GameStatus) { case START: sprintf(StatString, "\t\t\t [같은 카드 맞추기] \n\n" "\t\t===================================\n\n" "\t\t같은 카드를 맞추는 게임입니다.\n" "\t\t스테이지 당 뒤집기 제한이 있습니다.\n" "\t\t카드를 전부 맞추면 미션 성공입니다.\n" "\t\t뒤집기 기회가 0이 되면 미션 실패입니다.\n" "\t\t스테이지는 총 3레벨로 구성되어있습니다.\n\n" "\t\t===================================\n\n" "\t\t\t - 조 작 법 -\n\n" "\t\t이동 : 방향키 | 카드 선택 : SPACE BAR\n" "\t\t-----------------------------------\n" "\t\t게임 시작 : SPACE BAR | 게임 종료 : q\n\n\n\n"); ScreenPrint(0, 3, StatString); break; case INIT: // 초기화 // Card 초기화 Stage.CardCount = CardCountArray[Stage.Level]; // Stage Card 수 Stage.TypeCount = TypeCountArray[Stage.Level]; // Stage CardType 수 CreateCard(); // 카드 생성 함수 matchCardCount = 0; // 맞춘 Card 수 for (int i = 0; i < MaxCardCount; i++) { IsMatchCard[i] = false; // 이미 맞춘 Card 배열 } // Chocie 초기화 Choice.select = 9; // Board 초기화 Board.leftX = 15; Board.rightX = BOARD_WIDTH - 15; Board.topY = 4; Board.bottomY = BOARD_HEIGH - 4; // Game 상태 초기화 selectChance = ChanceArray[Stage.Level]; // 화면출력 if (CurTime - Stat_OldTime < PrintTime) { sprintf(StatString, "[INIT 화면]"); ScreenPrint(30, 10, StatString); } else { GameStatus = READY; Stat_OldTime = CurTime; } break; case READY: if (CurTime - Stat_OldTime < PrintTime) { sprintf(StatString, "[READY] %d 스테이지", Stage.Level + 1); ScreenPrint(25, 10, StatString); } else { GameStatus = RUNNING; Stat_OldTime = CurTime; } break; case RUNNING: if (matchCardCount == (Stage.CardCount / 2)) { GameStatus = SUCCESS; } else if (selectChance == 0) { GameStatus = FAILED; } break; case STOP: sprintf(StatString, "[STOP 화면]"); ScreenPrint(30, 10, StatString); break; case SUCCESS: if (Stage.Level < 2) { sprintf(StatString, "%d 스테이지 CLEAR \n\n" "\t\t\t다음 스테이지? [Y/N]", Stage.Level + 1); } else { sprintf(StatString, "모든 스테이지 CLEAR \n\n" "\t\t\t게임 결과창 [Y]"); } ScreenPrint(25, 10, StatString); break; case FAILED: sprintf(StatString, " %d 스테이지 GAME OVER\n\n" "\t\t\t 재도전? [Y/N]", Stage.Level + 1); ScreenPrint(25, 10, StatString); break; case RESULT: sprintf(StatString, "게임 종료. 수고하셨습니다. \n" "\t\t\t %d 스테이지까지 플레이하셨습니다. \n" "\t\t\t 나가려면 Q를 누르세요.", Stage.Level + 1); ScreenPrint(30, 10, StatString); break; default: break; } }
void CScreen_Dudagi::ResultScreen() { ScreenPrint(0, 0, "┏━━━━━━━━━━━━━━━━━━━━┓"); ScreenPrint(0, 1, "┃ ┃"); ScreenPrint(0, 2, "┃ ┃"); ScreenPrint(0, 3, "┃ ┃"); ScreenPrint(0, 4, "┃ ┃"); ScreenPrint(0, 5, "┃ ┃"); ScreenPrint(0, 6, "┃ ┃"); ScreenPrint(0, 7, "┃ ((( 두더지 잡기 게임 Score )))) ┃"); ScreenPrint(0, 8, "┃ ┃"); ScreenPrint(0, 9, "┃ ┃"); ScreenPrint(0, 10, "┃ ┃"); ScreenPrint(0, 11, "┃ 총 점수 : ┃"); ScreenPrint(0, 12, "┃ ┃"); ScreenPrint(0, 13, "┃ ┃"); ScreenPrint(0, 14, "┃ ┃"); ScreenPrint(0, 15, "┃ ┃"); ScreenPrint(0, 16, "┃ ┃"); ScreenPrint(0, 17, "┃ ┃"); ScreenPrint(0, 18, "┃ ┃"); ScreenPrint(0, 19, "┃ ┃"); ScreenPrint(0, 20, "┃ ┃"); ScreenPrint(0, 21, "┃ ┃"); ScreenPrint(0, 22, "┃ ┃"); ScreenPrint(0, 23, "┗━━━━━━━━━━━━━━━━━━━━┛"); }
void CScreen_Dudagi::SuccessScreen() { ScreenPrint(0, 0, "┏━━━━━━━━━━━━━━━━━━━━┓"); ScreenPrint(0, 1, "┃ ┃"); ScreenPrint(0, 2, "┃ ┃"); ScreenPrint(0, 3, "┃ ┃"); ScreenPrint(0, 4, "┃ // / // \\\ ┃"); ScreenPrint(0, 5, "┃ │/\ /\│♬ ┃"); ScreenPrint(0, 6, "┃ │≡ ▽ ≡│○ ┃"); ScreenPrint(0, 7, "┃ \_________/// ┃"); ScreenPrint(0, 8, "┃ ┃"); ScreenPrint(0, 9, "┃ ┃"); ScreenPrint(0, 10, "┃ ┃"); ScreenPrint(0, 11, "┃ 스테이지 ┃"); ScreenPrint(0, 12, "┃ ┃"); ScreenPrint(0, 13, "┃ 미션 성공 !!!! ┃"); ScreenPrint(0, 14, "┃ ┃"); ScreenPrint(0, 15, "┃ ┃"); ScreenPrint(0, 16, "┃ ┃"); ScreenPrint(0, 17, "┃ 잡은 두더지 : ┃"); ScreenPrint(0, 18, "┃ ┃"); ScreenPrint(0, 19, "┃ 총점 : ┃"); ScreenPrint(0, 20, "┃ ┃"); ScreenPrint(0, 21, "┃ ┃"); ScreenPrint(0, 22, "┃ ┃"); ScreenPrint(0, 23, "┗━━━━━━━━━━━━━━━━━━━━┛"); }
void Sogo_Draw::ScreenLine() { ScreenPrint(0, 0, "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"); ScreenPrint(0, 1, "┃ ┃"); ScreenPrint(0, 2, "┃ + ┃"); ScreenPrint(0, 3, "┃ ┃"); ScreenPrint(0, 4, "┃ + ┃"); ScreenPrint(0, 5, "┃ ┃"); ScreenPrint(0, 6, "┃ + ┃"); ScreenPrint(0, 7, "┃ ┃"); ScreenPrint(0, 8, "┃ ┃"); ScreenPrint(0, 9, "┃ + + ┃"); ScreenPrint(0, 10, "┃ ┃"); ScreenPrint(0, 11, "┃ ┃"); ScreenPrint(0, 12, "┃ ┃"); ScreenPrint(0, 13, "┃ ┃"); ScreenPrint(0, 14, "┃ ┃"); ScreenPrint(0, 15, "┃ + + ┃"); ScreenPrint(0, 16, "┃ + ┃"); ScreenPrint(0, 17, "┃ ┃"); ScreenPrint(0, 18, "┃ ┃"); ScreenPrint(0, 19, "┃ ┃"); ScreenPrint(0, 20, "┃ ┃"); ScreenPrint(0, 21, "┃ + + ┃"); ScreenPrint(0, 22, "┃ ┃"); ScreenPrint(0, 23, "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"); }
void Draw() { int i; ScreenClear(); SetColor(11, 0); DrawUI(); SetColor(9, 0); ScreenPrint(g_nCharXPos, g_nCharYPos, "!!"); SetColor(12, 0); for (i = 0; i < 3; i++){ ScreenPrint(g_nEnemyXPos[i], g_nEnemyYPos[i], "00"); } SetColor(14, 0); ScreenPrint(g_nCoinXPos, g_nCoinYPos, "$"); for (i = 0; i < 5; i++){ if (g_nBulletFalg[i] == TRUE) { SetColor(14, 0); ScreenPrint(g_nBulletXPos[i], g_nBulletYPos[i], "||"); } } if (g_nItemKeyFlag == TRUE){ SetColor(13, 0); ScreenPrint(g_nItemXPos, g_nItemYPos, "+"); } sprintf(strTemp, "%d", g_nLife); sprintf(strTemp2, "%d", g_nTimeElapsed); sprintf(strTemp3, "%d", g_nKills); SetColor(15, 0); ScreenPrint(0, 22, "Life: "); ScreenPrint(6, 22, strTemp); ScreenPrint(0, 24, "Score: "); ScreenPrint(7, 24, strTemp2); ScreenPrint(0, 23, "Kills: "); ScreenPrint(7, 23, strTemp3); ScreenFlipping(); }
void CScreen_Dudagi::RunningScreen() { ScreenPrint(0, 0, "┏━━━━━━━━━━━━━━━━━━━━┓"); ScreenPrint(0, 1, "┃ ┃"); ScreenPrint(0, 2, "┃ ┃"); ScreenPrint(0, 3, "┃ ┃"); ScreenPrint(0, 4, "┃ ┃"); ScreenPrint(0, 5, "┃ ┃"); ScreenPrint(0, 6, "┃ ┃"); ScreenPrint(0, 7, "┃ ┃"); ScreenPrint(0, 8, "┃ ┃"); ScreenPrint(0, 9, "┃ ┃"); ScreenPrint(0, 10, "┃ ┃"); ScreenPrint(0, 11, "┃ ┃"); ScreenPrint(0, 12, "┃ ┃"); ScreenPrint(0, 13, "┃ ┃"); ScreenPrint(0, 14, "┃ ┃"); ScreenPrint(0, 15, "┃ ┃"); ScreenPrint(0, 16, "┃ ┃"); ScreenPrint(0, 17, "┃ ┃"); ScreenPrint(0, 18, "┃ ┃"); ScreenPrint(0, 19, "┃ ○ ● ┃"); ScreenPrint(0, 20, "┃ ┏■┛┏□┛ ┃"); ScreenPrint(0, 21, "┃ ┛┓ ┛┓ ┃"); ScreenPrint(0, 22, "┃ ┃"); ScreenPrint(0, 23, "┗━━━━━━━━━━━━━━━━━━━━┛"); }