From 45baade87a323802f255ceb11c49edda3990f4cd Mon Sep 17 00:00:00 2001 From: Saturneric Date: Mon, 31 Aug 2020 23:38:31 +0800 Subject: [PATCH] Create main.c --- main.c | 358 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 358 insertions(+) create mode 100644 main.c diff --git a/main.c b/main.c new file mode 100644 index 0000000..8b43c72 --- /dev/null +++ b/main.c @@ -0,0 +1,358 @@ +/* + * Snack.c + * + * Created on: 2015年10月2日 + * Author: Eric + */ +#include +#include +#include +#include +#define YMAX 16 +#define XMAX 35 + + +char table[XMAX][YMAX]; +int x_obj = 0; +int y_obj = 0; +int dir_obj = 1; +int DIFF = 10; +clock_t start, finish; + +void init(void); +void sqprint(void); +void xymove(int dir); +void fire(void); +void printtank(void); +void cleartank(void); +void dirchange(int dir); +void rand_box(void); +void if_win(void); + + +int main(void){ + init(); + while(1){ + /*printf("INPUT: "); + char dir = getchar();*/ + char dir; + read(0,& + dir,1); + //getchar(); + switch (dir) { + case 'w': + xymove(3); + break; + case 's': + xymove(4); + break; + case 'a': + xymove(1); + break; + case 'd': + xymove(2); + break; + case 'f': + fire(); + break; + case 'i': + dirchange(1); + break; + case 'k': + dirchange(2); + break; + case 'j': + dirchange(4); + break; + case 'l': + dirchange(3); + break; + case 'Q': + exit(0); + break; + default: + break; + } + } + return 0; +} + +void init(void){ + system("clear"); + printf("■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■\n\ +■ ■\n\ +■ ▓▓▓▓▓▓▓ ▓▓▓▓▓ ▓▓ ▓ ▓ ▓ ■\n\ +■ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ■\n\ +■ ▓ ▓ ▓▓▓ ▓ ▓ ▓ ▓ ▓▓ ■\n\ +■ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ■\n\ +■ ▓ ▓ ▓ ▓ ▓▓ ▓ ▓ ■\n\ +■ ■\n\ +■ V1.0 BY ERIC ■\n\ +■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■\n"); + printf("DIFF(DIFF<450):"); + scanf("%d",&DIFF); + if(DIFF > 450) DIFF = 450; + system("clear"); + printf("■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■\n\ +■ ■\n\ +■ ▓▓▓▓▓▓▓ ▓▓▓▓▓ ▓▓ ▓ ▓ ▓ ■\n\ +■ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ■\n\ +■ ▓ ▓ ▓▓▓ ▓ ▓ ▓ ▓ ▓▓ ■\n\ +■ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ■\n\ +■ ▓ ▓ ▓ ▓ ▓▓ ▓ ▓ ■\n\ +■ ■\n\ +■ V1.0 BY ERIC ■\n\ +■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■\n"); + printf("ANT KEY TO START..."); + getchar(); + getchar(); + start = clock(); + for (int i = 0; i < XMAX; i++) + for (int j = 0; j < YMAX; j++) + table[i][j] = '.'; + for (int i = 0; i < YMAX; i++){ + table[0][i] = '#'; + table[XMAX-1][i] = '#'; + } + for (int i = 0; i < XMAX; i++){ + table[i][0] = '#'; + table[i][YMAX-1] = '#'; + } + rand_box(); + x_obj = 2; y_obj = 2; + dir_obj = 1; + printtank(); + sqprint(); +} +void printtank(void){ + switch (dir_obj) { + case 1: + table[x_obj][y_obj-1] = '@'; + table[x_obj][y_obj] = '@'; + table[x_obj+1][y_obj] = '@'; + table[x_obj-1][y_obj] = '@'; + table[x_obj-1][y_obj+1] = '@'; + table[x_obj+1][y_obj+1] = '@'; + break; + case 2: + table[x_obj][y_obj+1] = '@'; + table[x_obj][y_obj] = '@'; + table[x_obj+1][y_obj] = '@'; + table[x_obj-1][y_obj] = '@'; + table[x_obj-1][y_obj-1] = '@'; + table[x_obj+1][y_obj-1] = '@'; + break; + case 3: + table[x_obj+1][y_obj] = '@'; + table[x_obj][y_obj] = '@'; + table[x_obj][y_obj+1] = '@'; + table[x_obj][y_obj-1] = '@'; + table[x_obj-1][y_obj+1] = '@'; + table[x_obj-1][y_obj-1] = '@'; + break; + case 4: + table[x_obj-1][y_obj] = '@'; + table[x_obj][y_obj] = '@'; + table[x_obj][y_obj+1] = '@'; + table[x_obj][y_obj-1] = '@'; + table[x_obj+1][y_obj+1] = '@'; + table[x_obj+1][y_obj-1] = '@'; + break; + default: + break; + } +} +void fire(void){ + if (dir_obj == 1) { + for (int i = y_obj; i > 3; i--){ + if (table[x_obj][i-3] == '^'){ + table[x_obj][i-3] = '.'; + table[x_obj][i-2] = '.'; + break; + } + table[x_obj][i-3] = '*'; + table[x_obj][i-2] = '.'; + sqprint(); + usleep(20000); + } + table[x_obj][1] = '.'; + sqprint(); + } + else if (dir_obj == 2){ + for (int i = y_obj; i < YMAX-4; i++){ + if (table[x_obj][i+3] == '^'){ + table[x_obj][i+3] = '.'; + table[x_obj][i+2] = '.'; + break; + } + table[x_obj][i+3] = '*'; + table[x_obj][i+2] = '.'; + sqprint(); + usleep(20000); + } + table[x_obj][YMAX-2] = '.'; + sqprint(); + } + else if (dir_obj == 3) + { + for (int i = x_obj; i < XMAX-4; i++){ + if (table[i+3][y_obj] == '^'){ + table[i+3][y_obj] = '.'; + table[i+2][y_obj] = '.'; + break; + } + table[i+3][y_obj] = '*'; + table[i+2][y_obj] = '.'; + sqprint(); + usleep(20000); + } + table[XMAX-2][y_obj] = '.'; + sqprint(); + } + else if (dir_obj == 4){ + for (int i = x_obj; i > 3; i--){ + if (table[i-3][y_obj] == '^'){ + table[i-3][y_obj] = '.'; + table[i-2][y_obj] = '.'; + break; + } + table[i-3][y_obj] = '*'; + table[i-2][y_obj] = '.'; + sqprint(); + usleep(20000); + } + table[1][y_obj] = '.'; + sqprint(); + } + else{ + + } +} +void sqprint(void){ + system("clear"); + if_win(); + for (int i = 0; i < YMAX; i++){ + for (int j = 0; j < XMAX; j++){ + if (table[j][i] == '#') printf("■"); + if (table[j][i] == '.') printf(" "); + if (table[j][i] == '@') printf("▓"); + if (table[j][i] == '^') printf("█"); + if (table[j][i] == '*') printf("◎"); + } + printf("\n"); + } +} +void cleartank(void){ + switch (dir_obj) { + case 1: + table[x_obj][y_obj-1] = '.'; + table[x_obj][y_obj] = '.'; + table[x_obj+1][y_obj] = '.'; + table[x_obj-1][y_obj] = '.'; + table[x_obj-1][y_obj+1] = '.'; + table[x_obj+1][y_obj+1] = '.'; + break; + case 2: + table[x_obj][y_obj+1] = '.'; + table[x_obj][y_obj] = '.'; + table[x_obj+1][y_obj] = '.'; + table[x_obj-1][y_obj] = '.'; + table[x_obj-1][y_obj-1] = '.'; + table[x_obj+1][y_obj-1] = '.'; + break; + case 3: + table[x_obj+1][y_obj] = '.'; + table[x_obj][y_obj] = '.'; + table[x_obj][y_obj+1] = '.'; + table[x_obj][y_obj-1] = '.'; + table[x_obj-1][y_obj+1] = '.'; + table[x_obj-1][y_obj-1] = '.'; + break; + case 4: + table[x_obj-1][y_obj] = '.'; + table[x_obj][y_obj] = '.'; + table[x_obj][y_obj+1] = '.'; + table[x_obj][y_obj-1] = '.'; + table[x_obj+1][y_obj+1] = '.'; + table[x_obj+1][y_obj-1] = '.'; + break; + default: + break; + } +} +void xymove(int dir){ + cleartank(); + int ifnot = 1; + switch (dir) { + case 1: + for (int i = y_obj-1; i <= y_obj+1; i++) + if(table[x_obj-2][i] == '^') ifnot = 0; + if ((x_obj>2)&&(ifnot == 1)){ + x_obj-=1; + } + break; + case 2: + for (int i = y_obj-1; i <= y_obj+1; i++) + if(table[x_obj+2][i] == '^') ifnot = 0; + if ((x_obj2)&&(ifnot == 1)){ + y_obj-=1; + } + break; + case 4: + for (int i = x_obj-1; i <= x_obj+1; i++) + if(table[i][y_obj+2] == '^') ifnot = 0; + if ((y_obj