-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
160 lines (146 loc) · 6.47 KB
/
index.html
File metadata and controls
160 lines (146 loc) · 6.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<!-- Farcaster Mini App -->
<meta name="fc:miniapp" content='{"version":"1","imageUrl":"https://checkers-ebon.vercel.app/preview.png","button":{"title":"Play Checkers","action":{"type":"launch_miniapp","name":"Checkers","url":"https://checkers-ebon.vercel.app","splashImageUrl":"https://checkers-ebon.vercel.app/icon.png","splashBackgroundColor":"#1a1a2e"}}}' />
<meta name="fc:frame" content='{"version":"1","imageUrl":"https://checkers-ebon.vercel.app/preview.png","button":{"title":"Play Checkers","action":{"type":"launch_frame","name":"Checkers","url":"https://checkers-ebon.vercel.app","splashImageUrl":"https://checkers-ebon.vercel.app/icon.png","splashBackgroundColor":"#1a1a2e"}}}' />
<!-- Base -->
<meta name="base:app_id" content="69a1f8530504b72df703c1a8">
<meta name="base:builder-code" content="bc_o4nb92t8">
<meta name="talentapp:project_verification" content="bf0f23564cfc6ef8c9b8773a0ece93dbcb0c6a99a6274b55d95d6ccdc754a2f5126e781c78b34cef5fd79c2ff44ad63689cbc222e2e2766ef72ca155ea864320">
<!-- Open Graph -->
<meta property="og:title" content="Checkers vs AI">
<meta property="og:description" content="Play classic checkers against AI. Fast, fun, mobile-friendly!">
<meta property="og:image" content="https://checkers-ebon.vercel.app/preview.png">
<title>Checkers</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div id="app">
<!-- Wallet Bar -->
<div id="wallet-bar">
<div id="wallet-status">
<img id="user-pfp" class="hidden" alt="">
<span id="wallet-dot"></span>
<span id="wallet-addr">Not connected</span>
</div>
<div id="wallet-info">
<span id="wallet-chain"></span>
<span id="wallet-bal"></span>
</div>
</div>
<header id="header">
<div class="score-bar">
<div class="score-item">
<span class="score-label">You</span>
<span id="player-score" class="score-value">0</span>
</div>
<div class="title-area">
<h1>Checkers</h1>
<div id="onchain-stats" class="hidden">
<span id="stat-high">Best: -</span>
<span id="stat-games">Games: -</span>
</div>
</div>
<div class="score-item">
<span class="score-label">AI</span>
<span id="ai-score" class="score-value">0</span>
</div>
</div>
<div id="turn-row">
<span id="turn-indicator">Your Turn</span>
<span id="timer-display" class="hidden">0:30</span>
</div>
<div id="options-row">
<div class="option-group">
<span class="diff-label">Color:</span>
<button type="button" class="color-btn active" data-color="red">Red</button>
<button type="button" class="color-btn" data-color="white">White</button>
</div>
<div class="option-group">
<span class="diff-label">AI:</span>
<button type="button" class="diff-btn active" data-diff="easy">Easy</button>
<button type="button" class="diff-btn" data-diff="medium">Medium</button>
<button type="button" class="diff-btn" data-diff="hard">Hard</button>
</div>
<div class="option-group">
<button type="button" id="sound-toggle" class="icon-btn" title="Sound">🔊</button>
<button type="button" id="timer-toggle" class="icon-btn active" title="Timer 30s">⏱</button>
</div>
</div>
<div class="option-group" style="justify-content: center; padding-top: 2px;">
<span class="diff-label">Theme:</span>
<button type="button" class="theme-btn active" data-theme="dark">Dark</button>
<button type="button" class="theme-btn" data-theme="light">Light</button>
<button type="button" class="theme-btn" data-theme="classic">Classic</button>
</div>
</header>
<main id="board-container">
<canvas id="board"></canvas>
</main>
<footer id="controls">
<button id="stats-btn">My Stats</button>
<button id="leaderboard-btn">Leaderboard</button>
<button id="restart-btn">Restart</button>
</footer>
<!-- Result Overlay -->
<div id="result-overlay" class="hidden">
<div class="result-box">
<h2 id="result-title"></h2>
<p id="result-msg"></p>
<div class="result-actions">
<button id="submit-score-btn" class="hidden">Submit Score On-chain</button>
<button id="submit-tip-btn" class="hidden">Submit + Tip Dev</button>
<div id="tx-status" class="hidden"></div>
<button id="score-card-btn" class="hidden">Share card</button>
<button id="share-btn" class="hidden">Share Score</button>
<button id="result-restart-btn">Play Again</button>
</div>
</div>
</div>
<!-- Leaderboard Overlay -->
<div id="leaderboard-overlay" class="hidden">
<div class="leaderboard-box">
<div class="lb-header">
<h2>Leaderboard</h2>
<button id="lb-close">×</button>
</div>
<div id="lb-content">
<p class="lb-loading">Loading...</p>
</div>
</div>
</div>
<!-- Tutorial Overlay -->
<div id="tutorial-overlay" class="hidden">
<div class="tutorial-box">
<div id="tutorial-slide">
<h3 id="tutorial-title">Welcome to Checkers</h3>
<p id="tutorial-text">Tap a piece to select it, then tap a highlighted square to move.</p>
</div>
<div class="tutorial-actions">
<label class="tutorial-skip"><input type="checkbox" id="tutorial-dont-show"> Don't show again</label>
<div>
<button type="button" id="tutorial-next">Next</button>
<button type="button" id="tutorial-start" class="hidden">Start</button>
</div>
</div>
</div>
</div>
<!-- Stats Overlay -->
<div id="stats-overlay" class="hidden">
<div class="leaderboard-box stats-box">
<div class="lb-header">
<h2>My Stats</h2>
<button id="stats-close" class="lb-close-style">×</button>
</div>
<div id="stats-content"></div>
</div>
</div>
<canvas id="confetti-canvas" class="confetti-layer" aria-hidden="true"></canvas>
<canvas id="score-card-canvas" class="hidden" width="400" height="240" aria-hidden="true"></canvas>
</div>
<script type="module" src="game.js"></script>
</body>
</html>