4 models have responded to the "Pokémon Battle UI Recreation" challenge. Compare their approaches side-by-side on Rival. This response is part of Rival's open dataset of 5,600+ AI model responses.
Bert Nebulon Alpha's response to the 'Pokémon Battle UI Recreation' challenge.
Recreate a Pokémon battle UI — make it interactive, nostalgic, and fun. Stick to the spirit of a classic battle, but feel free to get creative if you want. In a single-page self-contained HTML.
Couldn’t render this one. It’s giving abstract art.
This model didn’t return a displayable web page. Classic overachiever move.
# Pokémon Battle UI - Classic & Interactive
Here's a self-contained HTML file that recreates a nostalgic Pokémon battle UI with interactive elements. It includes:
- Classic battle screen layout
- Animated sprites
- Health bars
- Move selection
- Turn-based combat
- Sound effects
- Nostalgic music
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Pokémon Battle Simulator</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap');
body {
margin: 0;
padding: 0;
background-color: #f0f0f0;
font-family: 'Press Start 2P', cursive;
overflow: hidden;
user-select: none;
}
#battle-screen {
position: relative;
width: 512px;
height: 448px;
margin: 20px auto;
background-color: #000;
border: 8px solid #fff;
box-shadow: 0 0 20px rgba(0, 0, 0, 0.5);
overflow: hidden;
}
#battle-bg {
position: absolute;
width: 100%;
height: 100%;
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 448"><rect fill="%234a90e2" width="512" height="224"/><rect fill="%237ab55c" y="224" width="512" height="224"/><path fill="%23fff" d="M0,224 Q128,192 256,224 T512,224 L512,256 Q384,224 256,256 T0,256 Z"/></svg>');
background-size: cover;
}
.pokemon-sprite {
position: absolute;
width: 96px;
height: 96px;
image-rendering: pixelated;
z-index: 10;
}
#player-pokemon {
bottom: 120px;
left: 60px;
}
#opponent-pokemon {
top: 60px;
right: 60px;
}
.health-bar-container {
position: absolute;
background-color: #000;
color: #fff;
padding: 4px;
font-size: 8px;
z-index: 20;
}
#player-health {
bottom: 200px;
left: 60px;
width: 120px;
}
#opponent-health {
top: 40px;
right: 60px;
width: 120px;
}
.health-bar {
height: 4px;
background-color: #f00;
margin-top: 2px;
position: relative;
}
.health-bar-fill {
height: 100%;
background-color: #0f0;
width: 100%;
transition: width 0.5s ease;
}
#battle-text {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 120px;
background-color: rgba(0, 0, 0, 0.7);
color: #fff;
padding: 8px;
font-size: 10px;
box-sizing: border-box;
z-index: 30;
display: flex;
flex-direction: column;
justify-content: center;
}
#battle-menu {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 120px;
background-color: rgba(0, 0, 0, 0.7);
color: #fff;
padding: 8px;
font-size: 10px;
box-sizing: border-box;
z-index: 30;
display: none;
}
.menu-option {
padding: 4px 0;
cursor: pointer;
}
.menu-option:hover {
background-color: rgba(255, 255, 255, 0.1);
}
.selected {
background-color: rgba(255, 255, 255, 0.3);
}
#move-menu {
display: none;
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 120px;
background-color: rgba(0, 0, 0, 0.7);
color: #fff;
padding: 8px;
font-size: 10px;
box-sizing: border-box;
z-index: 40;
}
.move-option {
display: inline-block;
width: 48%;
padding: 4px 0;
margin: 2px 0;
cursor: pointer;
box-sizing: border-box;
}
.move-option:hover {
background-color: rgba(255, 255, 255, 0.1);
}
.type {
display: inline-block;
padding: 1px 4px;
font-size: 6px;
margin-left: 4px;
border-radius: 2px;
}
.normal { background-color: #a8a878; }
.fire { background-color: #f08030; }
.water { background-color: #6890f0; }
.electric { background-color: #f8d030; }
.grass { background-color: #78c850; }
.ice { background-color: #98d8d8; }
.fighting { background-color: #c03028; }
.poison { background-color: #a040a0; }
.ground { background-color: #e0c068; }
.flying { background-color: #a890f0; }
.psychic { background-color: #f85888; }
.bug { background-color: #a8b820; }
.rock { background-color: #b8a038; }
.ghost { background-color: #705898; }
.dragon { background-color: #7038f8; }
.dark { background-color: #705848; }
.steel { background-color: #b8b8d0; }
.fairy { background-color: #f0b6bc; }
#cursor {
position: absolute;
width: 8px;
height: 8px;
background-color: #fff;
z-index: 50;
}
.damage-effect {
position: absolute;
width: 100%;
height: 100%;
background-color: rgba(255, 0, 0, 0.3);
z-index: 15;
display: none;
}
.flash {
animation: flash 0.1s 3;
}
@keyframes flash {
0% { opacity: 0.3; }
50% { opacity: 0.8; }
100% { opacity: 0.3; }
}
#start-screen {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: #000;
color: #fff;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
z-index: 100;
}
#start-button {
background-color: #fff;
color: #000;
border: none;
padding: 10px 20px;
font-family: 'Press Start 2P', cursive;
font-size: 12px;
cursor: pointer;
margin-top: 20px;
}
#credits {
position: absolute;
bottom: 10px;
right: 10px;
font-size: 8px;
color: #fff;
text-align: right;
}
.hidden {
display: none;
}
</style>
</head>
<body>
<div id="battle-screen">
<div id="battle-bg"></div>
<div id="opponent-health" class="health-bar-container">
<div>Lv50 CHARIZARD</div>
<div class="health-bar">
<div class="health-bar-fill" id="opponent-health-fill"></div>
</div>
<div id="opponent-hp-text">100/100</div>
</div>
<div id="player-health" class="health-bar-container">
<div>Lv50 BLASTOISE</div>
<div class="health-bar">
<div class="health-bar-fill" id="player-health-fill"></div>
</div>
<div id="player-hp-text">100/100</div>
</div>
<img id="opponent-pokemon" class="pokemon-sprite" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gMfFzQj84bQWgAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAJtSURBVGje7ZjLcuJAFIWf59zY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY