First version
This commit is contained in:
parent
52cad56767
commit
230d58e9c3
|
@ -0,0 +1,420 @@
|
||||||
|
#define VERSION "0.01"
|
||||||
|
|
||||||
|
#define N 512
|
||||||
|
#define SPEED 50000 // less is more
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <ncurses.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
void printm();
|
||||||
|
void play();
|
||||||
|
void move_ptr(int direction);
|
||||||
|
void waitfor(int delay);
|
||||||
|
void menu();
|
||||||
|
void readfiles();
|
||||||
|
void ranking();
|
||||||
|
void rules();
|
||||||
|
void selectlevel();
|
||||||
|
int checkwin();
|
||||||
|
int searchlevel();
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
int x;
|
||||||
|
int y;
|
||||||
|
} point;
|
||||||
|
|
||||||
|
struct selctd {
|
||||||
|
int level;
|
||||||
|
int world;
|
||||||
|
int pos; // position in level[]
|
||||||
|
} selected;
|
||||||
|
|
||||||
|
struct dataresult {
|
||||||
|
int moves;
|
||||||
|
int world;
|
||||||
|
int level;
|
||||||
|
time_t time;
|
||||||
|
} data[100];
|
||||||
|
|
||||||
|
struct infolevel { // level[0] empty
|
||||||
|
char name[15];
|
||||||
|
int world;
|
||||||
|
int num;
|
||||||
|
int height;
|
||||||
|
int width;
|
||||||
|
int matrix[N][N];
|
||||||
|
point start;
|
||||||
|
point exit;
|
||||||
|
} level[100];
|
||||||
|
|
||||||
|
int win = 0;
|
||||||
|
int moves = 0;
|
||||||
|
int totallevels; // number of levels available
|
||||||
|
point ptr;
|
||||||
|
|
||||||
|
FILE *f_info;
|
||||||
|
FILE *f_data;
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
initscr();
|
||||||
|
noecho();
|
||||||
|
cbreak();
|
||||||
|
keypad(stdscr, true);
|
||||||
|
f_info = fopen("icelevels.txt", "r");
|
||||||
|
f_data = fopen("icedata.txt", "a+");
|
||||||
|
if (f_info == NULL || f_data == NULL) {
|
||||||
|
printw("Error opening file. Please put icelevels.txt in the same folder of IcePath.c");
|
||||||
|
refresh();
|
||||||
|
getch();
|
||||||
|
endwin();
|
||||||
|
return 1;
|
||||||
|
} else {
|
||||||
|
readfiles();
|
||||||
|
menu();
|
||||||
|
fclose(f_info);
|
||||||
|
fclose(f_data);
|
||||||
|
}
|
||||||
|
endwin();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void readfiles() {
|
||||||
|
int u = 1, i = 0, j, lines = 0;
|
||||||
|
char ch;
|
||||||
|
// read f_data
|
||||||
|
rewind(f_data);
|
||||||
|
do { // count lines
|
||||||
|
ch = fgetc(f_data);
|
||||||
|
if (ch == '\n')
|
||||||
|
lines++;
|
||||||
|
} while (ch != EOF);
|
||||||
|
if (ch != '\n' && lines != 0)
|
||||||
|
lines++;
|
||||||
|
rewind(f_data);
|
||||||
|
do {
|
||||||
|
fscanf(f_data, "%li %d %d %d", &data[i].time, &data[i].world, &data[i].level, &data[i].moves);
|
||||||
|
i++;
|
||||||
|
} while (i < lines - 1);
|
||||||
|
selected.world = data[i-1].world;
|
||||||
|
selected.level = data[i-1].level + 1;
|
||||||
|
// read f_info
|
||||||
|
lines = 0;
|
||||||
|
do { // read from line 4
|
||||||
|
ch = fgetc(f_info);
|
||||||
|
if (ch == '\n')
|
||||||
|
lines++;;
|
||||||
|
} while (lines < 4);
|
||||||
|
do {
|
||||||
|
|
||||||
|
fscanf(f_info, "%d.%d %s %dx%d", &level[u].world, &level[u].num, level[u].name, &level[u].height, &level[u].width);
|
||||||
|
if (level[u].world != 999) {
|
||||||
|
for (i = 0; i < level[u].height; i++){
|
||||||
|
for (j = 0; j < level[u].width; j++) {
|
||||||
|
fscanf(f_info, "%d ", &level[u].matrix[i][j]);
|
||||||
|
if(level[u].matrix[i][j] == 1){
|
||||||
|
level[u].matrix[i][j] = 0;
|
||||||
|
level[u].start.x = j;
|
||||||
|
level[u].start.y = i;
|
||||||
|
}
|
||||||
|
if (level[u].matrix[i][j] == 3) {
|
||||||
|
level[u].exit.x = j;
|
||||||
|
level[u].exit.y = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
u++;
|
||||||
|
} while (level[u-1].world != 999);
|
||||||
|
totallevels = u - 1;
|
||||||
|
selected.pos = searchlevel();
|
||||||
|
}
|
||||||
|
|
||||||
|
void menu() {
|
||||||
|
while (1) {
|
||||||
|
clear();
|
||||||
|
printw("~~~ ICE PATH ~~~\n\n"
|
||||||
|
"[1] Play\n"
|
||||||
|
"[2] Select level\n"
|
||||||
|
"[3] Ranking\n"
|
||||||
|
//"[4] Settings\n"
|
||||||
|
"[5] Rules\n"
|
||||||
|
"[q] Quit\n\nv%s\n\n", VERSION);
|
||||||
|
switch (getch()) {
|
||||||
|
case 'q': return;
|
||||||
|
case '1': play(); break;
|
||||||
|
case '2': selectlevel(); break;
|
||||||
|
case '3': ranking(); break;
|
||||||
|
//case '4': settings(); break;
|
||||||
|
case '5': rules(); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void play() {
|
||||||
|
int direction;
|
||||||
|
int win, again = 0;
|
||||||
|
char *text = malloc(sizeof(text) * N);
|
||||||
|
do {
|
||||||
|
selected.pos = searchlevel();
|
||||||
|
moves = 0;
|
||||||
|
again = 0;
|
||||||
|
ptr.x = level[selected.pos].start.x;
|
||||||
|
ptr.y = level[selected.pos].start.y;
|
||||||
|
do {
|
||||||
|
printm();
|
||||||
|
refresh();
|
||||||
|
direction = getch();
|
||||||
|
if (direction == 'q') {
|
||||||
|
printw ("\nDo you really want to exit? [y/n] ");
|
||||||
|
refresh ();
|
||||||
|
if (getch () == 'y') {
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
direction = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (direction == 'r') {
|
||||||
|
printw ("\nDo you really want to retry this level? [y/n] ");
|
||||||
|
refresh ();
|
||||||
|
if (getch () == 'y') {
|
||||||
|
again = 1;
|
||||||
|
} else {
|
||||||
|
direction = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (direction != 0 && direction != 'r') {
|
||||||
|
move_ptr(direction);
|
||||||
|
}
|
||||||
|
win = checkwin();
|
||||||
|
} while (win == 0 && direction != 'r');
|
||||||
|
if (win == 1) {
|
||||||
|
sprintf(text, "%li %d %d %d\n", time(NULL), selected.world, selected.level, moves);
|
||||||
|
fseek(f_data, 0, SEEK_END);
|
||||||
|
fputs(text, f_data);
|
||||||
|
printw("You win! Moves: %d. Retry [r]. Next level? [y/n]\n", moves);
|
||||||
|
refresh();
|
||||||
|
char ch = getchar();
|
||||||
|
if (ch == 'y') {
|
||||||
|
again = 1;
|
||||||
|
} else if (ch == 'r') {
|
||||||
|
again = 1;
|
||||||
|
selected.level--;
|
||||||
|
}
|
||||||
|
selected.level++;
|
||||||
|
}
|
||||||
|
} while (again);
|
||||||
|
free(text);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void move_ptr(int direction) {
|
||||||
|
int temp_x = ptr.x, temp_y = ptr.y, tempmoves = moves;
|
||||||
|
switch (direction) {
|
||||||
|
case KEY_LEFT:
|
||||||
|
moves++;
|
||||||
|
while (ptr.x != 0 && level[selected.pos].matrix[ptr.y][ptr.x-1] != 3) {
|
||||||
|
ptr.x--;
|
||||||
|
printm();
|
||||||
|
refresh();
|
||||||
|
if (checkwin() == 1) {
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
waitfor(SPEED);
|
||||||
|
}
|
||||||
|
} break;
|
||||||
|
case KEY_RIGHT:
|
||||||
|
moves++;
|
||||||
|
while (ptr.x < level[selected.pos].width - 1 && level[selected.pos].matrix[ptr.y][ptr.x+1] != 3){
|
||||||
|
ptr.x++;
|
||||||
|
printm();
|
||||||
|
refresh();
|
||||||
|
if (checkwin() == 1) {
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
waitfor(SPEED);
|
||||||
|
}
|
||||||
|
} break;
|
||||||
|
case KEY_UP:
|
||||||
|
moves++;
|
||||||
|
while (ptr.y > 0 && level[selected.pos].matrix[ptr.y-1][ptr.x] != 3) {
|
||||||
|
ptr.y--;
|
||||||
|
printm();
|
||||||
|
refresh();
|
||||||
|
if (checkwin() == 1) {
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
waitfor(SPEED);
|
||||||
|
}
|
||||||
|
} break;
|
||||||
|
case KEY_DOWN:
|
||||||
|
moves++;
|
||||||
|
while (ptr.y < level[selected.pos].height - 1 && level[selected.pos].matrix[ptr.y+1][ptr.x] != 3) {
|
||||||
|
ptr.y++;
|
||||||
|
printm();
|
||||||
|
refresh();
|
||||||
|
if (checkwin() == 1) {
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
waitfor(SPEED);
|
||||||
|
}
|
||||||
|
} break;
|
||||||
|
default: return;
|
||||||
|
}
|
||||||
|
if (temp_x == ptr.x && temp_y == ptr.y)
|
||||||
|
moves = tempmoves;
|
||||||
|
}
|
||||||
|
|
||||||
|
void printm() {
|
||||||
|
int i, j;
|
||||||
|
clear();
|
||||||
|
printw("Level %d.%d: %s. Moves: %d. Use arrows to move.\nRetry [r]. Quit [q]\n\n", level[selected.pos].world, level[selected.pos].num, level[selected.pos].name, moves);
|
||||||
|
if (level[selected.pos].height > 9 || level[selected.pos].width > 9)
|
||||||
|
printw("Warning! Keep this window in fullscreen mode please\n\n\n");
|
||||||
|
for (i = 0; i < level[selected.pos].height; i++) {
|
||||||
|
for (j = 0; j < level[selected.pos].width; j++) {
|
||||||
|
if (i == ptr.y && j == ptr.x) {
|
||||||
|
printw("YOU");
|
||||||
|
} else {
|
||||||
|
switch (level[selected.pos].matrix[i][j]) {
|
||||||
|
case 0: printw(" "); break;
|
||||||
|
case 3: printw("|/|"); break;
|
||||||
|
case 2: printw("( )"); break;
|
||||||
|
default: printw("?"); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printw("\t");
|
||||||
|
}
|
||||||
|
printw("\n\n");
|
||||||
|
}
|
||||||
|
refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
int searchlevel() {
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < totallevels; i++) {
|
||||||
|
if (level[i].num == selected.level && level[i].world == selected.world)
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
// else go to level 1 of next world
|
||||||
|
selected.world++;
|
||||||
|
selected.level = 1;
|
||||||
|
for (i = 0; i < totallevels; i++) {
|
||||||
|
if (level[i].num == selected.level && level[i].world == selected.world)
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
// else go to level 1.1
|
||||||
|
selected.level = selected.world = 1;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void selectlevel() {
|
||||||
|
while (1) {
|
||||||
|
int again;
|
||||||
|
clear();
|
||||||
|
printw("> Select level. Menu [q]\n\n");
|
||||||
|
do {
|
||||||
|
again = 0;
|
||||||
|
clear();
|
||||||
|
printw("World? [1/2] ");
|
||||||
|
refresh();
|
||||||
|
switch (getch()) {
|
||||||
|
case 'q': return;
|
||||||
|
case '0': selected.world = 0; break;
|
||||||
|
case '1': selected.world = 1; break;
|
||||||
|
case '2': selected.world = 2; break;
|
||||||
|
default: again = 1; break;
|
||||||
|
}
|
||||||
|
} while (again);
|
||||||
|
do {
|
||||||
|
again = 0;
|
||||||
|
clear();
|
||||||
|
printw("> World %d\n\n", selected.world);
|
||||||
|
printw("Level? ");
|
||||||
|
refresh();
|
||||||
|
switch (getch()) {
|
||||||
|
case 'q': selected.level = 1; return;
|
||||||
|
case '1': selected.level = 1; return;
|
||||||
|
case '2': selected.level = 2; return;
|
||||||
|
case '3': selected.level = 3; return;
|
||||||
|
case '4': selected.level = 4; return;
|
||||||
|
case '5': selected.level = 5; return;
|
||||||
|
case '6': selected.level = 6; return;
|
||||||
|
case '7': selected.level = 7; return;
|
||||||
|
default: again = 1; break;
|
||||||
|
}
|
||||||
|
} while (again);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ranking() {
|
||||||
|
int i, j, templevel = selected.level, tempworld = selected.world, printed;
|
||||||
|
struct dataresult temp;
|
||||||
|
char *time_string[N];
|
||||||
|
readfiles();
|
||||||
|
// reord data
|
||||||
|
for (i = 0; data[i].moves != 0; i++) {
|
||||||
|
for (j = i + 1; data[j].moves != 0; j++) {
|
||||||
|
if (data[i].moves > data[j].moves) {
|
||||||
|
temp = data[i];
|
||||||
|
data[i] = data[j];
|
||||||
|
data[j] = temp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
do {
|
||||||
|
if (templevel == 'w'-'0') {
|
||||||
|
printw("\nSelect world: [1/2] ");
|
||||||
|
tempworld = getch() - '0';
|
||||||
|
templevel = 1;
|
||||||
|
refresh();
|
||||||
|
}
|
||||||
|
clear();
|
||||||
|
printw("Best results level %d.%d:\n\n", tempworld, templevel);
|
||||||
|
printed = 0;
|
||||||
|
for (i = 0; data[i].moves != 0; i++) {
|
||||||
|
if ((data[i].level == templevel && data[i].world == tempworld) && printed < 5) {
|
||||||
|
time_string[i] = ctime(&data[i].time);
|
||||||
|
printw("# %d - %3d moves\t- level %d.%d \t- %s", printed + 1, data[i].moves, tempworld, data[i].level, time_string[i]);
|
||||||
|
refresh();
|
||||||
|
printed++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (printed == 0) {
|
||||||
|
printw("Nothing to show...\n");
|
||||||
|
refresh();
|
||||||
|
}
|
||||||
|
printw("\nMenu [q]; To filter by level [1-?]; Change world [w]");
|
||||||
|
refresh();
|
||||||
|
do {
|
||||||
|
templevel = getch() - '0';
|
||||||
|
} while ((templevel < 0 || templevel > 9) && templevel != 0 && templevel != 'q'-'0' && templevel != 'w'-'0');
|
||||||
|
} while (templevel != ('q'-'0'));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void rules() {
|
||||||
|
clear();
|
||||||
|
printw("> Rules\n\n");
|
||||||
|
printw("Reach the escape door ( )\n");
|
||||||
|
refresh();
|
||||||
|
getch();
|
||||||
|
}
|
||||||
|
|
||||||
|
int checkwin() {
|
||||||
|
if (level[selected.pos].matrix[ptr.y][ptr.x] == 2){
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void waitfor(int delay) {
|
||||||
|
int time_a, time_b;
|
||||||
|
time_a = clock();
|
||||||
|
do {
|
||||||
|
time_b = clock();
|
||||||
|
} while (time_b < time_a + delay);
|
||||||
|
}
|
|
@ -0,0 +1,180 @@
|
||||||
|
// Demo. No playable levels
|
||||||
|
// Do not add or remove any comment line
|
||||||
|
// Legend: ice = 0; starting point = 1; ending point = 2; rock = 3.
|
||||||
|
// How to add levels: go to the end of this file
|
||||||
|
|
||||||
|
0.1 Demo1 9x9
|
||||||
|
3 3 3 3 3 3 3 3 3
|
||||||
|
3 1 0 3 0 0 0 2 3
|
||||||
|
3 0 0 3 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 3 0 0 0 0 3
|
||||||
|
3 3 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 3 3
|
||||||
|
3 0 3 0 0 0 0 0 3
|
||||||
|
3 3 3 3 3 3 3 3 3
|
||||||
|
|
||||||
|
0.2 Demo2 9x9
|
||||||
|
3 3 3 3 3 3 3 3 3
|
||||||
|
3 0 0 0 0 0 3 2 3
|
||||||
|
3 0 0 0 0 3 3 0 3
|
||||||
|
3 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 3
|
||||||
|
3 1 0 0 3 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 3 3
|
||||||
|
3 3 3 3 3 3 3 3 3
|
||||||
|
|
||||||
|
0.3 Notsquare 6x9
|
||||||
|
3 3 3 3 3 3 3 3 3
|
||||||
|
3 1 3 0 0 3 0 2 3
|
||||||
|
3 0 3 0 0 0 0 0 3
|
||||||
|
3 0 0 3 0 0 0 0 3
|
||||||
|
3 3 0 0 0 3 0 0 3
|
||||||
|
3 3 3 3 3 3 3 3 3
|
||||||
|
|
||||||
|
0.4 Another9 9x9
|
||||||
|
3 3 3 3 3 3 3 3 3
|
||||||
|
3 1 3 0 0 0 0 3 3
|
||||||
|
3 0 3 0 0 3 0 0 3
|
||||||
|
3 0 3 0 0 0 0 0 3
|
||||||
|
3 0 0 3 0 3 0 0 3
|
||||||
|
3 3 0 3 0 0 0 0 3
|
||||||
|
3 3 0 0 0 3 0 0 3
|
||||||
|
3 3 0 0 3 0 0 2 3
|
||||||
|
3 3 3 3 3 3 3 3 3
|
||||||
|
|
||||||
|
0.5 DemoBig 15x15
|
||||||
|
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
|
||||||
|
3 3 0 0 0 0 3 0 3 0 0 0 0 0 3
|
||||||
|
3 0 0 3 0 0 0 3 0 0 0 0 0 0 3
|
||||||
|
3 0 0 1 0 3 0 0 0 0 0 0 0 3 3
|
||||||
|
3 3 0 0 0 0 3 0 3 0 0 0 0 0 3
|
||||||
|
3 0 0 3 0 0 0 3 0 0 0 0 0 0 3
|
||||||
|
3 0 0 1 0 3 0 0 0 0 0 0 0 0 3
|
||||||
|
3 3 0 0 0 0 3 0 3 0 0 0 0 0 3
|
||||||
|
3 0 0 3 0 0 0 3 0 0 0 0 0 0 3
|
||||||
|
3 0 0 3 0 0 0 3 0 0 0 0 0 0 3
|
||||||
|
3 0 0 3 0 0 0 3 0 0 0 0 0 0 3
|
||||||
|
3 0 0 3 0 0 0 3 0 0 0 0 0 2 3
|
||||||
|
3 0 0 3 0 0 0 3 0 0 0 0 0 0 3
|
||||||
|
3 0 0 3 0 0 0 3 0 0 0 0 0 0 3
|
||||||
|
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
|
||||||
|
|
||||||
|
1.1 Empty 17x17
|
||||||
|
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
|
||||||
|
3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
|
||||||
|
|
||||||
|
|
||||||
|
999.0 EndingLine 0x0 // MUST BE THE LAST LEVEL ALWAYS
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// HOW TO ADD LEVELS
|
||||||
|
|
||||||
|
// program should not arrive here
|
||||||
|
// last line of this file (before these comments) MUST be "999.0 EndingLine 0x0" always.
|
||||||
|
// Remember borders, starting position (1) and ending position (2)
|
||||||
|
// Title format: "%d.%d %s %dx%d", world, level, name, height, width
|
||||||
|
|
||||||
|
/* Matrix examples:
|
||||||
|
|
||||||
|
0.0 levelname9 9x9
|
||||||
|
3 3 3 3 3 3 3 3 3
|
||||||
|
3 1 0 0 0 0 0 2 3
|
||||||
|
3 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 3
|
||||||
|
3 3 3 3 3 3 3 3 3
|
||||||
|
|
||||||
|
0.0 levelname15 15x15
|
||||||
|
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
|
||||||
|
3 1 0 0 0 0 0 0 0 0 0 0 0 2 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
|
||||||
|
|
||||||
|
0.0 levelname17 17x17
|
||||||
|
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
|
||||||
|
3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
|
||||||
|
|
||||||
|
0.0 levelname34 34x34
|
||||||
|
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
|
||||||
|
3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
|
||||||
|
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
|
||||||
|
|
||||||
|
*/
|
Loading…
Reference in New Issue