Script Shell Par Impar

1. Script Shell Par Impar

Ricardo
rickpr327

(usa Outra)

Enviado em 18/06/2019 - 15:00h

Boa tarde

O Script que estou tentando criar é como se fosse um jogo aonde 2 jogadores vão jogar.

primeira parte: Ele vai perguntar o nome do primeiro jogador

segunda parte: Ele vai perguntar se o primeiro jogador deseja ser par ou impar

terceira parte: ele pergunta o nome do segundo jogador

Eu usei o $RANDOM %6 para gerar um numero aleatório para cada um dos jogadores

E depois ele vai pegar os 2 números gerados até 5 e fazer uma soma que é impossível dar mais que 10

ai com o resultado da soma eu queria fazer exibir se o vencedor foi quem escolheu par ou impar

Oque não estou conseguindo fazer é fazer ele exibir na tela qual foi o vencedor se foi o par ou o impar


Segue abaixo o jeito que está o meu script até o momento, por favor ajudem.

#!bin/bash

echo "primeiro jogador informe seu nome"
read jog1
echo "gostaria de ser par ou impar"
read parimpar
jog1=$(( $RANDOM %6 ))
# echo "$jog1"
echo "segundo jogador informe seu nome"
read jog2
jog2=$(( $RANDOM %6 ))
# echo "jog2"

soma=$(( jog1+jog2 ))
echo "o resultado é $soma"
read soma
if [ $parimpar -eq par ] || [ $parimpar -eq impar ]
then
echo "$parimpar é par"
else
echo "$parimpar é impar"

if [ $soma -eq 2 ] || [ $soma -eq 4 ] || [ $soma -eq 6 ] || [ $soma -eq 8 ] || [ $soma -eq 10 ]
then
echo "o vencedor foi $par"

elif [ $soma -eq 1 ] || [ $soma -eq 3 ] || [ $soma -eq 5 ] || [ $soma -eq 7 ] || [ $soma -eq 9 ]
then
echo "o vencedor foi $impar"
fi




  


2. Re: Script Shell Par Impar

Vinicius Mello
vmmello

(usa Slackware)

Enviado em 18/06/2019 - 15:37h

Olá,

Em parte me parece um problema usar a seguinte expressão:

if [ $parimpar -eq par ] || [ $parimpar -eq impar ] 


Porque o operador -eq é pra valores numéricos. Pra texto o correto seria:

if [ "$parimpar" == par ] || [ "$parimpar" == impar ] 


Outro problema talvez seja a forma de determinar o par e o ímpar. Uma possibilidade é usar:

if [ $(( $soma % 2 )) -eq 0 ]; then
echo Par
else
echo Impar
fi


Acredito que com estes dois ajustes a solução está encaminhada.


3. Re: Script Shell Par Impar

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 18/06/2019 - 17:29h


rickpr327 escreveu:

Boa tarde

O Script que estou tentando criar é como se fosse um jogo aonde 2 jogadores vão jogar.

primeira parte: Ele vai perguntar o nome do primeiro jogador

segunda parte: Ele vai perguntar se o primeiro jogador deseja ser par ou impar

terceira parte: ele pergunta o nome do segundo jogador

Eu usei o $RANDOM %6 para gerar um numero aleatório para cada um dos jogadores

E depois ele vai pegar os 2 números gerados até 5 e fazer uma soma que é impossível dar mais que 10

ai com o resultado da soma eu queria fazer exibir se o vencedor foi quem escolheu par ou impar

Oque não estou conseguindo fazer é fazer ele exibir na tela qual foi o vencedor se foi o par ou o impar


Segue abaixo o jeito que está o meu script até o momento, por favor ajudem.

#!bin/bash

echo "primeiro jogador informe seu nome"
read jog1
echo "gostaria de ser par ou impar"
read parimpar
jog1=$(( $RANDOM %6 ))
# echo "$jog1"
echo "segundo jogador informe seu nome"
read jog2
jog2=$(( $RANDOM %6 ))
# echo "jog2"

soma=$(( jog1+jog2 ))
echo "o resultado é $soma"
read soma
if [ $parimpar -eq par ] || [ $parimpar -eq impar ]
then
echo "$parimpar é par"
else
echo "$parimpar é impar"

if [ $soma -eq 2 ] || [ $soma -eq 4 ] || [ $soma -eq 6 ] || [ $soma -eq 8 ] || [ $soma -eq 10 ]
then
echo "o vencedor foi $par"

elif [ $soma -eq 1 ] || [ $soma -eq 3 ] || [ $soma -eq 5 ] || [ $soma -eq 7 ] || [ $soma -eq 9 ]
then
echo "o vencedor foi $impar"
fi

Boa tarde Rickp.
Segue sugestão, testado e funcionando.

#!/bin/bash
PARIMPAR=(PAR IMPAR);

read -p " Nome do Jogador \"01\": " jog[0]
read -p " Par/Impar: " pim[0];pim[0]=${pim[0]^^}
numb[0]=$(($RANDOM%6))
echo -e " Jog 1: ${jog[0]}: ${pim[0]} ${numb[0]}\n"

read -p " Nome do Jogador \"02\": " jog[1]
#DEFINE "pim[1]" PARA O JOGADOR 2, POR EXCLUSAO . . .
pim[1]=$(sed -r "s/[ ]?${pim[0]}[ ]?//" <<< ${PARIMPAR[@]})
numb[1]=$(($RANDOM%6))
echo -e " Jog 2: ${jog[1]}: ${pim[1]} ${numb[1]}\n"
soma=$(( ${numb[0]}+${numb[1]} ))
((soma%2==0)) && stt="PAR" || stt="IMPAR"
echo -e " Soma: \"$soma\" é: \"$stt\""
#Checa Ganhador.
for ((x=0;x<2;x++));do
[[ ${stt} =~ ^(${pim[$x]})$ ]] && echo -e "\n O Ganhador é: ${jog[$x]}";
done



Importante => echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
Att.: Marcelo Oliver


4. Re: Script Shell Par Impar

aguamole
aguamole

(usa KUbuntu)

Enviado em 19/06/2019 - 15:23h

A que esta o seu código com as correção é melhorias
Sintase livre para remover o meu credito.
---------------------------------------------------
#!/bin/bash

clear
echo -e "\033[32mJogo do Parimpar!\033[m
versão 1.0
Por: rickpr327
Por: aguamole
." ; sleep 5

echo "primeiro jogador informe seu nome"
read jog1
echo "gostaria de ser par ou impar"
read parimpar
joga1=$(( $RANDOM %6 ))
echo "segundo jogador informe seu nome"
read jog2
joga2=$(( $RANDOM %6 ))

soma=$(( joga1+joga2 ))
echo "o resultado é $soma"

if [ $parimpar == par ] && [ $soma -eq 0 ] || [ $soma -eq 2 ] || [ $soma -eq 4 ] || [ $soma -eq 6 ] || [ $soma -eq 8 ] || [ $soma -eq 10 ]
then
par=$jog2
else
par=$jog1
fi

echo -e "\033[32mO vencedor é $par\033[m"
---------------------------------------------------
Use um programa de comparação de código para você ver em o que você errou imagino que você tenha criado esse jogo para fim didático.

CPU Q6600 GTX 750 SofRaid 4xSSD 4Gb DDR2 mesmo assim uso Lubuntu.


5. Re: Script Shell Par Impar

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 19/06/2019 - 16:45h

aguamole escreveu:

A que esta o seu código com as correção é melhorias
Sintase livre para remover o meu credito.
---------------------------------------------------
#!/bin/bash

clear
echo -e "\033[32mJogo do Parimpar!\033[m
versão 1.0
Por: rickpr327
Por: aguamole
." ; sleep 5

echo "primeiro jogador informe seu nome"
read jog1
echo "gostaria de ser par ou impar"
read parimpar
joga1=$(( $RANDOM %6 ))
echo "segundo jogador informe seu nome"
read jog2
joga2=$(( $RANDOM %6 ))

soma=$(( joga1+joga2 ))
echo "o resultado é $soma"

if [ $parimpar == par ] && [ $soma -eq 0 ] || [ $soma -eq 2 ] || [ $soma -eq 4 ] || [ $soma -eq 6 ] || [ $soma -eq 8 ] || [ $soma -eq 10 ]
then
par=$jog2
else
par=$jog1
fi

if [ $parimpar == impar ] && [ $soma -eq 1 ] || [ $soma -eq 3 ] || [ $soma -eq 5 ] || [ $soma -eq 7 ] || [ $soma -eq 9 ]
then
par=$jog1
else
par=$jog2
fi

echo -e "\033[32mO vencedor é $par\033[m"
---------------------------------------------------
Use um programa de comparação de código para você ver em o que você errou imagino que você tenha criado esse jogo para fim didático.

CPU Q6600 GTX 750 SofRaid 4xSSD 4Gb DDR2 mesmo assim uso Lubuntu.

Aguamole, boa tarde.
Testou antes de Postar?
O resultado está incorreto!!!!
Att.: Marcelo Oliver


6. Re: Script Shell Par Impar

aguamole
aguamole

(usa KUbuntu)

Enviado em 19/06/2019 - 21:54h

msoliver escreveu:

Aguamole, boa tarde.
Testou antes de Postar?
O resultado está incorreto!!!!
Att.: Marcelo Oliver


Verdade eu testei agora eu vê que esta errado corrigido.
Eu avia testado antes mais eu devo ter ficado confuso.

CPU Q6600 GTX 750 SofRaid 4xSSD 4Gb DDR2 mesmo assim uso Lubuntu.


7. Re: Script Shell Par Impar

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 20/06/2019 - 18:54h


aguamole escreveu:

msoliver escreveu:

Aguamole, boa tarde.
Testou antes de Postar?
O resultado está incorreto!!!!
Att.: Marcelo Oliver


Verdade eu testei agora eu vê que esta errado corrigido.
Eu avia testado antes mais eu devo ter ficado confuso.

CPU Q6600 GTX 750 SofRaid 4xSSD 4Gb DDR2 mesmo assim uso Lubuntu.

AguaMole, o resultado continua errado.....
Sugestão (diferente da que eu utilizei) para avaliar SE É PAR ou IMPAR:

[[ "${soma}" =~ [02468]$ ]] && echo par || echo impar #Se termina com: 0 2 4 6 ou 8, é par.....
O mesmo efeito de:
if grep -E '[02468]$' <<< "${soma}";then echo par;else echo impar;fi
É isso...
Att.: Marcelo Oliver


8. Re: Script Shell Par Impar

aguamole
aguamole

(usa KUbuntu)

Enviado em 25/06/2019 - 09:46h

Modificado novamente.

CPU Q6600 GTX 750 SofRaid 4xSSD 4Gb DDR2 mesmo assim uso Lubuntu.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts