quinta-feira, 26 de julho de 2018

Alguém se lembra: Jewel Master?

Esse jogo é meio desconhecido, mas é bem interessante!

Jewel Master é um jogo para Mega Drive de ação e aventura, que conta a história de um mago (ou aprendiz), aonde ele precisa defender sua vila das forças do mal.


História batida? Sim... Mas o interessante é como ele combate "este mal"... Ele usa anéis mágicos (que são obtidos durante o jogo), onde estes possuem poderes de ataque, agilidade e defesa.

O legal é que dá para misturar estes poderes obtendo, assim, novas magias (mais fortes ou mais fracas, conforme a mistura).

Ah... A música também é um ponto forte (pelo menos, para mim).

Vale a pena jogar, só para ver como é que é.

Abaixo, uma jogatina feito pelo canal VGDBbr:


Até mais!

segunda-feira, 9 de julho de 2018

Dicas de Programação: Entendendo extensões em Swift

Extensões em Swift não são as coisas mais fáceis de se entender, mas não é um bicho de sete (7) cabeças. (se bem que bicho de sete cabeças não existe... eu acho... :P )

Extensões são, na prática, adições de métodos em classes já existentes.

Iremos a um exemplo, que isso torna as coisas mais fáceis. :)

Vamos dizer que eu precise, em meu projeto, botões que tenham, em sua característica, um fundo de cor gradiente, conforme ilustração:


Ok, neste caso, eu só tenho uma propriedade backgroundColor que coloca, ou imagem, ou uma cor sólida no botão...

Porém, eu sei que dá para fazer isso com um CAGradientLayer, adicionando esta como uma sublayer de uma UIView:

    override func viewDidAppear(_ animated: Bool) {
        let gradientLayer = CAGradientLayer()
        gradientLayer.colors = [UIColor.yellow, UIColor.green]
        gradientLayer.startPoint = CGPoint(x: 0, y: 0)
        gradientLayer.endPoint = CGPoint(x: 0, y: 1)
        gradientLayer.frame = CGRect(x: 0, y: 0, width: myButton.bounds.width, height:  myButton.bounds.height)
        myButton.layer.insertSublayer(gradientLayer, at: 0)
    }

Contudo, para cada botão que eu tiver na tela (ou telas) que precise de um gradiente, vou precisar usar o mesmo código...

Para evitar isso, que tal "adicionarmos" um método chamado "setGradientColors" em todos os botões (classe UIButton)?

Adicionar? Eureka! Como eu escrevi acima, é para isso que a extensão existe:

extension UIButton
{
    func setGradientColors(startColor: UIColor, endColor: UIColor) {
        let gradientLayer = CAGradientLayer()
        gradientLayer.colors = [startColor.cgColor, endColor.cgColor]
        gradientLayer.startPoint = CGPoint(x: 0, y: 0)
        gradientLayer.endPoint = CGPoint(x: 0, y: 1)
        gradientLayer.frame = CGRect(x: 0, y: 0, width: self.bounds.width, height: self.bounds.height)
        gradientLayer.type = kCAGradientLayerAxial
        if let sublayers = self.layer.sublayers {
            if (sublayers.count > 0) {
                let sublayer = sublayers[0]
                if (sublayer is CAGradientLayer) {
                    sublayer.removeFromSuperlayer()
                }
            }
        }
        self.layer.insertSublayer(gradientLayer, at: 0)
        self.layoutIfNeeded()
    }
}

Agora, para cada botão que precise usar um fundo gradiente, só é preciso chamar o método "setGradientColors":

override func viewDidAppear(_ animated: Bool) {
    myButton.setGradientColors(startColor: UIColor.yellow, endColor: UIColor.green)
}

Entretanto, você pergunta: Mas se eu quiser usar em um UILabel... Vou ter que criar a mesma função para esta classe?

Sim... e não! Se você quiser usar em todas as classes que herdam de UIView (UILabel e UIButton são filhos de UIView), você pode somente trocar a extensão de UIButton para UIView:

extension UIView
{
    func setGradientColors(startColor: UIColor, endColor: UIColor) {
        ...
    }
}

Que tudo vai funcionar! :)

Legal, né? Mas, como você pode ver, extensões são poderosas e, portanto, devem, sem dúvida nenhuma, serem utilizadas com cautela. (como diz tio Ben: "Com grandes poderes....")

Até mais!

Alguém se lembra: CRUJ?

Se existia alguma concorrência para a TV Globo, referente a programação infantil na década de 90, este era a TV CRUJ:


O Comitê Revolucionário Ultra Jovem (CRUJ), era formado pelo Caju (líder do CRUJ), Chiclé e o Macaco (e posteriormente a Maluca, entre outros) que invadiam a programação da tarde do SBT, de segunda a sexta, passando desenhos animados de ótima qualidade. (Timão e Pumba, Marsupilami, 101 Dálmatas, etc.)

Claro, isso era invenção (eles não invadiam a TV aberta... mas bem que seria legal, se fosse verdade... principalmente nos tempos de hoje :P ), o programa, originalmente, se chamava Disney Club e fazia parte da grade de programação da empresa.

Mas deu tão certo, que esta "invasão" durou quase 5 anos!

Deu saudades, certo? Então assista a abertura, publicada pelo canal Programadas Históricas:


Cruj, cruj, cruj, tchau!

Alguém se lembra: Mini games da Tec Toy?

Quem não queria um Game Boy ou um Game Gear na década de 90?

(Querer, eu queria, poder... bem, não nasci rico e nem trabalhava naquela época...)

Se você, assim como eu (não, ninguém come ninguém, é um advérbio não verbo, e... ah, deixa pra lá... :P), não tinha possibilidade nenhuma de ter estas maravilhas para jogar, então, devia ficar fazendo a mesma coisa que eu fazia: ficava insistindo para sua mãe comprar, pelo menos, um mini game do Sonic ou do Mortal Kombat da Tec toy (que eram bem mais em conta -- o que quer dizer, mais barato mesmo).




Se era igual ao do Master System (como dizia)?
Pelo menos, para mim, nem um pouco... Mas isso se resolvia com um pouco de imaginação (como fazia seu Lucas Silva e Silva).

Se tinha 1 Mega?
Acho que não tinha nem 1 K. :P

Se possuía músicas e efeitos sonoros?
Hum... Acho que possuía beeps de tom diferentes (tipo o Papa-Léguas -- entendeu a referência, hein, hein? :P).

Se era divertido?
Ah... Pelo menos, isso era (na época). :)

Obs.: Vídeo acima, feito pelo canal Tectoy Oficial.

Até mais!

Alguém se lembra: Os Wuzzles?

Sabe de um desenho da Disney que passava na Rede Globo no final dos anos 80 (e começo dos 90), junto com os Ursinhos Gummi, que misturava dois bichos em uma coisa só?

Não sabe? Então deixa eu refrescar sua memória:


Os Wuzzles (nome estranho não?) era um desenho animado que possuía seis protagonistas que misturam dois animais em um só, dentre eles, o "chefe" da trupe, um híbrido de leão com abelha, chamado Abeleão (sim, os caras foram muuuuito inventivos com os nomes...).

Divertido, pena que não fez tanto sucesso assim... (acho que passou só em menos de um ano aqui na Brasil...)

Abaixo, a abertura em português:


Até mais!