Browse Source

let's finish

master
narnaud 2 years ago
parent
commit
3f8d3dc1f3
  1. 9
      Makefile
  2. 23
      README.md
  3. 6
      includes/cub3d.h
  4. BIN
      lib/libft.a
  5. 0
      lib/libmlx_Mac.a
  6. 12
      maps/scene_big.cub
  7. 41
      src/main.c
  8. 93
      src/mlx/mlx_1.c
  9. 19
      src/mlx/mlx_2.c
  10. 4
      src/parsing/parsing.c
  11. 96
      textures/bluebrick.xpm
  12. 96
      textures/brownbrick.xpm
  13. 96
      textures/greenbrick.xpm
  14. 96
      textures/greybrick.xpm

9
Makefile

@ -3,7 +3,8 @@ LIBFT = libft.a
MLX = includes/mlx.h MLX = includes/mlx.h
SRCS = src/main.c src/hooks.c src/vectors.c SRCS = src/main.c src/vectors.c
SRCS += src/mlx/mlx_1.c src/mlx/mlx_2.c
SRCS += src/parsing/parsing.c src/parsing/getline.c src/parsing/map.c src/parsing/utils.c SRCS += src/parsing/parsing.c src/parsing/getline.c src/parsing/map.c src/parsing/utils.c
SRCS += src/render/render.c src/render/minimap.c src/render/utils.c src/render/raycast.c SRCS += src/render/render.c src/render/minimap.c src/render/utils.c src/render/raycast.c
OBJS = ${SRCS:.c=.o} OBJS = ${SRCS:.c=.o}
@ -13,10 +14,10 @@ RM = rm -rf
UNAME_S := $(shell uname -s) UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S), Linux) ifeq ($(UNAME_S), Linux)
LFLAGS = -L ./mlx -lmlx_Linux -lXext -lX11 -lm -lz -L. -lft LFLAGS = -lXext -lX11 -lm -lz -Llib -lft -lmlx_Linux
endif endif
ifeq ($(UNAME_S), Darwin) ifeq ($(UNAME_S), Darwin)
LFLAGS = -L ./mlx -lmlx -framework OpenGL -framework AppKit -L. -lft LFLAGS = -framework OpenGL -framework AppKit -Llib -lft -lmlx_Mac
endif endif
CFLAGS = -Werror -Wall -Wextra -O3 -ffast-math -funsafe-math-optimizations CFLAGS = -Werror -Wall -Wextra -O3 -ffast-math -funsafe-math-optimizations
@ -29,7 +30,7 @@ $(VERBOSE).SILENT:
$(LIBFT): $(LIBFT):
${MAKE} -C libft/ ${MAKE} -C libft/
cp libft/libft.a . cp libft/libft.a ./lib/
cp libft/libft.h includes/ cp libft/libft.h includes/
$(MLX): $(MLX):

23
README.md

@ -13,17 +13,12 @@ CUBE3D
- report invalid mapfile: - report invalid mapfile:
- wrong extension, - wrong extension,
- unacessible file (wrong permission, directory, missin name) - unacessible file (wrong permission, directory, missin name)
-
- invalid color : Ci > 255, Ci < 0, i > 4 - invalid color : Ci > 255, Ci < 0, i > 4
- invalid texture (wrong permission, missing wall orientation texture, missing used block texture (warning + use default unknow texture)) - invalid texture (wrong permission, missing wall orientation texture, missing used block texture (warning + use default unknow texture))
- empty line in map description, - empty line in map description,
- unauthorized character in map description (!isdigt) - unauthorized character in map description (!isdigt)
-
## Memo: ## TODO:
- ToDo: add F1 keycode on linux,
- Add toggle for mouse control,
## Program life cycle :
### Parsing ### Parsing
- [x] read file, - [x] read file,
- [x] extract walls textures, - [x] extract walls textures,
@ -36,21 +31,5 @@ CUBE3D
- [ ] texture files not exist, not permited or with wrong extension - [ ] texture files not exist, not permited or with wrong extension
- [ ] impossible color used - [ ] impossible color used
- [-] missing map - [-] missing map
### Init
### Window
### Render
- [x] display ceil, walls and floor
- [x] display wall's texture
### Control
- [x] enable commands
- [x] wasd to move
- [o] react to commands :
- [x] calculate new pos,
- [x] display new view,
- [x] avoid colisions
- [x] M to show minimap
- [x] SHIFT to run
- [-] Debugs window with F1
- [x] Exit with Esc and X
### Quit ### Quit
- [ ] clean and exit - [ ] clean and exit

6
includes/cub3d.h

@ -6,7 +6,7 @@
/* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */ /* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/05/21 19:24:12 by narnaud #+# #+# */ /* Created: 2022/05/21 19:24:12 by narnaud #+# #+# */
/* Updated: 2022/08/23 16:40:10 by narnaud ### ########.fr */ /* Updated: 2022/08/25 11:09:34 by narnaud ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -110,13 +110,15 @@ void render_minimap(t_env *env, t_vec size);
void render_view(t_env *env); void render_view(t_env *env);
void render(t_env *env); void render(t_env *env);
// Hooks // MLX
int key_press_hook(int keycode, t_env *env); int key_press_hook(int keycode, t_env *env);
int key_release_hook(int keycode, t_env *env); int key_release_hook(int keycode, t_env *env);
int mouse_down_hook(int buton, int x, int y, t_env *env); int mouse_down_hook(int buton, int x, int y, t_env *env);
int mouse_move_hook(int x, int y, t_env *env); int mouse_move_hook(int x, int y, t_env *env);
int mouse_up_hook(int buton, int x, int y, t_env *env); int mouse_up_hook(int buton, int x, int y, t_env *env);
int update_hook(t_env *env); int update_hook(t_env *env);
void init_window(t_env *nv);
void init_game(t_env *env);
// Utils // Utils
void vec_set(t_vec *vec, int x, int y); void vec_set(t_vec *vec, int x, int y);

BIN
lib/libft.a

Binary file not shown.

0
libmlxmac.a → lib/libmlx_Mac.a

12
maps/scene_big.cub

@ -1,7 +1,11 @@
NO ./textures/4.xpm #NO ./textures/4.xpm
EA ./textures/1.xpm #EA ./textures/1.xpm
SO ./textures/3.xpm #SO ./textures/3.xpm
WE ./textures/2.xpm #WE ./textures/2.xpm
NO ./textures/redbrick.xpm
EA ./textures/greenbrick.xpm
SO ./textures/greybrick.xpm
WE ./textures/brownbrick.xpm
DO ./textures/wood.xpm DO ./textures/wood.xpm
F 15, 100, 0 F 15, 100, 0

41
src/main.c

@ -6,50 +6,11 @@
/* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */ /* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/05/21 19:22:50 by narnaud #+# #+# */ /* Created: 2022/05/21 19:22:50 by narnaud #+# #+# */
/* Updated: 2022/08/23 16:40:30 by narnaud ### ########.fr */ /* Updated: 2022/08/25 09:28:42 by narnaud ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include "../includes/cub3d.h" #include "../includes/cub3d.h"
/* ToDo:
* Handle bad inits
*/
void init_window(t_env *env)
{
void *mlx;
void *window;
mlx = mlx_init();
env->mlx = mlx;
window = mlx_new_window(mlx, WIN_X_SZ, WIN_Y_SZ, "Cub3D");
env->win = window;
mlx_mouse_hide(mlx, window);
}
void init_game(t_env *env)
{
int y;
y = 0;
while (y < 5)
{
env->tex[y].img = mlx_xpm_file_to_image(env->mlx,
env->tex[y].file, &env->tex[y].width, &env->tex[y].height);
env->tex[y].buffer = (int *)mlx_get_data_addr(env->tex[y].img, \
&env->tex[y].pixel_bits,
&env->tex[y].line_bytes,
&env->tex[y].endian);
env->tex[y].line_bytes /= 4;
y++;
}
env->img = mlx_new_image(env->mlx, WIN_X_SZ, WIN_Y_SZ);
env->buffer = (int *)mlx_get_data_addr(env->img, \
&env->pixel_bits, &env->line_bytes, &env->endian);
env->line_bytes /= 4;
mlx_hook(env->win, 2, 1L << 0, key_press_hook, env);
mlx_hook(env->win, 3, 1L << 1, key_release_hook, env);
mlx_hook(env->win, 6, 0L, mouse_move_hook, env);
}
int main(int argc, char **argv) int main(int argc, char **argv)
{ {

93
src/mlx/mlx_1.c

@ -0,0 +1,93 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* mlx_1.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/08/25 14:14:46 by narnaud #+# #+# */
/* Updated: 2022/08/25 14:18:18 by narnaud ### ########.fr */
/* */
/* ************************************************************************** */
#include "../../includes/cub3d.h"
#ifdef __linux__
void init_window(t_env *env)
{
void *mlx;
void *window;
mlx = mlx_init();
env->mlx = mlx;
window = mlx_new_window(mlx, WIN_X_SZ, WIN_Y_SZ, "Cub3D");
env->win = window;
mlx_mouse_hide(mlx, win);
}
int mouse_move_hook(int x, int y, t_env *env)
{
int dx;
(void)y;
dx = WIN_X_SZ / 2 - x;
if (dx)
env->playerDir = dvec_rot(env->playerDir,
(double)(-M_PI * dx / 1800.0), 1);
mlx_mouse_move(env->mlx, env->win, WIN_X_SZ / 2, WIN_Y_SZ / 2);
return (1);
}
#elif __APPLE__
void init_window(t_env *env)
{
void *mlx;
void *window;
mlx = mlx_init();
env->mlx = mlx;
window = mlx_new_window(mlx, WIN_X_SZ, WIN_Y_SZ, "Cub3D");
env->win = window;
mlx_mouse_hide();
}
int mouse_move_hook(int x, int y, t_env *env)
{
int dx;
(void)y;
dx = WIN_X_SZ / 2 - x;
if (dx)
env->playerDir = dvec_rot(env->playerDir,
(double)(-M_PI * dx / 1800.0), 1);
mlx_mouse_move(env->win, WIN_X_SZ / 2, WIN_Y_SZ / 2);
return (1);
}
#endif
void init_game(t_env *env)
{
int y;
y = 0;
while (y < 5)
{
env->tex[y].img = mlx_xpm_file_to_image(env->mlx,
env->tex[y].file, &env->tex[y].width, &env->tex[y].height);
env->tex[y].buffer = (int *)mlx_get_data_addr(env->tex[y].img, \
&env->tex[y].pixel_bits,
&env->tex[y].line_bytes,
&env->tex[y].endian);
env->tex[y].line_bytes /= 4;
y++;
}
env->img = mlx_new_image(env->mlx, WIN_X_SZ, WIN_Y_SZ);
env->buffer = (int *)mlx_get_data_addr(env->img, \
&env->pixel_bits, &env->line_bytes, &env->endian);
env->line_bytes /= 4;
mlx_hook(env->win, 2, 1L << 0, key_press_hook, env);
mlx_hook(env->win, 3, 1L << 1, key_release_hook, env);
mlx_hook(env->win, 6, 0L, mouse_move_hook, env);
}

19
src/hooks.c → src/mlx/mlx_2.c

@ -1,16 +1,16 @@
/* ************************************************************************** */ /* ************************************************************************** */
/* */ /* */
/* ::: :::::::: */ /* ::: :::::::: */
/* hooks.c :+: :+: :+: */ /* mlx_2.c :+: :+: :+: */
/* +:+ +:+ +:+ */ /* +:+ +:+ +:+ */
/* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */ /* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/06/01 13:47:30 by narnaud #+# #+# */ /* Created: 2022/06/01 13:47:30 by narnaud #+# #+# */
/* Updated: 2022/08/23 16:27:20 by narnaud ### ########.fr */ /* Updated: 2022/08/25 14:18:26 by narnaud ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include "../includes/cub3d.h" #include "../../includes/cub3d.h"
int key_press_hook(int keycode, t_env *env) int key_press_hook(int keycode, t_env *env)
{ {
@ -29,19 +29,6 @@ int key_release_hook(int keycode, t_env *env)
return (1); return (1);
} }
int mouse_move_hook(int x, int y, t_env *env)
{
int dx;
(void)y;
dx = WIN_X_SZ / 2 - x;
if (dx)
env->playerDir = dvec_rot(env->playerDir,
(double)(-M_PI * dx / 1800.0), 1);
mlx_mouse_move(env->mlx, env->win, WIN_X_SZ / 2, WIN_Y_SZ / 2);
return (1);
}
int update_hook(t_env *env) int update_hook(t_env *env)
{ {
t_dvec d; t_dvec d;

4
src/parsing/parsing.c

@ -6,7 +6,7 @@
/* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */ /* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/05/23 17:20:29 by narnaud #+# #+# */ /* Created: 2022/05/23 17:20:29 by narnaud #+# #+# */
/* Updated: 2022/08/23 16:42:35 by narnaud ### ########.fr */ /* Updated: 2022/08/25 11:25:38 by narnaud ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -109,7 +109,7 @@ t_env *parse_file(char *filename)
{ {
if (*line && *line != '\n' && progress > 6 && progress++) if (*line && *line != '\n' && progress > 6 && progress++)
ft_slst_add_back(&e_map, read_map_line(ret, line)); ft_slst_add_back(&e_map, read_map_line(ret, line));
else else if (*line != '#')
register_settings(&progress, ret, line); register_settings(&progress, ret, line);
free(line); free(line);
line = get_next_line(fd); line = get_next_line(fd);

96
textures/bluebrick.xpm

@ -0,0 +1,96 @@
/* XPM */
static char *_b5a7e7efb414f3bb578ade0f180d64bkrjcui0RVaKIC1jq[] = {
/* columns rows colors chars-per-pixel */
"64 64 26 1 ",
" c #202020",
". c #2C2C2C",
"X c gray19",
"o c #343434",
"O c gray22",
"+ c #000040",
"@ c #00004C",
"# c #000058",
"$ c #000064",
"% c #000070",
"& c #00007C",
"* c gray25",
"= c #484848",
"- c #4C4C4C",
"; c gray33",
": c gray36",
"> c #646464",
", c #000088",
"< c #000098",
"1 c #0000A4",
"2 c #0000B0",
"3 c #0000BC",
"4 c #0000C8",
"5 c #0000D4",
"6 c #0000E0",
"7 c #0000EC",
/* pixels */
"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO",
";O;=====;======;=O=======;;;;;;=========;;;;;;;====OOO==;;=====O",
"O775555555551==;775555555555555555551=O;77776666665555544443331=",
"=74225,15,41$.=;73,3,3,3&3<3<3&3&341%.=O51424224%4&424,21&4<41&.",
"=51&1,1<%1,%$.=;53,,1,%11%<11%<1%1<%#.=;511&$1,%,1&,11,1&,1#1%$.",
"=5&11%<11%1#+.=;5,31,1%1,1%1%,&1%<&%#.==5%1$,1$1%1&1,1$1<&1&1%@.",
"=41&,<&1%,1%+.=;33,1,,<1%,%1,%<&,%1%+.O=3%1&1,$1%%11%1,11&1#1,@.",
"=3&11%1<%<%#+.==34,1%1%1%1%<,%&1%<&%#.O=3<1$,1&,%,&1,1$1&,1&1%+.",
"=31%,#%&#%,%+.O;<<%%@,%%,%@%,%,%@,%%+.O=3%%#%%@,@%#,@%@,$@%,%,+.",
"=&$$$++++++++.O=&$$#########+++++++++.O=,$$$$$$$$$$#########+++.",
"==........ .O;=..... .. .....=;O........... .......",
";OOOO====OOOOO=O=======OOO;===OO======;O=;;;;:>>:;;==*O*;O;===;O",
"7555333333333331=;=7755555544444443333333333333333331=*;77555555",
"2,,2<&2&<,2$2,1+O=;7%24&3$,3,,4<1,&,1,1,1&4$4,<34<41+O=O74&2,2,2",
",1,1&,,$1,$,11%+.==52%1&11,1$1%$,1&1&1$11,$1,1%,1%1%+O=;42&1,&1<",
"%11,<$1&,,<$1,%+.O=5%1,<,,$,,%1,$1,&$&,,1#,&1%1%11%%+.*=4&111&1&",
"1,,1,&&,&1<$1$%+.O=5%11&1$,1$%1$,1&,&1$1,#1$1%,%1%1%+.O=42&1&1<&",
"%1$1%,&<$1$,11%+.=;52#1&1,$,#,%$1,&#&1$,#,1$,1%,1%1%+ O=2&11#1&,",
"%2$%@&%<%<%#<%%+.=;21%,#%<%,$%,#%<%<$,%,,#<%%,@%<%,%+ *;21&%#%<%",
"+@@@@@@@@@@@@+++O=;1$$$$$$$$$$$$$##################++ =O1$+$++$+",
"... ... ... .O=O=Oo......ooOOo... ... .....O=;=.......",
";;=OO=;O;O==OOOO==;===*O*O*O*===;O;=*OOO**==;*OO*===;=;O;*O*;===",
";775555555333333333333333331=;;77555555555533333333333333333331=",
";7,23&3&3&2,2,24,2,2,32$24%+O=;73%512,12,2<2&$1,%,1&,1<,1&,1#1+.",
"O72,1<1&%,11,<,1,$1%1,$,1%2+.=:53<1$1$,%<,$1$,1$1%1&1,1$1<&1&%+.",
"=3$11%,#1$1%1,<1$,1%,1,$&1%+.;>53&1&1$1%<1&1&1,$1%%1<%<,11&1#%+.",
"=32,1@1#%,1,%&1&,$&1$1,$1%#+.;:5%1%<,$,<%1$,$,1&,%,&1,1$1&,1&%+.",
";3%$1@,&1$1#1$1,$,1,$1$,&&2+.=;54%1%1,1,%1$1#%%@1@1#1@11,$@%,%+.",
"=41$%%%#%@%%,$,%%,%%$%<%<%%+.O;41%<%,#%%%%$,%,@1#%1@%,@1#1@1%%+.",
"=1<$$$$$$$$$$$$$$@@@@@@@@@++.O;1$$$$$$$$$$$$$$############+#&#+.",
"==O.................OOO......===........ .OOO. ...........",
";;;;;==O=OOO=;>>;;;===**OO*OO*;===;O;=;=*O*O*=;;==*O*===;O;===;O",
"33333333331=O;55555555333333333333333331=;;475555555553333333333",
"1212<42241+O=O51$1%11$1,11%1,$11$11%1&1+O=;51&1%11$1&,&1%1,1&1%1",
"1&,1<1&1,%+.=;5$1&,1&1<%1,,%,,1,$1%,1$1+O;;51#1%1,$1,1&,,<%<&<,%",
",&1<&1&<1%+.=O5$11&<1%1%1,1#1@,,1,%<1&1+O;>51&1%1,1,11&1%<,1<&1%",
"1,&1<1<&,%+O=;5<$1&1&#<,,,%,1$1,$,<%,1&+O;>5&11%1$11&&1&1,<<,&%,",
"1,&1&1&<1%+O==5$1&#<1%,,1,1%,@$<$1<%1&1+O=;41&11%1,,&1&1%<,1&,1%",
"%%,<%%<%%%+O==<$11#1&%1%1$1#,$1,$<%<1$&+.=;41#1%11,1,1&1%<%<&11%",
"++@@@@@@@++.==1$$$$$$$$$##############++.==1$$$$$$$$$$$$$$$####+",
"............=;=. ..OOO. .........O===....OO=O.. .......",
";=;O=OO==OOOO==OOO=====;;==OOO;===;O=O=O==;=;O;=;:>;-==O;=;=;O;O",
"O7555555533333333333333333333331O;O7755555555333333333333333331=",
";51,,1$11&<1&1%,1$1&1,1$1$11&%1+O=;711$1$1#1%1#1,#<,%1,&1&<%,1+.",
"=51$1,$1,<&1$,#1<$1#,<,$1&1&1%<+.==5,1$,$&#,#<&1#1$1%,%1,&<1$,+.",
"=5,$1$,%$1$1,&,1$<,,#&1@<#,$,,%+.O=5,1$$,1&#1&#<1#1%%1%1&1%,$1+.",
"O51,1,$1,&<1&1#,1$1#,1#<1&111%&+.O=51$1,$1#1%<&&#,$1&,<,<&%1,1+.",
";51$,1$1$1$1$1%1$$1#,&1&,$<$,%1+ O;51$$1$&#1#1#<#1$,%1%&1&<,$%+.",
"O41$1$,%,<&1,,,1<$,&#$1@1%<&1%1+ O;4%1$,$1#&1&#<%,$1%1%1&<%1$1+.",
";1$$$$$$$$$@@@@@@@@@@@@@@@@@@@@+.=;1$$$$$$$$$#####@@@@@@@@@@@++.",
"O=..........OOO. ... .. ..=O=...... .oOo. .... ......",
";O;O;=;====;>>;=;O;=;=*OOO*=;==O==;O;========-;;;-====OX XO==;=",
"555553333333333331=;=77555555553333333333333331=O;75555533333333",
"&1#11$<$1&4&1$1&1+.==51111$1@1&1$1$1<1$1$1#1%$+O=;51$,1#1%1%1$1%",
"1&&1&1$<&$1#&$,$,+.==5&1%1$%@&<&1,$,<$&,%,#1$1+o=;5$1#1%1%,1%1,@",
"1&#&1$<$&1&#1,$<&+.=*5&&%1$&&1#1@11$1$1$,#,,$%+.=;5$1%%11,%,%$%,",
"&<#<$$1$1&1#&%$1$+.=*51@%1$1@1&<$1$,&$1$1,#%<$+.=;51$#1,%%1%1$%1",
"$1&1$1$,1$1&#,1&,+.=*5@11$1&%,#&@1$1$&&$,%#,%$+.==5$1,1%1,%%#1%1",
"$1&&$<<$<$&#1$1$<+.==5@1%1$&&,@<$,@1&$1,$1#1#,+.O=5$1#%#1%1%#$1@",
"&<#1$$,$&&1#1$%,&+.=;41@%1$1@,$1$1%$1$&1$,%,$,+.O=4$$#1#1%1%1$1%",
"@@@@@@@@@@@@@@@@++.==1+++++@@@@@@@@@@@@@@@@@@++ =;1++@@@@@@@@@@@",
"...................=;=Ooo.............. . O==...... ..",
"O;O;OOO=====;;O====;;;;;===;===;==O===*OO*OO*=*O*;==O;====*O*===",
";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
};

96
textures/brownbrick.xpm

@ -0,0 +1,96 @@
/* XPM */
static char *_b5a7e7efb414f3bb578ade0f180d64bkrjcui0RVaKIC1jq[] = {
/* columns rows colors chars-per-pixel */
"64 64 26 1 ",
" c #202020",
". c #2C2C2C",
"X c gray19",
"o c #343434",
"O c gray22",
"+ c #400000",
"@ c #4C0000",
"# c #580000",
"$ c #640000",
"% c #700000",
"& c #7C0000",
"* c gray25",
"= c #484848",
"- c #4C4C4C",
"; c gray33",
": c gray36",
"> c #646464",
", c #885000",
"< c #985000",
"1 c #A45000",
"2 c #B05000",
"3 c #BC5000",
"4 c #C85000",
"5 c #D45000",
"6 c #E05000",
"7 c #EC5000",
/* pixels */
"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO",
";O;=====;======;=O=======;;;;;;=========;;;;;;;====OOO==;;=====O",
"O775555555551==;775555555555555555551=O;77776666665555544443331=",
"=74225,15,41$.=;73,3,3,3&3<3<3&3&341%.=O51424224%4&424,21&4<41&.",
"=51&1,1<%1,%$.=;53,,1,%11%<11%<1%1<%#.=;511&$1,%,1&,11,1&,1#1%$.",
"=5&11%<11%1#+.=;5,31,1%1,1%1%,&1%<&%#.==5%1$,1$1%1&1,1$1<&1&1%@.",
"=41&,<&1%,1%+.=;33,1,,<1%,%1,%<&,%1%+.O=3%1&1,$1%%11%1,11&1#1,@.",
"=3&11%1<%<%#+.==34,1%1%1%1%<,%&1%<&%#.O=3<1$,1&,%,&1,1$1&,1&1%+.",
"=31%,#%&#%,%+.O;<<%%@,%%,%@%,%,%@,%%+.O=3%%#%%@,@%#,@%@,$@%,%,+.",
"=&$$$++++++++.O=&$$#########+++++++++.O=,$$$$$$$$$$#########+++.",
"==........ .O;=..... .. .....=;O........... .......",
";OOOO====OOOOO=O=======OOO;===OO======;O=;;;;:>>:;;==*O*;O;===;O",
"7555333333333331=;=7755555544444443333333333333333331=*;77555555",
"2,,2<&2&<,2$2,1+O=;7%24&3$,3,,4<1,&,1,1,1&4$4,<34<41+O=O74&2,2,2",
",1,1&,,$1,$,11%+.==52%1&11,1$1%$,1&1&1$11,$1,1%,1%1%+O=;42&1,&1<",
"%11,<$1&,,<$1,%+.O=5%1,<,,$,,%1,$1,&$&,,1#,&1%1%11%%+.*=4&111&1&",
"1,,1,&&,&1<$1$%+.O=5%11&1$,1$%1$,1&,&1$1,#1$1%,%1%1%+.O=42&1&1<&",
"%1$1%,&<$1$,11%+.=;52#1&1,$,#,%$1,&#&1$,#,1$,1%,1%1%+ O=2&11#1&,",
"%2$%@&%<%<%#<%%+.=;21%,#%<%,$%,#%<%<$,%,,#<%%,@%<%,%+ *;21&%#%<%",
"+@@@@@@@@@@@@+++O=;1$$$$$$$$$$$$$##################++ =O1$+$++$+",
"... ... ... .O=O=Oo......ooOOo... ... .....O=;=.......",
";;=OO=;O;O==OOOO==;===*O*O*O*===;O;=*OOO**==;*OO*===;=;O;*O*;===",
";775555555333333333333333331=;;77555555555533333333333333333331=",
";7,23&3&3&2,2,24,2,2,32$24%+O=;73%512,12,2<2&$1,%,1&,1<,1&,1#1+.",
"O72,1<1&%,11,<,1,$1%1,$,1%2+.=:53<1$1$,%<,$1$,1$1%1&1,1$1<&1&%+.",
"=3$11%,#1$1%1,<1$,1%,1,$&1%+.;>53&1&1$1%<1&1&1,$1%%1<%<,11&1#%+.",
"=32,1@1#%,1,%&1&,$&1$1,$1%#+.;:5%1%<,$,<%1$,$,1&,%,&1,1$1&,1&%+.",
";3%$1@,&1$1#1$1,$,1,$1$,&&2+.=;54%1%1,1,%1$1#%%@1@1#1@11,$@%,%+.",
"=41$%%%#%@%%,$,%%,%%$%<%<%%+.O;41%<%,#%%%%$,%,@1#%1@%,@1#1@1%%+.",
"=1<$$$$$$$$$$$$$$@@@@@@@@@++.O;1$$$$$$$$$$$$$$############+#&#+.",
"==O.................OOO......===........ .OOO. ...........",
";;;;;==O=OOO=;>>;;;===**OO*OO*;===;O;=;=*O*O*=;;==*O*===;O;===;O",
"33333333331=O;55555555333333333333333331=;;475555555553333333333",
"1212<42241+O=O51$1%11$1,11%1,$11$11%1&1+O=;51&1%11$1&,&1%1,1&1%1",
"1&,1<1&1,%+.=;5$1&,1&1<%1,,%,,1,$1%,1$1+O;;51#1%1,$1,1&,,<%<&<,%",
",&1<&1&<1%+.=O5$11&<1%1%1,1#1@,,1,%<1&1+O;>51&1%1,1,11&1%<,1<&1%",
"1,&1<1<&,%+O=;5<$1&1&#<,,,%,1$1,$,<%,1&+O;>5&11%1$11&&1&1,<<,&%,",
"1,&1&1&<1%+O==5$1&#<1%,,1,1%,@$<$1<%1&1+O=;41&11%1,,&1&1%<,1&,1%",
"%%,<%%<%%%+O==<$11#1&%1%1$1#,$1,$<%<1$&+.=;41#1%11,1,1&1%<%<&11%",
"++@@@@@@@++.==1$$$$$$$$$##############++.==1$$$$$$$$$$$$$$$####+",
"............=;=. ..OOO. .........O===....OO=O.. .......",
";=;O=OO==OOOO==OOO=====;;==OOO;===;O=O=O==;=;O;=;:>;-==O;=;=;O;O",
"O7555555533333333333333333333331O;O7755555555333333333333333331=",
";51,,1$11&<1&1%,1$1&1,1$1$11&%1+O=;711$1$1#1%1#1,#<,%1,&1&<%,1+.",
"=51$1,$1,<&1$,#1<$1#,<,$1&1&1%<+.==5,1$,$&#,#<&1#1$1%,%1,&<1$,+.",
"=5,$1$,%$1$1,&,1$<,,#&1@<#,$,,%+.O=5,1$$,1&#1&#<1#1%%1%1&1%,$1+.",
"O51,1,$1,&<1&1#,1$1#,1#<1&111%&+.O=51$1,$1#1%<&&#,$1&,<,<&%1,1+.",
";51$,1$1$1$1$1%1$$1#,&1&,$<$,%1+ O;51$$1$&#1#1#<#1$,%1%&1&<,$%+.",
"O41$1$,%,<&1,,,1<$,&#$1@1%<&1%1+ O;4%1$,$1#&1&#<%,$1%1%1&<%1$1+.",
";1$$$$$$$$$@@@@@@@@@@@@@@@@@@@@+.=;1$$$$$$$$$#####@@@@@@@@@@@++.",
"O=..........OOO. ... .. ..=O=...... .oOo. .... ......",
";O;O;=;====;>>;=;O;=;=*OOO*=;==O==;O;========-;;;-====OX XO==;=",
"555553333333333331=;=77555555553333333333333331=O;75555533333333",
"&1#11$<$1&4&1$1&1+.==51111$1@1&1$1$1<1$1$1#1%$+O=;51$,1#1%1%1$1%",
"1&&1&1$<&$1#&$,$,+.==5&1%1$%@&<&1,$,<$&,%,#1$1+o=;5$1#1%1%,1%1,@",
"1&#&1$<$&1&#1,$<&+.=*5&&%1$&&1#1@11$1$1$,#,,$%+.=;5$1%%11,%,%$%,",
"&<#<$$1$1&1#&%$1$+.=*51@%1$1@1&<$1$,&$1$1,#%<$+.=;51$#1,%%1%1$%1",
"$1&1$1$,1$1&#,1&,+.=*5@11$1&%,#&@1$1$&&$,%#,%$+.==5$1,1%1,%%#1%1",
"$1&&$<<$<$&#1$1$<+.==5@1%1$&&,@<$,@1&$1,$1#1#,+.O=5$1#%#1%1%#$1@",
"&<#1$$,$&&1#1$%,&+.=;41@%1$1@,$1$1%$1$&1$,%,$,+.O=4$$#1#1%1%1$1%",
"@@@@@@@@@@@@@@@@++.==1+++++@@@@@@@@@@@@@@@@@@++ =;1++@@@@@@@@@@@",
"...................=;=Ooo.............. . O==...... ..",
"O;O;OOO=====;;O====;;;;;===;===;==O===*OO*OO*=*O*;==O;====*O*===",
";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
};

96
textures/greenbrick.xpm

@ -0,0 +1,96 @@
/* XPM */
static char *_b5a7e7efb414f3bb578ade0f180d64bkrjcui0RVaKIC1jq[] = {
/* columns rows colors chars-per-pixel */
"64 64 26 1 ",
" c #202020",
". c #2C2C2C",
"X c gray19",
"o c #343434",
"O c gray22",
"+ c #004000",
"@ c #004C00",
"# c #005800",
"$ c #006400",
"% c #007000",
"& c #007C00",
"* c gray25",
"= c #484848",
"- c #4C4C4C",
"; c gray33",
": c gray36",
"> c #646464",
", c #008800",
"< c #009800",
"1 c #00A400",
"2 c #00B000",
"3 c #00BC00",
"4 c #00C800",
"5 c #00D400",
"6 c #00E000",
"7 c #00EC00",
/* pixels */
"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO",
";O;=====;======;=O=======;;;;;;=========;;;;;;;====OOO==;;=====O",
"O775555555551==;775555555555555555551=O;77776666665555544443331=",
"=74225,15,41$.=;73,3,3,3&3<3<3&3&341%.=O51424224%4&424,21&4<41&.",
"=51&1,1<%1,%$.=;53,,1,%11%<11%<1%1<%#.=;511&$1,%,1&,11,1&,1#1%$.",
"=5&11%<11%1#+.=;5,31,1%1,1%1%,&1%<&%#.==5%1$,1$1%1&1,1$1<&1&1%@.",
"=41&,<&1%,1%+.=;33,1,,<1%,%1,%<&,%1%+.O=3%1&1,$1%%11%1,11&1#1,@.",
"=3&11%1<%<%#+.==34,1%1%1%1%<,%&1%<&%#.O=3<1$,1&,%,&1,1$1&,1&1%+.",
"=31%,#%&#%,%+.O;<<%%@,%%,%@%,%,%@,%%+.O=3%%#%%@,@%#,@%@,$@%,%,+.",
"=&$$$++++++++.O=&$$#########+++++++++.O=,$$$$$$$$$$#########+++.",
"==........ .O;=..... .. .....=;O........... .......",
";OOOO====OOOOO=O=======OOO;===OO======;O=;;;;:>>:;;==*O*;O;===;O",
"7555333333333331=;=7755555544444443333333333333333331=*;77555555",
"2,,2<&2&<,2$2,1+O=;7%24&3$,3,,4<1,&,1,1,1&4$4,<34<41+O=O74&2,2,2",
",1,1&,,$1,$,11%+.==52%1&11,1$1%$,1&1&1$11,$1,1%,1%1%+O=;42&1,&1<",
"%11,<$1&,,<$1,%+.O=5%1,<,,$,,%1,$1,&$&,,1#,&1%1%11%%+.*=4&111&1&",
"1,,1,&&,&1<$1$%+.O=5%11&1$,1$%1$,1&,&1$1,#1$1%,%1%1%+.O=42&1&1<&",
"%1$1%,&<$1$,11%+.=;52#1&1,$,#,%$1,&#&1$,#,1$,1%,1%1%+ O=2&11#1&,",
"%2$%@&%<%<%#<%%+.=;21%,#%<%,$%,#%<%<$,%,,#<%%,@%<%,%+ *;21&%#%<%",
"+@@@@@@@@@@@@+++O=;1$$$$$$$$$$$$$##################++ =O1$+$++$+",
"... ... ... .O=O=Oo......ooOOo... ... .....O=;=.......",
";;=OO=;O;O==OOOO==;===*O*O*O*===;O;=*OOO**==;*OO*===;=;O;*O*;===",
";775555555333333333333333331=;;77555555555533333333333333333331=",
";7,23&3&3&2,2,24,2,2,32$24%+O=;73%512,12,2<2&$1,%,1&,1<,1&,1#1+.",
"O72,1<1&%,11,<,1,$1%1,$,1%2+.=:53<1$1$,%<,$1$,1$1%1&1,1$1<&1&%+.",
"=3$11%,#1$1%1,<1$,1%,1,$&1%+.;>53&1&1$1%<1&1&1,$1%%1<%<,11&1#%+.",
"=32,1@1#%,1,%&1&,$&1$1,$1%#+.;:5%1%<,$,<%1$,$,1&,%,&1,1$1&,1&%+.",
";3%$1@,&1$1#1$1,$,1,$1$,&&2+.=;54%1%1,1,%1$1#%%@1@1#1@11,$@%,%+.",
"=41$%%%#%@%%,$,%%,%%$%<%<%%+.O;41%<%,#%%%%$,%,@1#%1@%,@1#1@1%%+.",
"=1<$$$$$$$$$$$$$$@@@@@@@@@++.O;1$$$$$$$$$$$$$$############+#&#+.",
"==O.................OOO......===........ .OOO. ...........",
";;;;;==O=OOO=;>>;;;===**OO*OO*;===;O;=;=*O*O*=;;==*O*===;O;===;O",
"33333333331=O;55555555333333333333333331=;;475555555553333333333",
"1212<42241+O=O51$1%11$1,11%1,$11$11%1&1+O=;51&1%11$1&,&1%1,1&1%1",
"1&,1<1&1,%+.=;5$1&,1&1<%1,,%,,1,$1%,1$1+O;;51#1%1,$1,1&,,<%<&<,%",
",&1<&1&<1%+.=O5$11&<1%1%1,1#1@,,1,%<1&1+O;>51&1%1,1,11&1%<,1<&1%",
"1,&1<1<&,%+O=;5<$1&1&#<,,,%,1$1,$,<%,1&+O;>5&11%1$11&&1&1,<<,&%,",
"1,&1&1&<1%+O==5$1&#<1%,,1,1%,@$<$1<%1&1+O=;41&11%1,,&1&1%<,1&,1%",
"%%,<%%<%%%+O==<$11#1&%1%1$1#,$1,$<%<1$&+.=;41#1%11,1,1&1%<%<&11%",
"++@@@@@@@++.==1$$$$$$$$$##############++.==1$$$$$$$$$$$$$$$####+",
"............=;=. ..OOO. .........O===....OO=O.. .......",
";=;O=OO==OOOO==OOO=====;;==OOO;===;O=O=O==;=;O;=;:>;-==O;=;=;O;O",
"O7555555533333333333333333333331O;O7755555555333333333333333331=",
";51,,1$11&<1&1%,1$1&1,1$1$11&%1+O=;711$1$1#1%1#1,#<,%1,&1&<%,1+.",
"=51$1,$1,<&1$,#1<$1#,<,$1&1&1%<+.==5,1$,$&#,#<&1#1$1%,%1,&<1$,+.",
"=5,$1$,%$1$1,&,1$<,,#&1@<#,$,,%+.O=5,1$$,1&#1&#<1#1%%1%1&1%,$1+.",
"O51,1,$1,&<1&1#,1$1#,1#<1&111%&+.O=51$1,$1#1%<&&#,$1&,<,<&%1,1+.",
";51$,1$1$1$1$1%1$$1#,&1&,$<$,%1+ O;51$$1$&#1#1#<#1$,%1%&1&<,$%+.",
"O41$1$,%,<&1,,,1<$,&#$1@1%<&1%1+ O;4%1$,$1#&1&#<%,$1%1%1&<%1$1+.",
";1$$$$$$$$$@@@@@@@@@@@@@@@@@@@@+.=;1$$$$$$$$$#####@@@@@@@@@@@++.",
"O=..........OOO. ... .. ..=O=...... .oOo. .... ......",
";O;O;=;====;>>;=;O;=;=*OOO*=;==O==;O;========-;;;-====OX XO==;=",
"555553333333333331=;=77555555553333333333333331=O;75555533333333",
"&1#11$<$1&4&1$1&1+.==51111$1@1&1$1$1<1$1$1#1%$+O=;51$,1#1%1%1$1%",
"1&&1&1$<&$1#&$,$,+.==5&1%1$%@&<&1,$,<$&,%,#1$1+o=;5$1#1%1%,1%1,@",
"1&#&1$<$&1&#1,$<&+.=*5&&%1$&&1#1@11$1$1$,#,,$%+.=;5$1%%11,%,%$%,",
"&<#<$$1$1&1#&%$1$+.=*51@%1$1@1&<$1$,&$1$1,#%<$+.=;51$#1,%%1%1$%1",
"$1&1$1$,1$1&#,1&,+.=*5@11$1&%,#&@1$1$&&$,%#,%$+.==5$1,1%1,%%#1%1",
"$1&&$<<$<$&#1$1$<+.==5@1%1$&&,@<$,@1&$1,$1#1#,+.O=5$1#%#1%1%#$1@",
"&<#1$$,$&&1#1$%,&+.=;41@%1$1@,$1$1%$1$&1$,%,$,+.O=4$$#1#1%1%1$1%",
"@@@@@@@@@@@@@@@@++.==1+++++@@@@@@@@@@@@@@@@@@++ =;1++@@@@@@@@@@@",
"...................=;=Ooo.............. . O==...... ..",
"O;O;OOO=====;;O====;;;;;===;===;==O===*OO*OO*=*O*;==O;====*O*===",
";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
};

96
textures/greybrick.xpm

@ -0,0 +1,96 @@
/* XPM */
static char *_b5a7e7efb414f3bb578ade0f180d64bkrjcui0RVaKIC1jq[] = {
/* columns rows colors chars-per-pixel */
"64 64 26 1 ",
" c #202020",
". c #2C2C2C",
"X c gray19",
"o c #343434",
"O c gray22",
"+ c #404040",
"@ c #4C4C4C",
"# c #585858",
"$ c #646464",
"% c #707070",
"& c #7C7C7C",
"* c gray25",
"= c #484848",
"- c #4C4C4C",
"; c gray33",
": c gray36",
"> c #646464",
", c #888888",
"< c #989898",
"1 c #A4A4A4",
"2 c #B0B0B0",
"3 c #BCBCBC",
"4 c #C8C8C8",
"5 c #D4D4D4",
"6 c #E0E0E0",
"7 c #ECECEC",
/* pixels */
"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO",
";O;=====;======;=O=======;;;;;;=========;;;;;;;====OOO==;;=====O",
"O775555555551==;775555555555555555551=O;77776666665555544443331=",
"=74225,15,41$.=;73,3,3,3&3<3<3&3&341%.=O51424224%4&424,21&4<41&.",
"=51&1,1<%1,%$.=;53,,1,%11%<11%<1%1<%#.=;511&$1,%,1&,11,1&,1#1%$.",
"=5&11%<11%1#+.=;5,31,1%1,1%1%,&1%<&%#.==5%1$,1$1%1&1,1$1<&1&1%@.",
"=41&,<&1%,1%+.=;33,1,,<1%,%1,%<&,%1%+.O=3%1&1,$1%%11%1,11&1#1,@.",
"=3&11%1<%<%#+.==34,1%1%1%1%<,%&1%<&%#.O=3<1$,1&,%,&1,1$1&,1&1%+.",
"=31%,#%&#%,%+.O;<<%%@,%%,%@%,%,%@,%%+.O=3%%#%%@,@%#,@%@,$@%,%,+.",
"=&$$$++++++++.O=&$$#########+++++++++.O=,$$$$$$$$$$#########+++.",
"==........ .O;=..... .. .....=;O........... .......",
";OOOO====OOOOO=O=======OOO;===OO======;O=;;;;:>>:;;==*O*;O;===;O",
"7555333333333331=;=7755555544444443333333333333333331=*;77555555",
"2,,2<&2&<,2$2,1+O=;7%24&3$,3,,4<1,&,1,1,1&4$4,<34<41+O=O74&2,2,2",
",1,1&,,$1,$,11%+.==52%1&11,1$1%$,1&1&1$11,$1,1%,1%1%+O=;42&1,&1<",
"%11,<$1&,,<$1,%+.O=5%1,<,,$,,%1,$1,&$&,,1#,&1%1%11%%+.*=4&111&1&",
"1,,1,&&,&1<$1$%+.O=5%11&1$,1$%1$,1&,&1$1,#1$1%,%1%1%+.O=42&1&1<&",
"%1$1%,&<$1$,11%+.=;52#1&1,$,#,%$1,&#&1$,#,1$,1%,1%1%+ O=2&11#1&,",
"%2$%@&%<%<%#<%%+.=;21%,#%<%,$%,#%<%<$,%,,#<%%,@%<%,%+ *;21&%#%<%",
"+@@@@@@@@@@@@+++O=;1$$$$$$$$$$$$$##################++ =O1$+$++$+",
"... ... ... .O=O=Oo......ooOOo... ... .....O=;=.......",
";;=OO=;O;O==OOOO==;===*O*O*O*===;O;=*OOO**==;*OO*===;=;O;*O*;===",
";775555555333333333333333331=;;77555555555533333333333333333331=",
";7,23&3&3&2,2,24,2,2,32$24%+O=;73%512,12,2<2&$1,%,1&,1<,1&,1#1+.",
"O72,1<1&%,11,<,1,$1%1,$,1%2+.=:53<1$1$,%<,$1$,1$1%1&1,1$1<&1&%+.",
"=3$11%,#1$1%1,<1$,1%,1,$&1%+.;>53&1&1$1%<1&1&1,$1%%1<%<,11&1#%+.",
"=32,1@1#%,1,%&1&,$&1$1,$1%#+.;:5%1%<,$,<%1$,$,1&,%,&1,1$1&,1&%+.",
";3%$1@,&1$1#1$1,$,1,$1$,&&2+.=;54%1%1,1,%1$1#%%@1@1#1@11,$@%,%+.",
"=41$%%%#%@%%,$,%%,%%$%<%<%%+.O;41%<%,#%%%%$,%,@1#%1@%,@1#1@1%%+.",
"=1<$$$$$$$$$$$$$$@@@@@@@@@++.O;1$$$$$$$$$$$$$$############+#&#+.",
"==O.................OOO......===........ .OOO. ...........",
";;;;;==O=OOO=;>>;;;===**OO*OO*;===;O;=;=*O*O*=;;==*O*===;O;===;O",
"33333333331=O;55555555333333333333333331=;;475555555553333333333",
"1212<42241+O=O51$1%11$1,11%1,$11$11%1&1+O=;51&1%11$1&,&1%1,1&1%1",
"1&,1<1&1,%+.=;5$1&,1&1<%1,,%,,1,$1%,1$1+O;;51#1%1,$1,1&,,<%<&<,%",
",&1<&1&<1%+.=O5$11&<1%1%1,1#1@,,1,%<1&1+O;>51&1%1,1,11&1%<,1<&1%",
"1,&1<1<&,%+O=;5<$1&1&#<,,,%,1$1,$,<%,1&+O;>5&11%1$11&&1&1,<<,&%,",
"1,&1&1&<1%+O==5$1&#<1%,,1,1%,@$<$1<%1&1+O=;41&11%1,,&1&1%<,1&,1%",
"%%,<%%<%%%+O==<$11#1&%1%1$1#,$1,$<%<1$&+.=;41#1%11,1,1&1%<%<&11%",
"++@@@@@@@++.==1$$$$$$$$$##############++.==1$$$$$$$$$$$$$$$####+",
"............=;=. ..OOO. .........O===....OO=O.. .......",
";=;O=OO==OOOO==OOO=====;;==OOO;===;O=O=O==;=;O;=;:>;-==O;=;=;O;O",
"O7555555533333333333333333333331O;O7755555555333333333333333331=",
";51,,1$11&<1&1%,1$1&1,1$1$11&%1+O=;711$1$1#1%1#1,#<,%1,&1&<%,1+.",
"=51$1,$1,<&1$,#1<$1#,<,$1&1&1%<+.==5,1$,$&#,#<&1#1$1%,%1,&<1$,+.",
"=5,$1$,%$1$1,&,1$<,,#&1@<#,$,,%+.O=5,1$$,1&#1&#<1#1%%1%1&1%,$1+.",
"O51,1,$1,&<1&1#,1$1#,1#<1&111%&+.O=51$1,$1#1%<&&#,$1&,<,<&%1,1+.",
";51$,1$1$1$1$1%1$$1#,&1&,$<$,%1+ O;51$$1$&#1#1#<#1$,%1%&1&<,$%+.",
"O41$1$,%,<&1,,,1<$,&#$1@1%<&1%1+ O;4%1$,$1#&1&#<%,$1%1%1&<%1$1+.",
";1$$$$$$$$$@@@@@@@@@@@@@@@@@@@@+.=;1$$$$$$$$$#####@@@@@@@@@@@++.",
"O=..........OOO. ... .. ..=O=...... .oOo. .... ......",
";O;O;=;====;>>;=;O;=;=*OOO*=;==O==;O;========-;;;-====OX XO==;=",
"555553333333333331=;=77555555553333333333333331=O;75555533333333",
"&1#11$<$1&4&1$1&1+.==51111$1@1&1$1$1<1$1$1#1%$+O=;51$,1#1%1%1$1%",
"1&&1&1$<&$1#&$,$,+.==5&1%1$%@&<&1,$,<$&,%,#1$1+o=;5$1#1%1%,1%1,@",
"1&#&1$<$&1&#1,$<&+.=*5&&%1$&&1#1@11$1$1$,#,,$%+.=;5$1%%11,%,%$%,",
"&<#<$$1$1&1#&%$1$+.=*51@%1$1@1&<$1$,&$1$1,#%<$+.=;51$#1,%%1%1$%1",
"$1&1$1$,1$1&#,1&,+.=*5@11$1&%,#&@1$1$&&$,%#,%$+.==5$1,1%1,%%#1%1",
"$1&&$<<$<$&#1$1$<+.==5@1%1$&&,@<$,@1&$1,$1#1#,+.O=5$1#%#1%1%#$1@",
"&<#1$$,$&&1#1$%,&+.=;41@%1$1@,$1$1%$1$&1$,%,$,+.O=4$$#1#1%1%1$1%",
"@@@@@@@@@@@@@@@@++.==1+++++@@@@@@@@@@@@@@@@@@++ =;1++@@@@@@@@@@@",
"...................=;=Ooo.............. . O==...... ..",
"O;O;OOO=====;;O====;;;;;===;===;==O===*OO*OO*=*O*;==O;====*O*===",
";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
};
Loading…
Cancel
Save