Vou criar um sistema de jogo com bônus no cadastro. Aqui está uma implementação completa com frontend e backend:

## 1. Backend (Node.js + Express)

“`javascript
// server.js
const express = require(‘express’);
const cors = require(‘cors’);
const app = express();
const PORT = 3000;

app.use(cors());
app.use(express.json());

// Banco de dados em memória
let users = [];
let games = [];

// Dados do jogo
const gameConfig = {
bonusOnRegister: 100, // Bônus em créditos
minBet: 10,
maxBet: 1000,
winMultipliers: [1.5, 2, 3, 5, 10]
};

// Rota de cadastro com bônus
app.post(‘/api/register’, (req, res) => {
const { username, email, password } = req.body;

// Verifica se usuário já existe
const existingUser = users.find(u => u.email === email || u.username === username);
if (existingUser) {
return res.status(400).json({ error: ‘Usuário já cadastrado’ });
}

// Cria novo usuário com bônus
const newUser = {
id: Date.now(),
username,
email,
password, // Em produção, usar hash!
credits: gameConfig.bonusOnRegister,
registrationDate: new Date(),
bonusUsed: false,
gamesPlayed: 0,
totalWins: 0
};

users.push(newUser);

res.json({
success: true,
message: `Cadastro realizado! Você ganhou ${gameConfig.bonusOnRegister} créditos de bônus!`,
user: {
id: newUser.id,
username: newUser.username,
credits: newUser.credits
}
});
});

// Rota para jogar
app.post(‘/api/play’, (req, res) => {
const { userId, betAmount } = req.body;

const user = users.find(u => u.id === userId);
if (!user) {
return res.status(404).json({ error: ‘Usuário não encontrado’ });
}

// Valida aposta
if (betAmount < gameConfig.minBet || betAmount > gameConfig.maxBet) {
return res.status(400).json({
error: `Aposta deve estar entre ${gameConfig.minBet} e ${gameConfig.maxBet}`
});
}

if (betAmount > user.credits) {
return res.status(400).json({ error: ‘Créditos insuficientes’ });
}

// Deduz aposta
user.credits -= betAmount;

// Simula resultado do jogo
const isWin = Math.random() > 0.5; // 50% chance de vitória
let winAmount = 0;
let multiplier = 1;

if (isWin) {
// Multiplicador aleatório
multiplier = gameConfig.winMultipliers[
Math.floor(Math.random() * gameConfig.winMultipliers.length)
];
winAmount = betAmount * multiplier;
user.credits += winAmount;
user.totalWins += winAmount;
}

user.gamesPlayed++;

// Registra o jogo
const gameRecord = {
id: Date.now(),
userId,
betAmount,
winAmount,
multiplier: isWin ? multiplier : 0,
isWin,
timestamp: new Date(),
newBalance: user.credits
};

games.push(gameRecord);

res.json({
success: true,
result: {
isWin,
betAmount,
winAmount,
multiplier: isWin ? multiplier : null,
newBalance: user.credits,
message: isWin
? `🎉 Você ganhou ${winAmount} créditos (x${multiplier})!`
: ‘😔 Tente novamente!’
}
});
});

// Rota para obter informações do usuário
app.get(‘/api/user/:id’, (req, res) => {
const user = users.find(u => u.id === parseInt(req.params.id));
if (!user) {
return res.status(404).json({ error: ‘Usuário não encontrado’ });
}

// Não retornar a senha
const { password, …userData } = user;
res.json(userData);
});

// Rota para histórico de jogos
app.get(‘/api/games/:userId’, (req, res) => {
const userGames = games
.filter(g => g.userId === parseInt(req.params.userId))
.sort((a, b) => b.timestamp – a.timestamp)
.slice(0, 10); // Últimos 10 jogos

res.json(userGames);
});

// Rota para adicionar créditos (para teste)
app.post(‘/api/add-credits’, (req, res) => {
const { userId, amount } = req.body;
const user = users.find(u => u.id === userId);

if (!user) {
return res.status(404).json({ error: ‘Usuário não encontrado’ });
}

user.credits += amount;

res.json({
success: true,
newBalance: user.credits,
message: `Créditos adicionados: ${amount}`
});
});

app.listen(PORT, () => {
console.log(`Servidor rodando na porta ${PORT}`);
});
“`

## 2. Frontend (HTML + CSS + JavaScript)

“`html





Jogo com Bônus no Cadastro


🎰 Lucky Casino

🎁 BÔNUS: 100 CRÉDITOS NO CADASTRO!

Cadastro
Login
Jogar

Cadastre-se e Ganhe Bônus!

Cadastre-se agora e receba 100 créditos grátis para começar a jogar!




Login



🎯 Jogo da Sorte





Últimos Resultados: