MySQL: Entenda o CASE, COALESCE e NULLIF de uma vez por todas!

 🔸 1. CASE – Estrutura Condicional (tipo IF/ELSE) Use para retornar valores diferentes dependendo de uma condição. SELECT nome, salario, CASE WHEN salario >= 10000 THEN 'Alto' WHEN salario BETWEEN 5000 AND 9999 THEN 'Médio' ELSE 'Baixo' END AS faixa_salarial FROM funcionarios; 📌 O CASE analisa cada condição e retorna o valor correspondente. Ótimo para categorizar ou tratar lógicas personalizadas. 🔸 2. COALESCE – Primeiro valor NÃO NULO Substitui valores NULL pelo primeiro valor não nulo passado. SELECT nome, COALESCE (email, 'sem-email@empresa.com' ) AS contato FROM clientes; 📌 Se email for NULL , o valor padrão 'sem-email@empresa.com' será exibido. 🔸 3. NULLIF – Evita divisões perigosas ou comparações iguais Retorna NULL se os dois valores forem iguais . Muito usado para evitar divisões por zero. SELECT nome, vendas, metas, ...

Game 1º Pessoa com Three.js/🎮 Como Criar um Jogo em Primeira Pessoa com Three.js [Tutorial Básico]


 Você sempre quis criar um jogo 3D em primeira pessoa usando JavaScript? Com a biblioteca Three.js, isso é totalmente possível direto no navegador! Neste post, vou te mostrar o passo a passo básico para criar um jogo em primeira pessoa (FPS) com movimentação e visão do jogador.


🧰 O que você vai precisar:

  • Conhecimentos básicos de JavaScript e HTML

  • Biblioteca Three.js

  • Um navegador moderno (Chrome, Firefox, Edge...)


🔧 1. Configurando o Projeto

Crie uma estrutura básica de arquivos:

/fps-game |- index.html |- script.js

index.html

<!DOCTYPE html> <html lang="pt-BR"> <head> <meta charset="UTF-8"> <title>Jogo em Primeira Pessoa - Three.js</title> <style> body { margin: 0; overflow: hidden; } canvas { display: block; } </style> </head> <body> <script src="https://cdn.jsdelivr.net/npm/three@0.158.0/build/three.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/three@0.158.0/examples/js/controls/PointerLockControls.js"></script> <script src="script.js"></script> </body> </html>

🎮 2. Criando o Mundo 3D

script.js

// Cena, câmera e renderizador const scene = new THREE.Scene(); scene.background = new THREE.Color(0x202020); const camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000); const renderer = new THREE.WebGLRenderer(); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement); // Luz const light = new THREE.DirectionalLight(0xffffff, 1); light.position.set(1, 1, 1).normalize(); scene.add(light); // Chão const floorGeometry = new THREE.PlaneGeometry(100, 100); const floorMaterial = new THREE.MeshStandardMaterial({ color: 0x333333 }); const floor = new THREE.Mesh(floorGeometry, floorMaterial); floor.rotation.x = -Math.PI / 2; scene.add(floor); // Controles de primeira pessoa (Pointer Lock) const controls = new THREE.PointerLockControls(camera, document.body); document.body.addEventListener('click', () => { controls.lock(); }); scene.add(controls.getObject()); // Movimento const velocity = new THREE.Vector3(); const direction = new THREE.Vector3(); const keys = {}; document.addEventListener('keydown', (e) => keys[e.code] = true); document.addEventListener('keyup', (e) => keys[e.code] = false); function animate() { requestAnimationFrame(animate); direction.z = Number(keys['KeyW']) - Number(keys['KeyS']); direction.x = Number(keys['KeyD']) - Number(keys['KeyA']); direction.normalize(); const speed = 0.1; if (controls.isLocked === true) { velocity.x = direction.x * speed; velocity.z = direction.z * speed; controls.moveRight(velocity.x); controls.moveForward(velocity.z); } renderer.render(scene, camera); } animate();

Comentários

Postagens mais visitadas deste blog

Quais Linguagens de Programação São Usadas em Jogos?

Projeto de lei sobre jogos online recebe aprovação do gabinete — Como ele regulará aplicativos

como programar um jogo do angry birds em 2d