;(function() {
return window.Query = window.$ = (function() {
try {
var _this = {};
/**
* 循环数组或者名值对象
*/
_this.each = function(obj, callback, args) {
if (_this.isObj(obj) && !args) {
for (var idx in obj) {
if (callback.call(obj[idx], idx, obj[idx]) === false) {
break;
}
}
} else {
var idx = 0;
for (var o = obj[idx]; idx < obj.length && (callback.call(o, idx, o) !== false); o = obj[++idx]) {
}
}
return _this;
}
/**
*判断对象是数组还是名值对象
* @param {Object} obj
*/
_this.isObj = function(obj) {
return typeof obj == "object" && !(_this.isArray(obj)) ? true : false;
}
/**
*为本地对象添加合适的方法
*/
_this._addFunForLocalObject_ = function() {
/**
*为数组添加indexof方法
*/
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function(v) {
for (var idx in this) {
if (this[idx] === v)
return idx;
}
return -1;
}
}
/**
*为数组添加remove方法
*/
if (!Array.prototype.remove) {
Array.prototype.remove = function(v) {
var vidx = this.indexOf(v);
if (vidx >= 0)
this.splice(vidx, 1);
}
}
/**
*为数组添加contain方法
*/
if (!Array.prototype.contain) {
Array.prototype.contain = function(v) {
var vidx = this.indexOf(v);
if (vidx >= 0)
return true;
}
}
/**
*为所有的对象添加显示当前值的方法
*/
if (!Object.prototype.val) {
Object.prototype.val = function() {
return this.valueOf();
}
}
/**
*为String对象添加转换为Int的方法
*/
if (!String.prototype.intVal) {
String.prototype.intVal = function() {
return parseInt(this);
}
}
return _this;
}();
/**
*判断是否为数字
*/
_this.isNumber = function(v) {
return !v || isNaN(v.valueOf()) ? false : ( typeof v.valueOf() === "number");
}
/**
*判断是否为数组
*/
_this.isArray = function(v) {
return !v || !( v instanceof Array) ? false : true;
}
/**
*判断数组中所有的值是否全是数字
*/
_this.isNumberArray = function(v) {
var a = true;
for (var idx = 0; idx < v.length; idx++) {
a = a && _this.isNumber(v[idx]);
}
return !v || !_this.isArray(v) ? false : a;
}
/**
*判断是否为字符串
*/
_this.isString = function(v) {
return !v || ( typeof v.valueOf() !== "string") ? false : true;
}
/**
*判断是否为字符串
*/
_this.isBooblean = function(v) {
return typeof v.valueOf() !== "boolean" ? false : true;
}
/**
*用于处理字符串拼接
*/
_this.StringBuffer = function() {
this._strings_ = new Array;
if (this._inited === undefined) {
this.append = function(v) {
this._strings_.push(v);
}
this.toString = function() {
return this._strings_.join("");
}
this._inited = true;
}
}
/**
*生成从vf到vl之间的随机数,isDecimal表示是否保留小数
*/
_this._protectRandom_ = function(vf, vl, isDecimal) {
var n = Math.random() * (vl - vf + 1) + vf;
return isDecimal ? n : Math.floor(n);
}
/**
*生成大于给定数字的随机数
*/
_this._gtRandom_ = function(v, isDecimal) {
var n = Math.random() * v + v;
return isDecimal ? n : Math.round(n);
}
/**
*生成小于给定数字的随机数
*/
_this._ltRandom_ = function(v, isDecimal) {
var n = Math.random() * v;
return isDecimal ? n : Math.round(n);
}
/**
*数组copy
*/
_this.arrCopy = function(src, target) {
if (src && target) {
_this.each(src, function(idx, o) {
target[idx] = o;
});
return target;
}
}
/**
*将参数转换为数组类型
*/
_this._argsToArray_ = function(v) {
var result = new Array
for (var idx = 0; idx < v.length; idx++) {
result.push(v[idx]);
}
return result;
}
/**
*生成随机数或者选出随机数
*/
_this.random = function() {
var args = arguments;
var length = args.length;
if (length && length <= 1) {
return _this.isArray(args[0]) ? args[0][_this._protectRandom_(0, args[0].length - 1)] : Math.random();
} else {
args = _this._argsToArray_(args);
if (_this.isNumberArray(args)) {
return length === 2 ? _this._protectRandom_(Math.min(args[0], args[1]), Math.max(args[0], args[1]), 1) : args[_this._protectRandom_(0, length - 1)];
} else {
var g = args.indexOf("gt") >= 0;
var l = args.indexOf("lt") >= 0;
var h = _this.isNumber(args[0]);
var i = g && h;
var m = l && h;
if (length === 2) {
return i ? _this._gtRandom_(args[0], 0) : m ? _this._ltRandom_(args[0], 0) : args[_this._protectRandom_(0, length - 1)];
} else if (length === 3) {
var f = _this.isBooblean(args[length - 1]);
var d = _this.isNumberArray(args.slice(0, 2));
return f && d ? _this._protectRandom_(Math.min(args[0], args[1]), Math.max(args[0], args[1]), args[2]) : f && i ? _this._gtRandom_(args[0], args[2]) : f && m ? _this._ltRandom_(args[0], args[2]) : args[_this._protectRandom_(0, length - 1)];
} else {
return args[_this._protectRandom_(0, length - 1)];
}
}
}
}
window.$.prototype = _this;
} catch(e) {
}
return _this;
})();
})();
分享到:
相关推荐
开发者通过JavaScript的灵活性和强大的DOM操作能力,成功地在浏览器环境中重现了游戏的战斗机制、单位控制、资源采集等核心玩法。 游戏的实现首先依赖于JavaScript的基础语法,包括变量声明、条件判断、循环结构、...
标题中的“javascript 写的《星际争霸》”揭示了一个令人惊叹的事实:有人使用JavaScript这种通常用于Web开发的脚本语言,复刻了经典的即时战略游戏《星际争霸》。这一成就展示了JavaScript的强大功能以及作者深厚的...
【标题】"javascript写的植物大战僵尸"所涉及的知识点主要集中在使用JavaScript编程语言来实现一个经典游戏的克隆版本。JavaScript是一种广泛应用于网页和互联网应用的动态编程语言,它允许开发者在用户浏览器上运行...
JavaScript植物大战僵尸是一款基于Web的互动游戏,利用JavaScript编程语言实现了原版《植物大战僵尸》的部分核心玩法。在这个项目中,开发者用JavaScript构建了一个小型的游戏环境,玩家可以在浏览器上体验到类似的...
这个描述意味着开发者完全依赖JavaScript来实现游戏逻辑、渲染游戏画面以及响应用户操作。俄罗斯方块游戏通常包含以下几个关键组件: 1. **游戏逻辑**:JavaScript负责处理游戏的核心算法,如方块的生成、旋转、...
"小项目纯属写着玩玩 没事别打开" 和 "一般般而已啦,别看!!!" 这些描述可能指的是一个个人的编程项目或者代码练习,但没有详细到可以提炼出具体的技术细节或知识点。同时,标签"玩"也无法提供足够的技术上下文。...
在JavaScript的世界里,复选框(checkbox)是网页交互中常见的元素,用户可以通过它们来选择一个或多个选项。本教程将深入讲解如何使用JavaScript实现复...希望这个教程能帮助你在一天内玩转JavaScript的这个实用特性。
开发者通过将12个小图片拼接成棋盘,营造出一种视觉上的新颖感,使得用户在玩的过程中能感受到独特的交互体验。在这个项目中,JavaScript作为主要的编程语言,承担了游戏逻辑和界面交互的主要任务。 JavaScript,...
总的来说,"js写的战斗机游戏javascript"项目是一个很好的学习资源,它展示了JavaScript在游戏开发中的实际应用,包括事件处理、动画制作、对象导向编程以及Canvas绘图。通过分析和理解这个游戏的代码,开发者不仅...
除了基本的游戏功能之外,还可以考虑添加一些额外的功能来提高游戏的趣味性和可玩性: - **暂停/继续**: 允许玩家在游戏中途暂停和继续游戏。 - **加速**: 随着游戏时间的增加,方块下落的速度逐渐加快。 - **音效...
【描述】"纯javascript写的小游戏,打开浏览器就可以玩,类似于是男人就坚持20秒",这表明游戏设计的核心逻辑是用JavaScript编写的,游戏玩法可能涉及玩家需要在限定时间内完成某种操作或避免某些障碍,类似于经典的...
基于html+JavaScript实现的大富翁游戏,复刻了童年与小伙伴玩的经典大富翁游戏。 HTML & CSS 配置选项框:选择金钱、玩家人数、电脑人数 选择角色框:选择角色 主地图:通过grid布局实现,通过JS动态添加棋格;中间...
通过贪吃蛇的开发,解决你在刚学会 JavaScript 语法后缺乏练习项目、写程序的时候感觉毫无头绪的问题。以达到练习 JavaScript 的语法的基本使用,培养你做项目的思维的目标。 代码包涵了食物、蛇的移动、蛇的长度...
【javascript记忆力游戏】是一款基于JavaScript开发的互动游戏,旨在锻炼玩家的...这些GIF文件可能是游戏中的方块图像,开发者会将它们插入到HTML中,并通过JavaScript来控制它们的显示和隐藏,从而实现游戏的玩法。
如今,我们可以通过原生JavaScript技术将其搬到网页上,实现一款可玩性强、交互性好的在线版本。本文将深入探讨如何用JavaScript来构建一个功能完备的俄罗斯方块游戏。 首先,我们要理解游戏的核心机制。俄罗斯方块...
这篇博客文章“DWR(Easy ajax for java)我来写个例子玩玩”旨在通过一个实例来展示如何使用DWR来构建一个简单的Ajax应用。 首先,我们需要了解DWR的基本工作原理。DWR通过在服务器端创建一个称为"逆向Ajax"的通道,...
同时,为了实现“再玩一次”,需要清空当前的游戏板,重置方块的位置和速度,以及清零玩家的积分。 压缩包中的"俄罗斯方块.html"是整个游戏的入口文件,包含了HTML结构、CSS样式和JavaScript代码。HTML用于构建网页...
当用户失败时,顶部会显示一个red loser banner ,上面写着: OH NO! 下一次更好的运气!子手游戏功能使用按键事件来聆听玩家将键入的字母。在页面上显示以下内容: 按任意键即可开始! 获胜:(用户正确猜出该...
例如,我们可以定义一个`Animal`构造函数,然后在它的原型上添加一些方法,如吃、玩和睡。所有`Animal`的实例都可以访问这些方法,实现了行为的共享。 ```javascript Animal.prototype.eat = function() { console...