Skip to content

Instantly share code, notes, and snippets.

@surinoel
Last active August 12, 2019 07:53
Show Gist options
  • Select an option

  • Save surinoel/ffcd3aa790abf4c9c17ea5fbb101de45 to your computer and use it in GitHub Desktop.

Select an option

Save surinoel/ffcd3aa790abf4c9c17ea5fbb101de45 to your computer and use it in GitHub Desktop.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char board[][50] = {
"-------------------------------------------\n",
"| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |\n",
"-------------------------------------------\n",
"| | | | | | | | | | | | | | | | | | | | | |\n",
"-------------------------------------------\n",
"| | | | | | | | | | |\n",
"-------------------------------------------\n"
};
int frame[11], is_strike[11], is_spare[11];
int score;
int totalsum(int frameNum) {
int sum = 0;
for (int i = 1; i <= frameNum; i++) {
sum += frame[i];
}
return sum;
}
void print_scoreboard(void) {
for(int i=0; i<7; i++) {
printf("%s", board[i]);
}
}
void setScore(int frame, int tryNum, int score, int framescore) {
system("clear");
char grp;
if(tryNum == 1 && framescore == 10) {
grp = 'X';
}
else if(frame == 10 && tryNum == 2 && framescore == 10) {
grp = 'X';
}
else if(tryNum == 2 && framescore == 10) {
grp = '/';
}
else if(frame == 10 && (tryNum == 2 || tryNum == 3) && score == 10) {
grp = 'X';
}
else if(frame == 10 && tryNum == 3 && framescore == 10) {
grp = '/';
}
else {
grp = score + '0';
}
if(frame <= 9) {
if(tryNum == 1) {
board[3][4*frame-3] = grp;
}
else {
board[3][4*frame-1] = grp;
}
}
else {
if(tryNum == 1) {
board[3][4*frame-3] = grp;
}
else if(tryNum == 2) {
board[3][4*frame-1] = grp;
}
else {
board[3][4*frame+1] = grp;
}
}
print_scoreboard();
}
void setFrameScore(int frame, int framescore) {
system("clear");
char buf[10];
sprintf(buf, "%3d", framescore);
strncpy(&board[5][4*frame-3], buf, 3);
print_scoreboard();
}
int main(void) {
print_scoreboard();
for (int i = 1; i <= 10; i++) {
printf("%d frame first score : ", i);
scanf("%d", &score);
int frameScore = 0;
frameScore += score; frame[i] += score;
setScore(i, 1, score, frameScore);
if (i - 2 >= 1 && is_strike[i - 2] > 0) {
is_strike[i - 2] -= 1;
frame[i - 2] += score;
if (is_strike[i - 2] == 0) {
printf("%d frameScore : %d\n", i - 2, totalsum(i - 2));
setFrameScore(i - 2, totalsum(i-2));
}
}
if (i - 1 >= 1 && is_strike[i - 1] > 0) {
is_strike[i - 1] -= 1;
frame[i - 1] += score;
if (is_strike[i - 1] == 0) {
printf("%d frameScore : %d\n", i - 1, totalsum(i - 1));
setFrameScore(i - 1, totalsum(i-1));
}
}
if (i - 1 >= 1 && is_spare[i - 1] > 0) {
is_spare[i - 1] -= 1;
frame[i - 1] += score;
if (is_spare[i - 1] == 0) {
printf("%d frameScore : %d\n", i - 1, totalsum(i - 1));
setFrameScore(i - 1, totalsum(i-1));
}
}
if (score == 10) {
is_strike[i] += 2;
continue;
}
printf("%d frame second score : ", i); scanf("%d", &score);
frameScore += score; frame[i] += score;
setScore(i, 2, score, frameScore);
if (i - 1 >= 1 && is_strike[i - 1] > 0) {
is_strike[i - 1] -= 1;
frame[i - 1] += score;
if (is_strike[i - 1] == 0) {
printf("%d frameScore : %d\n", i - 1, totalsum(i - 1));
setFrameScore(i - 1, totalsum(i-1));
}
}
if (frameScore == 10) {
is_spare[i] += 1;
continue;
}
printf("%d frameScore : %d\n", i, totalsum(i));
setFrameScore(i, totalsum(i));
}
if (is_strike[10]) {
printf("10 frame second score : "); scanf("%d", &score);
if (is_strike[9]) {
frame[9] += score;
is_strike[9] -= 1;
printf("9 frameScore : %d\n", totalsum(9));
setFrameScore(9, totalsum(9));
}
int subscore = 0;
frame[10] += score;
subscore += score;
setScore(10, 2, score, subscore);
printf("10 frame third score : "); scanf("%d", &score);
frame[10] += score;
subscore += score;
setScore(10, 3, score, subscore);
printf("10 frameScore : %d\n", totalsum(10));
setFrameScore(10, totalsum(10));
}
else if (is_spare[10]) {
printf("10 frame second score : "); scanf("%d", &score);
frame[10] += score;
setScore(10, 3, score, frame[10]);
printf("10 frameScore : %d\n", totalsum(10));
setFrameScore(10, totalsum(10));
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment