首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

超萌来袭!用 HTML、CSS 和 JavaScript 打造可爱 2048 游戏

  • 25-04-25 01:21
  • 2183
  • 9613
blog.csdn.net

超萌来袭!用 HTML、CSS 和 JavaScript 打造可爱 2048 游戏


游戏链接

一、引言

在如今琳琅满目的游戏世界里,简单又好玩的小游戏总能吸引众多玩家的目光。2048 这款经典数字合并游戏,以其简洁的规则和富有挑战性的玩法,一直备受欢迎。今天,咱们就用 HTML、CSS 和 JavaScript 来打造一个独具特色的可爱版 2048 游戏,用可爱的动物图片替代传统数字,让游戏更加有趣!

二、游戏功能概述

1. 核心玩法

游戏规则依旧遵循经典 2048 的玩法,玩家使用键盘方向键(上、下、左、右)控制卡片移动,相同的卡片会合并成一个数值更大的卡片,目标是合并出数值为 2048 的卡片。

2. 独特设计

  • 可爱动物图片:用一系列可爱的动物图片替代了传统的数字,为游戏增添了不少萌趣。
  • 得分与最高分记录:游戏中实时显示当前得分,并且会记录玩家的历史最高分,激励玩家不断挑战自我。
  • 重置功能:玩家可以随时点击“重置”按钮,将游戏重置到初始状态,重新开始挑战。
  • 动物介绍按钮:鼠标悬浮在“动物介绍”按钮上时,会显示每个动物图片所代表的数字,而且数字采用不同的流动渐变色显示,与对应的图片整齐对齐,增加了游戏的趣味性和可探索性。
  • 胜利提示:当玩家成功合并出 2048 时,会弹出胜利提示框,给玩家满满的成就感。

三、代码实现详解

1. HTML 部分

HTML 负责构建游戏的基本结构,包括游戏标题、得分区域、游戏棋盘、游戏规则说明和胜利提示框等。以下是关键代码片段:

<div id="header">
    <h1>可爱 2048 游戏h1>
    <div id="score-board">
        <div id="score">得分: 0div>
        <div id="high-score">最高分: 0div>
        <button id="reset-button" onclick="resetGame()">重置button>
        <div id="animal-intro">
            动物介绍
            <div id="animal-intro-content">
                <p><span class="gradient-number">数字 2span>: <img src="图片链接" alt="2" width="30"> p>
                
            div>
        div>
    div>
div>
<div id="game-board">div>
<div id="game-rules">
    <p>游戏规则:使用键盘方向键(上、下、左、右)控制卡片移动,相同的卡片会合并成一个数值更大的卡片,目标是合并出数值为 2048 的卡片。p>
div>
<div id="win-modal">
    <div id="win-modal-content">
        <p>恭喜你已经合并了一只宇宙无敌最可爱的猫咪p>
        <button onclick="closeWinModal()">确认button>
    div>
div>
  • 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

2. CSS 部分

CSS 用于美化游戏界面,包括设置背景颜色、字体样式、按钮样式、棋盘布局和动物介绍的悬浮效果等。特别地,为动物介绍中的数字设置了流动渐变色效果:

@keyframes gradient {
    0% {
        background-position: 0% 50%;
    }
    50% {
        background-position: 100% 50%;
    }
    100% {
        background-position: 0% 50%;
    }
}

.gradient-number {
    background-size: 200% 200%;
    background-clip: text;
    -webkit-background-clip: text;
    color: transparent;
    animation: gradient 3s ease infinite;
}

#animal-intro-content p:nth-child(1) .gradient-number {
    background-image: linear-gradient(45deg, #ff00cc, #333399);
}
/* 其他数字的渐变色设置 */
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

3. JavaScript 部分

JavaScript 实现了游戏的核心逻辑,包括棋盘的初始化、随机卡片的生成、卡片的移动和合并、得分计算、胜利判断等。以下是部分关键函数:

// 初始化棋盘
function createBoard() {
    gameBoard.innerHTML = '';
    for (let i = 0; i < 4; i++) {
        for (let j = 0; j < 4; j++) {
            const cell = document.createElement('div');
            cell.classList.add('cell');
            if (board[i][j]!== 0) {
                const tile = document.createElement('div');
                tile.classList.add('tile');
                tile.style.backgroundImage = `url(${images[board[i][j]]})`;
                cell.appendChild(tile);
            }
            gameBoard.appendChild(cell);
        }
    }
    scoreElement.textContent = `得分: ${score}`;
}

// 随机添加卡片
function addRandomTile() {
    const emptyCells = [];
    for (let i = 0; i < 4; i++) {
        for (let j = 0; j < 4; j++) {
            if (board[i][j] === 0) {
                emptyCells.push({ i, j });
            }
        }
    }
    if (emptyCells.length > 0) {
        const randomIndex = Math.floor(Math.random() * emptyCells.length);
        const { i, j } = emptyCells[randomIndex];
        board[i][j] = Math.random() < 0.9? 2 : 4;
    }
}

// 合并卡片
function mergeTiles(row) {
    let newRow = row.filter(tile => tile!== 0);
    for (let i = 0; i < newRow.length - 1; i++) {
        if (newRow[i] === newRow[i + 1]) {
            newRow[i] *= 2;
            score += newRow[i];
            if (newRow[i] === 2048) {
                showWinModal();
            }
            newRow[i + 1] = 0;
        }
    }
    newRow = newRow.filter(tile => tile!== 0);
    while (newRow.length < 4) {
        newRow.push(0);
    }
    return newRow;
}
  • 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

四、运行与体验

将上述 HTML、CSS 和 JavaScript 代码整合到一个 HTML 文件中,用浏览器打开该文件,就可以开始游戏啦!在游戏过程中,你能感受到可爱动物图片带来的愉悦,还能不断挑战自己的最高分。

在这里插入图片描述

五、总结

通过这个项目,我们不仅重温了经典的 2048 游戏,还学习了如何运用 HTML、CSS 和 JavaScript 来实现一个完整的网页游戏。从页面布局到样式设计,再到核心逻辑的实现,每一个环节都充满了乐趣和挑战。希望大家能喜欢这个可爱版的 2048 游戏,也可以根据自己的喜好对代码进行修改和扩展,创造出属于自己的独特游戏!

赶紧动手试试吧,说不定你就是下一个游戏小达人!
下面是完整代码,保存为html文件就可以打开玩了。





    
    
    可爱 2048 游戏
    



    

可爱 2048 游戏

得分: 0
最高分: 0
动物介绍

数字 2: 2

数字 4: 4

数字 8: 8

数字 16: 16

数字 32: 32

数字 64: 64

数字 128: 128

数字 256: 256

数字 512: 512

数字 1024: 1024

数字 2048: 2048

游戏规则:使用键盘方向键(上、下、左、右)控制卡片移动,相同的卡片会合并成一个数值更大的卡片,目标是合并出数值为 2048 的卡片。

恭喜你已经合并了一只宇宙无敌最可爱的猫咪

  • 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
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319
  • 320
  • 321
  • 322
  • 323
  • 324
  • 325
  • 326
  • 327
  • 328
  • 329
  • 330
  • 331
  • 332
  • 333
  • 334
  • 335
  • 336
  • 337
  • 338
  • 339
  • 340
  • 341
  • 342
  • 343
  • 344
  • 345
  • 346
  • 347
  • 348
  • 349
  • 350
  • 351
  • 352
  • 353
  • 354
  • 355
  • 356
  • 357
  • 358
  • 359
  • 360
  • 361
  • 362
  • 363
  • 364
  • 365
  • 366
  • 367
  • 368
  • 369
  • 370
  • 371
  • 372
  • 373
  • 374
  • 375
  • 376
  • 377
  • 378
  • 379
  • 380
  • 381
  • 382
  • 383
  • 384
  • 385
  • 386
  • 387
  • 388
  • 389
  • 390
  • 391
  • 392
  • 393
  • 394
  • 395
  • 396
  • 397
  • 398
  • 399
  • 400
  • 401
  • 402
  • 403
  • 404
  • 405
  • 406
  • 407
  • 408
  • 409
  • 410
  • 411
  • 412
  • 413
  • 414
  • 415
  • 416
  • 417
  • 418
  • 419
  • 420
  • 421
  • 422
  • 423
  • 424
  • 425
  • 426
  • 427
  • 428
  • 429
  • 430
  • 431
  • 432
  • 433
  • 434
  • 435
  • 436
  • 437
  • 438
  • 439
  • 440
  • 441
  • 442
  • 443
  • 444
  • 445
  • 446
  • 447
  • 448
  • 449
  • 450
  • 451
  • 452
  • 453
  • 454
  • 455
  • 456
  • 457
  • 458
  • 459
  • 460
  • 461
  • 462
  • 463
注:本文转载自blog.csdn.net的阳光明媚大男孩的文章"https://blog.csdn.net/qq_52810166/article/details/146456529"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

107
Java
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top