原生js实现选字游戏

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        #wrap {
            width: 400px;
            margin: 30px auto;
            font-size: 18px;
            box-shadow: 5px 5px 20px rgb(231, 188, 130);
            border-radius: 8px;
        }
        #header p:first-child{
            float: left;
            margin-left: 20px;
        }
        #header p:last-child{
            float: right;
            margin-right: 20px;
        }

        #main {
            clear: both;
            font-size: 150px;
            text-align: center;
            margin: 120px auto;
        }
        #wrap>p {
            text-indent: 2em;
            line-height: 35px;
            margin: 5px;
        }
        .choose{
            display: flex;
            justify-content: space-around;
        }
        .choose p {
            font-size: 30px;
            cursor: pointer;
        }
        </style>
</head>
<body>
    <div id="wrap">
        <div id="header">
            <p>倒计时:<span id="time">10</span>s</p>
            <p>得分:<span id="mark">0</span>分</p>
        </div>
        <div id="main"></div>
        <p>根据上面字体的颜色从下面选择正确的字,选择正确游戏自动开始.</p>
        <div id="choose" class="choose">
            <p>蓝</p>
            <p>黄</p>
            <p>绿</p>
            <p>粉</p>
            <p>红</p>
        </div>
    </div>

    <script>
    var time = document.getElementById("time");
    var mark = document.getElementById("mark");
    var main = document.getElementById("main");
    var smallFont = document.querySelector(‘#choose‘);
    var choose = document.querySelectorAll(‘#choose p‘);
    // console.log(choose);

    // 文字的数组
    var fontArr = ["红","橙","黄","绿","蓝"];
    // 文字颜色的数组
    var colorArr = ["red","orange","yellow","green","blue"];
    // 声明分数,时间,倒计时,
    var grade = 0;
    var djs = 10;
    var timer;
    // 设置flag
    var flag = true;
    // 封装函数生成随机数
    function random(a,b){
        return Math.round(Math.random()*(a-b)+b);
    }
    // 随机数组
    function rnArr(){
        var arr = [];
        // 去重
        // 数组长度小于5时
        while(arr.length<5){
            // 生成0-4的随机数作为数组下标
            var n = random(0,4);
            // 生成对应下标的数字在之前数组中不存在,push
            if(arr.indexOf(n)==-1){
                arr.push(n);
            }
        }
        return arr;
    }
    rnArr();
    // 创建页面文字
    function createFont(){
        // 随机文字数组,随机取出一个作为页面大字(随机的索引的value)
        main.innerHTML = fontArr[random(0,4)];
        // 随机颜色数组,取出一个颜色给大字
        main.style.color = colorArr[random(0,4)];
        // 创建小字
        // 随机数组,作为小字和小字颜色
        var smallIndexArr = rnArr(); //小字数组
        var smallColorArr = rnArr(); //小字颜色数组
        // 让小字随机变化
        // 循环遍历小字数组
        for(var j = 0; j < smallIndexArr.length; j++){
            // 小字数组的每一项设为字体颜色
            var fontIndex = smallIndexArr[j];
            // 小字数组内容作为数组元素的下标,找原始数组内容
            // 给页面小字的元素集合赋值
            choose[j].innerText= fontArr[fontIndex];
            var colorIndex = smallColorArr[j];
            choose[j].style.color = colorArr[colorIndex];
        }
    }
    createFont();
    // 给小字循环绑定点击时间
    for(var k = 0; k < choose.length; k++){
        choose[k].onclick = function(){
            // 获取当前大字的颜色
            var bigColor = main.style.color;
            // 获取当前的的文字
            var word = this.innerText;
            // 判断大字颜色下标和小字内容在文字数组里的下标
            if(colorArr.indexOf(bigColor)==fontArr.indexOf(word)){
                grade++;
                mark.innerHTML = grade;
                createFont();
                if(flag){
                    // console.log(djs);
                    timer = setInterval(function(){
                        djs--;
                        time.innerHTML = djs;
                        // console.log(djs);
                        if(djs == -1){
                            // 清楚计时器
                            clearInterval(timer);
                            // 结束弹窗
                            alert(‘辣鸡‘ + grade +‘分‘);
                            grade = 0;
                            djs = 10;
                            mark.innerHTML = grade;
                            time.innerText = djs;
                            creatFont();
                            flag = true;
                        }
                    },1000)
                }
                flag = false;
            }
        }
    }
    </script>
</body>
</html>

效果图

游戏逻辑: 随机产生页面文字和颜色,选择正确加分。

文章地址  https://www.cnblogs.com/sandraryan/

原文地址:https://www.cnblogs.com/sandraryan/p/11583803.html

时间: 2024-08-13 11:50:57

原生js实现选字游戏的相关文章

选字游戏

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>选字游戏</title> <style> #wrap{width: 400px;height: 600px;border: 1px solid red;margin: auto} #big{font-size: 140px;text-align:

原生js打飞机小游戏

最近为了巩固一下原生的知识,然后拿了一个js小游戏来入手.主要也是为了学习和练手. js代码如下: 1 window.onload = function(){ 2 var oBtn = document.getElementById('gameBtn'); 3 oBtn.onclick = function(){ 4 this.style.display = 'none'; 5 Game.init('div1');//把父级传进去 6 }; 7 }; 8 //创建Game单体 9 10 var

一个简单用原生js实现的小游戏----FlappyBird

这是一个特别简单的用原生js实现的一个小鸟游戏,比较简单,适合新手练习 这是html结构 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title></title> </head> <body> <div id="game"> <div id="b

原生js写一个2048游戏

本例逻辑1,一个二维数组,记录数字方块的数值与对应dom对象 2, 一个一维数组,记录空白方块的坐标(行与列)3,左移,最左边一列不做移动测试,从左边倒数第二列开始依次向左边做移动测试,若可合并,则向左移,数字不变或乘2.其他方向同逻辑 4, 判断输赢,若某个方块的值达到2048,即赢,游戏可以继续.当空白坐标数组的长度为0是,依次检测每个方块在四个方向可否移动,若都不能,即游戏结束. → → → → 预览 ← ← ← ← js代码: /*game 2048*/ //事件处理对象 var Eve

用原生js写2048小游戏

WEB前端交流群  172994155  回复 ww 验证  <!DOCTYPE html> <html> <head> <title> 2048-game </title> <meta charset="utf-8" /> <style media="screen"> #game { display: none; position: absolute; left: 0px; top

javascript:用原生js模拟贪吃蛇游戏练习

本次练习所有的代码:可以直接复制全部然后运行看效果~ 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>title</title> 6 <style> 7 .map { 8 width: 800px; 9 height: 600px; 10 background-color:

JQuery&amp;原生js ——实现剪刀石头布小游戏

jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库( 或JavaScript框架).jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情.它封装JavaScript常用的功能代码,提供 http://pic.cnhubei.com/space.php?uid=1913&do=album&id=1107884http://pic.cnhubei.com/space.php?ui

原生js canvas 碰撞游戏的开发笔记

-----------------------------------------------福利--------------------------------------------- -----------------------------------------------分割线--------------------------------------------- 今天 我们研究下碰撞游戏 什么是碰撞游戏? 当然是东西碰到在一起啦 用前端逻辑来说 就是2个物品互相碰撞产生的事件 问

原生js实现的复选框的全选和全不选效果

原生js实现的复选框的全选和全不选效果:使用jquery实现复选框的全选和全部选效果非常的简单,这里就不介绍了,具体可以参阅jQuery实现的checkbox复选框全选和全不选效果一章节,下面介绍一下如何使用原生javascript实现此效果,代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" conten