当前位置: 首页 > 图文教程 > 网络编程 > Javascript > 用js做一个小游戏平台 (一)

Javascript
javascript radio list的实现细节(多浏览器兼容)
IE在DOM操作有表单控件时的bug
trim原型函数看js正则表达式的性能
js 禁用浏览器的后退功能的简单方法
IE和Firefox下javascript的兼容写法小结
兼容ie和firefox js关闭代码
用tip解决Ext列宽度不够的问题
firefox getyear() getFullYear数获取年份的问题
javascript iFrame研究
FLASH 广告之外的链接
firefox TBODY 用js显示和隐藏时出现错位的解决方法
Javascript 获取LI里的内容
比较全的JS checkbox全选、取消全选、删除功能代码
JS checkbox控制操作代码
document.all与getElementById、getElementsByName、getElementsByTagName用法区别-document.all
document.all与getElementById、getElementsByName、getElementsByTagName用法区别-getElementById
简单通用的JS滑动门代码
Javascript select控件操作大全(新增、修改、删除、选中、清空、判断存在等)
js 提交和设置表单的值
flash javascript之间的通讯方法小结

Javascript 中的 用js做一个小游戏平台 (一)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-10   浏览: 436 ::
收藏到网摘: n/a

大体的意思就是想写一些js,使得网页上能玩多个游戏。譬如:贪吃蛇、俄罗斯方块、推箱子、坦克等等。 记得上班写代码时,我们技术总监总说是要先“设计”,那就先“设计”吧。
ps:我是新手大家多多见谅。
.网页游戏区域。就是说需要知道游戏在网页上的区域,如下:
在网页中插入一个div,设定宽高和id,
<div id="GameFrame" style="width:400;height:400"></div>
然后再js中得到该对象,
var _GameFrame = document.getElementById("GameFrame");

.键盘参数对象:在游戏中会经常获取键盘的值,设定一个键值对应的对象:
var _KeyParameters = { KeyEnter: 13, KeySpace: 32, KeyLeft: 37, KeyUp: 38, KeyRight: 39, KeyDown: 40, KeyESC: 27 };

.标签控制对象:用于控制、产生html标签,辅助生成对应样式的"控件":
复制代码 代码如下:

var _HtmlControl =
{
//清空网页游戏区域
_ClearArea: function() {
},
//创建一个div
newDiv: function() {
var div = document.createElement("div");
return div;
},
//创建一个指定宽高的按钮样式标签
newButton: function(w, h) {
var div = this.newDiv();
div.style.width = w + "px";
div.style.height = h + "px";
div.select = function() {
//被选中时的变化
};
div.unselect = function() {
//没选中时的样子
};
return div;
}
//继续...
};

.动画类:用于播放一些游戏跳转动画:
复制代码 代码如下:

var Animation = function(endFn) {
//播放动画
this._play = function() {
    //具体怎么放没有想好。
};
//播放结束事件
this._palyEnd = endFn || function() {
alert("动画播放结束");
};
};

.游戏类:要有一个游戏名,
a.控制:1.逻辑控制、2.键盘控制
b.主界面:1.标题、2.游戏区域、3.状态显示区、4.控制区
c.动画:1.开场动画、2.过关动画、3.通关动画
d:事件:1.开始、2.结束。
    代码大致如下:
代码
复制代码 代码如下:

var Game = function(name, logicalFn, keyFn) {
//游戏名
this._name = name || "未命名";
this._LControl = logicalFn || function() {
//简单游戏逻辑控制
};
this._KControl = keyFn || function(event) {
//简单键盘逻辑
};
//开场动画
this._AnmLoad = new Animation(null);
//过关动画
this._AnmNext = new Animation(null);
//通关动画
this._AnmEnd = new Animation(null);
};

.游戏列表:就是游戏类的对象列表。
.游戏选择器:可以是一个游戏类对象。
var _GameChoose = new Game("选择器", null, null);
.页面控制:用于注册页面事件,接受用户响应,并传递给游戏选择器;
代码
复制代码 代码如下:

var _PageControl = {
//8.a:线程控制
_ThreadControl: function() {
_GameChoose._LControl();
},
//8.b:键盘控制
_KeyControl: function(event) {
_GameChoose._KControl(event);
},
//8.cc.事件注册
_StartRegedit: function() {
//把this._ThreadControl添加到循环线程
//把this._KeyControl注册到document的键盘单击
}
}

最后,到了这一步,貌似就“设计”完了?暂且不管这是不是设计,姑且说是一种边敲代码边设计的设计吧。不过貌似真的就可行了。当然它现在是不能运行的。我们先把总体代码贴出来看一下:
整体代码
复制代码 代码如下:

<script type="text/javascript"language="javascript">
/***
* 1.网页游戏区域:
* 2.键盘参数类
* 3.标签类:用于控制、产生html标签
* 4.动画类:播放动画,播放结束事件
* 5.游戏类:游戏名
* a.控制:1.逻辑控制、2.键盘控制
* b.主界面:1.标题、2.游戏区域、3.状态显示区、4.控制区
* c.动画:1.开场动画、2.过关动画、3.通关动画
* d:事件:1.开始、2.结束
* 6.游戏列表
* 7.游戏选择器
* 8.页面控制:a.线程控制、b.键盘控制、c.事件注册
***/
window.onload = function() {
//----------------------------------------------------
//1.网页游戏区域:
var _GameFrame = document.getElementById("GameFrame");
//----------------------------------------------------
//2.键盘参数类:可以根据需要把键值添加进来
var _KeyParameters = { KeyEnter: 13, KeySpace: 32, KeyLeft: 37, KeyUp: 38, KeyRight: 39, KeyDown: 40, KeyESC: 27 };
//----------------------------------------------------
//3.标签类:用于控制、产生html标签
var _HtmlControl =
{
//清空网页游戏区域
_ClearArea: function() {
},
//创建一个div
newDiv: function() {
var div = document.createElement("div");
return div;
},
//创建一个指定宽高的按钮样式标签
newButton: function(w, h) {
var div = this.newDiv();
div.style.width = w + "px";
div.style.height = h + "px";
div.select = function() {
//被选中时的变化
};
div.unselect = function() {
//没选中时的样子
};
return div;
}
//继续...
};
//----------------------------------------------------
//4.动画类:播放动画,播放结束事件
var Animation = function(endFn) {
//播放动画
this._play = function() {
};
//播放结束事件
this._palyEnd = endFn || function() {
alert("动画播放结束");
};
};
//----------------------------------------------------
//5.游戏类:
var Game = function(name, logicalFn, keyFn, startFn, endFn) {
//游戏名
this._name = name || "未命名";
//5.a.1:逻辑控制
this._LControl = logicalFn || function() {
//简单游戏逻辑控制
};
//5.a.2:键盘控制
this._KControl = keyFn || function(event) {
//简单键盘逻辑
};
//5.b.1:标题区域
this._FrameTitle;
//5.b.2:游戏区域
this._FrameMain;
//5.b.3:状态显示区
this._FrameState;
//5.b.4:控制区
this._FrameControl;
//5.c.1:开场动画
this._AnmLoad = new Animation(null);
//5.c.2:过关动画
this._AnmNext = new Animation(null);
//5.c.3:通关动画
this._AnmEnd = new Animation(null);
//5.d.1:开始
this._Start = startFn || function() {
alert("游戏开始");
};
//5.d.2:结束
this._End = endFn || function() {
alert("游戏结束");
};
};
//----------------------------------------------------
//创建游戏
var game1 = new Game("贪吃蛇", null, null);
var game2 = new Game("俄罗斯方块", null, null);
var game3 = new Game("推箱子", null, null);
var game4 = new Game("赛车", null, null);
var game5 = new Game("坦克大战", null, null);
//----------------------------------------------------
//6.游戏列表
var _GameList = [game1, game2, game3, game4, game5];
//----------------------------------------------------
//7.游戏选择器
var _GameChoose = new Game("选择器", null, null);
//----------------------------------------------------
//8.页面控制:
var _PageControl = {
//8.a:线程控制
_ThreadControl: function() {
_GameChoose._LControl();
},
//8.b:键盘控制
_KeyControl: function(event) {
_GameChoose._KControl(event);
},
//8.cc.事件注册
_StartRegedit: function() {
//把this._ThreadControl添加到循环线程
//把this._KeyControl注册到document的键盘单击
}
}
//----------------------------------------------------
}
</script>
<div id="GameFrame" style="width:400;height:400">
</div>

就先这样吧,明天再让它运行一下,顺便设计一下第一个游戏:贪吃蛇。
用同事的一句话喊一下口号:不做权限设计,做全国最好的贪吃蛇,汗一个...