===============================================================================
=============================
Name
: pacman.c
Author
: Rafael David Quirino, Marlus Lopes Tavares, Felipe Ferreira Borge
s
Version
: 1.0
Date
: June, 26 / 2011
Copyright : Copyright (c) 2011 Rafael David Quirino, Marlus Lopes Tavares, Fe
lipe Ferreira Borges
Description : PacMan - The Game
------------------Este programa destina-se a implementar o famoso jogo Pacman,
produzido pela
NAMCO em 1980. Todas as partes do cdigo contm os nomes dos autor
es das mesmas e comentrios
que descrevem seu objetivo e, quando necessrio, seu funcionamen
to. H tambm comentrios que
especificam a que funo (ou estrutura) se relaciona uma chave de
fechamento de bloco "}",
quando se trata de uma funo (ou estrutura) muito longa.
Para compilar digite a seguinte instruo: gcc pacman.c -o pacman
-lpthread -lncurses
------------------------------------------References :
rozo dos Santos,
abaixo:
www.vivaolinux.com.br/artigo/Utilizando-a-biblioteca-NCURSES-P
arte-III?pagina=3 .
-----------------------------------------------------------------------------===============================================================================
=============================
*/
// Bibliotecas utilizadas
#include
#include
#include
#include
#include
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
<stdio.h>
<stdlib.h>
<time.h>
<pthread.h>
<curses.h>
TAMANHO 33
ENTER 10
ESCAPE 27
FALSO 0
VERDADEIRO 1
EM_ANDAMENTO 0
TERMINADO 1
CAMINHO 0
PAREDE 1
PARADO -1
// Biblioteca padro
// Biblioteca padro
// Para gerao de nmeros aleatrios
// Para utilizao de threads e mutexes de sincronizao
// Para tratamento grfico do terminal
#define
#define
#define
#define
#define
NENHUMA -1
CIMA 0
BAIXO 1
ESQUERDA 2
DIREITA 3
////////////////////////
const int labirinto_1[TAMANHO][TAMANHO] =
{
1, 1, 1, 1, 1, 1, 1, 1 ,1 ,1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 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, 1,
1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1,
1, 0, 1, 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, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1,
0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1,
0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1,
0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1,
0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1,
0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0,
0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1,
1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1,
0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1,
0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1,
1, 0, 1, 0, 1, 1, 1,
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1,
1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
};//labirinto_1
const int labirinto_2[TAMANHO][TAMANHO] =
{
1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0,
1 ,1, 1, 1, 1, 1, 1, 1, 1,
1 ,1 ,1, 1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 1, 0, 1, 0, 1, 0,
0, 1, 0, 1, 0, 1, 0, 1, 0,
0, 1, 0, 1, 0, 1, 0, 1, 0,
0, 1, 0, 1, 0, 0, 0, 0, 0,
0, 1, 0, 1, 0, 1, 1, 1, 1,
0, 1, 0, 1, 0, 0, 0, 0, 0,
0, 1, 0, 1, 1, 1, 1, 1, 1,
0, 1, 0, 1, 0, 0, 0, 0, 0,
0, 1, 0, 1, 0, 1, 1, 1, 1,
0, 1, 0, 1, 0, 0, 0, 0, 0,
0, 1, 0, 1, 0, 1, 0, 1, 0,
0, 1, 0, 1, 0, 1, 0, 1, 0,
0, 1, 0, 1, 0, 0, 0, 0, 0,
0, 1, 0, 1, 0, 0, 1, 1, 1,
0, 1, 0, 1, 0, 0, 1, 0, 0,
0, 1, 0, 1, 0, 0, 1, 0, 0,
0, 1, 0, 1, 0, 0, 1, 1, 1,
0, 1, 0, 1, 0, 0, 0, 0, 0,
0, 1, 0, 1, 0, 0, 0, 0, 0,
0, 1, 0, 1, 1, 1, 1, 1, 1,
0, 1, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
};//labirinto_2
const int labirinto_3[TAMANHO][TAMANHO] =
{
1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 0, 1, 0, 0, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 1,
0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 0, 0,
0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 0, 0, 1, 0, 1,
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1,
1, 0, 0, 1, 1, 0, 1,
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1,
1, 0, 1, 1, 0, 0, 0,
0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1,
1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1,
1, 0, 1, 1, 0, 0, 0,
0, 1, 0, 1, 0, 1, 0, 1, 0,
0, 1, 0, 1, 0, 1, 0, 1, 0,
0, 1, 0, 1, 0, 1, 0, 1, 0,
0, 1, 0, 1, 0, 1, 0, 1, 0,
0, 1, 0, 1, 0, 1, 0, 1, 0,
0, 1, 0, 1, 0, 1, 0, 1, 0,
0, 1, 0, 1, 0, 1, 0, 1, 0,
0, 1, 0, 1, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
1 ,1 ,1, 1, 1, 1, 1, 1, 1,
1 ,1 ,1, 1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 1, 1, 1, 1, 1, 1, 0, 1,
0, 0, 0, 0, 0, 0, 1, 0, 1,
1, 1, 1, 1, 0, 0, 1, 0, 1,
0, 0, 0, 0, 0, 0, 1, 0, 1,
0, 1, 1, 0, 0, 0, 1, 0, 1,
0, 0, 1, 0, 0, 0, 1, 0, 1,
0, 0, 1, 0, 0, 0, 1, 0, 1,
0, 0, 1, 0, 0, 0, 1, 0, 1,
0, 0, 1, 0, 0, 0, 1, 0, 1,
0, 0, 1, 0, 0, 0, 1, 1, 1,
0, 0, 1, 0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0, 1, 1, 1,
1, 1, 1, 1, 1, 0, 1, 0, 0,
0, 0, 1, 0, 0, 0, 1, 0, 0,
0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1,
1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1,
1, 0, 0, 0, 1, 0, 1, 0, 0, 1,
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 0, 1,
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 0, 1,
0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 0, 1,
0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 0, 1,
0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 1,
0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 0, 0,
0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 1, 1, 1,
0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 0, 0,
0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 0, 0, 0, 1, 1, 1,
0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 1, 0, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1,
1, 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, 1,
1, 1, 1, 1, 1, 1, 1, 1 ,1 ,1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
};//labirinto_3
0, 0, 0, 1, 1, 1,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 1, 1,
0, 0, 0, 1, 0, 1,
0, 0, 0, 1, 0, 1,
0, 0, 0, 1, 0, 1,
0, 0, 0, 1, 0, 1,
1, 0, 0, 1, 0, 1,
0, 0, 0, 1, 0, 1,
1, 1, 1, 1, 0, 1,
0, 0, 0, 0, 0, 1,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1,
{
1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1,
1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1,
1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1,
1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1,
1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1,
1, 0, 0, 0, 1, 1, 1,
1, 1, 1, 0, 0, 0, 1,
1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1,
1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1,
1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1,
1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1,
1, 0, 0, 0, 1, 1, 1,
1, 1, 1, 0, 0, 0, 1,
1, 0, 0, 0, 1, 0, 0,
0, 0, 1, 0, 0, 0, 1,
1, 0, 0, 0, 1, 0, 0,
1 ,1 ,1, 1, 1, 1, 1, 1, 1,
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, 0, 0, 0, 0,
1, 0, 0, 0, 1, 1, 1, 1, 1,
1, 0, 0, 0, 1, 0, 0, 0, 0,
1, 0, 0, 0, 1, 0, 0, 0, 0,
1, 1, 1, 0, 1, 0, 0, 0, 0,
0, 0, 1, 1, 1, 0, 0, 0, 0,
1, 1, 1, 1, 1, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1,
1, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1,
1, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1,
1, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1,
1, 0, 0, 0, 0, 0, 1, 1, 1, 1,
0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1,
1, 0, 0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1,
1, 0, 0, 1, 1, 1, 1, 0, 0, 0,
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 0, 0, 0, 1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1,
1, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1,
1, 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, 1,
1, 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, 1,
1, 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, 1,
1, 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, 1,
1, 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, 1,
1, 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, 1,
1, 1, 1, 1, 1, 1, 1, 1 ,1 ,1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
};//labirinto_4
0, 1, 0, 0, 0, 0,
0, 1, 0, 0, 0, 0,
0, 0, 0, 1, 1, 1,
0, 0, 0, 1, 0, 0,
0, 0, 0, 1, 0, 0,
0, 0, 0, 1, 1, 1,
0, 1, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1,
0, 1, 0, 0, 0, 0,
0, 1, 0, 0, 0, 0,
0, 1, 0, 0, 0, 0,
1, 1, 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, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1,
{
1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1,
1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1,
1, 0, 1, 1, 0, 1, 1,
1, 1, 0, 1, 1, 0, 1,
1, 0, 1, 1, 0, 1, 1,
1, 1, 0, 1, 1, 0, 1,
1, 0, 1, 1, 0, 1, 1,
1, 1, 0, 1, 1, 0, 1,
1, 0, 1, 1, 0, 1, 1,
1, 1, 0, 1, 1, 0, 1,
1, 0, 1, 1, 0, 1, 1,
1, 1, 0, 1, 1, 0, 1,
1, 0, 1, 1, 0, 1, 1,
1 ,1 ,1, 1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 0, 1, 1, 0, 1, 1,
0, 1, 1, 0, 1, 1, 0, 1, 1,
0, 1, 1, 0, 1, 1, 0, 1, 1,
0, 1, 1, 0, 1, 1, 0, 1, 1,
0, 1, 1, 0, 1, 1, 0, 1, 1,
0, 1, 1, 0, 1, 1, 0, 1, 1,
0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1,
1, 0, 1, 1, 0, 1, 1, 0, 1, 1,
0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1,
1, 0, 1, 1, 0, 1, 1, 0, 1, 1,
0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1,
1, 0, 1, 1, 0, 1, 1, 0, 1, 1,
0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1,
1, 0, 1, 1, 0, 1, 1, 0, 1, 1,
0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1,
1, 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, 1,
1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,
1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,
1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,
1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,
1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,
1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,
1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,
1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,
1, 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, 1,
1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,
1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,
1, 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, 1,
1, 0, 1, 1, 0, 1, 1, 0, 1, 1,
0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1,
1, 0, 1, 1, 0, 1, 1, 0, 1, 1,
0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1,
1, 0, 1, 1, 0, 1, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1,
1, 0, 1, 1, 0, 1, 1, 0, 1, 1,
0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1,
1, 0, 1, 1, 0, 1, 1, 0, 1, 1,
0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1,
1, 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, 1,
1, 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, 1,
1, 1, 1, 1, 1, 1, 1, 1 ,1 ,1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
};//labirinto_5
0, 1, 1, 0, 1, 1,
0, 1, 1, 0, 1, 1,
0, 1, 1, 0, 1, 1,
0, 1, 1, 0, 1, 1,
0, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1,
0, 1, 0, 0, 0, 0,
0, 1, 0, 1, 1, 1,
0, 1, 0, 1, 0, 0,
0, 1, 0, 1, 0, 0,
0, 1, 0, 1, 1, 1,
0, 1, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0,
1, 1, 0, 1, 1, 1,
1, 1, 0, 1, 1, 1,
0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1,
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,
1, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1,
1, 0, 1, 0, 1, 1, 1,
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 0, 0, 1, 0, 1,
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1,
1, 0, 1, 0, 0, 0, 1,
0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 0,
0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 1, 1, 0, 1,
1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 0,
0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 0, 0, 1,
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1,
1, 0, 0, 0, 1, 0, 1,
0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 1,
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1,
1, 0, 1, 0, 1, 1, 1,
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1,
1, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1,
1, 0, 1, 1, 1, 1, 1,
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,
1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1, 1, 1, 1,
0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 1, 1, 1, 1, 1, 1,
0, 1, 0, 1, 0, 0, 0, 0, 0,
0, 1, 0, 1, 0, 0, 0, 0, 0,
0, 1, 0, 1, 0, 0, 0, 0, 0,
0, 1, 0, 1, 0, 0, 0, 0, 0,
0, 1, 0, 1, 0, 0, 1, 1, 1,
0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 1, 0, 1, 0, 0, 1, 0, 0,
0, 1, 0, 1, 0, 0, 1, 1, 1,
0, 1, 0, 1, 0, 0, 0, 0, 0,
0, 1, 0, 1, 0, 0, 0, 0, 0,
0, 1, 0, 1, 1, 1, 1, 1, 1,
0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
1 ,1 ,1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
};//labirinto_6
const int labirinto_7[33][33] =
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 0, 0, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 1, 1, 1, 1, 1, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
1, 1, 1, 0, 1, 1, 0, 0, 1, 0,
0, 0, 0, 0, 0, 1, 0, 0, 1, 0,
0, 0, 0, 0, 0, 1, 0, 0, 1, 0,
1, 1, 1, 0, 0, 1, 0, 0, 1, 0,
0, 0, 1, 0, 0, 1, 0, 0, 1, 0,
0, 0, 1, 0, 0, 1, 0, 0, 1, 0,
0, 0, 0, 0, 0, 1, 0, 0, 1, 0,
0, 1, 1, 1, 0, 1, 0, 0, 1, 0,
0, 0, 0, 1, 0, 1, 0, 0, 1, 0,
0, 0, 0, 1, 0, 1, 0, 0, 1, 0,
1, 1, 1, 1, 0, 1, 0, 0, 1, 0,
0, 0, 0, 0, 0, 1, 0, 0, 1, 0,
0, 1, 1, 1, 1, 1, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
1, 1, 1, 0, 1, 1, 1, 1, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
{
1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1,
1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1,
1, 0, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 0, 1,
1, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 1,
1, 0, 0, 0, 0, 1, 0,
0, 1, 0, 0, 0, 0, 1,
1, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1,
1, 0, 0, 0, 0, 1, 0,
0, 1, 0, 0, 0, 0, 1,
1, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 1,
1, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 0, 0,
1 ,1 ,1, 1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1, 1, 1, 1,
0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 1, 1, 0, 1, 1,
0, 1, 0, 0, 1, 0, 0, 0, 0,
0, 1, 0, 0, 1, 0, 0, 0, 0,
0, 1, 0, 0, 1, 0, 0, 1, 1,
0, 1, 0, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 0, 0, 0,
0, 1, 0, 0, 1, 0, 1, 1, 1,
0, 1, 0, 0, 1, 0, 1, 0, 0,
0, 1, 0, 0, 1, 0, 1, 0, 0,
0, 1, 0, 0, 1, 0, 1, 1, 1,
0, 1, 0, 0, 1, 0, 0, 0, 0,
0, 1, 0, 0, 1, 1, 1, 1, 1,
0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1, 0, 1, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1,
1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,
1, 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, 1,
1, 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, 1,
1, 1, 1, 1, 1, 1, 1, 1 ,1 ,1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
};//labirinto_7
0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1,
{
1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1,
1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1,
1, 0, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 0, 1,
1, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 1,
1, 0, 0, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1,
1, 0, 0, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1,
1, 0, 0, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 1,
1, 0, 0, 0, 0, 1, 0,
0, 1, 0, 0, 0, 0, 1,
1, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 1,
1, 0, 0, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 0,
0, 0, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1,
1, 0, 0, 0, 0, 1, 0,
0, 1, 0, 0, 0, 0, 1,
1, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 0,
0, 0, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 0,
1 ,1 ,1, 1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1, 1, 1, 1,
0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 1, 1, 0, 1, 1,
0, 1, 0, 0, 1, 0, 0, 0, 0,
0, 1, 0, 0, 1, 0, 0, 0, 0,
0, 1, 0, 0, 1, 0, 0, 1, 1,
0, 1, 0, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 1, 0, 1, 1, 1,
0, 1, 0, 0, 1, 0, 1, 0, 0,
0, 1, 0, 0, 1, 0, 1, 0, 0,
0, 1, 0, 0, 0, 0, 1, 1, 1,
0, 1, 0, 0, 1, 0, 0, 0, 0,
0, 1, 0, 0, 1, 1, 1, 1, 1,
0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1,
1, 0, 0, 0, 0, 1, 0, 0, 1, 1,
1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 1, 1, 1, 1, 1,
1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1,
1, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1,
1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1,
1, 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, 1,
1, 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, 1,
1, 1, 1, 1, 1, 1, 1, 1 ,1 ,1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
};//labirinto_8
1, 1, 1, 0, 1, 1,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1,
}Pacman;
//-------------------------------------------------------------------------------------------------------------------//-------------------------------------------------------------------------------------------------------------------//FANTASMA
//-------------------------------------------------------------------------------------------------------------------typedef struct
{
int linha;
// Posio linha do fantasma
int coluna;
// Posio coluna do fantasma
int direcao;
// Direcao pretendida pelo fanta
sma
int movimento;
// Movimento realizado pelo fantasma
int velocidade;
// Velocidade do fantasma
char char_representante;
ma
}Fantasma;
//-------------------------------------------------------------------------------------------------------------------//-------------------------------------------------------------------------------------------------------------------//TABULEIRO
//-------------------------------------------------------------------------------------------------------------------typedef struct
{
int labirinto[33][33];
// Labirinto do mapa
int matriz_moedas[33][33];
// Posies das moedas
int numero_moedas;
// Nmero de moedas em um determ
inado momento
int numero_maximo_moedas;
// Nmero inicial de moedas
int estado;
// Estado do jogo , necessrio p
ara notificao de finalizao das threads
int vitorias;
// Nmero de vitrias do jogador
int zerado;
// Para saber se um jogo foi "
zerado" (se houve 8 vitrias seguidas)
int pausado;
// Para saber se o jogo est pau
sado ou no
Fantasma
Fantasma
Fantasma
Fantasma
fantasma1;
fantasma2;
fantasma3;
fantasma4;
Pacman pacman;
//
//
//
//
Fantasma
Fantasma
Fantasma
Fantasma
1
2
3
4
// Pacman
}Mapa;
//-------------------------------------------------------------------------------------------------------------------////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
--------------------------------------------------------------// Threads dos fantasmas e um Mutex para sincronizao das threads do jogo
// (Todas as threads acessam a funo draw_mapa(Mapa*), o que leva a necessidade de
sincronizao do acesso a mesma)
//-------------------------------------------------------------------------------------------------------------------------------------------pthread_t f1, f2, f3, f4, pausa;
pthread_mutex_t mutex_mapa;
//--------------------------------------------------------------------------------------------------------------------------------------------
delwin(menu);
clear();
}while(key != ESCAPE);
pthread_mutex_destroy(&mutex_mapa);
end(); // Finalizao das funes grficas da biblioteca curses.h
return 0;
}//int main()
printw("+-----------------+");
move(5, 102);
printw("| VOCE PERDEU ... |");
move(6, 102);
printw("+-----------------+");
move(8, 102);
printw("Pressione <enter> para sair...");
}
");
");
");
move(17, 67);
printw("+-------------------+");
refresh();
usleep(3000000);
}//void imprimir_inicio()
");
");
");
4, 71);
");
6, 65);
");
8, 65);
");
10, 65);
refresh();
");
}
}//void imprimir_final()
PAUSA");
refresh();
usleep(500000);
move(5, 102);
printw("
");
refresh();
usleep(500000);
}
return NULL;
}//void *imprimir_pausa(void *arg)
move(4, 102);
printw("Vai !!!
move(5, 102);
printw("
");
");
refresh();
usleep(1000000);
}//void contagem_regressiva()
curs_set(0);
el
noecho();
na tela
keypad(stdscr,TRUE);
}//void init()
////////////////
int i;
WINDOW **itensmenu;
itensmenu=(WINDOW **)malloc(10*sizeof(WINDOW *));
itensmenu[0] = newwin(11, 19, 1, coluna);
wbkgd(itensmenu[0], COLOR_PAIR(7));
//box(itensmenu[0], ACS_VLINE, ACS_HLINE);
itensmenu[1]
itensmenu[2]
itensmenu[3]
itensmenu[4]
itensmenu[5]
itensmenu[6]
itensmenu[7]
itensmenu[8]
itensmenu[9]
=
=
=
=
=
=
=
=
=
subwin(itensmenu[0],
subwin(itensmenu[0],
subwin(itensmenu[0],
subwin(itensmenu[0],
subwin(itensmenu[0],
subwin(itensmenu[0],
subwin(itensmenu[0],
subwin(itensmenu[0],
subwin(itensmenu[0],
1,
1,
1,
1,
1,
1,
1,
1,
1,
18,
18,
18,
18,
18,
18,
18,
18,
18,
2, coluna+1);
3, coluna+1);
4, coluna+1);
5, coluna+1);
6, coluna+1);
7, coluna+1);
8, coluna+1);
9, coluna+1);
10, coluna+1);
//
// * Se as setas baixo ou cima so pressionadas ento os itens abaixo ou acima so s
elecionados //
// tornando a cor do fundo do items diferente dos demais.
//
// * Se a tecla ENTER for pressionada, ento o item selecionado retornado.
//
// * Se a tecla ESC pressionada, os menus so fechados.
//
//////////////////////////////////////////////////////////////////////////////
//////////////////////
int key;
int selecionado = 0;
while(VERDADEIRO)
{
key = getch();
if (key == KEY_DOWN || key == KEY_UP)
{
wbkgd(itens_menu[selecionado + 1], COLOR_PAIR(7));
wnoutrefresh(itens_menu[selecionado + 1]);
if (key == KEY_DOWN)
{
selecionado = (selecionado + 1) % numero_itens;
}
else
{
selecionado = (selecionado + numero_itens-1) % numero_itens;
}
wbkgd(itens_menu[selecionado + 1],COLOR_PAIR(1));
wnoutrefresh(itens_menu[selecionado + 1]);
doupdate();
}
else if (key == ESCAPE)
{
return -1;
}
else if (key == ENTER)
{
return selecionado;
}
}
}//int scroll_menu(WINDOW **itens_menu, int numero_itens, int coluna_inicial)
pacmanPtr->direcao = NENHUMA;
pacmanPtr->movimento = PARADO;
pacmanPtr->velocidade = 200000;
pacmanPtr->char_representante = PAC_CIMA;
}
else
return FALSO;
}
else if(mapaPtr->pacman.direcao == DIREITA)
{
if(mapaPtr->labirinto[mapaPtr->pacman.linha][mapaPtr->pacman.col
una + 2] == CAMINHO)
return VERDADEIRO;
else
return FALSO;
}
else
return FALSO;
}//is_possible_pacman(Mapa *mapaPtr)
fantasmaPtr->direcao = NENHUMA;
fantasmaPtr->movimento = PARADO;
fantasmaPtr->velocidade = 350000;
fantasmaPtr->char_representante = CHAR_FANTASMA;
}
}//void init_fantasma(Fantasma *fantasmaPtr, int flag)
if(mapaPtr->fantasma2.direcao == CIMA)
{
if(mapaPtr->labirinto[mapaPtr->fantasma2.linha - 1][mapa
Ptr->fantasma2.coluna + 1] == CAMINHO)
return VERDADEIRO;
else
return FALSO;
}
else if(mapaPtr->fantasma2.direcao == BAIXO)
{
if(mapaPtr->labirinto[mapaPtr->fantasma2.linha + 1][mapa
Ptr->fantasma2.coluna + 1] == CAMINHO)
return VERDADEIRO;
else
return FALSO;
}
else if(mapaPtr->fantasma2.direcao == ESQUERDA)
{
if(mapaPtr->labirinto[mapaPtr->fantasma2.linha][mapaPtr>fantasma2.coluna] == CAMINHO)
return VERDADEIRO;
else
return FALSO;
}
else if(mapaPtr->fantasma2.direcao == DIREITA)
{
if(mapaPtr->labirinto[mapaPtr->fantasma2.linha][mapaPtr>fantasma2.coluna + 2] == CAMINHO)
return VERDADEIRO;
else
return FALSO;
}
}//else if(flag == 2)
else if(flag == 3)
{
if(mapaPtr->fantasma3.direcao == CIMA)
{
if(mapaPtr->labirinto[mapaPtr->fantasma3.linha - 1][mapa
Ptr->fantasma3.coluna + 1] == CAMINHO)
return VERDADEIRO;
else
return FALSO;
}
else if(mapaPtr->fantasma3.direcao == BAIXO)
{
if(mapaPtr->labirinto[mapaPtr->fantasma3.linha + 1][mapa
Ptr->fantasma3.coluna + 1] == CAMINHO)
return VERDADEIRO;
else
return FALSO;
}
else if(mapaPtr->fantasma3.direcao == ESQUERDA)
{
if(mapaPtr->labirinto[mapaPtr->fantasma3.linha][mapaPtr>fantasma3.coluna] == CAMINHO)
return VERDADEIRO;
else
return FALSO;
}
else if(mapaPtr->fantasma3.direcao == DIREITA)
{
if(mapaPtr->labirinto[mapaPtr->fantasma3.linha][mapaPtr>fantasma3.coluna + 2] == CAMINHO)
return VERDADEIRO;
else
return FALSO;
}
}//else if(flag == 3)
else if(flag == 4)
{
if(mapaPtr->fantasma4.direcao == CIMA)
{
if(mapaPtr->labirinto[mapaPtr->fantasma4.linha - 1][mapa
Ptr->fantasma4.coluna + 1] == CAMINHO)
return VERDADEIRO;
else
return FALSO;
}
else if(mapaPtr->fantasma4.direcao == BAIXO)
{
if(mapaPtr->labirinto[mapaPtr->fantasma4.linha + 1][mapa
Ptr->fantasma4.coluna + 1] == CAMINHO)
return VERDADEIRO;
else
return FALSO;
}
else if(mapaPtr->fantasma4.direcao == ESQUERDA)
{
if(mapaPtr->labirinto[mapaPtr->fantasma4.linha][mapaPtr>fantasma4.coluna] == CAMINHO)
return VERDADEIRO;
else
return FALSO;
}
else if(mapaPtr->fantasma4.direcao == DIREITA)
{
if(mapaPtr->labirinto[mapaPtr->fantasma4.linha][mapaPtr>fantasma4.coluna + 2] == CAMINHO)
return VERDADEIRO;
else
return FALSO;
}
}//else if(flag == 4)
}//int is_possible_fantasma(Mapa *mapaPtr, int flag)
while(randomico == mapaPtr->fantasma1.direcao)
randomico = (rand()%4);
mapaPtr->fantasma1.direcao = randomico;
while(is_possible_fantasma(mapaPtr, flag) == FALSO)
{
while(randomico == mapaPtr->fantasma1.direcao)
randomico = (rand()%4);
mapaPtr->fantasma1.direcao = randomico;
}
mapaPtr->fantasma1.movimento = mapaPtr->fantasma1.direca
o;
}
atualiza_posicao_fantasma(mapaPtr, flag);
}//if(flag == 1)
else if(flag == 2)
{
int i;
mapaPtr->fantasma2.direcao = NENHUMA;
mapaPtr->fantasma2.movimento = PARADO;
if(mapaPtr->fantasma2.linha == mapaPtr->pacman.linha)
{
if(mapaPtr->fantasma2.coluna < mapaPtr->pacman.coluna)
{
mapaPtr->fantasma2.direcao = DIREITA;
if(is_possible_fantasma(mapaPtr, flag) == VERDAD
EIRO)
mapaPtr->fantasma2.movimento = mapaPtr->
fantasma2.direcao;
}
else if(mapaPtr->fantasma2.coluna > mapaPtr->pacman.colu
na)
{
mapaPtr->fantasma2.direcao = ESQUERDA;
if(is_possible_fantasma(mapaPtr, flag) == VERDAD
EIRO)
mapaPtr->fantasma2.movimento = mapaPtr->
fantasma2.direcao;
}
}
else if(mapaPtr->fantasma2.coluna == mapaPtr->pacman.coluna)
{
if(mapaPtr->fantasma2.linha < mapaPtr->pacman.linha)
{
mapaPtr->fantasma2.direcao = BAIXO;
if(is_possible_fantasma(mapaPtr, flag) == VERDAD
EIRO)
mapaPtr->fantasma2.movimento = mapaPtr->
fantasma2.direcao;
}
mapaPtr->fantasma3.movimento = mapaPtr->
fantasma3.direcao;
}
}
else if(mapaPtr->fantasma3.coluna == mapaPtr->pacman.coluna)
{
if(mapaPtr->fantasma3.linha < mapaPtr->pacman.linha)
{
mapaPtr->fantasma3.direcao = BAIXO;
if(is_possible_fantasma(mapaPtr, flag) == VERDAD
EIRO)
mapaPtr->fantasma3.movimento = mapaPtr->
fantasma3.direcao;
}
else if(mapaPtr->fantasma3.linha > mapaPtr->pacman.linha
)
{
mapaPtr->fantasma3.direcao = CIMA;
if(is_possible_fantasma(mapaPtr, flag) == VERDAD
EIRO)
mapaPtr->fantasma3.movimento = mapaPtr->
fantasma3.direcao;
}
}
if(mapaPtr->fantasma3.movimento == PARADO)
{
int randomico = (rand()%4);
while(randomico == mapaPtr->fantasma3.direcao)
randomico = (rand()%4);
mapaPtr->fantasma3.direcao = randomico;
while(is_possible_fantasma(mapaPtr, flag) == FALSO)
{
while(randomico == mapaPtr->fantasma3.direcao)
randomico = (rand()%4);
mapaPtr->fantasma3.direcao = randomico;
}
mapaPtr->fantasma3.movimento = mapaPtr->fantasma3.direca
o;
}
atualiza_posicao_fantasma(mapaPtr, flag);
}//else if(flag == 3)
else if(flag == 4)
{
int i;
mapaPtr->fantasma4.direcao = NENHUMA;
mapaPtr->fantasma4.movimento = PARADO;
if(mapaPtr->fantasma4.linha == mapaPtr->pacman.linha)
{
if(mapaPtr->fantasma4.coluna < mapaPtr->pacman.coluna)
{
mapaPtr->fantasma4.direcao = DIREITA;
if(is_possible_fantasma(mapaPtr, flag) == VERDAD
EIRO)
mapaPtr->fantasma4.movimento = mapaPtr->
fantasma4.direcao;
}
else if(mapaPtr->fantasma4.coluna > mapaPtr->pacman.colu
na)
{
mapaPtr->fantasma4.direcao = ESQUERDA;
if(is_possible_fantasma(mapaPtr, flag) == VERDAD
EIRO)
mapaPtr->fantasma4.movimento = mapaPtr->
fantasma4.direcao;
}
}
else if(mapaPtr->fantasma4.coluna == mapaPtr->pacman.coluna)
{
if(mapaPtr->fantasma4.linha < mapaPtr->pacman.linha)
{
mapaPtr->fantasma4.direcao = BAIXO;
if(is_possible_fantasma(mapaPtr, flag) == VERDAD
EIRO)
mapaPtr->fantasma4.movimento = mapaPtr->
fantasma4.direcao;
}
else if(mapaPtr->fantasma4.linha > mapaPtr->pacman.linha
)
{
mapaPtr->fantasma4.direcao = CIMA;
if(is_possible_fantasma(mapaPtr, flag) == VERDAD
EIRO)
mapaPtr->fantasma4.movimento = mapaPtr->
fantasma4.direcao;
}
}
if(mapaPtr->fantasma4.movimento == PARADO)
{
int randomico = (rand()%4);
while(randomico == mapaPtr->fantasma4.direcao)
randomico = (rand()%4);
mapaPtr->fantasma4.direcao = randomico;
while(is_possible_fantasma(mapaPtr, flag) == FALSO)
{
while(randomico == mapaPtr->fantasma4.direcao)
randomico = (rand()%4);
mapaPtr->fantasma4.direcao = randomico;
}
mapaPtr->fantasma4.movimento = mapaPtr->fantasma4.direca
o;
}
atualiza_posicao_fantasma(mapaPtr, flag);
}//else if(flag == 4)
}//void choose_direction(Mapa *mapaPtr, int flag)
mapaPtr->fantasma2 = (*fantasma2Ptr);
mapaPtr->fantasma3 = (*fantasma3Ptr);
mapaPtr->fantasma4 = (*fantasma4Ptr);
mapaPtr->estado = EM_ANDAMENTO;
mapaPtr->vitorias = 0;
mapaPtr->zerado = FALSO;
}//void init_mapa(int labirinto[TAMANHO][TAMANHO], Mapa *mapaPtr, Pacman *pacman
Ptr)
{
printw("%c", CHAR_CAMINHO);
printed_pacman = FALSO;
}
}
else if(printed_fantasma == VERDADEIRO)
{
printw("%c", CHAR_CAMINHO);
printed_fantasma = FALSO;
}
else
{
if(mapaPtr->matriz_moedas[i][j] == VERDA
DEIRO)
{
//attron(COLOR_PAIR(6));
//attron(A_BOLD);
printw(" %c ", CHAR_MOEDA);
//attroff(A_BOLD);
//attroff(COLOR_PAIR(6));
if(printed_pacman == VERDADEIRO)
printed_pacman = FALSO;
if(printed_fantasma == VERDADEIR
O)
printed_fantasma = FALSO
;
}
else
{
printw(" %c ", CHAR_CAMINHO);
if(printed_pacman == VERDADEIRO)
printed_pacman = FALSO;
if(printed_fantasma == VERDADEIR
O)
printed_fantasma = FALSO
;
}
}
}
if((i == mapaPtr->pacman.linha) && (j == mapaPtr->pacman
.coluna))
{
attron(COLOR_PAIR(6));
//attron(A_BOLD);
printw(" %c", mapaPtr->pacman.char_representante
);
//attroff(A_BOLD);
attroff(COLOR_PAIR(6));
printed_pacman = VERDADEIRO;
// Captura as moedas
if(mapaPtr->matriz_moedas[i][j + 1] == VERDADEIR
O)
{
mapaPtr->matriz_moedas[i][j + 1] = FALSO
;
mapaPtr->numero_moedas--;
pontos++;
printf("\a"); // "Barulhinho" , bell d
o sistema
}
}
else if((i == mapaPtr->fantasma1.linha) && (j == mapaPtr
->fantasma1.coluna))
{
//attroff(COLOR_PAIR(6));
attron(COLOR_PAIR(2));
//attron(A_BOLD);
printw(" %c", mapaPtr->fantasma1.char_representa
nte);
//attroff(A_BOLD);
attroff(COLOR_PAIR(2));
//attron(COLOR_PAIR(6));
printed_fantasma = VERDADEIRO;
}
else if((i == mapaPtr->fantasma2.linha) && (j == mapaPtr
->fantasma2.coluna))
{
//attroff(COLOR_PAIR(6));
attron(COLOR_PAIR(3));
//attron(A_BOLD);
printw(" %c", mapaPtr->fantasma2.char_representa
nte);
//attroff(A_BOLD);
attroff(COLOR_PAIR(3));
//attron(COLOR_PAIR(6));
printed_fantasma = VERDADEIRO;
}
else if((i == mapaPtr->fantasma3.linha) && (j == mapaPtr
->fantasma3.coluna))
{
//attroff(COLOR_PAIR(6));
attron(COLOR_PAIR(4));
//attron(A_BOLD);
printw(" %c", mapaPtr->fantasma3.char_representa
nte);
//attroff(A_BOLD);
attroff(COLOR_PAIR(4));
//attron(COLOR_PAIR(6));
printed_fantasma = VERDADEIRO;
}
else if((i == mapaPtr->fantasma4.linha) && (j == mapaPtr
->fantasma4.coluna))
{
//attroff(COLOR_PAIR(6));
attron(COLOR_PAIR(5));
//attron(A_BOLD);
printw(" %c", mapaPtr->fantasma4.char_representa
nte);
//attroff(A_BOLD);
attroff(COLOR_PAIR(5));
//attron(COLOR_PAIR(6));
printed_fantasma = VERDADEIRO;
}
}
printw("\n");
}
//attroff(COLOR_PAIR(6));
attroff(A_BOLD);
move(14, 102);
printw("=> Pontos: %d", pontos);
move(16, 102);
printw("=> Moedas restantes: %d", mapaPtr->numero_moedas);
refresh();
}//void draw_map(Mapa *mapaPtr)
// Labirinto
fantasma3Ptr = &fantasma3;
fantasma4Ptr = &fantasma4;
pacmanPtr = &pacman;
mapaPtr = &mapa;
//-----------------------------------------///////////////////////////////////////
// Inicializao das structs do jogo //
///////////////////////////////////////
//-------------------------------------------------------------init_fantasma(fantasma1Ptr, 1);
init_fantasma(fantasma2Ptr, 2);
init_fantasma(fantasma3Ptr, 3);
init_fantasma(fantasma4Ptr, 4);
init_pacman(pacmanPtr);
switch(item_selecionado)
{
case 1:
copiar_matriz(labirinto_1, labirinto);
break;
case 2:
copiar_matriz(labirinto_2, labirinto);
break;
case 3:
copiar_matriz(labirinto_3, labirinto);
break;
case 4:
copiar_matriz(labirinto_4, labirinto);
break;
case 5:
copiar_matriz(labirinto_5, labirinto);
break;
case 6:
copiar_matriz(labirinto_6, labirinto);
break;
case 7:
copiar_matriz(labirinto_7, labirinto);
break;
case 8:
copiar_matriz(labirinto_8, labirinto);
break;
case 9:
escolher_mapa_rand(labirinto, mapaPtr);
break;
}
init_mapa(labirinto, mapaPtr, pacmanPtr, fantasma1Ptr,
fantasma2Ptr,
fantasma3Ptr,
fantasma4Ptr);
//--------------------------------------------------------------
pthread_mutex_lock(&mutex_mapa);
draw_mapa(mapaPtr);
// Impresso inicial do mapa
refresh();
// Atualiza a tela (inerente biblioteca
curses.h)
pthread_mutex_unlock(&mutex_mapa);
// Funcionamento do Pacman
do
{
key = getch();
if(key == KEY_UP)
{
mapaPtr->pacman.direcao = CIMA;
if(is_possible_pacman(mapaPtr) == VERDADEIRO)
{
mapaPtr->pacman.linha = mapaPtr->pacman.linha 1;
mapaPtr->pacman.movimento = CIMA;
choose_char_pacman(mapaPtr);
pthread_mutex_lock(&mutex_mapa);
draw_mapa(mapaPtr);
refresh();
pthread_mutex_unlock(&mutex_mapa);
}
}
else if(key == KEY_DOWN)
{
mapaPtr->pacman.direcao = BAIXO;
if(is_possible_pacman(mapaPtr) == VERDADEIRO)
{
mapaPtr->pacman.linha = mapaPtr->pacman.linha +
1;
mapaPtr->pacman.movimento = BAIXO;
choose_char_pacman(mapaPtr);
pthread_mutex_lock(&mutex_mapa);
draw_mapa(mapaPtr);
refresh();
pthread_mutex_unlock(&mutex_mapa);
}
}
terminar_threads();
if(mapaPtr->numero_moedas == 0)
{
imprimir_vitoria();
mapaPtr->vitorias++;
}
else
imprimir_derrota();
if(mapaPtr->vitorias == 8)
{
mapaPtr->vitorias = 0;
mapaPtr->zerado = VERDADEIRO;
imprimir_final();
}
do
{
key = getch();
}while(key != ENTER);
if(mapaPtr->numero_moedas == 0)
{
if(mapaPtr->zerado == VERDADEIRO){
mapaPtr->zerado = FALSO;
imprimir_final();
}
else
play((item_selecionado + 1) % 8);
}
// As vitrias devem ser consecutivas para que se acumule pontos
}
else if(mapaPtr->fantasma1.movimento == ESQUERDA)
{
while((mapaPtr->fantasma1.coluna > mapaPtr->pacman.colun
a) && (is_possible_fantasma(mapaPtr, 1) == VERDADEIRO))
{
pthread_mutex_lock(&mutex_mapa);
draw_mapa(mapaPtr);
refresh();
pthread_mutex_unlock(&mutex_mapa);
usleep(mapaPtr->fantasma1.velocidade);
atualiza_posicao_fantasma(mapaPtr, 1);
mapaPtr->fantasma1.movimento = ESQUERDA;
}
}
else if(mapaPtr->fantasma1.movimento == DIREITA)
{
while((mapaPtr->fantasma1.coluna < mapaPtr->pacman.colun
a) && (is_possible_fantasma(mapaPtr, 1) == VERDADEIRO))
{
pthread_mutex_lock(&mutex_mapa);
draw_mapa(mapaPtr);
refresh();
pthread_mutex_unlock(&mutex_mapa);
usleep(mapaPtr->fantasma1.velocidade);
atualiza_posicao_fantasma(mapaPtr, 1);
mapaPtr->fantasma1.movimento = DIREITA;
}
}
imprimir_derrota();
refresh();
terminar_threads();
return NULL;
}//void *thread_fantasma1(void *arg)
}
}
else if(mapaPtr->fantasma2.movimento == ESQUERDA)
{
while((mapaPtr->fantasma2.coluna > mapaPtr->pacman.colun
a) && (is_possible_fantasma(mapaPtr, 2) == VERDADEIRO))
{
pthread_mutex_lock(&mutex_mapa);
draw_mapa(mapaPtr);
refresh();
pthread_mutex_unlock(&mutex_mapa);
usleep(mapaPtr->fantasma2.velocidade);
atualiza_posicao_fantasma(mapaPtr, 2);
mapaPtr->fantasma2.movimento = ESQUERDA;
}
}
else if(mapaPtr->fantasma2.movimento == DIREITA)
{
while((mapaPtr->fantasma2.coluna < mapaPtr->pacman.colun
a) && (is_possible_fantasma(mapaPtr, 2) == VERDADEIRO))
{
pthread_mutex_lock(&mutex_mapa);
draw_mapa(mapaPtr);
refresh();
pthread_mutex_unlock(&mutex_mapa);
usleep(mapaPtr->fantasma2.velocidade);
atualiza_posicao_fantasma(mapaPtr, 2);
mapaPtr->fantasma2.movimento = DIREITA;
}
}
imprimir_derrota();
refresh();
terminar_threads();
return NULL;
}//void *thread_fantasma2(void *arg)
}
}
else if(mapaPtr->fantasma3.movimento == ESQUERDA)
{
while((mapaPtr->fantasma3.coluna > mapaPtr->pacman.colun
a) && (is_possible_fantasma(mapaPtr, 3) == VERDADEIRO))
{
pthread_mutex_lock(&mutex_mapa);
draw_mapa(mapaPtr);
refresh();
pthread_mutex_unlock(&mutex_mapa);
usleep(mapaPtr->fantasma3.velocidade);
atualiza_posicao_fantasma(mapaPtr, 3);
mapaPtr->fantasma3.movimento = ESQUERDA;
}
}
else if(mapaPtr->fantasma3.movimento == DIREITA)
{
while((mapaPtr->fantasma3.coluna < mapaPtr->pacman.colun
a) && (is_possible_fantasma(mapaPtr, 3) == VERDADEIRO))
{
pthread_mutex_lock(&mutex_mapa);
draw_mapa(mapaPtr);
refresh();
pthread_mutex_unlock(&mutex_mapa);
usleep(mapaPtr->fantasma3.velocidade);
atualiza_posicao_fantasma(mapaPtr, 3);
mapaPtr->fantasma3.movimento = DIREITA;
}
}
imprimir_derrota();
refresh();
terminar_threads();
return NULL;
}//void *thread_fantasma3(void *arg)
mapaPtr->fantasma4.movimento = BAIXO;
}
}
else if(mapaPtr->fantasma4.movimento == ESQUERDA)
{
while((mapaPtr->fantasma4.coluna > mapaPtr->pacman.colun
a) && (is_possible_fantasma(mapaPtr, 4) == VERDADEIRO))
{
pthread_mutex_lock(&mutex_mapa);
draw_mapa(mapaPtr);
refresh();
pthread_mutex_unlock(&mutex_mapa);
usleep(mapaPtr->fantasma4.velocidade);
atualiza_posicao_fantasma(mapaPtr, 4);
mapaPtr->fantasma4.movimento = ESQUERDA;
}
}
else if(mapaPtr->fantasma4.movimento == DIREITA)
{
while((mapaPtr->fantasma4.coluna < mapaPtr->pacman.colun
a) && (is_possible_fantasma(mapaPtr, 4) == VERDADEIRO))
{
pthread_mutex_lock(&mutex_mapa);
draw_mapa(mapaPtr);
refresh();
pthread_mutex_unlock(&mutex_mapa);
usleep(mapaPtr->fantasma4.velocidade);
atualiza_posicao_fantasma(mapaPtr, 4);
mapaPtr->fantasma4.movimento = DIREITA;
}
}
imprimir_derrota();
refresh();
terminar_threads();
return NULL;
}//void *thread_fantasma4(void *arg)
mapaPtr);
mapaPtr);
mapaPtr);
mapaPtr);