Computação - Jogo de Adivinhação com AppleScript

A melhor forma de aprender uma sintaxe de programação é programando. O que fica mais fácil ainda quando o objetivo é se divertir.

Aprender a programar é igual a aprender matemática, devemos praticar com muitos exercícios e na internet é muito fácil achar diversos problemas propostos para programação. Um deles é criar o jogo da adivinhação, onde o objetivo é adivinhar um número contido dentro de um determinado intervalo. Isso tendo um certo número de chances e uma dica a cada tentativa sem êxito.

O algoritmo que criei para esse tipo de jogo é simples:

1 - Um número inteiro aleatório entre 0 e 100 é sorteado pelo computador: NUM.
2 - Fazer i = 0.
3 - Repetir o passo 4, 5 vezes.
4 - Usuário entra com um número: A.
4.1 - Se A==NUM então fazer i = 1 e ir para o passo 5.
4.2 - Se A<NUM então informar "O número é maior".
4.3 - Se A>NUM então informar  "O número é menor".
4.4 - Se A não for um número então informar "Isso não é um caractere válido".
5 - Se i == 0 então informar "Parabéns! você acertou"
6 - Se i == 1 então informar "Você errou, o número era: NUM"

Bem, eu disse se divertir né. Mas não parece ser muito divertido esse algoritmo. Não para quem se prender apenas a isso.

Abaixo segue uma implementação do mesmo em AppleScript, onde vou ilustrar a parte da diversão.

(*
Programa: adivinha.app
Objetivo: Fazer o usuário tentar adivinhar um número entre 0 e 100.
Autor: Alex Souza Marques
*)

set i to 5 as integer
set Ans to (random number from 0 to 100) as integer

set volume 2

set unixFile to "/Users/administrator/Documents/a.mp3"
set macFile to POSIX file unixFile
set fileRef to (macFile as alias)

tell application "QuickTime Player"
activate
end tell

repeat
try
set Num to the text returned of (display dialog "Chose a Number Between 0 & 100, you have only " & (i as string) & " Chances" default answer "") as integer
on error
set i to -1 as integer
exit repeat
end try
if Num is equal to Ans then exit repeat
set i to (i - 1) as integer
if i is equal to 0 then exit repeat
if (Num < Ans) then display alert ("Chose a Larger Number ** >>> **")
if (Num > Ans) then display alert ("Chose a Smaller Number ** <<< **")
end repeat

if (i > 0) then
set volume 5
say ("Congratulations!")
display alert ("Congratulations!")
else if (i = 0) then
tell application "QuickTime Player"
open fileRef
play the front document
end tell
delay 3
tell application "QuickTime Player"
stop the front document
close the front document
end tell
set volume 5
say ("You Loose!")
display alert ("The Number were " & (Ans as string))
else
set volume 5
say ("Next time you Type a Fuck Number... Dummbass!")
display alert ("Isto não é um número inteiro!")
end if


delay 1


O programa acima faz precisamente o que o algoritmo descreve, a diversão foi usar os condicionais para fazer uma pegadinha. Vou ilustrar:

1 - Se a pessoa acertar o número, o programar irá dizer parabéns.

2 - Quando a pessoa digitar um caractere inválido o computador irá chamá-la de idiota, num volume determinado pelo programa.

3 - Se a pessoa errar o programa irá tocar, num determinado volume, o arquivo "a.mp3" por 3 segundos, que está em um determinado local. O arquivo é o famoso "gemidão", que sacaneia muita gente no Whatsapp. Ou seja, se após 5 tentativas a pessoa não acertar o número, provavelmente será surpreendida por um áudio desconcertante. Então... evitem jogar esse jogo em ambientes impróprios.

Parece ser uma coisa boba de se fazer. Mas fazendo isso fiquei um pouco mais familiarizado com essa linguagem, que já apliquei para muito trabalho sério.

Então, quem quer programar vai a dica: Não deixem de praticar. Parece clichê mas é verdade, só se aprende a programar, programando. O que não falta são sites com exercícios de programação.

O objetivo desse post foi didático, mas não didático apenas do ponto de vista da computação. O leitor mais atento provavelmente observou que é didático também do ponto de vista matemático, mas isso vou manter subentendido.

Comentários