关于AS3.0 五子棋悔棋功能和五子棋复盘功能的实现

      最近在用Flash AS3.0做一个五子棋的游戏,今天来跟大家分享我实现五子棋悔棋和复盘的方式。

    1 悔棋功能

首先我用MovieClip实现落子的功能,代码如下:

/**********
函数名:whchess
功能:生成白棋
参数:x(x坐标) y(y坐标)
引用外部变量:mc(存储棋子)
返回值:无
**********/
function whchess(x:uint,y:uint):void{
	var mc1:MovieClip = new MovieClip();
	var whc:whitechess = new whitechess();
	mc1.x = x-15;
	mc1.y = y-15;
	mc1.addChild(whc);
	mc.addChild(mc1);
}
 其中whitechess类型是棋子图片对象,mc1和mc是MovieClip对象,x,y是棋子的坐标。我将所有棋子对象都装入一个总MovieClip中。
接下来是我实现悔棋的代码:
/**********
设置悔棋按钮属性
**********/
var back:Button = new Button();
back.label = "back";
back.setSize(120,40);
back.move(520,300);
back.setStyle("textFormat",textformat);
back.useHandCursor = true;
this.addChild(back);

/**********
为悔棋按钮添加鼠标点击事件
**********/
back.addEventListener(MouseEvent.CLICK,Toback);


/**********
函数名:Toback
功能:实现悔棋功能
参数:mouse(MouseEvent类型)
引用外部变量:size mc steps map step_x step_y enable theWin
返回值:无
**********/
function Toback(mouse:MouseEvent):void{
	if(steps > 0){
		mc.removeChildAt(--steps);
		size = (map[step_x[steps]][step_y[steps]] == 1) ? -1 : 1;
		map[step_x[steps]][step_y[steps]] = 0;
		step_x[steps] = 0;
		step_y[steps] = 0;
		enable =true;
		theWin.text = "";
		if(size == 1){
			bl_chess.visible = false;
			wh_chess.visible = true;
		}else{
			bl_chess.visible = true;
			wh_chess.visible = false;
		}
	}
}
首先设置悔棋按钮back的属性:大小(120,40)  坐标(520,300),接下来添加鼠标点击事件Toback(); 在鼠标点击事件中我用到了removeChildAt()函数实现对mc中的Child的索引移除,其中steps是记录棋子步骤的变量,size决定当前落子的颜色,step_x和step_y数组记录棋盘上棋子的坐标。


2 复盘功能
复盘功能我没有使用文件操作,我使用了SharedObject类型变量,SharedObject类型相当于网页中的Cookie,被誉为“超级Cookie” 它的功能和Cookie相同,下面是我的代码:
var chess_style:SharedObject = SharedObject.getLocal("chess");//保存棋局

var stay:Button = new Button();
stay.label="stay";
stay.setSize(120,40);
stay.move(520,360);
stay.setStyle("textFormat",textformat);
stay.useHandCursor = true;
this.addChild(stay);

/**********
为保存按钮添加鼠标点击事件
**********/
stay.addEventListener(MouseEvent.CLICK,Stay);

function Stay(mouse:MouseEvent):void{
	this.addChild(bground);
	chess_style.clear();
	if(size != 0){
		chess_style.data.step_x = new Array();
		chess_style.data.step_y = new Array();
		chess_style.data.map = new Array();
		for(var i=0;i
首先定义SharedObject对象将数据保存为“chess”,然后将chess_style.data.step_x和chess_style.data.step_y定位数组,依次将step_x和step_y中的数据记录到SharedObject的数组中并记录bl_name(黑子用户名) wh_name(白子用户名) steps(步骤总数) 用flush保存。
显示代码如下:
/**********
为显示棋局添加鼠标点击事件
**********/
show_chess.addEventListener(MouseEvent.CLICK,Show);

function Show(mouse:MouseEvent):void{
	this.addChild(bground);
	if(size == 0 && chess_style.data.whname != undefined){
		for(var i=0;i
用遍历数组的方式将SharedObject中的数据返回给step_x和step_y并将其他数据返还。





你可能感兴趣的:(AS3.0,as3.0,五子棋)