linux terminal prototype
This commit is contained in:
commit
6458849ebd
118
main.c
Normal file
118
main.c
Normal 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);
|
||||
}
|
||||
Reference in New Issue
Block a user