<html><head><base href="https://example.com"><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Crypto Battle Royale</title><style>
@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;700&family=Orbitron:wght@400;700&display=swap');
:root {
--primary-color: #4a4e69;
--secondary-color: #22223b;
--accent-color: #9a8c98;
--text-color: #f2e9e4;
--bg-color: #0f0f1f;
}
body {
font-family: 'Roboto', sans-serif;
background-color: var(--bg-color);
color: var(--text-color);
margin: 0;
overflow: hidden;
display: flex;
justify-content: flex-start;
align-items: center;
height: 100vh;
padding-left: 20px;
}
#map {
background-image: url('https://i.imgur.com/NSoxZrJ.jpeg');
background-size: cover;
width: 800px;
height: 600px;
position: relative;
border-radius: 20px;
box-shadow: 0 15px 30px rgba(0,0,0,0.4);
margin-right: 270px;
border: 3px solid var(--accent-color);
overflow: hidden;
}
.character {
position: absolute;
width: 50px;
height: 50px;
background-color: rgba(255, 255, 255, 0.15);
border: 2px solid var(--accent-color);
box-sizing: border-box;
cursor: pointer;
border-radius: 12px;
overflow: hidden;
transition: all 0.3s ease;
display: flex;
justify-content: center;
align-items: center;
font-family: 'Orbitron', sans-serif;
font-weight: 700;
font-size: 12px;
text-shadow: 2px 2px 4px rgba(0,0,0,0.7);
box-shadow: 0 5px 15px rgba(0,0,0,0.3);
}
.character:hover {
transform: scale(1.1);
box-shadow: 0 0 20px rgba(255,255,255,0.6);
}
.character-name {
position: absolute;
top: -28px;
left: 50%;
transform: translateX(-50%);
color: var(--text-color);
font-size: 14px;
white-space: nowrap;
text-shadow: 2px 2px 4px rgba(0,0,0,0.7);
font-weight: 700;
font-family: 'Orbitron', sans-serif;
background-color: rgba(0,0,0,0.6);
padding: 3px 8px;
border-radius: 10px;
}
.health-bar {
width: 50px;
height: 6px;
background-color: #00ff00;
position: absolute;
bottom: -12px;
left: 0;
border-radius: 3px;
transition: all 0.3s ease;
box-shadow: 0 2px 4px rgba(0,0,0,0.3);
}
#controls {
position: fixed;
top: 20px;
right: 20px;
width: 250px;
background-color: rgba(74, 78, 105, 0.3);
padding: 25px;
border-radius: 20px;
backdrop-filter: blur(15px);
box-shadow: 0 8px 32px rgba(0,0,0,0.2);
border: 2px solid var(--accent-color);
}
#controls input, #controls button, #controls select {
width: 100%;
padding: 12px;
margin-bottom: 15px;
border: none;
border-radius: 8px;
background-color: rgba(255,255,255,0.15);
color: var(--text-color);
font-size: 16px;
font-family: 'Roboto', sans-serif;
transition: all 0.3s ease;
}
#controls input::placeholder, #controls select {
color: rgba(255,255,255,0.7);
}
#controls button {
background-color: var(--primary-color);
cursor: pointer;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 1px;
}
#controls button:hover {
background-color: var(--accent-color);
transform: translateY(-2px);
box-shadow: 0 5px 15px rgba(0,0,0,0.2);
}
#winner {
position: fixed;
bottom: 40px;
left: 50%;
transform: translateX(-50%);
font-size: 48px;
color: #ffd700;
display: none;
text-shadow: 3px 3px 6px rgba(0,0,0,0.5);
font-weight: 700;
font-family: 'Orbitron', sans-serif;
background-color: rgba(0,0,0,0.7);
padding: 20px 40px;
border-radius: 20px;
animation: winnerPulse 2s infinite;
}
@keyframes winnerPulse {
0% { transform: translateX(-50%) scale(1); }
50% { transform: translateX(-50%) scale(1.05); }
100% { transform: translateX(-50%) scale(1); }
}
#cryptoSelect {
background-color: rgba(255,255,255,0.15);
color: var(--text-color);
appearance: none;
background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23ffffff%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E');
background-repeat: no-repeat;
background-position: right 12px top 50%;
background-size: 12px auto;
padding-right: 30px;
}
</style></head><body>
<div id="map"></div>
<div id="controls">
<select id="cryptoSelect">
<option value="">Select Cryptocurrency</option>
<option value="BTC">BTC</option>
<option value="ETH">ETH</option>
<option value="ADA">ADA</option>
<option value="SOL">SOL</option>
<option value="DOGE">DOGE</option>
<option value="QQ">QQ</option>
<option value="NO">NO</option>
<option value="PEPE">PEPE</option>
<option value="GF">GF</option>
<option value="PANDA">PANDA</option>
<option value="YAYA">YAYA</option>
<option value="SATOSHI">SATOSHI</option>
<option value="CAT">CAT</option>
<option value="ORD">ORD</option>
<option value="CLOWN">CLOWN</option>
<option value="YY">YY</option>
<option value="JUMP">JUMP</option>
<option value="DONALD">DONALD</option>
<option value="A">A</option>
<option value="MIMI">MIMI</option>
<option value="MIQI">MIQI</option>
<option value="RABBIT">RABBIT</option>
<option value="SHEEP">SHEEP</option>
<option value="SNAKE">SNAKE</option>
<option value="PEACE">PEACE</option>
<option value="RAT">RAT</option>
<option value="MONKEY">MONKEY</option>
<option value="DRAGON">DRAGON</option>
<option value="X">X</option>
<option value="SEAL">SEAL</option>
<option value="COW">COW</option>
<option value="OTTER">OTTER</option>
<option value="ORD(">ORD(</option>
<option value="ORD{">ORD{</option>
<option value="ORD%">ORD%</option>
<option value="ORD<">ORD<</option>
</select>
<button onclick="addCrypto()">Add Cryptocurrency</button>
<button onclick="addRandomCryptos()">Add Random Cryptos</button>
<button onclick="startSimulation()">Start Battle</button>
</div>
<div id="winner"></div>
<script>
let characters = [];
let simulationStarted = false;
const cryptoColors = {
'BTC': '#F7931A', 'ETH': '#627EEA', 'ADA': '#0033AD', 'SOL': '#00FFA3',
'DOGE': '#C3A634', 'QQ': '#FF4500', 'NO': '#FF6347', 'PEPE': '#00FF00',
'GF': '#FF69B4', 'PANDA': '#000000', 'YAYA': '#FFD700', 'SATOSHI': '#FF8C00',
'CAT': '#FFA500', 'ORD': '#1E90FF', 'CLOWN': '#FF00FF', 'YY': '#8A2BE2',
'JUMP': '#00CED1', 'DONALD': '#FF4500', 'A': '#7FFF00', 'MIMI': '#FF1493',
'MIQI': '#00BFFF', 'RABBIT': '#FF69B4', 'SHEEP': '#FFFFFF', 'SNAKE': '#32CD32',
'PEACE': '#4169E1', 'RAT': '#808080', 'MONKEY': '#8B4513', 'DRAGON': '#FF0000',
'X': '#000000', 'SEAL': '#4682B4', 'COW': '#000000', 'OTTER': '#8B4513',
'ORD(': '#FF6347', 'ORD{': '#FF4500', 'ORD%': '#FF8C00', 'ORD<': '#FFA500'
};
function addCrypto() {
const select = document.getElementById('cryptoSelect');
const selectedCrypto = select.value;
if (!selectedCrypto) {
alert("Please select a cryptocurrency!");
return;
}
addCharacter(selectedCrypto);
}
function addCharacter(name) {
const map = document.getElementById('map');
const characterElement = document.createElement('div');
characterElement.className = 'character';
characterElement.style.left = `${Math.random() * (780 - 50)}px`;
characterElement.style.top = `${Math.random() * (580 - 50)}px`;
characterElement.dataset.health = 100;
characterElement.dataset.isPoisonous = 'false';
characterElement.style.backgroundColor = cryptoColors[name] || '#FFFFFF';
characterElement.innerHTML = `
<div class="character-name">${name}</div>
${name}
<div class="health-bar"></div>
`;
map.appendChild(characterElement);
characters.push(characterElement);
updateHealthBar(characterElement);
}
function addRandomCryptos() {
const cryptoList = Object.keys(cryptoColors);
for (let i = 0; i < 5; i++) {
const randomCrypto = cryptoList[Math.floor(Math.random() * cryptoList.length)];
addCharacter(randomCrypto);
}
}
function startSimulation() {
simulationStarted = true;
characters.forEach(char => {
setInterval(() => moveCharacter(char), 100);
});
}
function moveCharacter(char) {
if (!simulationStarted) return;
let x = parseInt(char.style.left);
let y = parseInt(char.style.top);
const deltaX = (Math.random() - 0.5) * 10;
const deltaY = (Math.random() - 0.5) * 10;
x = Math.max(0, Math.min(750, x + deltaX));
y = Math.max(0, Math.min(550, y + deltaY));
char.style.left = x + 'px';
char.style.top = y + 'px';
checkCollisions(char);
}
function checkCollisions(character) {
const x1 = parseInt(character.style.left);
const y1 = parseInt(character.style.top);
const width = 50;
const height = 50;
characters.forEach(other => {
if (character === other) return;
const x2 = parseInt(other.style.left);
const y2 = parseInt(other.style.top);
if (x1 < x2 + width &&
x1 + width > x2 &&
y1 < y2 + height &&
y1 + height > y2) {
handleCollision(character, other);
}
});
}
function handleCollision(char1, char2) {
if (char1.dataset.isPoisonous === 'true') {
reduceHealth(char2, 10);
} else if (char2.dataset.isPoisonous === 'true') {
reduceHealth(char1, 10);
} else {
const rand = Math.random();
if (rand < 0.5) {
transformToPoisonousInsect(char1);
} else {
transformToPoisonousInsect(char2);
}
}
checkForWinner();
}
function reduceHealth(char, amount) {
char.dataset.health = Math.max(0, parseInt(char.dataset.health) - amount);
updateHealthBar(char);
if (parseInt(char.dataset.health) === 0) {
char.remove();
characters = characters.filter(c => c !== char);
}
}
function updateHealthBar(char) {
const healthBar = char.querySelector('.health-bar');
const healthPercentage = parseInt(char.dataset.health);
healthBar.style.width = `${healthPercentage}%`;
healthBar.style.backgroundColor = `rgb(${255 - healthPercentage * 2.55}, ${healthPercentage * 2.55}, 0)`;
}
function transformToPoisonousInsect(char) {
char.dataset.isPoisonous = 'true';
char.style.backgroundColor = '#FF00FF';
char.querySelector('.character-name').textContent = "POISON";
char.textContent = "☠️";
}
function checkForWinner() {
const remainingCharacters = characters.filter(char => char.dataset.isPoisonous === 'false');
if (remainingCharacters.length === 1) {
const winnerName = remainingCharacters[0].querySelector('.character-name').textContent;
const winnerDiv = document.getElementById('winner');
winnerDiv.textContent = `${winnerName} wins!`;
winnerDiv.style.display = 'block';
simulationStarted = false;
}
}
</script>
</body></html>