// JLH 03/03/2014 Created this file
//
+#include "boards.h"
+
+
+// Level storage...
+std::vector<Level> levelStorage;
+
+
//
// We use anonymous structs to create these, to keep things simple. :-)
//
// . = Spot to move box to
// + = Spot to move box to, that already has a box on it
// o = Player initial position
+// * = Player initial position, that has a spot under it
+// - = Do not draw anything here
//
static const struct {
unsigned int width, height;
- unsigned char state[5 * 5 + 1]; } board001 = { 5, 5,
+ unsigned char state[5 * 5 + 40 + 1]; } board001 = { 5, 5,
+// const char * state; } board001 = { 5, 5,
"@@@@@"
"@o @"
"@ X @"
"@ . @"
"@@@@@"
+ "Neophyte"
};
static const struct {
unsigned int width, height;
- unsigned char state[7 * 7 + 1]; } board002 = { 7, 7,
+ unsigned char state[7 * 7 + 40 + 1]; } board002 = { 7, 7,
"@@@@@@@"
"@ @"
"@ X.X @"
"@ X.X @"
"@o @"
"@@@@@@@"
+ "A Little Bit Harder..."
};
static const struct {
unsigned int width, height;
- unsigned char state[7 * 5 + 1]; } board003 = { 7, 5,
+ unsigned char state[7 * 5 + 40 + 1]; } board003 = { 7, 5,
"@@@@@@@"
"@. X .@"
"@ XoX @"
"@. X .@"
"@@@@@@@"
+ "Boxed In"
};
static const struct {
unsigned int width, height;
- unsigned char state[8 * 5 + 1]; } board004 = { 8, 5,
+ unsigned char state[8 * 5 + 40 + 1]; } board004 = { 8, 5,
"@@@@@@@@"
"@ ..X @"
"@ Xo X @"
"@ X.. @"
"@@@@@@@@"
+ "Edging Out"
};
static const struct {
unsigned int width, height;
- unsigned char state[8 * 7 + 1]; } board005 = { 8, 7,
- " @@@@@@@"
- " @ @"
+ unsigned char state[8 * 7 + 40 + 1]; } board005 = { 8, 7,
+ "-@@@@@@@"
+ "-@ @"
"@@ .X. @"
"@o X X @"
"@ .X. @"
"@@ @"
- " @@@@@@@"
+ "-@@@@@@@"
+ "Rotation"
};
static const struct {
unsigned int width, height;
- unsigned char state[8 * 8 + 1]; } board006 = { 8, 8,
- " @@@@@ "
+ unsigned char state[8 * 8 + 40 + 1]; } board006 = { 8, 8,
+ "-@@@@@--"
"@@ @@@"
"@ @ @"
"@ @ @ @"
"@ X X@ @"
"@.@ @"
"@. o@@@@"
- "@@@@@ "
+ "@@@@@---"
+ "Headless Chicken"
};
static const struct {
unsigned int width, height;
- unsigned char state[8 * 6 + 1]; } board007 = { 8, 6,
+ unsigned char state[8 * 6 + 40 + 1]; } board007 = { 8, 6,
"@@@@@@@@"
"@ X. X.@"
"@o.X X.@"
"@ X. X.@"
"@ .X X.@"
"@@@@@@@@"
+ "Two Lines"
};
static const struct {
unsigned int width, height;
- unsigned char state[10 * 8 + 1]; } board008 = { 10, 8,
- " @@@@@@@"
- " @@ @ o@"
- " @ @ @"
- " @X X X @"
- " @ X@@ @"
+ unsigned char state[10 * 8 + 40 + 1]; } board008 = { 10, 8,
+ "---@@@@@@@"
+ "--@@ @ o@"
+ "--@ @ @"
+ "--@X X X @"
+ "--@ X@@ @"
"@@@ X @ @@"
- "@..... @ "
- "@@@@@@@@@ "
+ "@..... @-"
+ "@@@@@@@@@-"
+ "Easy Does It"
};
static const struct {
unsigned int width, height;
- unsigned char state[9 * 7 + 1]; } board009 = { 9, 7,
+ unsigned char state[9 * 7 + 40 + 1]; } board009 = { 9, 7,
"@@@@@@@@@"
"@ + @"
"@ X.@.X @"
"@ X.X @"
"@@@.X.@@@"
- " @@o@@ "
- " @@@ "
+ "--@@o@@--"
+ "---@@@---"
+ "Claustrophobia"
};
static const struct {
unsigned int width, height;
- unsigned char state[7 * 7 + 1]; } board010 = { 7, 7,
- " @@@@@"
+ unsigned char state[7 * 7 + 40 + 1]; } board010 = { 7, 7,
+ "--@@@@@"
"@@@ @"
"@o .X.@"
"@ X X@"
"@@@.X.@"
- " @ @"
- " @@@@@"
+ "--@ @"
+ "--@@@@@"
+ "Tight Squeeze"
};
static const struct {
unsigned int width, height;
- unsigned char state[10 * 8 + 1]; } board011 = { 10, 8,
- " @@@@ "
- " @ @ "
+ unsigned char state[10 * 8 + 40 + 1]; } board011 = { 10, 8,
+ "--@@@@----"
+ "--@ @----"
"@@@ @@@@@"
"@ ..X @"
"@oX.. X @"
"@@@ X@@@@@"
- " @ @ "
- " @@@@ "
+ "--@ @----"
+ "--@@@@----"
+ "Crossroads"
};
static const struct {
unsigned int width, height;
- unsigned char state[10 * 6 + 1]; } board012 = { 10, 6,
- " @@@@@@@@@"
+ unsigned char state[10 * 6 + 40 + 1]; } board012 = { 10, 6,
+ "-@@@@@@@@@"
"@@ @"
"@ @X@X @"
"@ XX .X.@"
"@ o@@@...@"
- "@@@@ @@@@@"
+ "@@@@-@@@@@"
+ "In The Corner"
+};
+
+
+static const struct {
+ unsigned int width, height;
+ unsigned char state[9 * 7 + 40 + 1]; } board013 = { 9, 7,
+ "---@@@@@-"
+ "@@@@ @@"
+ "@ X X X @"
+ "@o......@"
+ "@ X X X @"
+ "@@@@ @@"
+ "---@@@@@-"
+ "Get In Line"
+};
+
+
+static const struct {
+ unsigned int width, height;
+ unsigned char state[8 * 7 + 40 + 1]; } board014 = { 8, 7,
+ "--@@@@@-"
+ "@@@ o@-"
+ "@ X. @@"
+ "@ .X. @"
+ "@@@ +X @"
+ "--@ @@"
+ "--@@@@@-"
+ "Tighter Squeeze"
+};
+
+
+static const struct {
+ unsigned int width, height;
+ unsigned char state[8 * 7 + 40 + 1]; } board015 = { 8, 7,
+ "@@@@@@@-"
+ "@ .X. @@"
+ "@ X X @"
+ "@ .X. @"
+ "@ @@@ @@"
+ "@ o @-"
+ "@@@@@@@-"
+ "Rotation #2"
+};
+
+
+static const struct {
+ unsigned int width, height;
+ unsigned char state[10 * 7 + 40 + 1]; } board016 = { 10, 7,
+ "---@@@@@@-"
+ "-@@@ @-"
+ "@@. X@@ @@"
+ "@..X X o@"
+ "@.. X X @@"
+ "@@@@@@ @-"
+ "-----@@@@-"
+ "Up Against A Wall"
+};
+
+
+static const struct {
+ unsigned int width, height;
+ unsigned char state[7 * 7 + 40 + 1]; } board017 = { 7, 7,
+ "-@@@@@-"
+ "@@ . @@"
+ "@ X.X @"
+ "@ .Xo@"
+ "@ X.X @"
+ "@@ . @@"
+ "-@@@@@-"
+ "Lizard Eye"
+};
+
+
+static const struct {
+ unsigned int width, height;
+ unsigned char state[12 * 6 + 40 + 1]; } board018 = { 12, 6,
+ "-@@@@@@@@@@-"
+ "@@ @o @@"
+ "@ X ....X @"
+ "@ X@@@@ X @"
+ "@ @--@ @@"
+ "@@@@@--@@@@-"
+ "Two Rooms"
+};
+
+
+static const struct {
+ unsigned int width, height;
+ unsigned char state[10 * 7 + 40 + 1]; } board019 = { 10, 7,
+ "-@@@@@@@--"
+ "-@ @@@"
+ "@@X@@@ @"
+ "@ o X X @"
+ "@ ..@ X @@"
+ "@@..@ @-"
+ "-@@@@@@@@-"
+ "Untitled1"
+};
+
+
+static const struct {
+ unsigned int width, height;
+ unsigned char state[8 * 6 + 40 + 1]; } board020 = { 8, 6,
+ "---@@@@@"
+ "@@@@ .@"
+ "@ X +@"
+ "@ XX X.@"
+ "@@o@@..@"
+ "-@@@@@@@"
+ "Untitled2"
+};
+
+
+static const struct {
+ unsigned int width, height;
+ unsigned char state[7 * 7 + 40 + 1]; } board021 = { 7, 7,
+ "@@@@@@@"
+ "@. .@"
+ "@ X@X @"
+ "@.XoX.@"
+ "@ X@X @"
+ "@. .@"
+ "@@@@@@@"
+ "Cornered"
+};
+
+
+static const struct {
+ unsigned int width, height;
+ unsigned char state[7 * 7 + 40 + 1]; } board022 = { 7, 7,
+ "@@@@@@@"
+ "@ . @"
+ "@ X@X @"
+ "@. + .@"
+ "@ X@X @"
+ "@ .o @"
+ "@@@@@@@"
+ "Diamond"
+};
+
+
+static const struct {
+ unsigned int width, height;
+ unsigned char state[9 * 7 + 40 + 1]; } board023 = { 9, 7,
+ "@@@@@@@@-"
+ "@ o @-"
+ "@ X.. @@"
+ "@@@..@ @"
+ "--@@XXX @"
+ "---@ @"
+ "---@@@@@@"
+ "Untitled3"
+};
+
+
+static const struct {
+ unsigned int width, height;
+ unsigned char state[8 * 8 + 40 + 1]; } board024 = { 8, 8,
+ "@@@@@@@@"
+ "@ o @"
+ "@ XX@ @"
+ "@@ X @@"
+ "-@.X @-"
+ "-@@. @@-"
+ "--@..@--"
+ "--@@@@--"
+ "Untitled4"
+};
+
+
+static const struct {
+ unsigned int width, height;
+ unsigned char state[8 * 8 + 40 + 1]; } board025 = { 8, 8,
+ "-@@@@@@-"
+ "-@. ..@-"
+ "-@. X.@-"
+ "@@@ X@@"
+ "@ X X @"
+ "@ @X@@ @"
+ "@ o @"
+ "@@@@@@@@"
+ "Untitled5"
+};
+
+
+static const struct {
+ unsigned int width, height;
+ unsigned char state[7 * 7 + 40 + 1]; } board026 = { 7, 7,
+ "-@@@@@@"
+ "@@ . o@"
+ "@ X X @"
+ "@. + .@"
+ "@ X X @"
+ "@@ . @@"
+ "-@@@@@-"
+ "Untitled6"
+};
+
+
+static const struct {
+ unsigned int width, height;
+ unsigned char state[8 * 7 + 40 + 1]; } board027 = { 8, 7,
+ "--@@@@@@"
+ "--@ @"
+ "@@@XXX @"
+ "@o X.. @"
+ "@ X...@@"
+ "@@@@ @-"
+ "---@@@@-"
+ "Untitled7"
+};
+
+
+static const struct {
+ unsigned int width, height;
+ unsigned char state[12 * 5 + 40 + 1]; } board028 = { 12, 5,
+ "@@@@@@@@@@@@"
+ "@ ... X @"
+ "@ XXX+++ Xo@"
+ "@ ... X @"
+ "@@@@@@@@@@@@"
+ "Untitled8"
+};
+
+
+static const struct {
+ unsigned int width, height;
+ unsigned char state[8 * 7 + 40 + 1]; } board029 = { 8, 7,
+ "@@@@@@@@"
+ "@ @ @"
+ "@ X..X @"
+ "@oX.+ @@"
+ "@ X..X @"
+ "@ @ @"
+ "@@@@@@@@"
+ "Untitled9"
+};
+
+
+static const struct {
+ unsigned int width, height;
+ unsigned char state[11 * 9 + 40 + 1]; } board030 = { 11, 9,
+ "--@@@@@----"
+ "--@ @----"
+ "@@@X.X@@@@@"
+ "@ . X @"
+ "@ @@X@@ o @"
+ "@ . @@@@@"
+ "@@@ . @----"
+ "--@ @----"
+ "--@@@@@----"
+ "Untitled10"
+};
+
+
+static const struct {
+ unsigned int width, height;
+ unsigned char state[11 * 7 + 40 + 1]; } board031 = { 11, 7,
+ "---@@@@@@@@"
+ "@@@@ . @"
+ "@ X X X. @"
+ "@ .@@@@.@@"
+ "@ X.X X o@-"
+ "@ . @@@@-"
+ "@@@@@@@----"
+ "Untitled11"
+};
+
+
+static const struct {
+ unsigned int width, height;
+ unsigned char state[8 * 7 + 40 + 1]; } board032 = { 8, 7,
+ "-@@@@@--"
+ "-@ @@@"
+ "@@X@o .@"
+ "@ XX@.@"
+ "@ @X .@"
+ "@ .@"
+ "@@@@@@@@"
+ "Untitled12"
+};
+
+
+static const struct {
+ unsigned int width, height;
+ unsigned char state[9 * 8 + 40 + 1]; } board033 = { 9, 8,
+ "---@@@@@-"
+ "@@@@. @@"
+ "@ X.X. @"
+ "@oX@ @X @"
+ "@ X. . @"
+ "@@@@X@X @"
+ "--@. . @"
+ "--@@@@@@@"
+ "Untitled13"
+};
+
+
+static const struct {
+ unsigned int width, height;
+ unsigned char state[9 * 8 + 40 + 1]; } board034 = { 9, 8,
+ "---@@@@@-"
+ "---@ o @-"
+ "---@XXX@-"
+ "@@@@ @-"
+ "@ .@X@@"
+ "@ X.X. .@"
+ "@ @.@.@@"
+ "@@@@@@@@-"
+ "Untitled14"
+};
+
+
+static const struct {
+ unsigned int width, height;
+ unsigned char state[9 * 8 + 40 + 1]; } board035 = { 9, 8,
+ "@@@@@@---"
+ "@ @---"
+ "@ X @@@@"
+ "@ X+..+ @"
+ "@ +..+X @"
+ "@@@@ X @"
+ "---@ o @"
+ "---@@@@@@"
+ "Untitled15"
+};
+
+
+static const struct {
+ unsigned int width, height;
+ unsigned char state[7 * 6 + 40 + 1]; } board036 = { 7, 6,
+ "@@@@@@@"
+ "@ + @"
+ "@ .+. @"
+ "@ XXX @"
+ "@ o. @"
+ "@@@@@@@"
+ "Untitled16"
+};
+
+
+static const struct {
+ unsigned int width, height;
+ unsigned char state[8 * 7 + 40 + 1]; } board037 = { 8, 7,
+ "@@@@@@@@"
+ "@.. @"
+ "@..X Xo@"
+ "@X@XXX@@"
+ "@..X X @"
+ "@.. @"
+ "@@@@@@@@"
+ "Untitled17"
+};
+
+
+static const struct {
+ unsigned int width, height;
+ unsigned char state[9 * 8 + 40 + 1]; } board038 = { 9, 8,
+ "---@@@@@@"
+ "@@@@. o@"
+ "@ XXX @"
+ "@.@@.@@.@"
+ "@ X @"
+ "@ X.@ @@"
+ "@@@@ @-"
+ "---@@@@@-"
+ "Untitled18"
+};
+
+
+static const struct {
+ unsigned int width, height;
+ unsigned char state[12 * 7 + 40 + 1]; } board039 = { 12, 7,
+ "--@@@@@@@@@@"
+ "@@@ . @"
+ "@ @@X@@ @"
+ "@ oX. . .X@@"
+ "@@ X@@X@@ @ "
+ "-@ . @ "
+ "-@@@@@@@@@@ "
+ "Untitled19"
+};
+
+
+static const struct {
+ unsigned int width, height;
+ unsigned char state[9 * 7 + 40 + 1]; } board040 = { 9, 7,
+ "@@@@@@@@@"
+ "@. . .@"
+ "@@XXXXX@@"
+ "@..o+ ..@"
+ "@@XXXXX@@"
+ "@. . .@"
+ "@@@@@@@@@"
+ "Untitled20"
+};
+
+
+static const struct {
+ unsigned int width, height;
+ unsigned char state[8 * 7 + 40 + 1]; } board041 = { 8, 7,
+ "@@@@@---"
+ "@ @---"
+ "@ X@@@@"
+ "@.+*+ @"
+ "@ XX+ @"
+ "@ . @"
+ "@@@@@@@@"
+ "Untitled21"
+};
+
+
+static const struct {
+ unsigned int width, height;
+ unsigned char state[9 * 7 + 40 + 1]; } board042 = { 9, 7,
+ "-@@@@@@@-"
+ "@@.X X.@@"
+ "@.+ X +.@"
+ "@ XoX @"
+ "@.+ X +.@"
+ "@@.X X.@@"
+ "-@@@@@@@-"
+ "Untitled22"
};
const void * boards[] = {
&board001, &board002, &board003, &board004, &board005, &board006, &board007, &board008,
- &board009, &board010, &board011, &board012, //&board013, &board014, &board015, &board016,
+ &board009, &board010, &board011, &board012, &board013, &board014, &board015, &board016,
+ &board017, &board018, &board019, &board020, &board021, &board022, &board023, &board024,
+ &board025, &board026, &board027, &board028, &board029, &board030, &board031, &board032,
+ &board033, &board034, &board035, &board036, &board037, &board038, &board039, &board040,
+ &board041, &board042, //&board043, &board044, &board045, &board046, &board047, &board048,
+// &board049, &board050, &board051, &board052, &board053, &board054, &board055, &board056,
+// &board057, &board058, &board059, &board060, &board061, &board062, &board063, &board064,
+// &board065, &board066, &board067, &board068, &board069, &board070, &board071, &board072,
+// &board073, &board074, &board075, &board076, &board077, &board078, &board079, &board080,
+// &board081, &board082, &board083, &board084, &board085, &board086, &board087, &board088,
+// &board089, &board090, &board091, &board092, &board093, &board094, &board095, &board096,
+// &board097, &board098, &board099, &board100, &board101, &board102, &board103, &board104,
};