国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

HTML小游戲25 —— HTML5拉桿子過關(guān)小游戲(附完整源碼)

這篇具有很好參考價(jià)值的文章主要介紹了HTML小游戲25 —— HTML5拉桿子過關(guān)小游戲(附完整源碼)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

本節(jié)教程我會帶大家使用 HTML 、CSS和 JS 來制作一個(gè)HTML5拉桿子過關(guān)小游戲

? 前言


??? 本文已收錄于???100個(gè)HTML小游戲?qū)冢?/strong>100個(gè)H5游戲?qū)?/span>https://blog.csdn.net/qq_53544522/category_12064846.html
?? 目前已有100+小游戲,源碼在持續(xù)更新中,前100位訂閱限時(shí)優(yōu)惠,先到先得。
?? 訂閱專欄后可閱讀100個(gè)HTML小游戲文章;還可私聊進(jìn)前端/游戲制作學(xué)習(xí)交流群;領(lǐng)取一百個(gè)小游戲源碼。

在線演示地址:https://code.haiyong.site/964/
源碼也可在文末進(jìn)行獲取

? 項(xiàng)目基本結(jié)構(gòu)


大致目錄結(jié)構(gòu)如下(共3個(gè)子文件):

├── js
│ ? └──script.js 13KB
├── css
│ ? └── style.css 1KB
└── index.html 2KB

HTML小游戲25 —— HTML5拉桿子過關(guān)小游戲(附完整源碼)

場景展示

HTML小游戲25 —— HTML5拉桿子過關(guān)小游戲(附完整源碼)

HTML源碼

<div class="container">
  <div id="score"></div>
  <canvas id="game" width="375" height="375"></canvas>
  <div id="introduction">按住鼠標(biāo)伸出一根棍子</div>
  <div id="perfect">雙倍積分</div>
  <button id="restart">重新開始</button>
</div>

CSS 源碼

html,body

html,
body {
  height: 100%;
  margin: 0;
}

body {
  font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
  cursor: pointer;
}

container

.container {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100%;
}

score

#score {
  position: absolute;
  top: 30px;
  right: 30px;
  font-size: 2em;
  font-weight: 900;
}

introduction

#introduction {
  width: 200px;
  height: 150px;
  position: absolute;
  font-weight: 600;
  font-size: 0.8em;
  font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
  text-align: center;
  transition: opacity 2s;
}

restart

#restart {
  width: 120px;
  height: 120px;
  position: absolute;
  border-radius: 50%;
  color: white;
  background-color: red;
  border: none;
  font-weight: 700;
  font-size: 1.2em;
  font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
  display: none;
  cursor: pointer;
}

perfect

#perfect {
  position: absolute;
  opacity: 0;
  transition: opacity 2s;
}

JS 源碼

js 代碼較多,這里提供部分,完整源碼可以在文末下載

配置

const canvasWidth = 375;
const canvasHeight = 375;
const platformHeight = 100;
const heroDistanceFromEdge = 10; // 等待時(shí)
const paddingX = 100; // 從原始畫布尺寸開始,英雄的等待位置
const perfectAreaSize = 10;

重置游戲變量和布局,但不啟動(dòng)游戲(游戲在按鍵時(shí)開始)

function resetGame() {
  // 重置游戲進(jìn)度
  phase = "waiting";
  lastTimestamp = undefined;
  sceneOffset = 0;
  score = 0;

  introductionElement.style.opacity = 1;
  perfectElement.style.opacity = 0;
  restartButton.style.display = "none";
  scoreElement.innerText = score;

  // 第一個(gè)平臺總是相同的x+w必須匹配paddingX
  platforms = [{ x: 50, w: 50 }];
  generatePlatform();
  generatePlatform();
  generatePlatform();
  generatePlatform();

  sticks = [{ x: platforms[0].x + platforms[0].w, length: 0, rotation: 0 }];

  trees = [];
  generateTree();
  generateTree();
  generateTree();
  generateTree();
  generateTree();
  generateTree();
  generateTree();
  generateTree();
  generateTree();
  generateTree();

  heroX = platforms[0].x + platforms[0].w - heroDistanceFromEdge;
  heroY = 0;

  draw();
}

最遠(yuǎn)樹右邊緣的X坐標(biāo)

  const lastTree = trees[trees.length - 1];
  let furthestX = lastTree ? lastTree.x : 0;

如果按下空格鍵,則重新啟動(dòng)游戲

window.addEventListener("keydown", function (event) {
  if (event.key == " ") {
    event.preventDefault();
    resetGame();
    return;
  }
});

返回棍子擊中的平臺(如果沒有擊中任何棍子,則返回未定義)

function thePlatformTheStickHits() {
  if (sticks.last().rotation != 90)
    throw Error(`Stick is ${sticks.last().rotation}°`);
  const stickFarX = sticks.last().x + sticks.last().length;

  const platformTheStickHits = platforms.find(
    (platform) => platform.x < stickFarX && stickFarX < platform.x + platform.w
  );

  // 如果棍子擊中完美區(qū)域
  if (
    platformTheStickHits &&
    platformTheStickHits.x + platformTheStickHits.w / 2 - perfectAreaSize / 2 <
      stickFarX &&
    stickFarX <
      platformTheStickHits.x + platformTheStickHits.w / 2 + perfectAreaSize / 2
  )
    return [platformTheStickHits, true];

  return [platformTheStickHits, false];
}

將主畫布區(qū)域居中到屏幕中間

  ctx.translate(
    (window.innerWidth - canvasWidth) / 2 - sceneOffset,
    (window.innerHeight - canvasHeight) / 2
  );

繪制場景

  drawPlatforms();
  drawHero();
  drawSticks();

山丘是伸展的正弦波下的形狀

function drawHill(baseHeight, amplitude, stretch, color) {
  ctx.beginPath();
  ctx.moveTo(0, window.innerHeight);
  ctx.lineTo(0, getHillY(0, baseHeight, amplitude, stretch));
  for (let i = 0; i < window.innerWidth; i++) {
    ctx.lineTo(i, getHillY(i, baseHeight, amplitude, stretch));
  }
  ctx.lineTo(window.innerWidth, window.innerHeight);
  ctx.fillStyle = color;
  ctx.fill();
}

??? 好書推薦

電腦入門基礎(chǔ)教程(Windows 11+Office 2021)

HTML小游戲25 —— HTML5拉桿子過關(guān)小游戲(附完整源碼)

內(nèi)容介紹

全書共 15 章,系統(tǒng)并全面地講解了電腦基礎(chǔ)知識、電腦入門操作、Windows 11 系統(tǒng)的操作與應(yīng)用、電腦打字的方法、電腦文件的管理、電腦軟件的安裝與管理、電腦連網(wǎng)和上網(wǎng)操作、網(wǎng)絡(luò)通信與聊天交流、網(wǎng)上日常生活與娛樂、電腦系統(tǒng)維護(hù)與安全防范,以及使用Word 2021、Excel 2021 和PowerPoint 2021 高效辦公等知識技能。

源碼下載

1.CSDN資源下載:https://download.csdn.net/download/qq_44273429/87778335


2.也可通過下方卡片添加好友回復(fù)拉桿子獲取文章來源地址http://www.zghlxwxcb.cn/news/detail-447556.html

到了這里,關(guān)于HTML小游戲25 —— HTML5拉桿子過關(guān)小游戲(附完整源碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • HTML小游戲12 —— 汽車賽道飆車游戲(附完整源碼)

    ?? 網(wǎng)站推薦:【神級源碼資源網(wǎng)】【摸魚小游戲】 ?? 前端學(xué)習(xí)課程:??【28個(gè)案例趣學(xué)前端】【400個(gè)JS面試題】 ?? 想尋找共同學(xué)習(xí)交流、摸魚劃水的小伙伴,請點(diǎn)擊【摸魚學(xué)習(xí)交流群】 ?? 免費(fèi)且實(shí)用的計(jì)算機(jī)相關(guān)知識題庫:??進(jìn)來逛逛 給大家安利一個(gè)免費(fèi)且實(shí)用的前端

    2024年02月07日
    瀏覽(30)
  • HTML小游戲16 —— 消除游戲《魔法石》源碼(附完整源碼)

    ?? 網(wǎng)站推薦:【神級源碼資源網(wǎng)】【摸魚小游戲】 ?? 前端學(xué)習(xí)課程:??【28個(gè)案例趣學(xué)前端】【400個(gè)JS面試題】 ?? 想尋找共同學(xué)習(xí)交流、摸魚劃水的小伙伴,請點(diǎn)擊【摸魚學(xué)習(xí)交流群】 ?? 免費(fèi)且實(shí)用的計(jì)算機(jī)相關(guān)知識題庫:??進(jìn)來逛逛 給大家安利一個(gè)免費(fèi)且實(shí)用的前端

    2024年02月22日
    瀏覽(33)
  • HTML小游戲8 —— 小霸王游戲機(jī)網(wǎng)頁版(附完整源碼)

    ?? 網(wǎng)站推薦:【神級源碼資源網(wǎng)】【摸魚小游戲】 ?? 風(fēng)趣幽默的前端學(xué)習(xí)課程:??28個(gè)案例趣學(xué)前端 ?? 想尋找共同學(xué)習(xí)交流、摸魚劃水的小伙伴,請點(diǎn)擊【摸魚學(xué)習(xí)交流群】 ?? 免費(fèi)且實(shí)用的計(jì)算機(jī)相關(guān)知識題庫:??進(jìn)來逛逛 給大家安利一個(gè)免費(fèi)且實(shí)用的前端刷題(面

    2024年02月04日
    瀏覽(34)
  • 【HTML小游戲】推箱子網(wǎng)頁版(附完整源碼)

    【HTML小游戲】推箱子網(wǎng)頁版(附完整源碼)

    最近剛剛更新完了HTML,CSS的萬字總結(jié) ,有很多人已經(jīng)學(xué)習(xí)完了文章,感覺反饋還不錯(cuò),今天,用HTML,CSS,JS的知識編寫了一個(gè)童年經(jīng)典游戲 - 推箱子,供學(xué)習(xí)參考。 游戲主界面展示: 游戲界面展示: 經(jīng)典的推箱子是一個(gè)非常古老游戲,甚至是80,90年代的回憶,目的是在訓(xùn)

    2024年02月04日
    瀏覽(31)
  • 【C++】做一個(gè)飛機(jī)空戰(zhàn)小游戲(十一)——游戲過關(guān)、通關(guān)、結(jié)束的設(shè)置

    【C++】做一個(gè)飛機(jī)空戰(zhàn)小游戲(十一)——游戲過關(guān)、通關(guān)、結(jié)束的設(shè)置

    ?[導(dǎo)讀]本系列博文內(nèi)容鏈接如下: 【C++】做一個(gè)飛機(jī)空戰(zhàn)小游戲(一)——使用getch()函數(shù)獲得鍵盤碼值 【C++】做一個(gè)飛機(jī)空戰(zhàn)小游戲(二)——利用getch()函數(shù)實(shí)現(xiàn)鍵盤控制單個(gè)字符移動(dòng) 【C++】做一個(gè)飛機(jī)空戰(zhàn)小游戲(三)——getch()函數(shù)控制任意造型飛機(jī)圖標(biāo)移動(dòng) 【C++】做一個(gè)飛

    2024年02月12日
    瀏覽(20)
  • Android Studio實(shí)現(xiàn)連連看小游戲,比比看誰過關(guān)最快~

    Android Studio實(shí)現(xiàn)連連看小游戲,比比看誰過關(guān)最快~

    這是一款基于Android studio開發(fā)的連連看小游戲。主要實(shí)現(xiàn)的功能有: 難度設(shè)置 打亂重排 排行榜 計(jì)時(shí)器 背景音樂 消除音效 主要應(yīng)用的技術(shù)如下: Fragment碎片 Service服務(wù) Menu菜單 自定義view Java反射 handler消息機(jī)制 BroadcastReceiver 多線程 SQLiteOpenHelper SharedPreferences Bitmap ViewPager Me

    2023年04月08日
    瀏覽(68)
  • 25s數(shù)學(xué)測試小游戲

    編寫一個(gè)WPF應(yīng)用程序,設(shè)計(jì)一個(gè)有時(shí)間限制(25s)的數(shù)學(xué)測驗(yàn)小游戲。要求玩家必須在規(guī)定的時(shí)間內(nèi)回答4道隨機(jī)出現(xiàn)的加,減,乘,除計(jì)算題。如果玩家在規(guī)定的時(shí)間內(nèi)全部回答正確,彈出對話框顯示“恭喜,過關(guān)成功?!?,否則彈出對話框顯示“過關(guān)失敗,請繼續(xù)努力!”

    2024年02月16日
    瀏覽(19)
  • 【抖音小游戲】 Unity制作抖音小游戲方案 最新完整詳細(xì)教程來襲【持續(xù)更新】
  • Python-乒乓球小游戲【附完整源碼】

    Python-乒乓球小游戲【附完整源碼】

    乒乓球小游戲是一個(gè)簡單而有趣的 2D 頁面交互式游戲,玩家可以通過鍵盤輸入來控制球拍上下移動(dòng)來接球,從而體驗(yàn)乒乓球的樂趣。該游戲有單人和雙人兩種模式 運(yùn)行效果: 一:主程序: 二:配置文件 - cfg.py : 三:文件包 - modules : (1) __init__.py (2) sprites.py (3) u

    2024年02月04日
    瀏覽(26)
  • html實(shí)現(xiàn)經(jīng)典賽車小游戲

    html實(shí)現(xiàn)經(jīng)典賽車小游戲

    作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/130580123 html實(shí)現(xiàn)經(jīng)典賽車小游戲源碼 html實(shí)現(xiàn)經(jīng)典賽車小游戲源碼,1.通過鍵盤的 上左右 鍵,控制汽車行走。2.通過canvas進(jìn)行公路圖形繪制。 實(shí)現(xiàn)功能: 1.進(jìn)入游戲界面,通過控制鍵盤的 上下左右 四個(gè)鍵,讓汽

    2024年02月04日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包