2012/11/18 | 周易六十四卦的速查
类别(Flash游戏教程) | 评论(0) | 阅读(322) | 发表于 15:38

 周易是个很深的话题,用来和文艺女青年们调侃或是打发一些单调的时间都是不错的选择。64卦的各个卦相与编号并没有一种简单的换算关系,因此需要通过软件来实现快速查找。

软件界面如上图所示,点击设置每一个“艾”(音),可以立刻得到相应的卦号和卦名。

两个关键类:Bar 和 BarGroup

 

package 

{

import flash.display.MovieClip;

import flash.events.MouseEvent;

import flash.events.Event;

 

public class Bar

{

public var box:MovieClip;

public var val:Number;

 

public function Bar( box:MovieClip)

{

// constructor code

this.box = box;

this.box.gotoAndStop(1);

this.box.addEventListener( MouseEvent.CLICK, onChange);

val = 1;

}

function onChange(evt:MouseEvent)

{

//change apperence of bar

if ( val == 1 )

{

box.gotoAndStop( 2);

val = 0;

}

else

{

box.gotoAndStop( 1);

val = 1;

}

}

}

}

 

 

package 

{

import flash.events.MouseEvent;

import flash.display.MovieClip;

import Bar;

import flash.text.TextField;

 

public class BarGroup

{

public var dataList:Array;

public var barArr:Array;

public var ansBox:TextField;

public var eight:Array;

public var ansArr:Array;

 

public function BarGroup(dArr:Array,bArr:Array,aTxt:TextField,eight:Array,ansArr:Array)

{

// constructor code

dataList = dArr;

barArr = bArr;

ansBox = aTxt;

this.eight = eight;

this.ansArr = ansArr;

 

var n:Number = barArr.length;

for (var i =0; i< n; i++)

{

barArr[i].box.addEventListener(MouseEvent.CLICK, onSearch);

}

onSearch(null);

}

 

public function onSearch(evt:MouseEvent)

{

var row = barArr[2].val * 4 + barArr[1].val * 2 + barArr[0].val;

var col = barArr[5].val * 4 + barArr[4].val * 2 + barArr[3].val;

 

var s:String = eight[col] + "下" + eight[row] + "上\n";

trace( col, row,dataList[row][col] );

s +=  ansArr[dataList[col][row] - 1];

 

ansBox.text = s;

 

trace( ansBox.text);

}

}

}

 

主场景上的代码

//按照二近制的顺序以行列排列,将各种组合下的卦相编号用二维数组来记录。

 

var dataArr:Array = [[2,23,8,20,16,35,45,12],

[15,52,39,53,62,56,31,33],

[7,4,29,59,40,64,47,6],

[46,18,48,57,32,50,28,44],

[24,27,3,42,51,21,17,25],

[36,22,63,37,55,30,49,13],

[19,41,60,61,54,38,58,10],

[11,26,5,9,34,14,43,1]];

//       坤  艮  坎  巽  震  离  兑  乾

//横向 000 001 010 011 100 101 110 111

//纵向  000 001 010 011 100 101 110 111

//二近制表示八个基础卦相,从上往下看,类似于个十百位(居上的数在二进制表示中处低位)。

var eightBar = ["坤","艮","坎","巽","震","离","兑","乾"];

//一维数据中记录卦相的内容,通过索引号来引用具体内容。

var ansData =["卦一 乾  乾为天 ",

"卦二  坤  坤为地 ",

"卦三  屯  水雷屯 ",

"卦四  蒙  山水蒙 ",

"卦五  需  水天需 ",

"卦六  讼  天水讼 ",

"卦七  师  地水师 ",

"卦八  比  水地比 ",

"卦九  小畜  风天小畜 ",

"卦十  履  天泽履 ",

"卦十一  泰  地天泰 ",

"卦十二  否  天地否 ",

"卦十三  同人  天火同人 ",

"卦十四  大有  火天大有 ",

"卦十五  谦  地山谦 ",

"卦十六  豫  雷地豫 ",

"卦十七  随  泽雷随 ",

"卦十八  蛊  山风蛊 ",

"卦十九  临  地泽临 ",

"卦二十  观  风地观 ",

"卦二十一  噬嗑  火雷噬嗑 ",

"卦二十二  贲  山火贲 ",

"卦二十三  剥  山地剥 ",

"卦二十四  复  地雷复 ",

"卦二十五  无妄  天雷无妄 ",

"卦二十六  大畜  山天大畜 ",

"卦二十七  颐  山雷颐 ",

"卦二十八  大过  泽风大过 ",

"卦二十九  坎  坎为水 ",

"卦三十  离  离为火 ",

"卦三十一  咸  泽山咸 ",

"卦三十二  恒  雷风恒 ",

"卦三十三  遯  天山遁 ",

"卦三十四  大壮  雷天大壮 ",

"卦三十五  晋  火地晋 ",

"卦三十六  明夷  地火明夷 ",

"卦三十七  家人  风火家人 ",

"卦三十八  睽  火泽睽 ",

"卦三十九  蹇  水山蹇 ",

"卦四十  解  雷水解 ",

"卦四十一  损  山泽损 ",

"卦四十二  益  风雷益 ",

"卦四十三  夬  泽天夬 ",

"卦四十四  姤  天风姤 ",

"卦四十五  萃  泽地萃 ",

"卦四十六  升  地风升 ",

"卦四十七  困  泽水困 ",

"卦四十八  井  水风井 ",

"卦四十九  革  泽火革 ",

"卦五十  鼎  火风鼎 ",

"卦五十一  震  震为雷 ",

"卦五十二  艮  艮为山 ",

"卦五十三  渐  风山渐 ",

"卦五十四  归妹  雷泽归妹 ",

"卦五十五  丰  雷火丰 ",

"卦五十六  旅  火山旅 ",

"卦五十七  巽  巽为风 ",

"卦五十八  兑  兑为泽 ",

"卦五十九  涣  风水涣 ",

"卦六十  节  水泽节 ",

"卦六十一  中孚  风泽中孚 ",

"卦六十二  小过  雷山小过 ",

"卦六十三  既济  水火既济 ",

"卦六十四  未济  火水未济 "];

 

var barArr = new Array();

for (var i=0; i<6; i++)

{

var bar = new Bar(this["mc"+ i]);

bar.box.gotoAndStop(1);

barArr.push( bar);

}

var barBroup = new BarGroup(dataArr,barArr,ansText,eightBar,ansData);

 

 

0

评论Comments