linux terminal prototype

This commit is contained in:
Audy 2023-07-20 20:33:14 -06:00
commit 6458849ebd
3 changed files with 118 additions and 0 deletions

BIN
main Executable file

Binary file not shown.

118
main.c Normal file
View File

@ -0,0 +1,118 @@
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
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);
}

BIN
main.o Normal file

Binary file not shown.