论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash AS编程教程
Tag:2.0,3.0菜鸟,游戏,,cs,技巧,源码,,文本,文字,函数,音乐,随机,拖拽,asp,access,xml,mc,视频教程

单身贵族游戏的制作

文章类别:Flash AS编程 | 发表日期:2008-10-6 18:13:19


  请先看演示:  

  千禧夜那天,和MM在黄鹤楼看完礼花,为了迎接新千年的第一缕曙光,就去北京路的玩具吧打发时间,看到乐这个玩具。在玩具吧里,“单身贵族”是设奖的项目,你可以试一试。:)。BTW,有朋友说它也叫做“独立棋”。

游戏方法

  “单身贵族”的基本走法和跳棋类似,只能隔着一颗珠子走到前方的空格中,所不同的是作为“桥”被跳过的珠子要被拿掉。珠子沿前后左右方向跳动,但是不能斜着跳。

  灰色是珠子,绿色是棋盘和棋盘上的凹洞,鼠标点击某颗珠子时,珠子会被选中成红色,第二次点击珠子跳动的目的凹洞,你会看到珠子出现在凹洞中,同时,中间被跳过的珠子消失。屏幕右下脚的“RESET”按钮,可以重新开始游戏。

有多种玩法:

玩法1:一次走一步,不能连跳,将最后一颗珠子留在棋盘的中间。(见右图)
玩法2:一次走一步,不能连跳,将最后一颗珠子留在棋盘的任意一处。
玩法3:可以在直线上连跳,最后用18步,将最后一颗珠子留在棋盘的中间。

请到这里下载原始代码

制作过程

  1.建立symbol,ball,movieclip

  ball是movieclip,有两个主要的frame。frame 1显示ball的初始状态,frame checked显示被选中的状态,checked是frame的label哟。

  2.建立symbol,hole,button

  hole是按钮button,在over frame上加乐个黄圈作为指示。

  3.建立symbol,reset,button

  reset按钮就是flash lib中的ping pong按钮乐。

  4.建立symbol,title,movieclip

  用mask作的光sao扫过字的效果,类似的做法在“闪光地带”有介绍。

  5.建立ball array,Instance名称如下表,背景为绿色的是在FLA文件中有效的Instance :

b_1_1 b_1_2 b_1_3 b_1_4 b_1_5 b_1_6 b_1_7
b_2_1 b_2_2 b_2_3 b_2_4 b_2_5 b_2_6 b_2_7
b_3_1 b_3_2 b_3_3 b_3_4 b_3_5 b_3_6 b_3_7
b_4_1 b_4_2 b_4_3 b_4_4 b_4_5 b_4_6 b_4_7
b_5_1 b_5_2 b_5_3 b_5_4 b_5_5 b_5_6 b_5_7
b_6_1 b_6_2 b_6_3 b_6_4 b_6_5 b_6_6 b_6_7
b_7_1 b_7_2 b_7_3 b_7_4 b_7_5 b_7_6 b_7_7
Instance表

  6.建立hole array,在每个hole中设置action如下,因为每个hole所代表的坐标需要单独设置,所以需要为每个hole的action作修改。所修改的部分在下面的代码中以红色问号 ? 表示,其相应的数字在凹洞坐标表中体现。格式为:cur_i , cur_j。//表示讲解的部分。

On (Release)
  Set Variable: "cur_i" = ?
  Set Variable: "cur_j" = ?
  If (not ball_checked)
        //ball_checked表示是否有珠子被选中,此条件表示“如果没有珠子被选中”
	If (GetProperty ("b_"&cur_i&"_"&cur_j,_visible ))
	   //如果当前凹洞中的珠子可见,则选中此珠
	   Set Variable: "check_i" = cur_i
	   Set Variable: "check_j" = cur_j
	   Set Variable: "ball_checked" = true
	   Begin Tell Target ("b_"&cur_i&"_"&cur_j)
	     Go to and Stop ("checked")        //珠子变成红色 
	  End Tell Target
	End If
  Else
    //不论第二次选择的凹洞里是什么都作个初始化,这样如果所选的凹洞
	不符合条件,就会取消上次所选的珠子
	Set Variable: "ball_checked" = false
	Begin Tell Target ("b_"&check_i&"_"&check_j)
	  Go to and Stop (1)
	End Tell Target
	If (not GetProperty ("b_"&cur_i&"_"&cur_j,_visible ))
	//如果当前凹洞中的珠子不可见,即此凹洞为空
	  If ((((((check_i - cur_i) = 2)
	    or ((check_i - cur_i) = -2) )
	  and (check_j = cur_j) )
	    or ((((check_j - cur_j) = 2)
	  or ((check_j - cur_j) = -2))
	    and (check_i = cur_i)))
		and (GetProperty (
		"b_"&((check_i + cur_i) /2 )&"_"&((check_j + cur_j) /2 ),_visible )))
	//判断是否直线跳动,并且中间的珠子可见
	  Set Property ("b_"&check_i&"_"&check_j,Visibility) = false
	  Set Variable: "check_i" = (check_i + cur_i)/2
	  Set Variable: "check_j" = (check_j +  cur_j)/2
	  Set Property ("b_"&check_i&"_"&check_j,  Visibility) = false
	  Set Property ("b_"&cur_i&"_"&cur_j, Visibility) = true
	End If
  End If
End If
End On 
1,1 1,2 1,3 1,4 1,5 1,6 1,7
2,1 2,2 2,3 2,4 2,5 2,6 2,7
3,1 3,2 3,3 3,4 3,5 3,6 3,7
4,1 4,2 4,3 4,4 4,5 4,6 4,7
5,1 5,2 5,3 5,4 5,5 5,6 5,7
6,1 6,2 6,3 6,4 6,5 6,6 6,7
7,1 7,2 7,3 7,4 7,5 7,6 7,7

凹洞坐标表

  在这段代码中,对于每个凹洞,除了前两行的:

Set Variable: "cur_i" = ?
Set Variable: "cur_j" = ?

  后面的大段代码都是不变的,所以最好做成一个过程调用。在flash 中可以用:

Call (“frame label”)

  来模拟,具体的做法是:在某一层创建一个空 key frame ,然后在时间线上双击它,在它的action中加入相应的代码,填上其label,例如:BallClicked ,然后在其他按钮的action中使用:

Call (“BallCilcked”)

  就行乐。:)。我因为作完后,才知道如此模拟过程,够衰是吧,:(,所以...等到下一版(动画版)时再说乐。:)

  6.reset按钮的action,值得注意一点的就是双重循环。

On (Release)
  Set Variable: "i" = 1
  Loop While (i <= 7)
    Set Variable: "j" = 1
	Loop While (j <= 7)
	  Set Property ("b_"&i&"_"&j, Visibility) = true
	  Begin Tell Target ("b_"&i&"_"&j)
	    Go to and Stop (1)
	  End Tell Target
	  Set Variable: "j" = j + 1
	End Loop
	Set Variable: "i" = i + 1
  End Loop
  Set Property ("b_4_4", Visibility) = false
Set Variable: "ball_checked" = false
End On

  7.起始frame的初始化action,也可以使用reset按钮的action。

Set Property ("b_4_4", Visibility) = false
Set Variable: "ball_checked" = false

  8.棋盘背景就没什么好说乐。还有什么吗?

游戏解法

  如果你有什么心得,分享一下好吗?来信请到:iasc@263.net

(完)

视频教程列表
文章教程搜索
 
Flash AS推荐教程
Flash AS热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058