千家信息网

基于JS怎么编写看字说颜色小游戏

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容介绍了"基于JS怎么编写看字说颜色小游戏"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、游
千家信息网最后更新 2026年10月31日基于JS怎么编写看字说颜色小游戏

本篇内容介绍了"基于JS怎么编写看字说颜色小游戏"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

    一、游戏介绍与规则

    游戏名称:《看字说颜色》

    游戏模式:① 看图模式 ② 答题模式

    游戏规则:① 看图模式,根据窗体生成的字与字体颜色,说出对应的字体颜色。(字是干扰项) ② 答题模式,根据题目要求;选出正确答案。

    干扰等级:入门(5种颜色)、初级(8种颜色)、中级(10种颜色)、高级(12种颜色)

    二、大体设计与代码讲解

    ① 看图模式

    具体思路

    首先,定义颜色对应的字、和对应颜色的十六进制(这里是有12种颜色)

    封装一个方法获取一个字(颜色)与一个不对应颜色的十六进制(如:蓝(#000000),就是显示蓝字,字体颜色是黑色)

    设置对应等级,生成生成"二维表格"(入门:5种颜色,5x5;初级:8种颜色,8x8;中级:10种颜色,10x10;高级:12种颜色,12x12.)

    开搞!

    核心代码

    定义设置颜色(12种颜色)

    // 定义设置颜色(12种颜色) let colorNameList = ['红', '绿', '蓝', '黄', '黑', '白', '灰', '紫', '粉', '青', '橙', '棕'];// 对应颜色的十六进制let colorHexList = ['#FF0000', '#00FF00', '#0000FF', '#FFFF00', '#000000', '#FFFFFF','#999999', '#9933FF', '#ff00cc', '#65ffcd', '#ffa500', '#D2691E'];// 颜色对应的map形式let colorMap = {    '红': '#FF0000','绿': '#00FF00','蓝': '#0000FF','黄': '#FFFF00',    '黑': '#000000','白': '#FFFFFF','灰': '#999999','紫': '#9933FF',    '粉': '#ff00cc','青': '#65ffcd','橙': '#ffa500','棕': '#D2691E'}

    封装获取一个字和不对应字体颜色的方法

    / 获取一个颜色对象function getRandomColor(size) {    // size是传入的等级所用的参数    // console.log(size)    var numHex = Math.floor(Math.random() * size);    var numName = Math.floor(Math.random() * size);    if (numHex == numName) { // 避免"字"和"字"的颜色相同        if (numHex > 1 && numHex < size) {            numHex -= 2;        } else {            numHex += 2;        }    };    var color = {        colorHex: colorHexList[numHex],        colorName: colorNameList[numName],        numHex: numHex,        numName: numName    }    return color; // 可均衡获取 0 到 9 的随机整数.}

    获取"二维表格"(画"图")

    // 获取二维坐标系(画"图")function getTwoArray(size) {    // console.log(e);    var textList = new Array();    for (var i = 0; i < size; i++) {        textList[i] = new Array();    }    // console.log(textList)    var textStr = "";    for (var i = 0; i < size; i++) {        if (i % 2 == 0) {            textStr += "
    "; } else { textStr += "
    "; } for (var j = 0; j < size; j++) { var theColor = getRandomColor(size); textList[i][j] = theColor; textStr += "" + theColor.colorName + ""; } textStr += "
    "; } return textStr; // 可均衡获取 0 到 9 的随机整数.}

    图片模式操作

    // 显示图片模式function bindImg() {    var traget = document.getElementById("show-img-div");    var btnList = document.getElementsByClassName("nfz-btn");    if (traget.style.display == "none") {        traget.style.display = "block";        that.bindBtn(btnList);    } else {        traget.style.display = "none";        that.bindBtn(btnList);    }}// 图片模式显示对应的function showImg(e) {    var size = e.getAttribute("data-value");    size = parseInt(size);    that.bindImg();    const colorList = getTwoArray(size);    // console.log(colorList);    var imgBody = document.getElementById("imgBody");    imgBody[xss_clean] = colorList;}

    禁止其他按钮

    // 禁止按钮function bindBtn(btnList) {    for (var btn of btnList) {        btn.disabled = !btn.disabled;    }}

    ② 答题模式

    具体思路

    首先,需要在图片模式的基础下(除了图片模式操作的方法)。同样的,需要有定义颜色对应的字、和对应颜色的十六进制(这里是有12种颜色)

    封装一个方法获取一个字(颜色)与一个不对应颜色的十六进制(如:蓝(#000000),就是显示蓝字,字体颜色是黑色)

    还需要定义颜色下标、选项等等一些相关操作(具体可以看代码注释)

    封装获取题的方法、点击选项方法、下一道题、显示分数、重置游戏...

    开搞!

    核心代码

    相关需要定义的参数

    // 这里还有前面定义的颜色,就不重复写入这里了(可参考完整代码)// 颜色下标(方便记录,去掉相同颜色,避免出现相同颜色)var numberList = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];// console.log(colorMap);var optList = ["A", "B", "C", "D"];// 选项var msg = ""; // 提示语var isNext = true; // 是否下一题var optRightNum = 0; // 正确答案下标let questionNumber = 10; // 默认题目数量 10(下标从0开始)let theQuerstionNumber = 0; // 题目数let theResultNum = 0; // 分数var theRightNum = 0; // 正确选项

    显示答题模式

    // 显示答题function showQuestion(e) {    that.bindQuestion();    if (e && e.getAttribute("data-value")) {        questionNumber = e.getAttribute("data-value");    }    var questionNum = document.getElementById("questionNum");    questionNum[xss_clean] = questionNumber;    that.getQuestion();}

    来一道题

    // 来一道题function getQuestion() {    optRightNum = Math.floor(Math.random() * 4); // 正确答案下标(获取随机数0~3)    var size = questionNumber;    size = parseInt(size);    var theColor = getRandomColor(size);    // console.log(theColor);    // for(var i =0;i" + theColor.colorName + "
    "; // console.log(titleStr); // } var themDiv = document.getElementById("opt-them"); var titleDiv = document.getElementById("opt-title"); titleDiv[xss_clean] = titleStr; var newNumList = [].concat(numberList); newNumList.splice(theRightNum, 1); // 删除正确答案的下标(防止出现相同答案) // console.log("numberList",numberList); // console.log("newNumList",newNumList); // console.log(newNumList.length); var optStr = "
    "; for (var i = 0; i < 4; i++) { optStr += "
    " + optList[i] + ". "; var colorNum = Math.floor(Math.random() * newNumList.length); if (i == optRightNum) { optStr += colorNameList[theRightNum]; optStr += "
    "; continue; } optStr += colorNameList[newNumList[colorNum]]; newNumList.splice(colorNum, 1); // 删除已出现过的选项的下标(防止出现相同选项) optStr += "
    "; } optStr += "
    "; // console.log(optStr); // console.log("正确答案:"+(optRightNum+1)); themDiv[xss_clean] = optStr;}

    点击选择选项答案

    // 点击选项方法(事件)function onclickOpt(e) {    if (!isNext) { // 当前状态不能进行下一题        return;    }    var result = document.getElementById("result");    var theOpt = "";    if (e && e.getAttribute("data-value")) {        theOpt = e.getAttribute("data-value");    } else {        return;    }    isNext = false;    if (optRightNum == theOpt) {        theResultNum++;        result[xss_clean] = theResultNum;        // console.log("选择正确!");        msg = "选择正确!";    } else {        // console.log("选择错误!");        msg = "选择错误!";    }    if (theQuerstionNumber == questionNumber) {        msg = "游戏结束!一共:" + questionNumber + "题;
    您的最终得分是:" + theResultNum; that.bindShowResult(msg); return; } that.bindShowResult(msg);}

    显示分数、重置游戏

    // 显示分数function bindShowResult(msg) {    var showMsg = document.getElementById("show-msg");    if (showMsg.style.display == "none") {        showMsg.children[0][xss_clean] = msg;        showMsg.style.display = "block";    } else {        showMsg.style.display = "none";    }}// 重置游戏function reset() {    theQuerstionNumber = 1;    isNext = true;    theResultNum = 0;    result[xss_clean] = theResultNum;    that.getQuestion();}

    "基于JS怎么编写看字说颜色小游戏"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

    颜色 模式 下标 方法 答案 选择 相同 代码 十六进制 图片 字体 分数 题目 封装 一道 等级 二维 生成 小游戏 高级 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网和科技技术 互联网金融监管科技数据 北京互联网科技 朗涯互联网科技 四个字互联网科技公司取名 蓝色互联网科技 江苏南京365互联网科技 互联网科技中介 中国互联网有什么科技含量 央行互联网金融科技公司 欧洲十大科技互联网公司 互联网系的金融科技公司 中化能源互联网科技招聘 荆州市昕露互联网络科技有限公司 深圳市优智互联网科技有限公司 想开互联网科技公司怎么样 互联网科技的全部知识 世界互联网领先科技成果获奖 科技互联网专业工作会议发言稿 保山浩联互联网科技有限公司 互联网与科技 天津市摩尔互联网科技 新华互联网科技 广州大一互联网络科技有限公司 北京互联网科技 欧洲十大科技互联网公司 宁夏众和广鑫互联网科技有限公司 成都铂石互联网科技做什么的 互联网科技机房 河南商务圈互联网科技有限公司
    0