Compare Preços no Buscape e no BondFaro
BuscaPé, líder em comparação de preços na América Latina

Amazon PC Core 2 Duo 2.1 GHz
4Gb Ram - 250 GB HD

Snoopy, Eu Te Amo
Charles M. Schulz

Sony DCR-DVD610

Trilogia Star Wars

Pen Drive
4 GB

Receptor TV ( USB )

Patinho Faminto
www.patinho.net

Apostilas
Expr Regular
Remasterização
SED
Shell Script

Distros
Dizinha
Patinho Faminto

Nerd
Desejo Nerd
Shell Scripts

Artístico
Livro
Musica
Poesias
Tirinhas

Bobagens
Ascii Art
Games Antigos
Porque Amar Nerds
Porque Não Amar Nerds

Eu
About Me
Recomendo
Contato
DOAÇÕES

Amigos
Aurélio
Jogos Antigos
NeoDizinha
Nerds Nervosos
ProibidoParaNormais


* = Recentemente Atualizado



website stats
Locations of visitors to this page

Anúncio provido pelo BuscaPé
BuscaPé, líder em comparação de preços na América Latina

Ver Indice Geral da Apostila de Shell Script

Aplicação Prática: Jogo Batalha Naval - Parte 2

Veja o Segundo Código que criei para o jogo Batalha Naval

batalha_naval2.sh

linhaa=( "#" "#" "#" "#" "#" )
linhab=( "#" "#" "#" "#" "#" )
linhac=( "#" "#" "#" "#" "#" )
linhad=( "#" "#" "#" "#" "#" )
linhae=( "#" "#" "#" "#" "#" )

letras=("a" "b" "c" "d" "e")

barco1=${letras[$((RANDOM % 5))]}$((RANDOM % 5))
barco2=${letras[$((RANDOM % 5))]}$((RANDOM % 5))
barco3=${letras[$((RANDOM % 5))]}$((RANDOM % 5))

afundados=0

for ((x=1;x>=0;x++));
do

	clear

	echo "  0 1 2 3 4"
	echo "a ${linhaa[@]}"
	echo "b ${linhab[@]}"
	echo "c ${linhac[@]}"
	echo "d ${linhad[@]}"
	echo "e ${linhae[@]}"

	read -p "Onde quer que eu ataque? " lin coluna

	if [[ "${lin}${coluna}" = "$barco1" || "${lin}${coluna}" = "$barco2" || "${lin}${coluna}" = "$barco3" ]]
	then
		escrita='='
		let afundado++
			if [ $afundado -eq 3 ]
			then
			echo "KABUM!"
			echo "Você acertou todos os barcos na tentativa número: $x"
			exit 0
			fi
	else
		escrita='.'
	fi

	eval linha${lin}[$coluna]="$escrita"
	

done

 
 

Vamos explicar o script:

linhaa=( "#" "#" "#" "#" "#" )
linhab=( "#" "#" "#" "#" "#" )
linhac=( "#" "#" "#" "#" "#" )
linhad=( "#" "#" "#" "#" "#" )
linhae=( "#" "#" "#" "#" "#" )

Usei 5 Arrays, para gerar o tabuleiro

 

letras=("a" "b" "c" "d" "e")

Criei um array com 5 letras, cada letra representa uma linha do tabuleiro.
Essa array é necessária porque ela irá trocar um número aleatório ( que definirá onde o barco estára ) por uma letra.

 

barco1=${letras[$((RANDOM % 5))]}$((RANDOM % 5))
barco2=${letras[$((RANDOM % 5))]}$((RANDOM % 5))
barco3=${letras[$((RANDOM % 5))]}$((RANDOM % 5))

Sorteia a posição de 3 barcos no tabuleiro.
${letras[$((RANDOM % 5))]} Sorteia um número de 0 a 4, e já substitui esse número por uma letra, usando a array "letras".
Definindo em que linha o barco está.
$((RANDOM % 5)) Sorteia um número de 0 a 4. Definindo em que coluna o barco está.

 

afundados=0

Define o número de barcos afundados. Como acabamos de iniciar o script, nenhum barco afundou até agora

 

for ((x=1;x>=0;x++));

Faz um conjunto de comandos ser executado repetidas vezes.
Serve também como contador pra dizer ao usuário quantas tentativas ele precisou para afundar todos os barcos

 

	echo "  0 1 2 3 4"
	echo "a ${linhaa[@]}"
	echo "b ${linhab[@]}"
	echo "c ${linhac[@]}"
	echo "d ${linhad[@]}"
	echo "e ${linhae[@]}"

	read -p "Onde quer que eu ataque? " lin coluna

Imprime o tabuleiro e pergunta onde o usuário quer jogar a bomba, guarda as informações nas variáveis "lin" e "coluna"

 

	if [[ "${lin}${coluna}" = "$barco1" || "${lin}${coluna}" = "$barco2" || "${lin}${coluna}" = "$barco3" ]]
	then
		escrita='='
		let afundado++
			if [ $afundado -eq 3 ]
			then
			echo "KABUM!"
			echo "Você acertou todos os barcos na tentativa número: $x"
			exit 0
			fi

Verifica se a posição da bomba lançada pelo usuário é a mesma posição de algum dos barcos.
Se for define a variável "escrita" como '=' ( que é o desenho que representa o barco no jogo )
Soma 1 a variável "afundado"

Verifica se a variável "afundado" é igual a 3
Se for, significa que todos barcos foram atingidos, então o script mostra uma mensagem para o usuario dizendo que ele acertou todos os barcos.

 

	else
		escrita='.'
	fi

Se nenhum dos barcos foi atingido define escrita como ".", que representa que o usuário jogou a bomba na água

 

eval linha${lin}[$coluna]="$escrita"

Chama um array de acordo com a posição em que o usuário lançou a bomba e define como "." ( caso não tenha acertado o barco ) ou "=" ( caso tenha acertado o barco )

 
 

Nota: 9

Votar:
Postado em: 2008-04-04

Ver Indice Geral da Apostila de Shell Script

Doações
Se quer nos ajudar, pode doar pelo PagSeguro

Ou pode doar pelo Paypal clicando no botão DONATE

Compare Produtos, Lojas e Preços


As poesias devem virar um livro impresso?
Claro
Só se tiver menos de 60 páginas
Só se tiver entre 60 e 120 páginas
Só se tiver mais que 120 páginas
Só vou comprar se for barato
Só vou comprar para você ficar feliz
Livro? Que Livro? Que poesia?
Resultado