Como Habbo Hotel está relacionado a programação?
Tags: habbo, programming, beginners, braziliandevs
Published: 2024-04-29 15:09:43

É, eu sei, você provavelmente leu o titulo e deve tá se perguntando como diabos isso é relacionado a programação, mas tem uma explicação muito boa, juro.
 
O Habbo Hotel é um hotel virtual ~~ou multiverso, dependendo da brisa que você tá~~, onde você navega por quartos e conversa com outros Habbos. Você deve ter ouvido falar disso lá em 2009-2010, época em que o jogo estava em seu maior pico de jogadores.

Habbo Hotel sempre foi presente na minha adolescência, conheci vários amigos lá que mantenho contato até hoje, mas ao longo dos anos como programador, eu parei pra pensar em uma das coisas que são presentes no Habbo Hotel e que hoje eu penso que **isso desenvolveu muito bem a minha lógica na programação não intencionalmente.** Meus amigos, eu apresento a vocês um item poderoso no mundo pixelado do Habbo, que se chama **Wireds**.

---

## Table of Contents
- [O que são Wireds?](#o-que-são-wireds)
- [Tipos de Wireds](#tipos-de-wireds)
- [Na prática](#na-prática)
- [Programação Orientada a Eventos](#programação-orientada-a-eventos)
- [Elementos Lógicos](#elementos-lógicos)
- [Ligando os Pontos](#ligando-os-pontos)
- [Conclusão](#conclusão)



## O que são Wireds?

![Uma imagem mostra uma pilha de 'Wireds' do Habbo Hotel. Cada 'Wired' é um pequeno dispositivo quadrado com conectores e fios visíveis. Eles são coloridos, variando entre verde, vermelho, azul e amarelo. Os 'Wireds' estão empilhados uns sobre os outros de forma desordenada](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ripsceykjpw2yfp9smky.png)

Wireds são mobis (abreviação que o jogo usa para mobilias) que são um conjunto de ferramentas que permitem aos jogadores programar e automatizar ações dentro dos seus quartos. Os Habbos podem conectar diferentes Wireds para criar cadeias de ações desencadeadas por eventos específicos, como um usuário digitando uma palavra específica para ser teleportado.

## Tipos de Wireds

Eles são separados pelas categorias, ativadores, efeitos, condições, condições negativas, seletores e extras, mas esses dois últimos não falaremos no momento.

- **Ativadores**: Os ativadores ou triggers são os wireds que vão ser ativados caso o usuário faça alguma ação configurada, como falar uma palavra específica.

- **Efeitos**: Os efeitos são o que você quer que aconteça caso você ative o trigger, como por exemplo quando o usuário falar 'salve' (ativador), ele vai teleportar o usuário para um lugar específico (efeito).

- **Condições**: Esse você conhece né? O famoso **IF**. No caso, seguindo o exemplo que estamos construindo, a condição pode ser em um exemplo em que, caso o usuário estiver em cima de um piso, eu quero que ele faça esse efeito de teleportar o usuário pra um lugar.

- **Condições Negativas**: Esse seria nosso famoso **else**. Beleza, mas se o usuário não estiver em cima do piso que eu coloquei na condição inicial? No nosso exemplo, vamos colocar ele pra ser teletransportado pra outro lugar.

## Na prática

Vamos usar o exemplo que eu escrevi exemplificando cada Wired, nosso objetivo é simples, **quando o usuário falar 'salve' em cima em um piso especifico, que ele seja teleportado.**

Para fazer isso a gente vai usar estes wireds:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ghc2rfim8ryxdcl3kw0v.png)

O nome deles explica por sí só o que eles fazem, então se puder, leia bem o que cada um faz.

Teremos esse quarto como ponto principal, no piso azul onde queremos ser teleportados.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lf6tnwvlo4modbc5pgh3.png)

Vamos começando com o ativador, coloquei que quando o Habbo falar 'salve' vai ativar os Wireds.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u0s3tvo9vir2v4y48l24.png)

Logo após vamos configurar o efeito, quando o trigger for ativado, o efeito vai ser ativado também teleportando o Habbo para o piso azul.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p5vjpo2o96jpqnh1mgn1.png)

Indo para as condições, eu vou ser teleportado para o piso azul **SOMENTE** se eu estiver em cima da grama.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iwyb8svjbyjsyxseynq4.png)

E temos como resultado: 
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/unupelj571hn8cktuyv2.gif)

Caso não esteje em cima da grama, não acontece nada.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6b83w87qulti06c98ube.gif)

Usando a condição negativa ficaria a mesma coisa, mas agora a condição se torna: se o usuário não estiver em cima da grama, teleporte ele para o piso azul.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y372gk9iaqwlgf88cmt4.gif)

Isso foi um exemplo simples mas apenas a ponta do iceberg do que isso é capaz de fazer, temos vários exemplos criativos e impressionantes que os usuários colocam, como por exemplo: 

Jogo da Cobrinha
{% twitter 1503392183432458246 %} 

Ou até Tetris
{% twitter 1608474955104096257 %} 

_Beleza, mas depois dessa explicação toda, como que isso se relaciona com programação?_

## Programação Orientada a Eventos
Programação Orientada a Eventos é um paradigma de programação que se concentra na interação entre componentes do software por meio de eventos. Esses eventos podem ser gerados por ações do usuário ou mesmo por ações internas do nosso próprio sistema. No caso do exemplo com Habbo Hotel, quando um evento ocorre, o Wired correspondente (ou conjunto de Wireds) executa uma ação predefinida, criando experiências dinâmicas e interativas para os usuários.


## Elementos Lógicos
Embora os Wireds do Habbo operem principalmente em um modelo orientado a eventos, **eles também incorporam elementos lógicos**. Esses elementos são elementos essenciais na programação que focam em derivar conclusões baseados em um conjunto de regras ou fatos vindos das relações entre entidades.

Nos wireds do Habbo, os usuários podem configurar condições lógicas complexas usando as declarações "SE...ENTÃO...SENÃO".
Usando o exemplo que fizemos, se transformarmos em código conseguiríamos uma lógica parecida com essa:

```js
if(user.speak === "salve" && user.place === 'grass') {
    userTeleportToBlueFloor()
}
```

Ou a condicional negativa:

```js
if(user.speak === "salve" && !user.place === 'grass') {
    userTeleportToBlueFloor()
}
```


## Ligando os Pontos

A combinação entre a programação orientada a eventos e os elementos essenciais da programação nos Wireds do Habbo mostra a variedade e o poder de combinar esses dois conceitos. Aproveitando essas duas partes, **os Habbianos podem projetar ambientes complexos, interativos que se adaptam às interações do usuário e à dinâmica do jogo.**

Além disso, o uso de Wireds no Habbo serve como uma forma educacional, introduzindo os jogadores a conceitos fundamentais de programação e lógica sem mesmo não tendo o objetivo para isso. Ele encoraja a criatividade, a resolução de problemas e o pensamento crítico, habilidades essenciais que são valiosas tanto no mundo virtual do Habbo quanto no mundo real.

## Conclusão
Esse artigo foi para provar o ponto que Habbo Hotel tem completa relação com programação, tanto como elementos lógicos como uma programação orientada a eventos. Mostrando brevemente como funciona os Wireds e como eles correlacionam.