本页面由 Flash 保存计划 从 Internet Archive 存档还原 · 快照 2006-07-08 · 原址 http://www.flash8.net/teach/4645.htm ← Flash 保存计划

《历史飞行棋》游戏设计 游戏设计(一)

作者:云中漫步   类型:闪吧BBS   来源:闪吧

  游戏界面:

游戏规则:
1、玩家通过掷筛子掷出的点数大小来控制主角在地图中前进的步数,当玩家到达终点则游戏结束。
2、你将与两家聪明的电脑玩家同场竞技。(ai设定)
3、玩家点击右下角两个筛子掷筛,停止后可选择任意一个筛子的大小值作为角色前进的步数。
4、电脑和玩家轮流掷筛,轮到任意一方时将会有闪烁提示。并能够体现电脑的操作过程。
5、地图内设各种事件格,如:前进,后退,暂停等,将对棋子前进造成2次变化。(不会存在2次以上的变化)
6、如果两个棋子走到同1格停止,则后来的将会把原来的弹回出发点。
7、地图中设定练习格,当玩家的棋子走到该格子时将要完成练习题方能继续,该格的练习同时也消失,做对给10分,错误扣10分。(玩家的基础分为100分,同一次格内的练习只能做1次)
游戏分数:
玩家试题得分=(100+正确试题个数*10-错误试题个数*10)
玩家时间得分=int(100/到达终点分钟数)
最终分数=(玩家试题得分+玩家时间得分)*名次系数
第1名名次系数:1.5
第2名名次系数:1.2
第3名名次系数:1.0
游戏开发模块:
1、角色与筛子控制模块程序
2、电脑AI模块
3、地图生成模块
4、试题练习模块
5、评价模块
游戏主要代码:
这里我固定了c1表示玩家,c2,c3表示电脑
1.建立地图格子,为避免出现死循环,按照一定的顺序和规则进行.
function createmap() {
 //初始化格子信息
 for (var i = 1; i<=titleMaxnum; i++) {
  eval("t"+i).types = 1;
 }
 //生成前进和后退格,从第4格开始,每隔4格随机产生一个
 for (var i = 4; i<=titleMaxnum; i += 4) {
  var trnd = int(Math.random()*5)+1;
  eval("t"+i).gotoAndStop(trnd);
  eval("t"+i).types = trnd;
 }
 //生成暂停格 
 trace(getEmptyTitle().length);
 var pausenum = 8;
 var t_array = getEmptyTitle();
 var pause_d = int(t_array.length/pausenum);
 for (var i = pause_d-1; i<=t_array.length-1; i += pause_d) {
  t_array[i].gotoAndStop(6);
  t_array[i].types = 6;
 }
 //生成返回起点格
 trace(getEmptyTitle().length);
 var backnum = 3;
 var t_array = getEmptyTitle();
 var pause_d = int(t_array.length/backnum);
 for (var i = pause_d-1; i<=t_array.length-1; i += pause_d) {
  t_array[i].gotoAndStop(8);
  t_array[i].types = 8;
 }
 //生成时空隧道格
 trace(getEmptyTitle().length);
 var spacenum = 6;
 var t_array = getEmptyTitle();
 var pause_d = int(t_array.length/spacenum);
 for (var i = pause_d-1; i<=t_array.length-1; i += pause_d) {
  t_array[i].gotoAndStop(7);
  t_array[i].types = 7;
 }
 //生成练习格
 var testnum = 10;
 var t_array = getEmptyTitle();
 var pause_d = int(t_array.length/testnum);
 for (var i = pause_d-1; i<=t_array.length-1; i += pause_d) {
  t_array[i].gotoAndStop(9);
  t_array[i].types = 9;
 }
}
2.获取空格信息,并返回数组
function getEmptyTitle() {
 var t_array = [];
 for (var i = 1; i<=titleMaxnum; i++) {
  if (eval("t"+i).types == 1) {
   t_array.push(eval("t"+i));
  }
 }
 return t_array;
}
3.控制筛子,随机扔,b1和b2为两个mc,里面共6帧
function throwPoint() {
 trace("事件:玩家"+curplayer+"出筛子");
 curflag = false;
 b1.play();
 b2.play();
 throwid = setInterval(function () {
  var b1_num = int(Math.random()*6)+1;
  var b2_num = int(Math.random()*6)+1;
  b1.gotoAndStop(b1_num);
  b2.gotoAndStop(b2_num);
  b1.values = b1_num;
  b2.values = b2_num;
  trace("第1个筛子的大小为:"+b1.values);
  trace("第2个筛子的大小为:"+b2.values);
  //throw_btn._visible = 1;
  curflag = true;
  //电脑执行移动
  if (curplayer<>1) {
   comai();
  }
  clearInterval(throwid);
 }, 2000);
}
4.玩家轮流制控制
function nextplayer() {
 if (c1.overflag) {
  trace("游戏结束");
  return;
 }
 //下一个玩家执行 
 if (curplayer == 3) {
  curplayer = 1;
  if (!this["c"+curplayer].overflag) {
   if (!this["c"+curplayer].stopflag) {
    flashcast(this["c"+curplayer], true);
    throw_btn._visible = 1;
   } else {
    this["c"+curplayer].stopflag = false;
    nextplayer();
   }
  } else {
   nextplayer();
  }
 } else {
  curplayer++;
  if (!this["c"+curplayer].overflag) {
   if (!this["c"+curplayer].stopflag) {
    flashcast(this["c"+curplayer], true);
    throwPoint();
   } else {
    this["c"+curplayer].stopflag = false;
    nextplayer();
   }
  } else {
   nextplayer();
  }
 }
   责任编辑:uufeng    时间:2005年11月23日

正在加载评论...