【javascript】2048小游戏

2023-11-05

目录

什么是2048

游戏状态机

游戏界面绘制

3.1 界面

 3.2 数字的背景颜色

分数逻辑

4.1 加分

4.2 更新最高分 

方向控制逻辑

5.1 数组

5.2 随机数

5.3 初始化 

5.4 判断数组是否全部填满 

5.5 判断方格是否还能移动 

5.6 上下左右的监听事件

5.7 移动

完整代码


什么是2048

2048是一款风靡全球的小游戏,具体的玩法就不多说了,最早于2014年Gabriele Cirulli在github发表的版本。

github链接:

https://github.com/claudiopro/2048-react

不过此项目依赖于GULP。

本文就用javascript写出一个较为完整的2048游戏。

以下是本文实现的游戏界面:

 代码参考于csdn博客:参考博客

2048的实现可以分为3个部分:游戏界面绘制、分数逻辑和方向控制逻辑。

游戏状态机

游戏界面绘制

3.1 界面

<div id="game">
    <span class="container">
        <span class="left">
            <span class="left-topic">2048</span>
            <span class="left-tips">↑上&nbsp;↓下&nbsp;←左&nbsp;→右&nbsp;i重玩</span>
        </span>
        <span class="right">
            <span class="score-box">最高分:<span class="score">0</span></span>
            <span class="score-box">得&emsp;分:<span class="score">0</span></span>
        </span>
    </span>
    
    <div id="box">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
    </div>
</div>

 3.2 数字的背景颜色

//不同的数字添加不同的背景颜色
function bgcolor(){
    for(var i = 0;i <arr.length;i++){
        for(var j = 0;j <arr.length;j++){
        
        switch(arr[i][j].innerHTML){
            case '2': arr[i][j].style.backgroundColor = "#EEE4DA" ;break;
            case '4': arr[i][j].style.backgroundColor = "#EDE0C8" ;break;
            case '8': arr[i][j].style.backgroundColor = "#F2B179" ;break;
            case '16': arr[i][j].style.backgroundColor = "#F59563" ;break;
            case '32': arr[i][j].style.backgroundColor = "#F67C5F" ;break;
            case '64': arr[i][j].style.backgroundColor = "#F65E3B" ;break;
            case '128': arr[i][j].style.backgroundColor = "#EDCF72" ;break;
            case '256': arr[i][j].style.backgroundColor = "#EDCC61" ;break;
            case '512': arr[i][j].style.backgroundColor = "#EDC850" ;break;
            case '1024': arr[i][j].style.backgroundColor = "yellowgreen" ;break;
            case '2048': arr[i][j].style.backgroundColor = "perple" ;
                        init();
                        alert('游戏胜利');
                        break;
            default:  arr[i][j].style.backgroundColor = "#CDC1B4" ;break;     

        }
        }
    }

}

如果出现了2048,就代表游戏胜利。 

分数逻辑

//最高分
var high = 0;
//得分
var score = 0;

设两个变量,high和score。 

4.1 加分

//加分
function addScore(s) {
    score += s;
    document.getElementsByClassName('score')[1].innerHTML = score;
}

在每次上下左右操作中,如果存在可以合并的情况,就加上合并的值。 

4.2 更新最高分 

//更新最高分
if(score>high)
    document.getElementsByClassName('score')[0].innerHTML = high = score;

 在玩家需要重玩的时候,初始化数组,如果得分比最高分要高的话就更新。

方向控制逻辑

5.1 数组

var divs= document.querySelectorAll("#box>div");
var arr = [[],[],[],[]];

游戏的方格其实对应着一个4*4的二维数组,divs对应着数组的html对象,arr对应着div。

5.2 随机数

//随机产生一个数字
function rand(){
    var x=Math.floor(Math.random()*4);
    var y=Math.floor(Math.random()*4);
    if(arr[x][y].innerHTML == ""){
        arr[x][y].innerHTML = Math.random() > 0.5 ? 2 : 4;
    }else{
        rand();
    }
}

 随机生成2和4。

5.3 初始化 

//初始化
function init(){
    for(var i = 0;i <arr.length;i++){
        for(var j = 0;j <arr.length;j++){
            arr[i][j] = divs[num];
            arr[i][j].innerHTML = '';
            num++;
        }
    }
    //初始化遍历元素
    num = 0;
    //更新最高分
    if(score>high)
        document.getElementsByClassName('score')[0].innerHTML = high = score;
    //初始化得分
    document.getElementsByClassName('score')[1].innerHTML = score = 0;
    //游戏开始产生2个随机数
    rand();
    rand();
    bgcolor();
}

5.4 判断数组是否全部填满 

//判断方格是否全部填满
function isFull(){
    var bool=true;
    for(var i = 0;i <arr.length;i++){
        for(var j = 0;j <arr.length;j++){
            if(arr[i][j].innerHTML == "" ){
            bool = false;
            }
        }
    }
    if(bool){
    isChange();
    }else{
        rand();
    }
}

设一个布尔值,如果遇到了空就代表游戏可以继续。

5.5 判断方格是否还能移动 

//判断方格是否还能移动
function  isChange(){
    var bool = true;
    for(var i = 0;i < arr.length-1 ;i++){
        for(var j = 0;j< arr.length-1;j++){
            if(arr[i][j].innerHTML == arr[i][j+1].innerHTML || arr[i][j].innerHTML == arr[i+1][j].innerHTML || arr[i+1][j].innerHTML == arr[i+1][j+1].innerHTML || arr[i][j+1].innerHTML == arr[i+1][j+1].innerHTML  ){
                bool = false;
            }
        }
    }
    if(bool){
        alert("游戏结束!");
        init();
    }
}

如果数组中某行某列有相同的就代表可以继续移动。 

5.6 上下左右的监听事件

//上下左右的监听事件
window.onkeydown = function(e){

    switch(e.keyCode){
        case 37 :  isFull(); left();bgcolor();     break;//左
        case 38 :  isFull(); up();bgcolor();     break;//上
        case 39 :  isFull(); right();bgcolor();     break;//右
        case 40 :  isFull(); down(); bgcolor();     break;//下
        case 73 :  init(); break;//初始化
    } 

}

每执行一个事件,需要判断数组是不是满的,如果未满就一定可以继续游戏,如果满了,则需要判断数组中的元素是否还能继续移动。

5.7 移动

上下左右移动的逻辑都是一样的,这里以右移为例。

//右             
function right(){
    for(var i = 0;i <4;i++){
        for(var j = 0;j <4;j++){
            if( j<3&&arr[i][j].innerHTML !=""&& arr[i][j+1].innerHTML==""){
                arr[i][j+1].innerHTML = arr[i][j].innerHTML;
                arr[i][j].innerHTML="";
                right();
            }else if(j<3&&arr[i][j].innerHTML !=""&& arr[i][j].innerHTML == arr[i][j+1].innerHTML){
                arr[i][j+1].innerHTML *=2;
                addScore(arr[i][j+1].innerHTML*1)
                arr[i][j].innerHTML ="";
            } 
        
        }
    }
}

对于数组,有的可能没有数据,如果有数据则找出下一个相同的数据进行合并。

完整代码

演示

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
</head>
<style>
    .container{
        display: flex;
    }
    .left{
        width: 250px;
        font-size: 10px;
        display: flex;
        flex-direction: column;
    }
    .left-tips{
        position: relative;
        top: 10px;
        font-weight: bold;
        color:beige;
    }
    .left-topic{
        font-weight: bold;
        color:rgba(172, 130, 75, 0.911);
        font-size: 40px;
    }
    .right{
        display: flex;
        flex-direction: column;
        position: relative;
        left: 45px;
        color:blanchedalmond;
    }
    .score-box{
        width: 200px;
        height: 30px;
        border: 1px solid transparent;
        border-radius: 5px;
        margin-top: 5px;
        margin-bottom: 5px;
        font-weight: bold;
        font-size: 25px;
    }
    .score{
        font-weight: bold;
        font-size: 25px;
    }
    #game{
        width: 500px;
        height: 530px;
        background-color: #BBADA0;
        display: flex;
        justify-content: space-evenly;
        flex-wrap: wrap;
        border-radius: 0.5em;
        margin: 100px auto;
    }
    #box{
        display: flex;
        justify-content: space-evenly;
        flex-wrap: wrap;
        border-radius: 0.5em;
    }
    #box div{
        width: 100px;
        height: 100px;
        border: 1px solid transparent;
        background-color: #CDC1B4;
        font-size: 50px;
        text-align: center;
        line-height: 100px;
        font-weight: bold;
        border-radius: 10px;
        margin-top: 10px;
        color:rgba(172, 141, 101, 0.911);
    }
</style>
<body>
<div id="game">
    <span class="container">
        <span class="left">
            <span class="left-topic">2048</span>
            <span class="left-tips">↑上&nbsp;↓下&nbsp;←左&nbsp;→右&nbsp;i重玩</span>
        </span>
        <span class="right">
            <span class="score-box">最高分:<span class="score">0</span></span>
            <span class="score-box">得&emsp;分:<span class="score">0</span></span>
        </span>
    </span>
    
    <div id="box">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
    </div>
</div>
    <script >
        //最高分
        var high = 0;
        //得分
        var score = 0;
        var divs= document.querySelectorAll("#box>div");
        var arr = [[],[],[],[]];
        var num=0;

        /*
        主逻辑
        */

        //初始化
        init();
        //上下左右的监听事件
        window.onkeydown = function(e){

            switch(e.keyCode){
                case 37 :  isFull(); left();bgcolor();     break;//左
                case 38 :  isFull(); up();bgcolor();     break;//上
                case 39 :  isFull(); right();bgcolor();     break;//右
                case 40 :  isFull(); down(); bgcolor();     break;//下
                case 73 :  init(); break;//初始化
            } 

        }


//随机产生一个数字
function rand(){
    var x=Math.floor(Math.random()*4);
    var y=Math.floor(Math.random()*4);
    if(arr[x][y].innerHTML == ""){
        arr[x][y].innerHTML = Math.random() > 0.5 ? 2 : 4;
    }else{
        rand();
    }
}

        //初始化
        function init(){
            for(var i = 0;i <arr.length;i++){
                for(var j = 0;j <arr.length;j++){
                    arr[i][j] = divs[num];
                    arr[i][j].innerHTML = '';
                    num++;
                }
            }
            //初始化遍历元素
            num = 0;
            //更新最高分
            if(score>high)
                document.getElementsByClassName('score')[0].innerHTML = high = score;
            //初始化得分
            document.getElementsByClassName('score')[1].innerHTML = score = 0;
            //游戏开始产生2个随机数
            rand();
            rand();
            bgcolor();
        }

        //加分
        function addScore(s) {
            score += s;
            document.getElementsByClassName('score')[1].innerHTML = score;
        }

        //判断方格是否全部填满
        function isFull(){
            var bool=true;
            for(var i = 0;i <arr.length;i++){
                for(var j = 0;j <arr.length;j++){
                    if(arr[i][j].innerHTML == "" ){
                    bool = false;
                    }
                }
            }
            if(bool){
            isChange();
            }else{
                rand();
            }
        }

        //判断方格是否还能移动
        function  isChange(){
            var bool = true;
            for(var i = 0;i < arr.length-1 ;i++){
                for(var j = 0;j< arr.length-1;j++){
                    if(arr[i][j].innerHTML == arr[i][j+1].innerHTML || arr[i][j].innerHTML == arr[i+1][j].innerHTML || arr[i+1][j].innerHTML == arr[i+1][j+1].innerHTML || arr[i][j+1].innerHTML == arr[i+1][j+1].innerHTML  ){
                        bool = false;
                    }
                }
            }
            if(bool){
                alert("游戏结束!");
                init();
            }
        }

        //不同的数字添加不同的背景颜色
        function bgcolor(){
            for(var i = 0;i <arr.length;i++){
                for(var j = 0;j <arr.length;j++){
                
                switch(arr[i][j].innerHTML){
                    case '2': arr[i][j].style.backgroundColor = "#EEE4DA" ;break;
                    case '4': arr[i][j].style.backgroundColor = "#EDE0C8" ;break;
                    case '8': arr[i][j].style.backgroundColor = "#F2B179" ;break;
                    case '16': arr[i][j].style.backgroundColor = "#F59563" ;break;
                    case '32': arr[i][j].style.backgroundColor = "#F67C5F" ;break;
                    case '64': arr[i][j].style.backgroundColor = "#F65E3B" ;break;
                    case '128': arr[i][j].style.backgroundColor = "#EDCF72" ;break;
                    case '256': arr[i][j].style.backgroundColor = "#EDCC61" ;break;
                    case '512': arr[i][j].style.backgroundColor = "#EDC850" ;break;
                    case '1024': arr[i][j].style.backgroundColor = "yellowgreen" ;break;
                    case '2048': arr[i][j].style.backgroundColor = "perple" ;
                                init();
                                alert('游戏胜利');
                                break;
                    default:  arr[i][j].style.backgroundColor = "#CDC1B4" ;break;     

                }
                }
            }

        }

        //上下左右按下执行的函数 
        //右             
        function right(){
            for(var i = 0;i <4;i++){
                for(var j = 0;j <4;j++){
                    if( j<3&&arr[i][j].innerHTML !=""&& arr[i][j+1].innerHTML==""){
                        arr[i][j+1].innerHTML = arr[i][j].innerHTML;
                        arr[i][j].innerHTML="";
                        right();
                    }else if(j<3&&arr[i][j].innerHTML !=""&& arr[i][j].innerHTML == arr[i][j+1].innerHTML){
                        arr[i][j+1].innerHTML *=2;
                        addScore(arr[i][j+1].innerHTML*1)
                        arr[i][j].innerHTML ="";
                    } 
                
                }
            }
        }

        //左
        function left(){
            for(var i = 0;i <4;i++){
                for(var j = 0;j <4;j++){
                    if( j>0&&arr[i][j].innerHTML !=""&& arr[i][j-1].innerHTML==""){
                        arr[i][j-1].innerHTML = arr[i][j].innerHTML;
                        arr[i][j].innerHTML="";
                        left();
                    }else if(j>0&&arr[i][j].innerHTML !=""&& arr[i][j].innerHTML == arr[i][j-1].innerHTML){
                        arr[i][j-1].innerHTML *=2;
                        addScore(arr[i][j-1].innerHTML*1)
                        arr[i][j].innerHTML ="";
                    } 
                
                }
            }
        }

        //下
        function down(){
            for(var i = 0;i <4;i++){
                for(var j = 0;j <4;j++){
                    if( i<3&&arr[i][j].innerHTML !=""&& arr[i+1][j].innerHTML==""){
                        arr[i+1][j].innerHTML = arr[i][j].innerHTML;
                        arr[i][j].innerHTML="";
                        down();
                    }else if(i<3&&arr[i][j].innerHTML !=""&& arr[i][j].innerHTML == arr[i+1][j].innerHTML){
                        arr[i+1][j].innerHTML *=2;
                        addScore(arr[i+1][j].innerHTML*1)
                        arr[i][j].innerHTML ="";
                    } 
                
                }
            }
        }

        //上
        function up(){
            for(var i = 0;i <4;i++){
                for(var j = 0;j <4;j++){
                    if( i>0&&arr[i][j].innerHTML !=""&& arr[i-1][j].innerHTML==""){
                        arr[i-1][j].innerHTML = arr[i][j].innerHTML;
                        arr[i][j].innerHTML="";
                        up();
                    }else if(i>0&&arr[i][j].innerHTML !=""&& arr[i][j].innerHTML == arr[i-1][j].innerHTML){
                        arr[i-1][j].innerHTML *=2;
                        addScore(arr[i-1][j].innerHTML*1)
                        arr[i][j].innerHTML ="";
                    } 
                
                }
            }
        }

    </script>
</body>
</html>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【javascript】2048小游戏 的相关文章

  • 嵌套 .ajax() 调用的 JavaScript/jQuery 变量作用域问题

    我很难传递变量postData这是一个嵌套子级的序列化 jQuery 数组对象 ajax call postData成功传递给第一个 ajax 打电话 但是当我尝试在第二次使用它时 ajax 调用时 它不会发布任何表单元素 因为变量在该级别
  • Web Worker 中的 RequireJS

    我正在尝试在网络工作者中使用 RequireJS 问题是我在使用它时不断收到以下错误 Uncaught Error importScripts failed for underscore at lib underscore js 我已经测试
  • 如何提取 Backbone 集合的属性

    我想从 Backbone 集合创建一个特定属性值的数组 var days select this collection models function model return model attributes type session d
  • Mat select - 获取selectionChange的旧值

    我有一个项目 其中有一个包含以下内容的表单mat select选择器 每当用户更改输入时 我都会向用户显示一个对话框来确认此操作 现在 The selectionChange 通知值何时更改并将新值传递为 event 当用户取消对话框时 有
  • 裁剪响应式全宽图像

    我必须剪辑跨越整个宽度的图像 以下事情对我不起作用 剪辑 这需要绝对位置 因此块元素不会堆叠在下面 背景位置 缩放时无法正确剪辑 放大时剪辑的部分会增加 反之亦然 包装器 包装器高度取决于浏览器宽度 因此其值应该是动态的 我使用了 seti
  • 考虑使用“jsdom”测试环境

    我有这个简单的测试 import React from react import render from testing library react import Button from describe Button gt it rend
  • 最小有效 JSON 是多少?

    我仔细阅读了 JSON 描述http json org http json org 但我不确定我是否知道这个简单问题的答案 最小可能的有效 JSON 字符串是什么 string 该字符串是有效的 JSON 吗 42简单的数字是有效的 JSO
  • 是否有正确的方法将自定义 Javascript 添加到 ASP.NET MVC 5 页面?

    目前 我已将 jQuery 源文件添加到 ASP NET 项目的 Scripts 文件夹中 在 Layout cshtml 页面中 我包含了 Scripts jquery 2 1 1 min js 现在 我可以在我制作的每个页面上包含 jQ
  • 热成像调色板

    自热成像早期以来 红外热像仪经常使用独特的调色板 从黑色到蓝色 品红色 橙色 黄色到亮白色 这个调色板通常被称为Iron or Ironbow 这是使用前视红外相机拍摄的图像的典型假彩色可视化 来源 维基百科 术语科特 http commo
  • 如何从 github 安装需要构建步骤的 npm 包,例如什么时候分叉一个库?

    假设您使用类似的库vue3 datepicker https www npmjs com package vue3 datepicker 您意识到您需要自定义某些内容 并且作为第一步 您想要使用它的自定义分支 问题是 当包被推送到 npm
  • 在 vuejs 上将 \n 替换为新行

    我正在尝试将 n 字符替换为来自端点的数据的新行 I tried p item licensedocument legal documentText replace r n r n g br p 并没有奏效 当我将replace 写入问题末
  • 如何使用 file:///F:/foldername 访问 ajax 中的本地文件夹?但它适用于 http://

    在这里 我使用以下代码使用 AJAX jQuery 动态创建文件名列表 window load function var fileExt csv document ready function ajax url file F foldern
  • Nightmare.js 截图缓冲区长度 0

    我正在运行一个 night js 脚本 我试图在其中截取页面上多个元素的屏幕截图 The first元素被捕获得很好 但折叠下方的所有其他元素都以零长度捕获 我正在努力调试这个问题 任何帮助将非常感激 基本上这个脚本会遍历一个页面并选择al
  • 使用 JSONP 时出现“无效标签”?

    我的 JSONP 请求有问题 数据不会显示 Firebug 显示 无效标签 错误 我的 JavaScript ajax url link dataType jsonp beforeSend function xhr var base64 b
  • Vue: vue-i18n: 无法翻译 keypath 的值,使用 keypath 的值作为默认值

    我正在使用 Vue 我想展示三种语言 英语 他加禄语和宿务语 现在我有错误 无法转换键路径 NavbarMobile home 的值 使用 keypath 的值作为默认值 我通过 console log this i18n locale 检
  • 如何使用 jQuery 显示“忙”指示器?

    如何在网页中的特定点显示旋转的 忙 指示器 我想在 Ajax 请求开始 完成时启动 停止指示器 这真的只是显示 隐藏 gif 动画的问题 还是有更优雅的解决方案 您可以只显示 隐藏 gif 但您也可以将其嵌入到 ajaxSetup 中 以便
  • Meteor:即使设置了 ANDROID_HOME 也未设置

    操作系统 Ubuntu 14 04 框架 流星1 1 0 2 应用名称 Songofy 这是输出meteor install sdk android meteor install sdk android Found Android bund
  • 将 ngModel 绑定到自定义指令

    所以我已经在这个问题上工作了一个星期了 但我似乎无法理解整个指令的事情 我读了很多帖子 揭秘指令 http www toptal com angular js angular js demystifying directives 指令 ht
  • 带数字键的 Immutable.js 映射(包括性能测试)

    我在 React Native 应用程序中将 Immutable js 与 Redux 结合使用 元数据 例如查找表 是从服务器获取的 并作为 Immutable Map 保存在应用程序本地 查找值的键是整数 数据库中的主键 当我获取数据时
  • iOS 上 Safari 中的 shift 键

    有没有办法在javascript中判断手机键盘上是否按下了shift键 并将其与大写锁定 按两次shift键 区分开来 一些事实 首先 让我们看一下有关 iOS 键盘的一些事实 我假设您已经知道了 当您进入键盘模式时 shift键始终处于激

随机推荐

  • score在java中是什么意思_Score.java

    import java io File import java io FileInputStream import java util Properties import java util Scanner import org jsoup
  • windows编程--网络编程学习--winsock编程(2)

    Winsock是windows系统下利用Socket套接字进行网络编程的相关函数 是Windows下的网络编程接口 Winsock在常见的Windows平台上有两个主要的版本 即Winsock1和Winsock2 编写与Winsock1兼容
  • vue3使用Element-plus与TS(TypeScript)

    如果你有一个困扰就是为什么直接CV Element plus文档里的代码总是报各种错误 那你看这篇就对啦 针对Vue3哦 1 项目导入vscode后 安装Element plus npm install element plus save
  • Unreal Engine(虚幻引擎)渲染 – 正确使用方法

    我们已经讨论过 Unreal Engine 虚幻引擎 中可用的很多神奇工具 包括最近抢先体验的 Unreal Engine 5 多亏了 Epic 世界各地的开发人员和团队都可以轻松进行游戏开发 Epic 对电影和游戏界的最大贡献可能就是 U
  • 解决 iframe跨域、跨端口报错 Blocked a frame with origin from accessing a cross-origin frame

    前言 在不同的端口号 甚至是不同的ip进行iframe嵌套的时候 在父页面调用子页面的方法的时候 报错 SecurityError Blocked a frame with origin from accessing a cross ori
  • 深度学习环境配置 Ubuntu 18.04 + Anaconda + CUDA + Cudnn + Pytorch 【亲测可用】

    这套环境实在是太复杂坑太多 配了大半年 今天终于终于成功了 显卡驱动 直接用软件和更新安装470版本显卡驱动 出错几率最小 查看安装状态 nvidia smi 会出现显卡版本和CUDA支持 CUDA 首先感谢二位前辈的原贴 https bl
  • qt小笔记

    自己备忘的常见的qt小知识点 知识点 文件判断是否存在 可读 可写 可编辑 QString转成char 接上面 c str和 data 区别 1 拼接 2 格式化 3 数字转字符串 文版框输出数字转字符串函数QString number a
  • VGA系列之一:VGA显示器驱动篇

    在这周里边 学习的内容包括两个主要的部分 UART通信和VGA显示器 串口通信是这周的前半周讲的 下半周讲的是VGA 在我们的这篇文章中 先来讲下VGA 当然在VGA实验中 我们暂时只做了5个小实验 1 显示器显示3栏颜色 2 在第一个的基
  • iOS-加密算法

    一 散列算法 签名算法 摘要 散列算法 又称哈希函数 是一种单向加密算法 在信息安全技术中 经常需要验证消息的完整性 散列 Hash 函数提供了这一服务 它对不同长度的输入消息 产生固定长度的输出 因为其结果是不可逆的 既然是不可逆的 那么
  • 使用VC向word中插入图片

    发表于 2008 11 23 14 13 2913楼 得分 0 C C code pragma warning disable 4786 import C Program Files Common Files Microsoft Share
  • 通知 服务器维护,服务器维护通知

    服务器维护通知 内容精选 换一换 本章节介绍如何创建告警规则 用户可自定义监控目标与通知策略 及时了解云手机服务器 云手机 磁盘以及GPU卡的状况 从而起到预警作用 登录管理控制台 在管理控制台左上角 选择待创建告警规则的区域 在服务列表页
  • 【转载】解读USB-IF电池充电规范

    最近学电源管理驱动这一步分 对于电池充电规范不太理解 转载下来自己看 http www eechina com thread 4943 1 1 html 电池充电规范 原有USB2 0规范并没有考虑到使用USB接口为便携式设备的电池进行充电
  • 最基本的根据文本信息生成二维码的源代码

    public class TwoDimensionCode 生成二维码 QRCode 图片 param content 存储内容 param imgPath 图片路径 public void encoderQRCode String con
  • 多元高斯分布(二)——更多关于多元高斯分布

    注意 本文内容来自于吴恩达老师cs229课堂笔记的中文翻译项目 https github com Kivy CN Stanford CS 229 CN 中部分的内容进行翻译学习 更多关于多元高斯分布 介绍 到目前为止的课堂上 多元高斯分布已
  • JAVAFX_Effect效果介绍

    JAVAFX Effect介绍 学习记录 慢慢完善 Bloom 发光效果 InnerShadow 内阴影 Lighting 光照 BoxBlur 方框模糊 DisplacementMap 位移置换 DropShadow 阴影 Perspec
  • 一个动态添加panel 和 删除panel的例子

    unit Unit1 interface uses Windows Messages SysUtils Variants Classes Graphics Controls Forms Dialogs StdCtrls ExtCtrls t
  • python中.item()的讲解

    在pytorch训练时 一般用到 item 比如loss item 我们可以做个简单测试代码看看它的区别 import torch x torch randn 2 2 print x print x 1 1 print x 1 1 item
  • python倒序遍历字符串

    Hello大家好 今天我想和大家分享一个小tips 就是快速倒序遍历字符串 比如现在有一个小需求 是让我们找到一个长字符串里面的最后一个单词 并且返回这个单词的长度 每个单词用空格隔开 那么我们会如何去做这道题呢 我觉得使用倒序遍历 当如果
  • VS2017学习C++问题二(没有与这些操作数匹配的 “<<“ 运算符)

    添加要在此处预编译的标头 ifndef GZDEMO H define GZDEMO H pragma once include
  • 【javascript】2048小游戏

    目录 什么是2048 游戏状态机 游戏界面绘制 3 1 界面 3 2 数字的背景颜色 分数逻辑 4 1 加分 4 2 更新最高分 方向控制逻辑 5 1 数组 5 2 随机数 5 3 初始化 5 4 判断数组是否全部填满 5 5 判断方格是否