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
🎰 Lucky Casino
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
Usuário: Não logado
Jogos realizados: 0
Total ganho: 0 créditos
Últimos Resultados: