#include #include #include #define WIDTH 50 #define HEIGHT 60 int main(int argc, char **argv) { printf("" ); int fretsCount = strlen(argv[1]); //var origin = { x: 0, y: 0}; //var props = { width: 50, height: 60 }; // horizontals int i; for (i = 0; i <= 4; i++) { printf("\n", 0 - 1, (i * 60/4), 0+50+1, (i * 60/4) ); } // verts for ( i = 0; i < fretsCount; i++ ) { printf("\n", 0 + (i * 50 / (fretsCount - 1)), 0, 0 + (i * 50 / (fretsCount - 1)), 0 + 60 ); } // label printf("%s\n", 0 + 50/2, -15, argv[2] ); // If any dots are after 4, adjust the root to be the lowest non-zero fret // If the root is zero , thicken the top fret int baseFret = 0; bool adjBaseFret = false; int lowestFret = 0; int j; for (j=0; j < strlen(argv[1]); j++) { if (argv[1][j] > '0' && argv[1][j] <= '9') { if (argv[1][j] - '0' < lowestFret || lowestFret == 0) { lowestFret = argv[1][j] - '0'; } if (argv[1][j] > '4') { adjBaseFret = true; } } } if (adjBaseFret) { baseFret = lowestFret - 1; } // dots for (j=0; j < fretsCount; j++) { if (argv[1][j] > '0' && argv[1][j] <= '9') { printf("\n", (j * WIDTH) / (fretsCount - 1), (HEIGHT/4) * ((argv[1][j] - '0') - baseFret) - 7 ); } else { printf("%c\n", (j * WIDTH) / (fretsCount - 1),-2,argv[1][j] ); } } // base fret indicator if (baseFret > 0) { printf("%d\n", -10, 13, baseFret + 1 ); } else { printf("%d\n", -10, 43, 3 ); } printf(""); }