Files

296 lines
11 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Изометрическая RPG</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
color: #e0e0e0;
overflow: hidden;
}
h1 {
margin-bottom: 15px;
text-shadow: 0 0 20px rgba(255, 215, 0, 0.5);
font-size: 2rem;
letter-spacing: 3px;
}
#gameContainer {
position: relative;
border: 4px solid #4a4a6a;
border-radius: 8px;
box-shadow: 0 0 30px rgba(0, 0, 0, 0.8), inset 0 0 20px rgba(100, 100, 150, 0.1);
background: #0a0a15;
}
canvas {
display: block;
cursor: pointer;
}
#ui {
position: absolute;
top: 10px;
left: 10px;
right: 10px;
display: flex;
justify-content: space-between;
pointer-events: none;
}
.stat-box {
background: rgba(20, 20, 40, 0.9);
padding: 8px 12px;
border-radius: 6px;
border: 2px solid #3a3a5a;
font-size: 13px;
}
.stat-box span {
color: #ffd700;
font-weight: bold;
}
#controls {
margin-top: 15px;
text-align: center;
font-size: 13px;
color: #888;
}
.key {
display: inline-block;
background: #2a2a4a;
padding: 4px 8px;
border-radius: 4px;
margin: 2px;
border: 1px solid #4a4a6a;
}
#startScreen {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(10, 10, 21, 0.95);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
z-index: 100;
}
.class-btn {
background: #2a2a4a;
border: 2px solid #4a4a6a;
color: #e0e0e0;
padding: 15px 40px;
margin: 10px;
font-size: 18px;
border-radius: 8px;
cursor: pointer;
transition: all 0.3s;
min-width: 200px;
}
.class-btn:hover {
background: #3a3a5a;
border-color: #ffd700;
transform: scale(1.05);
}
.class-btn.warrior { border-left: 4px solid #e74c3c; }
.class-btn.mage { border-left: 4px solid #3498db; }
.class-btn.archer { border-left: 4px solid #2ecc71; }
.class-btn.thief { border-left: 4px solid #9b59b6; }
.class-btn.paladin { border-left: 4px solid #f1c40f; }
.class-btn.necromancer { border-left: 4px solid #8e44ad; }
/* Grid layout for classes */
.class-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 15px;
max-width: 700px;
margin: 0 auto;
}
.class-btn {
background: linear-gradient(135deg, #2a2a4a 0%, #1a1a2e 100%);
border: 2px solid #4a4a6a;
color: #e0e0e0;
padding: 20px;
font-size: 16px;
border-radius: 12px;
cursor: pointer;
transition: all 0.3s;
min-width: 180px;
display: flex;
flex-direction: column;
align-items: center;
}
.class-btn:hover {
background: linear-gradient(135deg, #3a3a5a 0%, #2a2a4a 100%);
border-color: #ffd700;
transform: translateY(-3px);
box-shadow: 0 5px 20px rgba(255, 215, 0, 0.3);
}
.class-icon {
font-size: 36px;
margin-bottom: 8px;
}
.class-name {
font-size: 18px;
font-weight: bold;
color: #ffd700;
margin-bottom: 5px;
}
.class-desc {
font-size: 11px;
color: #888;
margin-top: 5px;
}
.class-weapon {
font-size: 12px;
color: #4a9;
margin-top: 8px;
padding-top: 8px;
border-top: 1px solid #333;
width: 100%;
text-align: center;
}
.load-btn {
margin-top: 30px;
background: linear-gradient(135deg, #27ae60 0%, #1e8449 100%);
border: 2px solid #2ecc71;
color: #fff;
padding: 15px 40px;
font-size: 16px;
border-radius: 8px;
cursor: pointer;
transition: all 0.3s;
}
.load-btn:hover {
background: linear-gradient(135deg, #2ecc71 0%, #27ae60 100%);
transform: scale(1.05);
}
.class-desc {
font-size: 12px;
color: #888;
margin-top: 5px;
}
</style>
</head>
<body>
<h1>⚔️ Изометрическая RPG</h1>
<div id="gameContainer">
<canvas id="gameCanvas" width="900" height="600"></canvas>
<div id="ui">
<div class="stat-box">❤️ HP: <span id="hp">100</span></div>
<div class="stat-box">💧 MP: <span id="mp">50</span></div>
<div class="stat-box">⭐ Уровень: <span id="level">1</span></div>
<div class="stat-box">💰 Золото: <span id="gold">0</span></div>
<div class="stat-box">🗡️ Сила: <span id="strength">10</span></div>
</div>
<!-- Экран выбора класса -->
<div id="startScreen">
<h2 style="margin-bottom: 20px; font-size: 32px; color: #ffd700;">⚔️ Изометрическая RPG ⚔️</h2>
<p style="color: #888; margin-bottom: 30px;">Выберите своего героя</p>
<div class="class-grid">
<button class="class-btn warrior" onclick="startGame('warrior')">
<div class="class-icon">⚔️</div>
<div class="class-name">Воин</div>
<div class="class-desc">HP: 120 | Сила: 12 | Защита: 10</div>
<div class="class-weapon">Меч + Щит</div>
</button>
<button class="class-btn mage" onclick="startGame('mage')">
<div class="class-icon">🔮</div>
<div class="class-name">Маг</div>
<div class="class-desc">HP: 70 | Магия: 15 | MP: 100</div>
<div class="class-weapon">Посох</div>
</button>
<button class="class-btn archer" onclick="startGame('archer')">
<div class="class-icon">🏹</div>
<div class="class-name">Лучник</div>
<div class="class-desc">HP: 90 | Скорость: 12 | Ловкость</div>
<div class="class-weapon">Лук</div>
</button>
<button class="class-btn thief" onclick="startGame('thief')">
<div class="class-icon">🗡️</div>
<div class="class-name">Плут</div>
<div class="class-desc">HP: 85 | Скорость: 14 | Уклонение</div>
<div class="class-weapon">Кинжал</div>
</button>
<button class="class-btn paladin" onclick="startGame('paladin')">
<div class="class-icon">🛡️</div>
<div class="class-name">Паладин</div>
<div class="class-desc">HP: 110 | Защита: 12 | Свет</div>
<div class="class-weapon">Молот + Щит</div>
</button>
<button class="class-btn necromancer" onclick="startGame('necromancer')">
<div class="class-icon">💀</div>
<div class="class-name">Некромант</div>
<div class="class-desc">HP: 75 | Магия: 18 | Тьма</div>
<div class="class-weapon">Посох тьмы</div>
</button>
</div>
<button class="load-btn" onclick="startGame('continue')">
🔄 Продолжить игру
</button>
</div>
</div>
<div id="controls">
<span class="key">W</span><span class="key">A</span><span class="key">S</span><span class="key">D</span> или <span class="key"></span><span class="key"></span><span class="key"></span><span class="key"></span> - движение |
<span class="key">I</span> - инвентарь | <span class="key">Q</span> - квесты | <span class="key">H</span> - помощь |
<span class="key">Мышь</span> - клик для перемещения
</div>
<script src="renderer.js"></script>
<script src="rpg.js"></script>
<script src="game.js"></script>
<script>
function startGame(classType) {
// Скрываем экран выбора
document.getElementById('startScreen').style.display = 'none';
// Инициализируем игру с выбранным классом
canvas = document.getElementById('gameCanvas');
Game.init(classType);
}
// Инициализация при загрузке
window.onload = function() {
canvas = document.getElementById('gameCanvas');
// Check for saved game
const saved = localStorage.getItem('rpg_save');
if (!saved) {
// No saved game - continue button should do nothing or start new game
document.querySelector('.load-btn').style.opacity = '0.5';
document.querySelector('.load-btn').style.cursor = 'not-allowed';
document.querySelector('.load-btn').onclick = function() {
alert('Нет сохраненной игры!');
};
}
};
</script>
</body>
</html>