Study/리눅스
리눅스 C언어로 컴파일하기 Bowling CUI (2)
차희빈
2014. 9. 17. 17:54
procBoard.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 | #include <stdio.h> #include <string.h> #include <stdlib.h> #include "procBoard.h" static char board[7][70] = { " ---------------------------------------- ", "| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |", " ---------------------------------------- ", "| | | | | | | | | | | | | | | | | | | | | |", " ---------------------------------------- ", "| | | | | | | | | | |", " ---------------------------------------- " }; void printBoard(void) { system("clear"); //shell clear command int i; for(i = 0; i < 7; ++i) printf("%s\n", &board[i][0]); //board[i] + 0 ; => board[i] } void setScore(int frame, int index, int score) { char ch; if(index == 2 && (board[3][4*(frame-1)+ 1] - '0' + score == 10) ) ch='/'; else if( index == 1 && score == 10 || frame == 10 && score == 10 ) ch= 'X'; else ch = '0' + score; board[3][4*(frame-1) + 2*(index-1) + 1] = ch; } void setFrameScore(int frame, int frameScore) { char str[4]; sprintf( str, "%3d", frameScore); strncpy(board[5] + 4*(frame-1) + 1, str, 3); } |
bowling.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 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | #include <stdio.h> #include "procBoard.h" int main(void) { int scores[10][3]={0}; int score10[4] = {0}; int frameScore[11]={0}; int i; printBoard(); for(i=1; i<=9; i++) //[1-9 frame] { //first bowling printf("%d frame first Score: ",i); scanf("%d", &scores[i][1]); // scores[i]+1 setScore(i, 1, scores[i][1]); printBoard(); if( (i >= 2) && (scores[i-1][1] != 10) && ((scores[i-1][1] + scores[i-1][2]) == 10) ) {// i-1 frame = spare frameScore[i-1] = frameScore[i-2] + 10 + scores[i][1]; //printf("%d frameScore: %d\n", i-1, frameScore[i-1]); setFrameScore(i-1, frameScore[i-1]); printBoard(); } else if( (i >= 3) && (scores[i-2][1] == 10) && (scores[i-1][1] == 10) ) {// i-2 frame = strike and i-1 frame= strike frameScore[i-2] = frameScore[i-3] + 20 + scores[i][1]; //printf("%d frameScore: %d\n", i-2, frameScore[i-2]); setFrameScore(i-2, frameScore[i-2]); printBoard(); } if(scores[i][1] < 10) { //second bowling printf("%d frame second score: ", i); scanf("%d", scores[i]+2); // scores[i][2] setScore(i, 2, scores[i][2]); printBoard(); if( (i >= 2) && (scores[i-1][1] == 10) ) { frameScore[i-1] = frameScore[i-2] + 10 + scores[i][1] + scores[i][2]; //printf("%d frameScore: %d\n", i-1, frameScore[i-1]); setFrameScore(i-1, frameScore[i-1]); printBoard(); } if( (scores[i][1] + scores[i][2]) < 10) { frameScore[i] = frameScore[i-1] + scores[i][1] + scores[i][2]; //printf("%d frameScore: %d\n", i, frameScore[i]); setFrameScore(i, frameScore[i]); printBoard(); } } } // 10 frame printf("10 frame first score : "); scanf("%d", &score10[1]); setScore(10, 1, score10[1]); printBoard(); if( (scores[9][1] != 10) && (scores[9][1] + scores[9][2] == 10) ) { frameScore[9] = frameScore[8] + 10 + score10[1]; //printf("%d frameScore : %d\n", 9, frameScore[9]); setFrameScore(9, frameScore[9]); printBoard(); } else if( (scores[8][1] == 10) && (scores[9][1] == 10) ) { frameScore[8] = frameScore[7] + 20 + score10[1]; //printf("%d frameScore : %d\n", 8, frameScore[8]); setFrameScore(8, frameScore[8]); printBoard(); } printf("10 frame second score : "); scanf("%d", &score10[2]); setScore(10, 2, score10[2]); printBoard(); if(scores[9][1] == 10) { frameScore[9] = frameScore[8] + 10 + score10[1] + score10[2]; //printf("%d frameScore : %d\n", 9, frameScore[9]); setFrameScore(9, frameScore[9]); printBoard(); } if( (score10[1] + score10[2]) < 10) { frameScore[10] = frameScore[9] + score10[1] + score10[2]; //printf("%d frameScore : %d\n", 9, frameScore[9]); setFrameScore(10, frameScore[10]); printBoard(); } else //( (score10[1]==10) || ((score10[1] + score10[2]) >= 10) ) { printf("10 frame third score : "); scanf("%d", &score10[3]); setScore(10, 3, score10[3]); printBoard(); frameScore[10] = frameScore[9] + score10[1] + score10[2] + score10[3]; //printf("%d frameScore : %d\n", 10, frameScore[10]); setFrameScore(10, frameScore[10]); printBoard(); } return 0; } |
procBoard.h
1 2 3 4 5 6 7 8 | #ifndef PROCBOARD_H #define PROCBOARD_H void printBoard(void); void setScore(int frame, int index, int score); void setFrameScore(int frame, int frameScore); #endif |
Ps -> CUI = 캐릭터 유저 인터페이스