commit 6458849ebd72c6c4338797f32ed1d481b0d5d405 Author: Audy Date: Thu Jul 20 20:33:14 2023 -0600 linux terminal prototype diff --git a/main b/main new file mode 100755 index 0000000..1a622ed Binary files /dev/null and b/main differ diff --git a/main.c b/main.c new file mode 100644 index 0000000..a3998ff --- /dev/null +++ b/main.c @@ -0,0 +1,118 @@ +#include +#include +#include + +int field[4][4] = { + {0,0,0,0}, + {0,0,0,0}, + {0,0,0,0}, + {0,0,0,0} +}; +int start1[2] = {0,0}; +int start2[2] = {0,0}; +int new1[2] = {0,0}; + +void printfield() { + printf("\033[2j\033[H"); + for(int i = 0; i < 4; i++) { + for(int j = 0; j < 4; j++) { + printf("%7d ",field[i][j]); + } + printf("\n"); + } +} + +int main(int argc, char* argv[]) { + srand(time(NULL)); + start1[0] = rand() % 4; //only twos to start off with + start1[1] = rand() % 4; + start2[0] = rand() % 4; + start2[1] = rand() % 4; + while((start1[0] == start2[0]) && (start1[1] == start2[1])) { + start2[0] = rand() % 4; + start2[1] = rand() % 4; + } + field[start1[0]][start1[1]] = 2; + field[start2[0]][start2[1]] = 2; + printfield(); + + while(1) { + printfield(); + switch(getchar()) { + case 10: + case 13: + case 27: + continue; + case 119: //w + for(int i = 0; i < 4; i++) { + for(int j = 0; j < 4; j++) { + for(int k = 1; k < 4; k++) { + if(!field[k-1][i]) { //if one tile further than i is empty + field[k-1][i] = field[k][i]; //move i tile up + field[k][i] = 0; //clear i for closer tile + } else if(field[k-1][i] == field[k][i]) { //if one tile further than i is the same + field[k-1][i] = field[k-1][i] * 2; //double the tile one tile further than i + field[k][i] = 0; //clear i for close tile + } + } + } + } + break; + case 97: //a + for(int i = 0; i < 4; i++) { + for(int j = 0; j < 4; j++) { + for(int k = 1; k < 4; k++) { + if(!field[i][k-1]) { + field[i][k-1] = field[i][k]; + field[i][k] = 0; + } else if(field[i][k-1] == field[i][k]) { + field[i][k-1] = field[i][k-1] * 2; + field[i][k] = 0; + } + } + } + } + break; + case 115: //s + for(int i = 0; i < 4; i++) { + for(int j = 0; j < 4; j++) { + for(int k = 2; k > -1; k--) { + if(!field[k+1][i]) { + field[k+1][i] = field[k][i]; + field[k][i] = 0; + } else if(field[k+1][i] == field[k][i]) { + field[k+1][i] = field[k+1][i] * 2; + field[k][i] = 0; + } + } + } + } + break; + case 100: //d + for(int i = 0; i < 4; i++) { + for(int j = 0; j < 4; j++) { + for(int k = 2; k > -1; k--) { + if(!field[i][k+1]) { + field[i][k+1] = field[i][k]; + field[i][k] = 0; + } else if(field[i][k+1] == field[i][k]) { + field[i][k+1] = field[i][k+1] * 2; + field[i][k] = 0; + } + } + } + } + break; + } + + new1[0] = rand() % 4; + new1[1] = rand() % 4; + while(field[new1[0]][new1[1]]) { + new1[0] = rand() % 4; + new1[1] = rand() % 4; + } + field[new1[0]][new1[1]] = 2; + + } + exit(0); +} diff --git a/main.o b/main.o new file mode 100644 index 0000000..a987a2d Binary files /dev/null and b/main.o differ