jquery开发的数字相加游戏(你能玩几分)

jquery开发的数字相加游戏,我在一轮中玩了632分(如下图),你能玩几分,哈哈...

我要试一试

下面贡献下这款“数字相加游戏”的开发过程。

html部分:

 <div class="container">
        <div class="how-to-play">
            <h1>
                How to Play</h1>
            <p>
                数字加法游戏-- 单击左侧的数字色块相加等于右上角的数字,当相等时,这几个色块消失。
            </p>
            <button id="got-it">
                OK, 开始!</button>
        </div>
        <div class="board">
        </div>
        <div class="right">
            <span class="sum-display"></span><span class="score-display"></span>
            <button id="restart">
                重新开始</button>
            <a href="#!" class="how-to-play">游戏攻略</a>
        </div>
    </div>
    <div style="text-align: center; font-size: 12px;">
        <br />
        来源:<a href="http://www.w2bc.com/shili">w2bc.com(爱编程)</a> 作者:拎壶充
    </div>

js脚本:

var $tCount = 64;
var $totalVal = 316;
var $level = 1;
var $score = 0;
var $targetVal = 0;

var trackTotalVal = function (val) {
    $totalVal -= val;
    return $totalVal;
};

// gameboard setup
var $tiles = function () {
    return [1, 1, 1, 1, 1, 1, 1, 1,
                2, 2, 2, 2, 2, 2, 2,
                3, 3, 3, 3, 3, 3, 3,
                4, 4, 4, 4, 4, 4, 4,
                5, 5, 5, 5, 5, 5, 5,
                6, 6, 6, 6, 6, 6, 6,
                7, 7, 7, 7, 7, 7, 7,
                8, 8, 8, 8, 8, 8, 8,
                9, 9, 9, 9, 9, 9, 9];
};

var $tilesShuffle = function (arr) {
    var $newArr = [];
    var $randomIndex;
    var $element;
    while (arr.length) {
        $randomIndex = Math.floor(Math.random() * arr.length);
        $element = arr.splice($randomIndex, 1);
        $newArr.push($element[0]);
    }
    return $newArr;
};

var $makePieces = function (arr) {
    var $pieces = [];
    var $piece;
    while (arr.length) {
        $piece = ‘<div>‘ + arr.pop().toString() + ‘</div>‘;
        $pieces.push($piece);
    }
    return $pieces;
};

var $makeBoard = function () {
    var $gameTiles = $makePieces($tilesShuffle($tiles()));
    while ($gameTiles.length) {
        $(‘div.board‘).append($gameTiles.pop());
    }
};

var $clearBoard = function () {
    $(‘.board‘).empty();
};

// generates # for player to make
var $genSum = function (level) {
    var $maxVal = (level * 5) + 10;
    var $minVal = 10;
    if ($totalVal > $maxVal && $tCount > 10) {
        return Math.floor(Math.random() * ($maxVal - $minVal + 1) + $minVal);
    }
    else if ($tCount <= 10 && $totalVal > $maxVal) {
        return $genSumFailsafe($maxVal);
    }
    else if ($totalVal <= $maxVal) {
        return $totalVal;
    }
};

// fixes the ‘$genSum generates # too big or not possible w/ available tiles‘ bug.
var $genSumFailsafe = function (max) {
    var $max = max;
    var $liveTiles = [];
    var $l = 0;
    $(‘.board div‘).not(‘.dead‘).each(function () {
        $liveTiles.push(parseInt($(this).text()));
    });
    $liveTiles.sort(function (a, b) {
        return b - a;
    });
    for (i = 0; i < $liveTiles.length; i++) {
        for (j = 1; j < $liveTiles.length; j++) {
            $l = $liveTiles[i] + $liveTiles[j];
            if ($l <= $max) {
                return $l;
            }
        }
    }
};

// displays expected # to player
var $displaySum = function (val) {
    $(‘.sum-display‘).text(val.toString());
};

// checks whether player exceeded or equaled the expected sum
var $checkSum = function (val, targetVal) {
    if (val === targetVal) {
        return "=";
    }
    else if (val > targetVal) {
        return ">";
    }
    else {
        return "<";
    }
};

// adds to and displays player‘s score
var $displayScore = function (val) {
    $score += val * 2;
    $(‘.score-display‘).text($score.toString());
};

// set up playing board
var $setupBoard = function () {
    $clearBoard();
    $makeBoard();
    $tCount = 64;
    $totalVal = 316;
    $targetVal = $genSum($level);
    $displaySum($targetVal);
    $displayScore(0);
};

// start game
var $initGame = function () {
    $level = 1; // game initiates @ level one, score 0
    $score = 0;
    $setupBoard();
};

$(function () {
    var $selectedTotal = 0;
    var $r; // variable to hold value of checkSum call
    var $t = 0; // variable for tracking # of live tiles
    var $this;
    $initGame();
    $(document).on(‘click‘, ‘.board div‘, function () { // activates when player clicks piece
        $this = $(this);
        if (!($this.hasClass(‘dead‘))) {
            $this.toggleClass(‘selected‘);
            if ($this.hasClass(‘selected‘)) {
                $selectedTotal += parseInt($this.text());
                $r = $checkSum($selectedTotal, $targetVal);
                $t++;
                if ($r === "=") {
                    $(‘.selected‘).empty().addClass(‘dead‘).removeClass(‘selected‘);
                    $displayScore($selectedTotal);
                    // tracking available tiles & pts left
                    $tCount -= $t; // subtracts # of used tiles from $tCount
                    $totalVal -= $selectedTotal;
                    // reset and init for next move
                    $t = 0;
                    $selectedTotal = 0;
                    // check to see whether player levels up
                    if ($tCount === 0) {
                        $setupBoard();
                    }
                    else {
                        $targetVal = $genSum($level);
                        $displaySum($targetVal);
                    }
                }
                else if ($r === ">") {
                    $(‘.selected‘).removeClass(‘selected‘);
                    $selectedTotal = 0;
                    $t = 0;
                }
            }
            else {
                $selectedTotal -= parseInt($this.html());
                $tCount++;
            }
        }
    });
    $(‘#restart‘).click(function () {
        $initGame();
    });
    $(‘a.how-to-play‘).click(function () {
        $(‘div.how-to-play‘).addClass(‘displayed‘);
    });
    $(‘#got-it‘).click(function () {
        $(‘.how-to-play‘).removeClass(‘displayed‘);
    });
});

css代码:

body {
  font-family: "Arvo";
}

small {
  display: block;
  width: 700px;
  margin: 10px auto;
  text-align: center;
  color: #9ec7b3;
}

a {
  color: #9ec7b3;
}
a:hover {
  color: #5dbc8e;
}

span {
  display: inline-block;
  width: 130px;
  text-align: center;
  border-radius: 2px;
}

button {
  display: inline-block;
  width: 140px;
  height: 40px;
  margin-top: 10px;
  padding: 10px;
  text-align: center;
  font-family: "Arvo";
  font-weight: 400;
  font-size: 120%;
  color: #fff;
  border: none;
  outline: none;
  border-radius: 2px;
  background-color: #9ec7b3;
}
button:hover {
  background-color: #5dbc8e;
  cursor: pointer;
}

.container {
  width: 700px;
  height: 540px;
  margin: 0 auto;
  padding: 20px;
  background-color: #dfdfdf;
  border-radius: 2px;
}

.right {
  width: 150px;
  height: 528px;
  float: right;
  text-align: center;
}

.sum-display {
  height: 70px;
  padding: 5px;
  font-weight: 700;
  font-size: 3.5em;
  color: #fff;
  background-color: #303c36;
}

.score-display {
  height: 40px;
  margin-top: 10px;
  padding: 15px 5px 0 5px;
  background-color: #fff;
  color: #303c36;
}
.score-display::before {
  content: "Score: ";
  font-weight: 700;
}

.board {
  width: 528px;
  height: 528px;
  float: left;
  padding: 5px;
  background-color: #5dbc8e;
  border-radius: 2px;
}
.board:hover {
  cursor: pointer;
}

.board div {
  display: block;
  height: 40px;
  width: 40px;
  float: left;
  margin: 2px;
  padding: 15px 10px 5px 10px;
  text-align: center;
  font-size: 150%;
  font-weight: 700;
  color: #5dbc8e;
  border: 1px solid #5dbc8e;
  border-radius: 2px;
  background-color: #fff;
}
.board div:hover {
  background-color: #dfdfdf;
}

.board .selected {
  background-color: #303c36;
}
.board .selected:hover {
  background-color: #303c36;
}

.board .dead {
  background-color: #9ec7b3;
}
.board .dead:hover {
  cursor: default;
  background-color: #9ec7b3;
}

div.how-to-play {
  display: none;
  position: absolute;
  width: 700px;
  height: 540px;
  margin: 0 auto;
  padding: 10px;
  background-color: rgba(255, 255, 255, 0.8);
  color: #303c36;
  z-index: 2;
}
div.how-to-play.displayed {
  display: block;
}
div.how-to-play p {
  width: 60%;
}

a.how-to-play {
  display: block;
  margin-top: 10px;
}

转载请注明原文地址:http://www.cnblogs.com/liaohuolin/p/3920930.html

jquery开发的数字相加游戏(你能玩几分),布布扣,bubuko.com

时间: 2024-10-05 05:31:39

jquery开发的数字相加游戏(你能玩几分)的相关文章

Cocos2dx制作2048(3.数字相加逻辑)

这次我们来完成整个2048的数字相加逻辑其实2048玩起来简单,做起来也简单,复杂就复杂在这整个游戏的逻辑. 1.分析向左滑动 第一轮相加步骤: 1. 单1+单2    单1=2  单2赋值为0         (单1为空,可以加任何数字) 2. 单1+单3    单1=4   单3赋值为0    (单1不为空,只能加和他相同的数字) 3. 单1+单4    单1=4   单4不变              (单1不为空,只能加和他相同的数字) 第二轮相加步骤: 1.   单2+单3    单2

jQuery 变量数字相加

js中,一个变量和一个数字相加,得到的是相连之后的结果. 比如,var a = "1" + 2,结果为12,比如我在 input 框中取出值,并使其加一, var num = $(".inputNum").val() + 1; 结果就是相连接,加 eval 也无效. 解决方案:将字符串转为 js 内部对象 Number ,这样整型实型数都可以用. jQuery Code: 1 2 3 4 5 $(document).ready(function() {     va

jquery开发的”天才笨笨碰“游戏

前段时间湖南卫视的快乐大本营里有一款“天才笨笨碰”游戏非常火.这款游戏主要是考选手的声母联想词语的能力. 小篇在看完这个节目后用jquery制作了“天才笨笨碰”网页游戏.先上效果图: 游戏规则: 1.如图点击开始,系统会给中间五个小块随机分配五个声母(哈哈,这边可能有些网友已经忘记声母都有哪些了.声母一共有23个:b p m f d t n l g k h j q x zh ch sh r z c s y w) 2.两位选手用这五个声母来联想词语,或句子.把含声母的色块推到对方那一边就胜利了(注

JQuery变量数字相加的研究

在 jquery中,一个变量和一个数字相加,期望得到1+2=3但是: eg: <input type="text" class="input_Num" id="input_Num" value="12"> $(document).ready(function(){ var sum=5; var b=$("#input_Num").val(); sum +=b; alert(sum); }) 期望

使用HTML5开发Kinect体感游戏

一.简介 我们要做的是怎样一款游戏? 在前不久成都TGC2016展会上,我们开发了一款<火影忍者手游>的体感游戏,主要模拟手游章节<九尾袭来 >,用户化身四代,与九尾进行对决,吸引了大量玩家参与. 表面上看,这款游戏与其它体感体验无异,实际上,它一直运行于浏览器Chrome下,也就是说,我们只需要掌握前端相应技术,就可以开发基于Kinect的网页体感游戏. 二.实现原理 实现思路是什么? 使用H5开发基于Kinect的体感游戏,其实工作原理很简单,由Kinect采集到玩家及环境数据

一款纯css3实现的数字统计游戏

今天给大家分享一款纯css3实现的数字统计游戏.这款游戏的规则的是将所有的数字相加等于72.这款游戏的数字按钮做得很美观,需要的时候可以借用下.一起看下效果图: 在线预览   源码下载 实现的代码. html代码: <h1> CSS Counter Game</h1> <section> <h2> Pick the numbers that add up to 72:</h1> <input id="a" type=&q

洛谷P1118 数字三角形游戏

洛谷1118 数字三角形游戏 题目描述 有这么一个游戏: 写出一个1-N的排列a[i],然后每次将相邻两个数相加,构成新的序列,再对新序列进行这样的操作,显然每次构成的序列都比上一次的序列长度少1,直到只剩下一个数字位置.下面是一个例子:     3   1   2   4       4   3   6         7   9          16 最后得到16这样一个数字. 现在想要倒着玩这样一个游戏,如果知道N,知道最后得到的数字的大小sum,请你求出最初序列a[i],为1-N的一个

区块链宠物系统开发:你的游戏里宠物养成了吗?

养狗吸猫玩鸡仔,区块链游戏已经得到很多人的喜爱,并且速速占据新应用玩法的一席之地,成为吸金法宝.区块链作为新兴技术的网红选手.吸引了国内各大互联网科技巨头的入场,网易"招财猫".百度"莱茨狗".小米"加密兔"相继上线,区块链宠物养成游戏大战已经开始.区块链宠物养成游戏可以在PC端或者是手机端进行游戏体验,与区块链技术相结合,使它从表面上来看是一款简单的宠物养成类游戏变得网红起来.一款区块链宠物养成游戏的系统开发搭建大致有这么几个过程.首先要设计好

LeetCode.2-两个数字相加(Add Two Numbers)

这是悦乐书的第340次更新,第364篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Medium级别的第1题(顺位题号是2).给定两个非空链表,表示两个非负整数. 数字以相反的顺序存储,每个节点包含一个数字.将两个数字相加并将其作为链表返回.你可以假设这两个数字不包含任何前导零,除了数字0本身.例如: 输入:(2 -> 4 -> 3)+(5 -> 6 -> 4) 输出:7 -> 0 -> 8 说明:342 + 465 = 807. 本次解题使用的开发工具是