Web前端最全Web前端--HTML+CSS+JS实现圣诞抓礼物小游戏_snowflakes js,2024年最新十多家大厂前端面试真题锦集干货整理

web浏览器中的javascript

window对象

  • 计时器

  • 浏览器定位和导航

  • 浏览历史

  • 浏览器和屏幕信息

  • 对话框

  • 错误处理

  • 作为window对象属性的文档元素

timer++;

switch (gameMode) {
    case gameModes.TITLE:
        titleScreen();
        break;
    case gameModes.GAMEOVER:
        gameOver();
        break;
    case gameModes.PLAYING:
        gameLoop();
        break;
}

}

function titleScreen() {
if (timer > titleColours.length) timer = 0;

ctx.font = "50px Arial";
ctx.fillStyle = titleColours[timer];
ctx.fillText(`圣诞抓礼物!`, 0, 50);
ctx.fillStyle = "yellow";

ctx.font = "30px Arial";
ctx.fillText(`请按空格键开始!`, 65, 140);

var highScore = getHighScore();
if (highScore != -1) ctx.fillText(`High Score: ${highScore}`, 90, 220);

drawRotatedImage(elfImage, canvas.width / 2 - elfWidth / 2, 330, elfRotation, 200);
elfRotation += 2;
if (elfRotation > 359) elfRotation = 0;

if (spacePressed && timer > 5) {
    setGameMode(gameModes.PLAYING);
}

}

function gameLoop() {
drawSnowPerson();
spawnGifts();
processGifts();
drawFloor();
drawHUD();
drawElf();
drawBang();

if (rightPressed) {
    elfX += elfSpeed;
    if (elfX + elfWidth > canvas.width) {
        elfX = canvas.width - (elfWidth + 5);
    }
} else if (leftPressed) {
    elfX -= elfSpeed;
    if (elfX < -15) {
        elfX = -15;
    }
}

}

function gameOver() {
ctx.font = “50px Arial”;
ctx.fillStyle = “yellow”;
ctx.fillText(GAME OVER!, 80, 200);
ctx.font = “30px Arial”;
ctx.fillText(Final score: ${score}, 130, 240);
ctx.fillText(‘Press space to continue’, 80, 280);

if (spacePressed && timer > 5) {
    initialiseGame();
    setGameMode(gameModes.TITLE);
}

}

function processGifts() {
gifts.forEach((g) => {
if (g && g.alive) {
// draw gift
drawGift(g);
if (g.y > canvas.height) {
g.alive = false;
if (!g.bomb) score–;
}

        // move gift
        g.y += g.speed;

        // rotate gift
        g.rotation += 5;
        if (g.rotation > 359) g.rotation = 0;

        // check for collision
        if ((g.y + (giftHeight / 2)) >= ((canvas.height - elfHeight - snowHeight) + 20) &&
            (g.y < canvas.height - snowHeight + 20)) {
            if ((elfX + 25) <= (g.x + (giftWidth / 2)) && ((elfX + 20) + (elfWidth)) >= g.x) {
                g.alive = false;
                if (!g.bomb) {
                    score += 5;
                } else {
                    doBombCollision();
                }
            }
        }
    }
});

}

function drawGift(g) {
switch (g.colour) {
case 1:
drawColouredGift(greenGiftImage, g);
break;
case 2:
drawColouredGift(redGiftImage, g);
break;
case 3:
drawColouredGift(blueGiftImage, g);
break;
case 4:
drawRotatedImage(bombImage, g.x, g.y, 180, 45);
break;
}
}

function drawColouredGift(colourImage, g) {
drawRotatedImage(colourImage, g.x, g.y, g.rotation, 35);
}

function doBombCollision() {
health–;
bangX = elfX;
bangTime = 5;
if (health == 0) {
setHighScore();
setGameMode(gameModes.GAMEOVER);
}
}

function drawBang() {
if (bangTime > 0) {
bangTime–;
ctx.drawImage(bangImage, bangX, (canvas.height - 75) - snowHeight, 75, 75);
}
}


**CSS样式:**



.cube {
width: 100%;
height: 100%;
}

@font-face {
    font-family: "RubikExtended";
    src: url("../media/RubikExtended.ttf") format( "truetype"), url("../media/RubikExtended.otf") format( "otf");
    font-weight: normal;
    font-style: normal;
}

/*

This next bit is just for labeling a Cube's face.

*/

.faceLabel {
    display: none;
    position: absolute;
    font-size: 60px;
    text-align: center;
    font-family: "RubikExtended";
    text-shadow: 0 0 24px rgba( 0, 0, 0, 0.3);
    color: #FFF;
}



.cube .cubelet {
    width: 1em;
    height: 1em;
    position: absolute;
    box-sizing: border-box;
}



Direction-facing planes of limited size
that act as containers for content.

*/

.cube
/*.cubelet >*/

.face {
    position: absolute;
    width: 1em;
    height: 1em;
    background-color: #000;
    text-align: center;
    -webkit-backface-visibility: hidden;
    -moz-backface-visibility: hidden;
    -o-backface-visibility: hidden;
    backface-visibility: hidden;
    padding: 0.05em;
    -moz-box-sizing: border-box;

❤️ 谢谢支持

喜欢的话别忘了 关注、点赞哦~。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

前端校招面试题精编解析大全

ng: 0.05em;
-moz-box-sizing: border-box;

❤️ 谢谢支持

喜欢的话别忘了 关注、点赞哦~。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

[外链图片转存中…(img-rLkdBuHo-1715872908119)]

  • 19
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我可以用HTMLCSS来编写一个雪花动画。下面是一个简单的例子:<style> .snowflake { font-size: 25px; position: absolute; top: -50px; animation: snow 5s linear infinite; }@keyframes snow { 0% { left: -50px; } 100% { left: 100%; } } </style><div class="snowflake">❄</div> ### 回答2: 要用HTMLCSS写一个雪花动画,首先需要创建一个HTML文件,然后在文件中添加相关的HTMLCSS代码。以下是实现雪花动画的步骤: 1. 在HTML文件中创建一个div元素,用于包含所有的雪花。 ``` <div id="snowflakes"></div> ``` 2. 在CSS中设置这个div元素的宽度和高度,并将其定位为绝对位置,以便雪花可以被放置在页面的任意位置。 ``` #snowflakes { width: 100%; height: 100%; position: absolute; } ``` 3. 使用CSS创建一个动画效果,使每一个雪花沿着Y轴向下移动,并通过不同的延迟时间和透明度来模拟飘落的效果。 ``` @keyframes snowfall { 0% { transform: translateY(0); } 100% { transform: translateY(100vh); } } .snowflake { position: absolute; top: -10px; width: 10px; height: 10px; background: #FFF; animation: snowfall 10s linear infinite; } ``` 4. 使用JavaScript在div元素中随机生成雪花,并将它们添加到div中。可以控制生成雪花的数量和位置,以增加动画的效果。 ``` var snowflakesContainer = document.getElementById("snowflakes"); function createSnowflake() { var snowflake = document.createElement("div"); snowflake.className = "snowflake"; snowflake.style.left = Math.random() * 100 + "%"; snowflake.style.animationDelay = Math.random() * 10 + "s"; snowflakesContainer.appendChild(snowflake); setTimeout(function() { snowflake.remove(); }, 10000); } setInterval(createSnowflake, 100); ``` 通过以上步骤,就可以实现一个简单的雪花动画。通过调整CSS和JavaScript的参数,可以进一步优化和个性化动画效果。 ### 回答3: 要用HTMLCSS实现一个雪花动画,可以参考以下步骤: 1. 创建一个HTML文件,并在`<head>`标签中导入CSS文件。 2. 在`<body>`标签中创建一个`<div>`元素,用于容纳雪花。 3. 在CSS文件中,为`<div>`元素设置宽度和高度,以及背景颜色(可以使用透明度来模拟雪花)。 4. 使用`@keyframes`规则创建一个动画,定义雪花的运动轨迹和变化样式。可以通过使用`translate()`变形函数和`rotate()`旋转函数来实现雪花的飘落效果。 5. 将动画应用到`<div>`元素上,使用`animation`属性设置动画名称、持续时间和循环次数等属性。可以调整动画的参数以获得期望的效果。 6. 在HTML文件中引用CSS文件,并在浏览器中打开HTML文件,即可看到雪花动画效果。 例如,以下是一个简单的雪花动画示例代码: HTML文件: ```html <!DOCTYPE html> <html> <head> <link rel="stylesheet" type="text/css" href="snowflake.css"> </head> <body> <div class="snowflake"></div> </body> </html> ``` CSS文件(snowflake.css): ```css .snowflake { width: 10px; height: 10px; background-color: #fff; opacity: 0.5; position: absolute; animation: snowfall 5s linear infinite; } @keyframes snowfall { 0% { transform: translateY(-100%) rotate(0deg); } 100% { transform: translateY(100vh) rotate(360deg); } } ``` 通过调整CSS中的属性,如雪花的大小、背景颜色、透明度、动画时间等,就可以产生不同的雪花效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值