#include #include int bord[7][7]; int laatste = 10; int totaal = 0; void leegmaken(void) { int x,y; for (x=0;x<=6;x++) { for (y=0;y<=6;y++) { bord[x][y] = 0; } } } int invoer(int wie, int in) { int x,y; if (wie == 1) scanf("%d", &in); for (y=0;y<=6;y++) { if (bord[in][y] == 0) { if (wie == 1) bord[in][y] = 10; if (wie ==2) { bord[in][y] = 100; laatste = in; } break; } } return 0; } void uitvoer(void) { int x,y; if (laatste != 10) printf("%d\n", laatste); printf("----------------------\n"); for (y=6;y>=0;y--) { printf("|"); for (x=0;x<=6;x++) { if (bord[x][y] == 10) printf(" # "); if (bord[x][y] == 100) printf(" * "); if (bord[x][y] == 0) printf(" O "); } printf("|\n----------------------\n"); } printf("----------------------\n"); if (laatste == 0) printf(" (0)"); else printf(" 0 "); if (laatste == 1) printf("(1)"); else printf(" 1 "); if (laatste == 2) printf("(2)"); else printf(" 2 "); if (laatste == 3) printf("(3)"); else printf(" 3 "); if (laatste == 4) printf("(4)"); else printf(" 4 "); if (laatste == 5) printf("(5)"); else printf(" 5 "); if (laatste == 6) printf("(6)"); else printf(" 6 "); printf("\n"); } int verloren(void) { int x,y,som; //horizontaal for (y=0;y<=6;y++) { for (x=0;x<=3;x++) { som = bord[x][y] + bord[x+1][y] + bord[x+2][y] + bord[x+3][y]; if (som == 40) return 1; if (som == 400) return 2; } } //verticaal for (x=0;x<=6;x++) { for (y=0;y<=3;y++) { som = bord[x][y] + bord[x][y+1] + bord[x][y+2] + bord[x][y+3]; if (som == 40) return 1; if (som == 400) return 2; } } //diagonaal links for (y=0;y<=4;y++) { for (x=3;x<=6;x++) { som = bord[x][y] + bord[x-1][y+1] + bord[x-2][y+2] + bord[x-3][y+3]; if (som == 40) return 1; if (som == 400) return 2; } } //diagonaal rechts for (y=0;y<=4;y++) { for (x=0;x<=3;x++) { som = bord[x][y] + bord[x+1][y+1] + bord[x+2][y+2] + bord[x+3][y+3]; if (som == 40) return 1; if (som == 400) return 2; } } return 0; } int drie(int wie) { int x,y,z,som; if (wie==1) wie = 30; if (wie==2) wie = 300; //horizontaal for (y=0;y<=6;y++) { for (x=0;x<=3;x++) { som = bord[x][y] + bord[x+1][y] + bord[x+2][y] + bord[x+3][y]; if (som == wie) { for (z=0;z<=3;z++) { if (bord[x+z][y] == 0) { if (bord[x+z][y-1] == 100 || bord[x+z][y-1] == 10 || y==0) { return (x+z); } } } } } } //verticaal for (x=0;x<=6;x++) { for (y=0;y<=3;y++) { som = bord[x][y] + bord[x][y+1] + bord[x][y+2] + bord[x][y+3]; if (som == wie) { return x; } } } //diagonaal links for (y=0;y<=4;y++) { for (x=3;x<=6;x++) { som = bord[x][y] + bord[x-1][y+1] + bord[x-2][y+2] + bord[x-3][y+3]; if (som == wie) { for (z=0;z<=3;z++) { if (bord[x-z][y+z] == 0) { if (bord[x-z][y+z-1] == 100 || bord[x-z][y+z-1] == 10) { //printf("schuin %d\n", (x-z)); return (x-z); } } } } } } //diagonaal rechts for (y=0;y<=4;y++) { for (x=0;x<=3;x++) { som = bord[x][y] + bord[x+1][y+1] + bord[x+2][y+2] + bord[x+3][y+3]; if (som == wie) { for (z=0;z<=3;z++) { if (bord[x+z][y+z] == 0) { if (bord[x+z][y+z-1] == 100 || bord[x+z][y+z-1] == 10) { //printf("schuin %d %d %d\n", (x+z), bord[x+z][y+z-1], bord[x+z][y+z-2]); return (x+z); } } } } } } return 10; } int twee(int wie) { int x,y,z,som; if (wie==1) wie = 20; if (wie==2) wie = 200; //horizontaal for (y=0;y<=6;y++) { for (x=0;x<=3;x++) { som = bord[x][y] + bord[x+1][y] + bord[x+2][y] + bord[x+3][y]; if (som == wie) { for (z=0;z<=3;z++) { if (bord[x+z][y] == 0) { if (bord[x+z][y-1] == 100 || bord[x+z][y-1] == 10 || y==0) { if (z == 0 && bord[x+z+1][y] == 0 && (bord[x+z+1][y-1] != 0 || y == 0)) return (x+z+1); return (x+z); } } } } } } //verticaal for (x=0;x<=6;x++) { for (y=0;y<=3;y++) { som = bord[x][y] + bord[x][y+1] + bord[x][y+2] + bord[x][y+3]; if (som == wie) { return x; } } } //diagonaal links for (y=0;y<=4;y++) { for (x=3;x<=6;x++) { som = bord[x][y] + bord[x-1][y+1] + bord[x-2][y+2] + bord[x-3][y+3]; if (som == wie) { for (z=0;z<=3;z++) { if (bord[x-z][y+z] == 0) { if (bord[x-z][y+z-1] == 100 || bord[x-z][y+z-1] == 10) { //printf("schuin %d\n", (x-z)); return (x-z); } } } } } } //diagonaal rechts for (y=0;y<=4;y++) { for (x=0;x<=3;x++) { som = bord[x][y] + bord[x+1][y+1] + bord[x+2][y+2] + bord[x+3][y+3]; if (som == wie) { for (z=0;z<=3;z++) { if (bord[x+z][y+z] == 0) { if (bord[x+z][y+z-1] == 100 || bord[x+z][y+z-1] == 10) { //printf("schuin %d %d %d\n", (x+z), bord[x+z][y+z-1], bord[x+z][y+z-2]); return (x+z); } } } } } } return 10; } int main() { int driezet, tweezet, wil, ok, testen, aantal; leegmaken(); uitvoer(); while (1==1) { invoer(1,0); totaal++; if (verloren() == 1) { uitvoer(); printf("jij wint :(\n"); return 0; } driezet = drie(2); if (driezet < 10) invoer(2,driezet); if (driezet == 10) { driezet = drie(1); if (driezet < 10) invoer(2,driezet); if (driezet == 10) { tweezet = twee(2); if (tweezet < 10) invoer(2,tweezet); if (tweezet == 10) { tweezet = twee(1); if (tweezet < 10) invoer(2,tweezet); if (tweezet == 10) { aantal = 0; do { aantal++; ok = 0; wil = rand() % 7; testen = drie(1); if (wil != testen) ok = 1; }while ((bord[wil][6] != 0 && ok == 0) || (aantal > 10000 && bord[wil][6] != 0)); invoer(2,wil); } } } } totaal++; if (verloren() == 2) { uitvoer(); printf("ik win :)\n"); return 0; } if (totaal == 49) { uitvoer(); printf("remise :|\n"); return 0; } uitvoer(); } }