当前位置: 首页 > news >正文

赛车游戏——【极品飞车】(内含源码inscode在线运行)

前言

在这里插入图片描述
「作者主页」:雪碧有白泡泡
「个人网站」:雪碧的个人网站
「推荐专栏」

java一站式服务
前端炫酷代码分享
uniapp-从构建到提升
从0到英雄,vue成神之路
解决算法,一个专栏就够了
架构咱们从0说
★ 数据流通的精妙之道★

请添加图片描述

文章目录

  • 前言
  • 认识一下inscode
  • 先看运行效果
      • 看查源码内容
      • 获取项目
  • 代码的简单分析
      • 主体index.html
    • 游戏逻辑和功能代码:app.js
      • 游戏开始前设置
      • 游戏界面的初始化操作
      • 元素与状态的初始化
  • 小结

认识一下inscode

在这里插入图片描述
CSDN最新推出的Inscode服务是一个在线编程工具,旨在为开发者提供一个便捷的编写、运行和分享代码的环境,让开发者无需在本地搭建编程环境,即可快速编写和运行代码。

Inscode支持多种编程语言,包括Java、Python、C++等,同时也支持编写HTML、CSS和JavaScript代码。它提供了完整的运行环境,让代码在网页上直接运行并输出结果,即时调试,方便快捷。同时,Inscode还提供了分享功能,可以轻松地将代码分享给其他人。

使用Inscode,只需访问其网站https://inscode.csdn.net/
个人主页:why_does_it_work

先看运行效果

在这里插入图片描述
这里可以直接看查源码内容刷新,最后一个是放大跳转网页

看查源码内容

在这里插入图片描述

获取项目

点击链接: 极品飞车
在这里插入图片描述

在这里插入图片描述

代码的简单分析

在这里插入图片描述

主体index.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="HandheldFriendly" content="True">
<meta name="apple-touch-fullscreen" content="yes" />
<meta name="viewport" content="initial-scale=1.0,maximum-scale=1.01, minimal-ui" />
<title>极品飞车</title>
<meta name="keywords" content="HTML5,汽车赛道,飙车游戏" />
<meta name="description" content="HTML5汽车赛道飙车游戏代码下载。H5精品短跑赛车俱乐部游戏,赛车游戏源代码。游戏介绍:鼠标,键盘左右键,控制赛车方向,让我们开始赛车比赛游戏吧。兼容手机移动端(横屏模式效果更好,左右晃动控制方向),带背景音效。" /> 
<meta name="author" content="js代码" />
<meta name="copyright" content="js代码" />
<style>body {margin: 0px;padding: 0px;width: 100%;background-color:black;}	canvas {	-ms-touch-action: none;image-rendering: -o-crisp-edges;           image-rendering: optimize-contrast;        -ms-interpolation-mode: nearest-neighbor;  -webkit-tap-highlight-color: rgba(0,0,0,0);-moz-tap-highlight-color: rgba(0,0,0,0);tap-highlight-color: rgba(0,0,0,0);user-select: none;-webkit-touch-callout: none;-webkit-user-select: none;-moz-user-select: none;-ms-user-select: none;} </style>
<script src="viewporter.js"></script>
</head>
<body>
<div id="viewporter">
<canvas id="canvas" moz-opaque></canvas>
</div>
</body>
<script src="TweenMax.min.js"></script>
<script src="howler.js"></script>
<script src="app.js"></script>
</html>
  1. <!DOCTYPE html>:这是HTML文档的文档类型声明,指定文档遵循的HTML版本。

  2. <html lang="en">:开始HTML标记,lang属性指定了页面使用的语言为英语。

  3. <head>:头部标签,用于包含关于文档的元数据和引用外部资源。

  4. <meta charset="utf-8">:设置字符编码为UTF-8,确保页面可以正确显示非英文字符。

  5. <meta name="apple-mobile-web-app-capable" content="yes" />:用于将网页添加到iOS设备的主屏幕,并使其在全屏模式下运行。

  6. <meta name="HandheldFriendly" content="True">:告诉浏览器此页面适合在手持设备上查看。

  7. <meta name="apple-touch-fullscreen" content="yes" />:指定页面在苹果设备上以全屏模式显示。

  8. <meta name="viewport" content="initial-scale=1.0,maximum-scale=1.01, minimal-ui" />:设置视口的初始缩放级别和最大缩放级别,并启用iOS的Minimal UI模式。

  9. <title>HTML5汽车赛道飙车游戏</title>:设置页面的标题,将显示在浏览器的标题栏或选项卡上。

  10. <meta name="keywords" content="HTML5,汽车赛道,飙车游戏" />:提供与页面相关的关键词,有助于搜索引擎理解页面内容。

  11. <meta name="description" content="HTML5汽车赛道飙车游戏代码下载。H5精品短跑赛车俱乐部游戏,赛车游戏源代码。游戏介绍:鼠标,键盘左右键,控制赛车方向,让我们开始赛车比赛游戏吧。兼容手机移动端(横屏模式效果更好,左右晃动控制方向),带背景音效。" />:提供页面的描述,用于搜索引擎展示结果和页面摘要。

  12. <meta name="author" content="js代码 />

  13. <meta name="copyright" content="js代码(www.jsdaima.com)" />:声明页面的版权信息。

  14. <style>:开始CSS样式块,用于定义页面的样式。

  15. bodycanvas 的样式:设置页面的背景颜色和画布样式。

  16. <script src="viewporter.js"></script>:引入名为 “viewporter.js” 的外部JavaScript文件。

  17. <body>:页面的主体部分。

  18. <div id="viewporter">:一个带有 “viewporter” id 的div元素。

  19. <canvas id="canvas" moz-opaque></canvas>:一个带有 “canvas” id 的canvas元素,用于绘制游戏界面。

  20. </body>:页面主体部分的结束标签。

  21. <script src="TweenMax.min.js"></script>:引入名为 “TweenMax.min.js” 的外部JavaScript文件,该文件可能包含一些动画效果的库或框架。

  22. <script src="howler.js"></script>:引入名为 “howler.js” 的外部JavaScript文件,该文件可能包含用于处理背景音效的库或框架。

  23. <script src="app.js"></script>:引入名为 “app.js” 的外部JavaScript文件,该文件包含实际的游戏逻辑和功能代码。

  24. </html>:HTML标记的结束标签。

游戏逻辑和功能代码:app.js

在这里插入图片描述

游戏开始前设置

function initSplash() {gameState = "splash",resizeCanvas(),1 != audioType || muted || music.play(),initStartScreen()
}
  1. gameState = "splash":这行代码将gameState变量的值设置为字符串"splash",表示游戏状态为“闪屏”(splash)。

  2. resizeCanvas():这个函数调整画布的大小,可能是根据窗口大小或其他参数进行调整。

  3. 1 != audioType || muted || music.play():这行代码检查条件。如果audioType不等于1(可能意味着选择了某种音频类型),或者muted(静音)为假,那么它将执行music.play(),即播放音乐。

  4. initStartScreen():这个函数用来初始化开始界面,可能是创建开始按钮、加载资源等等。

所以,initSplash函数的作用是在游戏开始时设置游戏状态为“闪屏”,调整画布大小,根据条件播放音乐,并初始化开始界面。

游戏界面的初始化操作

function initStartScreen() {gameState = "start",userInput.removeHitArea("moreGames"),1 == audioType && (musicTween && musicTween.kill(), musicTween = TweenLite.to(music, 1, {volume: .2,ease: "Linear.easeNone"})),background = new Elements.Background(assetLib.getData("mainBackground"), canvas.width, canvas.height),userInput.addHitArea("mute", butEventHandler, null, "rect", {aRect: [644, 0, canvas.width, 54]},!0);var a = {oImgData: assetLib.getData("uiButs"),aPos: [620, 340],id: "play"},b = {oImgData: assetLib.getData("uiButs"),aPos: [98, 359],id: "credits"};userInput.addHitArea("showMapScreen", butEventHandler, null, "image", a),userInput.addHitArea("credits", butEventHandler, null, "image", b);var c = new Array(a, b);panel = new Elements.Panel(assetLib.getData("panels"), assetLib.getData("uiElements"), assetLib.getData("position"), assetLib.getData("numbers"), gameState, c, canvas.width, canvas.height),panel.startTween1(),previousTime = (new Date).getTime(),updateStartScreenEvent()
}
function initCreditsScreen() {gameState = "credits";var a = {oImgData: assetLib.getData("uiButs"),aPos: [61, 359],id: "back"};userInput.addHitArea("backFromCredits", butEventHandler, null, "image", a);var b = new Array(a);panel = new Elements.Panel(assetLib.getData("panels"), assetLib.getData("uiElements"), assetLib.getData("position"), assetLib.getData("numbers"), gameState, b, canvas.width, canvas.height),panel.startTween2(),previousTime = (new Date).getTime(),updateCreditsScreenEvent()
}
function initMapScreen() {gameState = "map",background = new Elements.Background(assetLib.getData("mainBackground"), canvas.width, canvas.height);var a = {oImgData: assetLib.getData("uiButs"),aPos: [620, 340],id: "play"},b = {oImgData: assetLib.getData("uiButs"),aPos: [61, 359],id: "back"},c = {oImgData: assetLib.getData("uiButs"),aPos: [165, 359],id: "resetScores"};userInput.addHitArea("startGame", butEventHandler, null, "image", a),userInput.addHitArea("backFromMap", butEventHandler, null, "image", b),userInput.addHitArea("resetScores", butEventHandler, null, "image", c);var d = new Array(a, b, c),e = aMapPointData[8][0],f = aMapPointData[8][1];totalScore = 0,levelTheme = "desert",levelNum = 8;for (var g = 0; g < aMapPointData.length; g++) if (2 == saveDataHandler.aLevelStore[3 * g]) {var h = {oImgData: assetLib.getData("uiElements"),aPos: aMapPointData[g],id: "completedLevel",noFloat: !0};userInput.addHitArea("selectLevel", butEventHandler, {id: g},"image", h),d.push(h),totalScore += saveDataHandler.aLevelStore[3 * g + 2]} else if (1 == saveDataHandler.aLevelStore[3 * g]) {levelTheme = "city",3 > g ? levelTheme = "forest": g > 5 && (levelTheme = "desert");var h = {oImgData: assetLib.getData("uiElements"),aPos: aMapPointData[g],id: levelTheme,noFloat: !0};userInput.addHitArea("selectLevel", butEventHandler, {id: g},"image", h),d.push(h),e = aMapPointData[g][0],f = aMapPointData[g][1],levelNum = g,g > 1 && (firstPlay = !1)}for (var g = 0; g < aPowerUpBarData.length; g++) aPowerUpBarData[g] = saveDataHandler.aLevelStore[27 + g];winnings = saveDataHandler.aLevelStore[31],panel = new Elements.Panel(assetLib.getData("panels"), assetLib.getData("uiElements"), assetLib.getData("position"), assetLib.getData("numbers"), gameState, d, canvas.width, canvas.height),panel.highlight.x = e,panel.highlight.y = f,panel.oScoreData.totalScore = totalScore,panel.startTween1(),previousTime = (new Date).getTime(),updateMapEvent()
}

首先,它初始化了一个变量gameState并将其设置为"start"。然后,它移除了名为"moreGames"的用户输入区域。

接下来,它检查变量audioType是否为1。如果是,它会创建一个TweenLite动画,将音乐的音量渐变到0.2。这里使用了TweenLite库来处理动画效果。

然后,它创建了一个背景对象,并传入一个名为"mainBackground"的数据资源以及画布的宽度和高度。

之后,它添加了一个名为"mute"的用户输入区域,该区域的位置和形状是一个矩形,具体位置是(644,
0),尺寸与画布相同。在用户点击该区域时,会调用butEventHandler函数。

接下来,它创建了两个对象ab,分别包含了一些图像数据和位置信息。这些对象表示游戏界面上的两个按钮,一个是"play"按钮,另一个是"credits"按钮。

然后,它通过调用userInput.addHitArea()方法添加了两个用户输入区域,一个是"showMapScreen",当用户点击a所表示的图像区域时,会调用butEventHandler函数;另一个是"credits",当用户点击b所表示的图像区域时,同样会调用butEventHandler函数。

接下来,它创建了一个数组c,包含了刚才创建的两个按钮对象ab

然后,它创建了一个面板对象,并传入一些数据资源以及游戏状态、按钮数组和画布的宽度和高度。这里使用了Elements.Panel类来创建面板对象。

之后,它调用面板对象的startTween1()方法,开始一个动画效果。

最后,它记录了一个时间戳到变量previousTime中,并调用updateStartScreenEvent()函数来更新开始界面的事件处理。

  1. initCreditsScreen()函数:

    • 将游戏状态设置为"credits"。
    • 创建一个名为a的对象,该对象包含一些图像数据、位置信息和标识符。
    • 使用userInput.addHitArea()方法将点击区域添加到用户输入处理器中,该区域与图像a相关联,并且在触发时调用butEventHandler事件处理程序。
    • 创建一个名为b的数组,并将对象a添加到数组中。
    • 创建一个Panel对象,该对象使用提供的数据初始化,并设置其宽度和高度为画布的宽度和高度。
    • 调用panel.startTween2()方法开始面板的动画效果。
    • 设置previousTime变量为当前时间。
    • 调用updateCreditsScreenEvent()函数更新信用屏幕事件。
  2. initMapScreen()函数:

    • 将游戏状态设置为"map"。
    • 创建一个Background对象,该对象使用提供的背景图像数据和画布的宽度和高度进行初始化。
    • 创建三个对象abc,它们分别包含不同的图像数据、位置信息和标识符。
    • 使用userInput.addHitArea()方法将点击区域添加到用户输入处理器中,每个区域与相应的图像相关联,并在触发时调用butEventHandler事件处理程序。
    • 创建一个名为d的数组,并将对象abc添加到数组中。
    • 根据特定条件设置一些变量,比如ef的值根据aMapPointData数组中的索引进行设置,totalScorelevelThemelevelNum的值根据saveDataHandler.aLevelStore数组中的值进行计算。
    • 循环遍历aMapPointData数组,并根据条件向用户输入处理器中添加点击区域,并将相应的对象添加到数组d中。
    • 根据saveDataHandler.aLevelStore数组中的值设置一些变量。
    • 创建一个Panel对象,该对象使用提供的数据初始化,并设置其宽度和高度为画布的宽度和高度。
    • 设置面板的高亮位置。
    • 设置面板的总得分。
    • 调用panel.startTween1()方法开始面板的动画效果。
    • 设置previousTime变量为当前时间。
    • 调用updateMapEvent()函数更新地图事件。

元素与状态的初始化

function initGame() {gameState = "game",1 == audioType && (musicTween.kill(), musicTween = TweenLite.to(music, 1, {volume: .5,ease: "Linear.easeNone"})),userInput.addHitArea("pause", butEventHandler, null, "rect", {aRect: [587, 0, 635, 54]},!0),userInput.addHitArea("steerLeft", butEventHandler, {multiTouch: !0},"rect", {aRect: [0, 60, canvas.width / 2, canvas.height]},!0),userInput.addHitArea("steerRight", butEventHandler, {multiTouch: !0},"rect", {aRect: [canvas.width / 2, 60, canvas.width, canvas.height]},!0),userInput.addKey("steerRight", butEventHandler, null, 39),userInput.addKey("steerLeft", butEventHandler, null, 37),road = new Elements.Road(assetLib.getData(levelTheme + "Skyline"), assetLib.getData(levelTheme + "Fog"), assetLib.getData(levelTheme + "Road"), assetLib.getData(levelTheme + "Ground"), levelTheme, levelNum, canvas.width, canvas.height, roadCallback),hud = new Elements.Hud(assetLib.getData("hud"), assetLib.getData("uiElements"), assetLib.getData("position"), canvas.width, canvas.height),userCar = new Elements.UserCar(assetLib.getData("userCar"), canvas.width, canvas.height),enemySpeed = 390 + 7.2 * levelNum,raceLength = 4e4 + 1e3 * levelNum,maxSpeed = 475 + 6.75 * aPowerUpBarData[1],accRate = 4 - .32 * aPowerUpBarData[2],turnRate = 1.8 + .375 * aPowerUpBarData[0],nitroLength = 3 + .6 * aPowerUpBarData[3],speed = 200,steerX = 0,rightSteer = 0,leftSteer = 0,curveAmount = 0,hillAmount = 0,tweenScaleTimer = 0,levelScore = 0,raceProgress = 0,leadProgress = raceLength * leadHeadStart,racePos = 19,carReleasedNum = 19,carReleaseDelay = 0,speedDifferencial = 0,overtakenInc = 1,bridgeDistanceTarg = raceLength / 4,startTimer = 0,endSoundPlayed = !1,offRoad = !1,startStage = 0,justSkid = !1,nitroMode = !1,curveTween = TweenMax.to(this, 10, {curveAmount: 0,ease: "Cubic.easeInOut",onComplete: setNewCurve,onCompleteParams: [this]}),hillTween = TweenMax.to(this, 2 * Math.random() + 2, {hillAmount: -.5,ease: "Quad.easeInOut",onComplete: setNewHill,onCompleteParams: [this]}),previousTime = (new Date).getTime(),updateGameEvent()
}
  1. gameState = "game":将游戏状态设置为"game"。

  2. audioType为1时,执行以下操作:

    • musicTween.kill():停止之前正在进行的音乐渐变动画。
    • musicTween = TweenLite.to(music, 1, { volume: .5, ease: "Linear.easeNone" }):创建一个音乐渐变动画,将音乐的音量从当前值渐变为0.5,动画时长为1秒。
  3. userInput.addHitArea("pause", butEventHandler, null, "rect", { aRect: [587, 0, 635, 54] }, !0):添加一个点击区域,用于处理暂停按钮的触发事件。点击区域的位置和大小由矩形的左上角和右下角坐标确定。

  4. userInput.addHitArea("steerLeft", butEventHandler, { multiTouch: !0 }, "rect", { aRect: [0, 60, canvas.width / 2, canvas.height] }, !0):添加一个点击区域,用于处理向左转弯按钮的触发事件。点击区域的位置和大小由矩形的左上角和右下角坐标确定。允许多点触控。

  5. userInput.addHitArea("steerRight", butEventHandler, { multiTouch: !0 }, "rect", { aRect: [canvas.width / 2, 60, canvas.width, canvas.height] }, !0):添加一个点击区域,用于处理向右转弯按钮的触发事件。点击区域的位置和大小由矩形的左上角和右下角坐标确定。允许多点触控。

  6. userInput.addKey("steerRight", butEventHandler, null, 39):将按键"steerRight"与事件处理函数关联,当按下键盘上的右箭头键(键码为39)时触发。

  7. userInput.addKey("steerLeft", butEventHandler, null, 37):将按键"steerLeft"与事件处理函数关联,当按下键盘上的左箭头键(键码为37)时触发。

  8. 创建road对象:使用来自assetLib的道路相关数据创建一个名为roadElements.Road实例。

  9. 创建hud对象:使用来自assetLib的HUD相关数据创建一个名为hudElements.Hud实例。

  10. 创建userCar对象:使用来自assetLib的用户汽车相关数据创建一个名为userCarElements.UserCar实例。

  11. 设置一些游戏参数:

    • enemySpeed:敌方汽车的速度。
    • raceLength:比赛的长度。
    • maxSpeed:最大速度。
    • accRate:加速度。
    • turnRate:转弯速度。
    • nitroLength:氮气持续时间。
    • speedsteerXrightSteerleftSteercurveAmounthillAmounttweenScaleTimer等参数都被初始化为0或默认值。
  12. 初始化游戏状态和计分:

    • levelScore:关卡得分,初始值为0。
    • raceProgress:比赛进度,初始值为0。
    • leadProgress:领先者的进度,根据领先者头部开始的距离计算。
    • racePos:玩家在比赛中的位置,初始值为19。
    • carReleasedNum:已释放的汽车数量,初始值为19。
    • carReleaseDelay:释放汽车的延迟时间,初始值为0。
    • speedDifferencial:速度差异。
    • overtakenInc:超越增量。
    • bridgeDistanceTarg:目标桥梁距离。
    • startTimer:开始计时器,初始值为0。
    • endSoundPlayed:结束音效是否已播放的标志,初始值为false。
    • offRoad:是否偏离道路的标志,初始值为false。
    • startStage:开始阶段,初始值为0。
    • justSkid:是否刚刚打滑的标志,初始值为false。
    • nitroMode:是否处于氮气模式的标志,初始值为false。
  13. 创建曲线和坡度的渐变动画:

    • curveTween:将this对象的curveAmount属性渐变为0,动画时长为10秒,缓动函数为"Cubic.easeInOut"。动画完成后调用setNewCurve函数,并传递this作为参数。
    • hillTween:将this对象的hillAmount属性渐变为-0.5,动画时长为2~4秒之间的随机值,缓动函数为"Quad.easeInOut"。动画完成后调用setNewHill函数,并传递this作为参数。
  14. 设置previousTime为当前时间的毫秒数。

  15. 调用updateGameEvent()函数,开始更新游戏状态。
    在这里插入图片描述

小结

以下是使用HTML实现赛车游戏的简要小结:

  1. 创建HTML结构:使用HTML标记创建游戏画布、分数显示区域、控制按钮等元素。

  2. CSS样式设计:使用CSS样式表为游戏元素设置合适的外观和布局,包括背景颜色、字体样式、按钮样式等。

  3. JavaScript交互逻辑:

    • 处理游戏初始化:在页面加载完成后,通过JavaScript代码初始化游戏状态和参数,设置游戏元素的初始位置和属性。
    • 监听用户输入:使用JavaScript代码监听玩家的按键操作或鼠标点击事件,并根据用户的输入来控制赛车的移动、转向等行为。
    • 游戏循环更新:使用JavaScript的定时器函数(如setIntervalrequestAnimationFrame)来实现游戏的循环更新,包括更新赛车位置、检测碰撞、计算得分等操作。
    • 显示分数和游戏信息:根据游戏状态和数据,使用JavaScript代码实时更新游戏界面上的得分、倒计时或其他相关信息。
  4. 动态效果和动画:使用JavaScript和CSS技术实现一些动态效果和动画,如赛车移动的平滑过渡、爆炸效果、道路随机生成等。

  5. 游戏结束和重置:根据游戏规则或条件,判断游戏是否结束,并展示游戏结束画面或弹窗。提供重置游戏的功能,以便玩家可以重新开始游戏。

  6. 响应式设计:考虑使用响应式布局或媒体查询等技术,使游戏在不同屏幕尺寸和设备上都能有良好的显示效果和操作体验。

在这里插入图片描述

相关文章:

赛车游戏——【极品飞车】(内含源码inscode在线运行)

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 「推荐专栏」&#xff1a; ★java一站式服务 ★ ★前端炫酷代码分享 ★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff0c;vue成神之路★ ★ 解决算法&#xff0c;一个专栏就够了★ ★ 架…...

无人机调试笔记——常见参数

无人机的PID调试以及速度相关参数 1、Multicopter Position Control主要是用来设置无人机的各种速度和位置参数。调试顺序是先调试内环PID&#xff0c;也就是无人机的速度闭环控制&#xff0c;确认没有问题后再进行外环位置控制&#xff0c;也就是定点模式控制。 2、调试的时…...

如何快速实现多人协同编辑?

引言 协同编辑是目前成熟的在线文档编辑软件必备的功能&#xff0c;比如腾讯文档就支持多人协同编辑&#xff0c;基本都是采用监听command&#xff0c;然后同步此command给其他客户端来实现的&#xff0c;例如以下系列&#xff1a; https://gcdn.grapecity.com.cn/showtopic-…...

ThinkPHP 一对多关联

用一对多关联的前提 多的一方的数据库表有一的一方数据库表的外键。 举例&#xff0c;用户获取自己的所有文章 数据表结构如下 // 用户表 useruser_id - integer // 用户主键name - varchar // 用户名称// 文章表 articlearticle_id - integer // 文章主键title - varchar …...

C++基础篇(二)基本数组及示例

目录 一、一维数组1、定义和初始化2、访问和修改3、元素逆置和冒泡排序 二、二维数组&#xff08;用指针进行访问与修改&#xff09;1、定义和初始化2、访问与修改 三、更高维度的数组1、三维数组2、高维数组 一、一维数组 1、定义和初始化 在 C 中&#xff0c;可以使用下面的…...

C++多态练习题

目录 一.习题1&#xff1a; 解决下列测试代码所出现的问题 测试用例1&#xff1a; 测试用例2&#xff1a; 代码改进&#xff1a; 习题1总结&#xff1a; 二.习题2. 求类对象的大小 三.习题3&#xff1a; 代码解析 &#xff1a; 解析图&#xff1a; 四.习题4&#xff…...

ELD透明屏在智能家居中有哪些优点展示?

ELD透明屏是一种新型的显示技术&#xff0c;它能够在不需要背光的情况下显示图像和文字。 ELD透明屏的原理是利用电致发光效应&#xff0c;通过在透明基板上涂覆一层特殊的发光材料&#xff0c;当电流通过时&#xff0c;发光材料会发出光线&#xff0c;从而实现显示效果。 ELD…...

第十三章 利用PCA简化数据

文章目录 第十三章 利用PCA简化数据13.1降维技术13.2PCA13.2.1移动坐标轴 13.2.2在NumPy中实现PCA13.3利用PCA对半导体制造数据降维 第十三章 利用PCA简化数据 PCA&#xff08;Principal Component Analysis&#xff0c;主成分分析&#xff09;是一种常用的降维技术&#xff0…...

开源中文分词Ansj的简单使用

ANSJ是由孙健&#xff08;ansjsun&#xff09;开源的一个中文分词器&#xff0c;为ICTLAS的Java版本&#xff0c;也采用了Bigram HMM分词模型&#xff1a;在Bigram分词的基础上&#xff0c;识别未登录词&#xff0c;以提高分词准确度。 虽然基本分词原理与ICTLAS的一样&#…...

251_多线程_创建一个多线程的图像处理应用,其中每个线程负责对一部分图像进行处理,然后将处理后的结果合并为最终图像

举一个更丰富的例子来说明多线程的用法。 我们将创建一个多线程的图像处理应用,其中每个线程负责对一部分图像进行处理,然后将处理后的结果合并为最终图像。 这个例子可以更好地展示多线程并发处理的优势。 假设有一个函数 processImageSection,它会对图像的一个特定区域进…...

[吐槽Edge浏览器]关于Edge浏览器的闪退问题

这个浏览器嘛&#xff0c;在谷歌浏览器不能页面翻译后&#xff0c;一直是用的高高兴兴的&#xff0c;可突然有一天&#xff0c;Edge浏览器页面加载不出来了。 很慌&#xff0c;大概就是页面崩溃、加载失败什么的都出现过。 修了整整一天&#xff0c;不知道原因在哪&#xff0c;…...

数据包在网络中传输的过程

ref: 【先把这个视频看完了】&#xff1a;数据包的传输过程【网络常识10】_哔哩哔哩_bilibili 常识都看看 》Ref&#xff1a; 1. 这个写的嘎嘎好&#xff0c;解释了为啥4层7层5层&#xff0c;还有数据包封装的问题:数据包在网络中的传输过程详解_数据包传输_张孟浩_jay的博客…...

Acwing.875 快速幂

题目 给定n组ai , bi, pi&#xff0c;对于每组数据&#xff0c;求出akimod pi的值。 输入格式 第一行包含整数n。 接下来n行&#xff0c;每行包含三个整数ai , bi,pi。输出格式 对于每组数据&#xff0c;输出一个结果&#xff0c;表示aibimod pi的值。 每个结果占一行。 数…...

【决策树-鸢尾花分类】

决策树算法简介 决策树是一种基于树状结构的分类与回归算法。它通过对数据集进行递归分割&#xff0c;将样本划分为多个类别或者回归值。决策树算法的核心思想是通过构建树来对数据进行划分&#xff0c;从而实现对未知样本的预测。 决策树的构建过程 决策树的构建过程包括以…...

类与对象(中--构造函数)

类与对象&#xff08;中--构造函数&#xff09; 1、构造函数的特性2、默认构造函数3、编译器自动生成的默认构造函数&#xff08;无参的&#xff09;&#xff08;当我们不写构造函数时&#xff09;3.1 编译器自动生成的默认构造函数只对 自定义类型的成员变量 起作用&#xff0…...

Makefile学习1

文章目录 Makefile学习1Makefile简介Makefile重要性Makefile内容1) 显式规则2) 隐晦规则3) 变量的定义4) 文件指示5) 注释 Makefile规则规则默认目标多目标多规则目标伪目标 Makefile目标依赖头文件依赖自动生成头文件依赖关系 Makefile命令Makefile变量变量定义和使用赋值立即…...

城市内涝监测预警系统,科学“智治”应对灾害

近日&#xff0c;台风“杜苏芮”以摧枯拉朽之势给我国东南沿海地区带来狂风骤雨&#xff0c;福建的三个国家气象观测站日降水量突破历史极值。之后&#xff0c;“杜苏芮”一路北上。中央气象台预报称&#xff0c;7月29日至8月1日&#xff0c;北京、天津、河北、山东西部、河南北…...

切片[::-1]解析列表list表示的“非负整数加1”

列表数位表示非负整数&#xff0c;熟练操作“满十进位”。 (本笔记适合熟练操作Python列表list的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅…...

Mac下certificate verify failed: unable to get local issuer certificate

出现这个问题&#xff0c;可以安装证书 在finder中查找 Install Certificates.command找到后双击&#xff0c;或者使用其他终端打开 安装完即可...

Django项目启动错误

uwsgi项目启动错误信息如下Did you install mysqlclient?Command pkg-config --exists mysqlclient returned non-zero exit status 1Command pkg-config --exists mariadb returned non-zero exit status 1.Traceback (most recent call last):File "/home/dream21th/co…...

Vue2 第十二节 Vue组件化编程 (二)

1. VueComponent 2. 单文件组件 一. VueComponent 组件本质上是一个名为VueComponent的构造函数&#xff0c;不是程序员定义的&#xff0c;是Vue.extend生成的只需要写<school/>或者<school><school/>&#xff0c;Vue解析时&#xff0c;会帮我们创建schoo…...

pycharm 远程连接服务器并且debug, 支持torch.distributed.launch debug

未经允许&#xff0c;本文不得转载&#xff0c;vx&#xff1a;837007389 文章目录 step1&#xff1a;下载专业版本的pycharmstep2 配置自动同步文件夹&#xff0c;即远程的工程文件和本地同步2.1 Tools -> Deployment -> configuration2.2 设置同步文件夹2.3 同步服务器…...

SAP ABAP 基础语法超详细

1&#xff0e;表声明 Tables: 表名[,表名]. 声明多个表时可用逗号分隔当你声明了一个数据表的同时&#xff0c;系统也同时自动生成了一个和数据表同名的结构&#xff0c;结构的变量集等于数据表里面的字段。 2&#xff0e;定义变量 Data: v1[(l)] [type t] [decimals d] [v…...

html学习3(表格table、列表list)

1、html表格由<table>标签来定义。 <thead>用来定义表格的标题部分&#xff0c;其内部用 <th > 元素定义列的标题&#xff0c;可以使其在表格中以粗体显示&#xff0c;与普通单元格区分开来。<tbody>用来定义表格的主体部分&#xff0c;其内部用<t…...

【SpringBoot】85、SpringBoot中Boolean类型数据转0/1返回序列化配置

在 SpringBoot 中,前端传参数 0,1,后端可自动解析为 boolean 类型,但后端返回前端 boolean 类型时,却无法自动转换为 0,1,所以我们需要自定义序列化配置,将 boolean 类型转化为 0,1 1、类型对应 boolean 类型有false,true对应的 int 类型0,12、序列化配置 import com.f…...

hbase优化:客户端、服务端、hdfs

hbase优化 一.读优化 1.客户端&#xff1a; scan。cache 设置是否合理&#xff1a;大scan场景下将scan缓存从100增大到500或者1000&#xff0c;用以减少RPC次数使用批量get进行读取请求离线批量读取请求设置禁用缓存&#xff0c;scan.setBlockCache(false)以指定列族或者列进行…...

docker安装memcached

查找容器是否有该镜像存在 docker search memcached拉取镜像 docker pull memcached创建容器 docker create --name memcache1 memcached或者映射一下端口 docker create -p 11211:11211 --name memcache1 memcached启动 docker start memcache1指定容器的 IP docker net…...

Redis 客户端有哪些?

文章目录 JedisLettuceRedisson最佳实践 - 到底用哪个&#xff1f; Redis 最常见的 Java 客户端有两个&#xff0c;Jedis 和 Lettuce&#xff0c;高级客户端有 Redisson&#xff0c;见下图&#xff08;图源 Clients | Redis&#xff09; Jedis Github地址&#xff1a;redis/j…...

smbms 超市订单管理系统设计与实现计划表

smbms 超市订单管理系统 项目描述 smbms-JDBC&#xff1a;不使用 SSM 框架进行开发bookStore&#xff1a;学完ssm框架后的整合项目smbms-SSM&#xff1a;使用 SSM 框架开发 项目记录 smbms-JDBC 2023-10-28&#xff1a;第一天&#xff0c;搭建环境&#xff0c;写好基本的工…...

如何解决制造业数字化改造的障碍?

制造业的数字化转型可能是一个复杂且具有挑战性的过程&#xff0c;但解决以下障碍有助于为成功实施铺平道路&#xff1a; 抵制变革&#xff1a;数字化转型中最常见的挑战之一是员工的抵制&#xff0c;尤其是那些习惯传统方法的员工。为了克服这一问题&#xff0c;组织需要培养一…...