2024年最新Web前端--HTML+CSS+JS实现圣诞抓礼物小游戏,2024年最新三年老Web前端经验面经

前端框架

前端框架太多了,真的学不动了,别慌,其实对于前端的三大马车,Angular、React、Vue 只要把其中一种框架学明白,底层原理实现,其他两个学起来不会很吃力,这也取决于你以后就职的公司要求你会哪一个框架了,当然,会的越多越好,但是往往每个人的时间是有限的,对于自学的学生,或者即将面试找工作的人,当然要选择一门框架深挖原理。

以 Vue 为例,我整理了如下的面试题。

Vue部分截图

如果你觉得对你有帮助,可以戳这里获取:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

var health = 3;

const bombChance = 5;

var elfRotation = 0;

var bangX;

var bangTime;

var snowHeight = 6;

var spawnTimeChangeInterval = 3000;

var titleColours = [];

// snowflake stuff

var snowflakes = [];

const maxSnowflakes = 80;

const snowflakeSize = 3;

const snowflakeMinSpeed = 1;

const snowflakeMaxSpeed = 4;

const snowflakeColours = [“rgba(255,255,255,0.95)”, “rgba(255,255,255,0.65)”, “rgba(255,255,255,0.4)”];

const gameModes = {

TITLE: ‘title’,

PLAYING: ‘playing’,

GAMEOVER: ‘gameover’

};

var gameMode = gameModes.TITLE;

document.addEventListener(“keydown”, keyDownHandler, false);

document.addEventListener(“keyup”, keyUpHandler, false);

function keyDownHandler(e) {

if (e.key == “Right” || e.key == “ArrowRight”) {

rightPressed = true;

} else if (e.key == “Left” || e.key == “ArrowLeft”) {

leftPressed = true;

} else if (e.code == “Space”) {

spacePressed = true;

}

}

function keyUpHandler(e) {

if (e.key == “Right” || e.key == “ArrowRight”) {

rightPressed = false;

} else if (e.key == “Left” || e.key == “ArrowLeft”) {

leftPressed = false;

} else if (e.code == “Space”) {

spacePressed = false;

}

}

function draw() {

ctx.clearRect(0, 0, canvas.width, canvas.height);

drawSnow();

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);

最后

推荐一些系统学习的途径和方法。

路线图

每个Web开发人员必备,很权威很齐全的Web开发文档。作为学习辞典使用,可以查询到每个概念、方法、属性的详细解释,注意使用英文关键字搜索。里面的一些 HTML,CSS,HTTP 技术教程也相当不错。

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

HTML 和 CSS:

html5知识

css基础知识

  • 27
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值