Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 코딩독학
- 주가예측
- 프로그래머스
- java정리
- 코딩
- 이웃한 칸
- 자바
- Project
- 프로그래밍
- 자바독학
- 코테
- 개발자
- 백준
- Python
- 사물인터넷
- 모의 주식
- 풀스택프레임워크
- 프로그램
- 개인프로젝트
- C++
- 코딩테스트
- Reflex
- SNS
- backend
- 코스닥
- frontend
- java
- 개발
- 빅데이터
- 자바정리
Archives
- Today
- Total
Creative Code
main.c(볼링보드판) 본문
※main.c파일
#include <stdio.h>
#include "board.h"
int main(void)
{
int frameScores[11] = {0,};
int scores[11][3] = {0,};
printBoard();
for (int i = 1; i<=10; i++){
printf("%d frame first cast : ", i);
scanf("%d",&scores[i][1]);
setScore(i,1,scores[i][1]);
if (i>=2 && scores[i-1][1] != 10 && scores[i-1][1] + scores[i-1][2] == 10) {
int bonus = scores[i][1];
frameScores[i-1] = frameScores[i-2] +10 +bonus;
//printf("%d frameScore :%d\n", i-1, frameScores[i-1]);
setFrameScore(i-1,frameScores[i-1]);
} else if (i>=3 && scores[i-2][1] == 10 && scores[i-1][1] == 10){
int bonus = 10 + scores[i][1];
frameScores[i-2] = frameScores[i-3] + 10 + bonus;
//printf("%d frameScore : %d\n",i-2, frameScores[i-2]);
setFrameScore(i-2,frameScores[i-2]);
}
printBoard();
if (i == 10 || scores[i][1] != 10){
printf("%d frame second cast : ",i);
scanf("%d",&scores[i][2]);
setScore(i,2,scores[i][2]);
if (i>=2 && scores[i-1][1] == 10){
int bonus = scores[i][1] + scores[i][2];
frameScores[i-1] = frameScores[i-2]+10+bonus;
//printf("%d frameScore : %d\n", i-1, frameScores[i-1]);
setFrameScore(i-1,frameScores[i-1]);
}
if (scores[i][1] + scores[i][2] <10){
frameScores[i] = frameScores[i-1] + scores[i][1] + scores[i][2];
//printf("%d frameScore :%d\n",i,frameScores[i]);
setFrameScore(i,frameScores[i]);
}
}
// 10 frame third cast???
if (i == 10 && scores[i][1] + scores[i][2] >= 10) {
int thirdCast;
printf("%d frame third cast : ",i);
scanf("%d",&thirdCast);
setScore(10,3,thirdCast);
frameScores[i] = frameScores[9] + scores[i][1] + scores[i][2] + thirdCast;
//printf("%d frameScore : %d\n", i, frameScores[i]);
setFrameScore(i,frameScores[i]);
}
printBoard();
}
return 0;
}
※board.h파일
#ifndef BOARD_H
#define BOARD_H
void printBoard(void);
void setFrameScore(int frame, int frameScore);
void setScore(int frame, int cast, int score);
#endif
※board.c파일
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static char board[7][44] = {
" ----------------------------------------- ",
"| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |",
" ----------------------------------------- ",
"| | | | | | | | | | | | | | | | | | | | | |",
" ----------------------------------------- ",
"| | | | | | | | | | |",
" ----------------------------------------- "
};
void setScore(int frame, int cast, int score)
{
// '0' ~ '9' or '/' or 'X'
char ch;
if (cast == 2 && (board[3][4*(frame-1)+1] - '0') + score == 10) {
ch = '/';
} else if (cast == 1 && score == 10 || frame == 10 && score == 10) {
ch = 'X';
} else {
ch = score + '0';
}
board[3][4*(frame-1) +2*(cast-1)+1] = ch;
}
void setFrameScore(int frame, int frameScore)
{
char buf[4];
sprintf(buf, "%3d",frameScore); // framescore가 문자열배열에 출력
strncpy(&board[5][4*(frame-1)+1],buf,3); // 문자열중에 3개만 복사 (널문자 제외)
}
void printBoard(void)
{
system("clear");
for (int i = 0; i<7; i++){
printf("%s\n",board[i]);
}
}
'C Programming' 카테고리의 다른 글
variantArray.c(malloc) (0) | 2023.08.25 |
---|---|
main.c(스택) (0) | 2023.08.24 |
stringArray.c(문자열배열-이중포인터) (0) | 2023.08.08 |
hello7.c(문자열 배열-포인터) (0) | 2023.08.08 |
atoi.c(문자열을 숫자로 출력) (0) | 2023.08.07 |