I want to make a hanoi tower to graphic but I have a problem
the tower don't work well, So I wan't to get some help of you.
I made this by C, and I take my code under this article
thank you.
#define _CRT_SECURE_NO_WARNINGS #include #define FROM 0 #define TEMP 1 #define TO 2 #define MAXDISK 10 typedef struct { int count; int buffer[MAXDISK]; } ROD; ROD rod[3] = { 0,}; void hanoi(int n, int disknum, int rodFrom, int rodTemp, int rodTo); void moveDisk(int diskNum, int rodFrom, int rodTo); void removeDisk(int diskNum, int rodFrom); void addDisk(int diskNum, int rodTo); void printProcess(int diskNum); int main() { int n = 0; printf("number of disk : "); scanf("%d", &n); for (int i = 0; i < 3; i++) { for (int j = 0; j < n; j++) { rod[i].buffer[j] = 0; } } rod[0].count = n; for (int i = 0; i < n; i++) { rod[0].buffer[i] = i+1; } rod[1].count = 0; rod[2].count = 0; printProcess(n); hanoi(n, n, FROM, TEMP, TO); return 0; } void hanoi(int n, int disknum, int rodFrom, int rodTemp, int rodTo) { moveDisk(n, rodFrom, rodTo); hanoi(n, disknum-1 , rodFrom, rodTo, rodTemp); hanoi(n, disknum-1 , rodTemp, rodFrom, rodTo); } void moveDisk(int diskNum, int rodFrom, int rodTo) { removeDisk(diskNum, rodFrom); addDisk(diskNum, rodTo); printProcess(diskNum); } void removeDisk(int diskNum, int rodFrom) { rod[rodFrom].count -= 1; rod[rodFrom].buffer[rod[rodFrom].count] = 0; } void addDisk(int diskNum, int rodTo) { rod[rodTo].buffer[rod[rodTo].count] = diskNum ; rod[rodTo].count += 1; } void printProcess(int diskNum) { for (int i = 9; i >= 0; i--) { for (int m = 0; m < 3; m++) { if (rod[m].buffer[i] == 0) { printf(" + "); } else { for (int q = 0; q < 10 - diskNum + rod[m].buffer[i] - 1; q++) { printf(" "); } for (int q = 0; q < diskNum - rod[m].buffer[i] + 1; q++) { printf("-"); } printf("+"); for (int q = 0; q < diskNum - rod[m].buffer[i] + 1; q++) { printf("-"); } for (int q = 0; q < 10 - diskNum + rod[m].buffer[i] - 1; q++) { printf(" "); } } } printf("\n"); } printf("\n"); }