javascript的游戏程序设计方案与实现速算24.docx
- 文档编号:4198956
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:31
- 大小:298.88KB
javascript的游戏程序设计方案与实现速算24.docx
《javascript的游戏程序设计方案与实现速算24.docx》由会员分享,可在线阅读,更多相关《javascript的游戏程序设计方案与实现速算24.docx(31页珍藏版)》请在冰点文库上搜索。
javascript的游戏程序设计方案与实现速算24
JavaScript的游戏程序设计与实现
---速算“24”
目录
题目…………………………………………………………………………………3
摘要…………………………………………………………………………………3
关键词………………………………………………………………………………3
一速算“24”游戏说明………………………………………………………………3
二创建初始界面………………………………………………………………………4
(一)扑克牌显示区…………………………………………………………………………4
(二)计算区域………………………………………………………………………………5
三自动发牌……………………………………………………………………………6
(一)制作图象文件……………………………………………………………………………6
(二)随机发牌…………………………………………………………………………………6
(三)动态设置网页中图像的源文件…………………………………………………………7
四添加按钮事件处理…………………………………………………………………7
(一)添加“开始”事件………………………………………………………………………7
(二)添加其余的事件…………………………………………………………………………7
五即时显示表达式……………………………………………………………………8
(一)图片的数字显示…………………………………………………………………………8
(二)运算符的显示……………………………………………………………………………9
六计算表达式的值并反馈结果……………………………………………………10
(一)标准的JavaScript数学表达式………………………………………………………11
(二)对数学表达式的计算以及反馈………………………………………………………11
七获取时间和计时…………………………………………………………………12
(一)获取时间,实现计时…………………………………………………………13
(二)计时的停止……………………………………………………………………………14
(三)调用函数stoptime()和ctime()………………………………………………14
(四)对时间的反馈…………………………………………………………………………14
总结…………………………………………………………………………………15
参考文献……………………………………………………………………………16
附录…………………………………………………………………………………17
JavaScript的游戏程序设计与实现
——速算“24”
摘要JavaScript是一种易于使用的对象描述语言,它是为了创建真正的联机应用程序而设计的,无论是在用户端还是在服务器端,这种应用程序都可以将对象和资源连接在一起。
运用JavaScript开发一个速算“24”游戏,该游戏实现如何在JavaScript中进行数学运算和相关处理以及如何实现计时。
关键词游戏语言动态显示计时运算
JavaScript是由Java继承而来的,是一种面向对象的程序设计的脚本语言。
JavaScript为Web页面设计人员提供了极大的灵活性和控制手段。
他是一种优秀的“粘合剂”,能够将一个Web节点中的文字,图形,声音和动画等各种媒体形式捆绑在一起。
下面我们将通过制作“速算24”这个游戏,来更深入的了解,学习JavaScript。
一“速算24”游戏说明
“速算24”是一个考察心算能力,有助于智力开发的扑克游戏。
给出4张扑克牌之后,要求应用这些扑克牌数字做数学运算,迅速构造出一个数学表达式得出结果24。
游戏的初始界面如下图所示
单击“开始”按钮开始游戏,系统自动发牌。
如下图所示。
然后可以在计算器区域单击“扑克牌”以及运算符按钮进行运算,单击“计算”按钮时,系统会自动判断结果是否是24,并给出反馈信息,同时系统会自动计时。
二创建初始界面
JavaScript是一个脚本语言,需要嵌套到HTML语言才能运行。
所以,我们首先使用HTML语言来为该游戏创建一个简单的初始界面。
游戏的网页界面分为2个区域:
扑克牌显示区,计算区域。
(一)扑克牌显示区
首先创建扑克牌显示区。
HTML语言有一个table表格属性。
使用四个图像文件,将他们放入一个表格中,然后放入一个div,图像文件最初使用扑克牌的背景图片,在游戏过程中,将会动态改变这些图像的源文件,以显示系统所发的扑克牌的实际图像。
在HTML文档的BODY区使用如下代码:
/扑克/backgroud.jpg"height="120"> /扑克/backgroud.jpg"height="120"> /扑克/backgroud.jpg"height="120"> /扑克/backgroud.jpg"height="120">
tableborder="0"bgcolor="black"cellspacing="0"cellpadding="0"是表格的属性设置。
border="0"将表格设置为无边框
bgcolor="black"将表格颜色设置为黑色
cellspacing="0"cellpadding="0"表元间距和表元空隙均为0
(二)计算区域
计算区域是用户进行操作的主要区域,因此比较复杂。
同样,我们使用一个表格来进行布局,这个表格放入到一个div中并居中。
由于使用了大量的按钮,所以将这些按钮放入到一个表单中。
在HTML文档的BODY区使用如下代码:
00">
一共设置了11个操作按钮和运算符按钮,其属性和作用如下表所示
按钮序号
Name属性
Value属性
作用
1
B6
+
加法运算符
2
B7
-
减法运算符
3
B8
*
乘法运算符
4
B9
/
除法运算符
5
B10
(
左括号
6
B11
)
右括号
7
B12
计算
计算表达式的值
8
B13
无解
让用户选择“无解”
9
B14
重玩
重新开始同一局
10
B16
显示运算表达式
11
B17
00:
00
显示时间
在默认情况下,浏览器会自动给出按钮尺寸,大小为刚好显示按钮上的文字,因此,调整按钮大小的最简单的方法,就是在按钮的显示文字中添加适当数目的空格。
至此,我们已经设置好了游戏的初始界面。
三自动发牌
单击“开始”按钮时,系统需要随机地发出4张纸牌,显示在扑克牌显示区。
同时,在计算器区域,也要显示相对应的4张缩略图。
(一)制作图象文件
首先,要制作10个图像文件,分别为10张扑克牌的图片(即A,2,3,4,5,6,7,8,9,10)。
并将图像文件根据大小命名,,规则如下:
A,2,直到10,依次命名为:
1.jpg~10.jpg
如何制作这些扑克牌图片呢?
在windows附件的游戏中有一个纸牌游戏,里面有扑克牌的图像,因此我们可以利用它制作我们所需要的图象文件。
方法:
先运行这个纸牌游戏,找到你想要的牌,然后运行QQ程序,利用QQ程序里面的抓图工具,将你所需要的图片抓下来并保存在特点的文件夹里面,并按照上面的命名规则命名。
此外还要制作一张图片作为背景图像,保存为background.jpg。
例如:
background.jpg
(二)随机发牌
要实现随机发牌效果,需要用到随机函数,利用一个循环,产生4个1到10之间的随机数,然后根据随机数的大小将网页中的图像的源文件指向相应的图像文件。
首先定义一个全局变量flag,用于标识游戏是否已经开始,在发牌之前将flag设置为true,然后创建一个数组变量index,长度为4,用于存放扑克牌图像文件的文件名。
JavaScript提供了一个随机函数用以生成一个随机数,该函数是Math对象的一个方法:
Math.random();它返回一个随机生成的小数。
将其乘以10,然后利用Math.floor()函数向下取整,即得到一个介于0和9之间的随机整数(包括0和9),代码如下:
varindex=newArray(4);
functiondeal1()
{
flag=true;
for(i=0;i<4;i++)
{
index[i]=Math.floor(Math.random()*10)+1;
}
}
(三)动态设置网页中图像的源文件
获取了4个随机数后,要根据它们来动态设置扑克牌显示区的4个图像的源文件,以显示随机抽取的4张扑克牌。
通过JavaScript的对象模型,对网页中图像的控制是十分容易的。
因为所有的图像均以数组项的形式保存在数组images[]中,该数组是document对象的一个子对象。
数组的下标从0开始,有images[0],images[1]直到images[n],按照图像在网页中出现的先后顺序,下标从0开始依次增大。
他们包含了出现在网页中的图像的各种属性,如下:
·src:
图像的源文件,为一个字符串变量
·border:
图像的边框大小
·height:
图像的显示高度,单位为像素
·width:
图像的显示宽度,单位为像素
因此,在上面的deal1()函数中,添加如下代码,即可以达到动态设置图像源文件的目的:
document.images[i].src="D:
/扑克/"+index[i]+".jpg";
document.images[4+i].src="D:
/扑克/"+index[i]+".jpg";
四添加按钮事件处理
在前面,我们已经成功地进行了扑克牌的随机分发。
但是何时发牌呢?
如何实现发牌呢?
当用户单击按钮时,如何实现操作呢?
这就需要添加事件处理函数,来实现目的。
(一)添加“开始”事件
单击“开始”按钮时,需要发牌,这要通过调用deal()函数实现。
如何调用函数呢?
JavaScript中给出了一种Click事件,用来响应单击按钮之类的操作。
例如:
如果要实现“开始”按钮,只需要添加如下代码:
在onClick等号后,可以使用自己编写的函数作为事件处理程序,也可以使用JavaScript的内部函数,还可以直接使用JavaScript代码。
(二)添加其余的事件
有的游戏局是没有无解的,比如4个A,无论如何运算也不能得到24。
这时可以单击“无解”按钮,标识此局无解,同时开始新的一局。
“无解”按钮的Click事件处理代码如下:
同理可以为“计算”,“重玩”添加事件处理如下:
五即时显示表达式
在发牌之后,用户可以开始运算,具体的操作方式是用户可以单击计算器区域的图片和运算符,组成数学表达式,就像使用计算器那样。
该数学表达式会即时显示在最下面的长条形按钮上。
下面我们来实现这一点。
(一)图片的数字显示
扑克牌和数字的对应关系如下:
·与花色无关
·点数2到10对应的数字是2到10
·A对应的数字是1
用户可以直接单击代表扑克牌的4张缩略图,这时相应的数字即显示在长条形的按钮上。
如下图所示:
这里我们创建一个函数showpic(x),以正确显示数学表达式中的数字。
该函数有一个参数,用来获取图像的位置。
1我们先将图像转换成数字。
由于扑克牌的图像是通过数组项index[ind]来指定源文件的,因此可以通过index[ind]将扑克牌转换成对应的数字。
这里需要调用JavaScript的parseFloat()函数。
该函数是用于把一个字符串转换为浮点形式的数据,并返回转换结果。
该函数对字符串中的每个字符进行转换,直到遇到非数字字符,这时停止转换,并返回已经转换了的结果。
具体代码如下:
functionShowPic(ind)
{
if(flag)
{
oper=parseFloat(index[ind]);
figs[indF]=oper;
indF++;
}
}
2将相应的数字显示到长条形按钮上。
首先将oper转换为字符串,然后改变长条形按钮的value属性值,将oper显示在长条形按钮上。
其代码如下:
oper=oper.toString();
jieguo=jieguo+oper;
varval=document.form1.B16.value;
document.form1.B16.value=(val+oper).substring(oper.length,val.length+oper.length+1);
注意:
这里不是简单的将oper添加到长条形按钮的value属性值中,而是进行了较为复杂的处理。
这是为了保持长条形按钮的形状不变,即保持value属性值的长度不变,在创建界面时,我们给长条形按钮的value属性赋了初值为一长串空格,这里再添加oper到value属性值的末尾,而同时在value属性值的开头去掉同样字符数的空格。
函数substring(ind1,ind2)是string对象的一个重要方法,用于截取该字符串的一部分并返回结果,这一部分是从ind1序号开始,到ind2序号之前的一个字符串。
注意序号是从0开始,直到字符串的长度减1(string.length-1)。
3单击扑克牌缩略图时,调用函数showpic()。
在前面已经介绍过JavaScript的Click事件。
这里同样可以利用这一事件,在单击图片时调用函数showpic()。
代码如下:
/扑克/backgroud.jpg"height="120"onclick="ShowPic(0);"> /扑克/backgroud.jpg"height="120"onclick="ShowPic (1);"> imgborder="0"name="B3"src="D: /扑克/backgroud.jpg"height="120"onclick="ShowPic (2);"> /扑克/backgroud.jpg"height="120"onclick="ShowPic(3);"> (二)运算符的显示 用户在计算器区域单击运算符时,对应的运算符应显示在长条形的按钮上。 如下图: 1首先,确定运算符对应的显示。 数组operator中存放了各运算符的字符串形式,代码如下: varoperator=newArray(6); operator[0]="+"; operator[1]="-"; operator[2]="*"; operator[3]="/"; operator[4]="("; operator[5]=")"; 2运算符的即时显示 通过函数ShowFuhao(ind)来显示运算符,该函数有一个参数ind,用于获取运算符的类型。 这里使用的方法和前面显示数字的方法是相同的。 这里将运算符放在数组operator中,并通过indo来控制数组项的下标。 具体代码如下: varindO=0; functionShowFuhao(ind) {if(flag) {fig=operator[ind]; opers[indO]=fig; indO++; jieguo=jieguo+fig; varval=document.form1.B16.value; document.form1.B16.value=(val+fig).substring(fig.length,val.length+fig.length+1);}} 3单击运算符按钮时,调用ShowFuhao(ind)函数 同样也是调用click事件。 具体代码如下: (1);"> (2);"> 六计算表达式的值并反馈结果 当用户输入完表达式,可以单击“计算”按钮对结果进行计算。 这时,游戏回计算表达式的值,并给出反馈。 如下图所示: (一)标准的JavaScript数学表达式 首先,需要定义一个变量表达式jieguo,用于存放数学表达式,为该变量赋初值为空格。 代码如下: varjieguo=""; 在显示数字很运算符的同时,在jieguo中保存数学表达式。 因为最后的计算是对jieguo求值,所以jieguo应该是标准的JavaScript数学表达式,它并不完全等同于在长条按钮上显示的数学表达式。 在用于显示数字的函数showpic()中添加代码 jieguo=jieguo+oper; 在用于显示运算符的函数showfuhao()中添加代码 jieguo=jieguo+oper; 这样就可以在jieguo中保存数学表达式。 (二)对数学表达式的计算以及反馈 在用户单击“计算”按钮后,要对数学表达式进行计算,并对用户给出反馈信息。 1数学表达式进行计算 这里的计算是很容易的。 首先定义了一个变量rs,用于存放计算结果,而计算通过函数eval()完成。 代码如下: varrs; rs=eval(jieguo.toString()); eval()函数是JavaScript中用于计算表达式的值,表达式可以是字符串形式的数学表达式。 2根据计算结果作出反馈 反馈包括2个方面,如下: ·在长条形按钮上显示等号(=)和计算结果。 ·通过警示对话框给出反馈信息,如果结果为24,则反馈“运算成功! ”,否则反馈“错了错了! 再接再厉! ”。 在JavaScript中定义了一个alert方法。 其功能是弹出一个具有“弹出”按钮的对话框,并显示一个已经定义的字符串。 当alert()函数执行时,将弹出一个对话框,同时浏览器对整个HTML文档的解释执行将暂停,只要当访问者单击“确定”按钮后,浏览器才会继续执行HTML文档的后续部分。 反馈实现的代码如下: functiondeal4()//计算 { varrs; if(flag) { rs=eval(jieguo.toString()); val=document.form1.B16.value;document.form1.B16.value=document.form1.B16.value.substring(rs.toString().length+1,34)+"="+rs; if(rs==24) {alert("运算成功! 太棒了! "); stoptime(); deal2();} else{alert("结果错误! 继续加油! ! ! "); document.form1.B16.value=""; jieguo="";} } } 3运算结果的改进 上面代码是将结果与24进行比较。 由于在表达式中可能用到了除法运算,所以结果可能并不是24,而是诸如23.9999999
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- javascript 游戏 程序设计 方案 实现 速算 24