Retornar array de função
Estou com um problema que não consigo entender.
É um batalha naval em php que armazena no banco. Tenho a matriz $navios que armazena os navios e o mar. Quando chamo a função sorteia (que contem os parametros para construção e também passo $navios para dentro da função) eu adiciono os navios dentro de $navios, só que fora dessa função sorteia eu exibo o mesmo array $navios, porém não exibe nenhum navio que adicionei, agora se eu exibo dentro da função sorteia dá certo, mas eu preciso que exiba fora.
Obrigado.
function sorteia($quantidade,$n_posicoes,$embarcacao,$navios){
$qtd = 0;
$flag2 = 0;
while ($qtd <= $quantidade) {
$flag = true;
$rand_linha = rand(0,29);
$rand_coluna = rand(0,29);
$direcao = rand(0,1);//Sorteia a direção do navio 0 para VERTICAL e 1 para HORIZONTAL
if($navios[$rand_linha][$rand_coluna] == -1 && $navios[$rand_linha+1][$rand_coluna] == -1 && $navios[$rand_linha-1][$rand_coluna] == -1 && $navios[$rand_linha][$rand_coluna+1] == -1 && $navios[$rand_linha][$rand_coluna-1] == -1 &&//Verifica posição atual, cima, esquerda, direita
$navios[$rand_linha+1][$rand_coluna+1] == -1 && $navios[$rand_linha+1][$rand_coluna-1] == -1 && $navios[$rand_linha-1][$rand_coluna-1] == -1 && $navios[$rand_linha-1][$rand_coluna+1] == -1 //Verifica nas Diagonais
){
//Constroi na Vertical
if($direcao == 0 && $rand_linha <= (30 - $n_posicoes)){
if( $navios[$rand_linha+1][$rand_coluna] == -1 && $navios[$rand_linha+2][$rand_coluna] == -1 && $navios[$rand_linha+3][$rand_coluna] == -1 && $navios[$rand_linha+4][$rand_coluna] == -1 && $navios[$rand_linha+5][$rand_coluna] == -1 && //Verifica na posição que vai construir
$navios[$rand_linha+2][$rand_coluna+1] == -1 && $navios[$rand_linha+3][$rand_coluna+1] == -1 && $navios[$rand_linha+4][$rand_coluna+1] == -1 && $navios[$rand_linha+5][$rand_coluna+1] == -1 && //Verifica em volta a direita
$navios[$rand_linha+2][$rand_coluna-1] == -1 && $navios[$rand_linha+3][$rand_coluna-1] == -1 && $navios[$rand_linha+4][$rand_coluna-1] == -1 && $navios[$rand_linha+5][$rand_coluna-1] == -1 //Verifica em volta a esquerda
){
//Constroi a embarcação
for ($i=0; $i < $n_posicoes ; $i++) {
$navios[$rand_linha+$i][$rand_coluna] = $embarcacao;
}
$qtd++;
$flag2++;
}
}
//Controi na Horizontal
if($direcao == 1 && $rand_coluna <= (30 - $n_posicoes)){
if( $navios[$rand_linha][$rand_coluna+1] == -1 && $navios[$rand_linha][$rand_coluna+2] == -1 && $navios[$rand_linha][$rand_coluna+3] == -1 && $navios[$rand_linha][$rand_coluna+4] == -1 && $navios[$rand_linha][$rand_coluna+5] == -1 && //Verifica na posição que vai construir
$navios[$rand_linha+1][$rand_coluna+2] == -1 && $navios[$rand_linha+1][$rand_coluna+3] == -1 && $navios[$rand_linha+1][$rand_coluna+4] == -1 && $navios[$rand_linha+1][$rand_coluna+5] == -1 && //Verifica a direita
$navios[$rand_linha-1][$rand_coluna+2] == -1 && $navios[$rand_linha-1][$rand_coluna+3] == -1 && $navios[$rand_linha-1][$rand_coluna+4] == -1 && $navios[$rand_linha-1][$rand_coluna+5] == -1 //Verifica a esquerda
){
//Constroi a embarcação
for ($i=0; $i < $n_posicoes ; $i++) {
$navios[$rand_linha][$rand_coluna+$i] = $embarcacao;
}
$qtd++;
$flag2++;
}
}
if($flag2 == 13){
}
}
}
return $navios;
}
//Chama a função
reiniciar();
//SORTEIA OS NAVIOS
function reiniciar(){
$navios = array();
$sql = "drop table batalha_naval";
pg_query($sql);
$sql="CREATE TABLE batalha_naval( id SERIAL, linha VARCHAR(2), coluna VARCHAR(2), tipo VARCHAR (255), posicao_tipo VARCHAR(255), PRIMARY KEY (id));";
pg_query($sql);
//ZERA A MATRIZ
for ($l=-1; $l < 31; $l++) {
for ($c=-1; $c < 31 ; $c++) {
$navios[$l][$c] = -1;
}
}
//CHAMA AS FUNÇÕES
sorteia(13,5,"P",$navios);//CONSTROI OS PORTA AVIÕES
//sorteia(5,3,"D");//CONSTROI OS DESTROIER
//sorteia(7,2,"S");//CONSTROI OS SUBMARINOS
//sorteia(10,1,"B");//CONSTROI OS BOTES
//Apresenta os navios
echo "<table border='1'";
for ($l=0; $l < 30 ; $l++) {
echo "<tr>";
for ($c=0; $c < 30 ; $c++) {
echo "<td>";
echo $navios[$l][$c];
echo "</td>";
}
echo "</tr>";
}
echo "</table>";
/*for ($l=0; $l < 30 ; $l++) {
for ($c=0; $c < 30 ; $c++) {
$tipo = $navios[$l][$c];
$slq = "INSERT INTO batalha_naval(linha,coluna,tipo) VALUES('$l','$c', '$tipo')";
pg_query($slq);
}
}*/
}Discussão (1)
Carregando comentários...