用Flash AS3实现经典的黑白棋游戏基本功能

3.0 闻远设计 2024-03-16 23 4 97.81KB 8 页 免费
侵权投诉
Flash AS3 实现经典的黑白棋游戏基本功能
1 、 引言
黑白棋, 又叫反棋 (Reversi) 、 奥赛罗棋 (Othello) 、 苹果棋、 翻转棋。 黑白棋在西方和日本很
流行。 黑白棋的棋盘是一个有 8*8 方格的棋盘。 开始时在棋盘正中有两白两黑 4 个棋子交叉
放置, 黑棋总是先下子。 游戏通过相互翻转对方的棋子(当自己放下的棋子在横 、 竖 、 斜 8
个方向 扔幸桓鲎约旱钠遄樱 则被夹在中间的全部翻转会成为自己的棋子), 如果玩家在� �
棋盘上没有地方可以下子, 则该玩家对手可以连下。 最后以棋盘上谁的棋子多来判断胜负。
本文使用 Flash AS3 开发黑白棋游戏程序。 该游戏具有显示执棋方可以落棋子的位置提示功能
和判断胜负功能。 在游戏过程中, 点击 帮助 按钮则显示执棋方可落子位置 (图片 表示可
落子位置)。 游戏运行界面如图 1 所示。
2 、 黑白棋游戏设计思路
2.1 棋子和棋盘
游戏开发时, 需要事先准备黑白两色棋子 (如图 2 所示)和棋盘图片, 这里设计棋子影片剪
辑使用图 2 4 张图, 黑白两色棋子各一帧, 图片 (表示可落子位置) 第 3 帧, 游戏背景方
格是第 4 帧。 游戏最初显示时, 棋盘上布满所有 64 个棋子影片剪辑 (播放到第 4 帧), 游
戏过程中根据需要每个棋子影片剪辑播放不同帧。 棋盘在设计时直接放在 Fla 文件的舞台上。
这里为了便于处理, 采用一个 qizi 二维数组用来存储棋盘上棋子状态, 一个 qipan 一维数组用
来存储棋子影片。
2.2 翻转对方的棋子
需要从自己落子 (x1 y1) 为中心的横、 竖、 斜 8 个方向上判断是否需要翻转对方的棋子, 程
序中由棋子影片剪辑 qi MouseEvent.CLICK 事件实现的。 在 MouseEvent.CLICK 事件中参数
event 对象含有被单击对象信息。 event.target 可以获取被单击棋子影片剪辑对象 thisQi
剪辑对象 thisQi 位置像素信息 (thisQi.x thisQi.y ) 转换成棋盘坐标 (x1 y1) 。 从左, 左
上、 上、 右上、 右、 右下、 下、左下 8 个方向上调用过程 DirectReverse (x1, y1, dx, dy) 翻转
对方的棋子。 而具体棋子的翻转由 FanQi (x, y) 实现。 FanQi (x,y) 修改数组 qizi (x, y) 处保
存棋盘上的棋子信息, 同时播放到指定帧。
private function FanQi(x, y:int):void {
if (qizi[x][y] == BLACK) {
qizi[x][y] = WHITE;
qipan[8 * x + y].gotoAndStop(WHITE);
// 显示 WHITE 棋子图形
} else {
qizi[x][y] = BLACK;
qipan[8 * x + y].gotoAndStop(BLACK);
// 显示 BLACK 棋子图形
}
2.3 显示执棋方可落子位置
Can_go ( x1 y1) 左、左上、上、右上、右、右下、、左8 个方向上调用函数
CheckDirect (x1, y1, dx, dy) 判断某方向上是否形成夹击之势, 如果形成且中间无空子则返回
True , 表示 (x1 y1) 可以落子。 (x1 y1) 处可以落子则用图片显示。
2.4 判断胜负功能
qizi 二维数组保存棋盘上的棋子信息 , 其中元素保存 1 ,表示此处为黑子; 元素保存 2 , 表示
此处为白子; 元素保存 0 ,表示此处为无棋子。 通过对 qizi 数组中各方棋子数统计, 在棋盘
无处可下时, 根据各方棋子数判断出输赢。
3 、 设计步骤
3.1 创建 Flash 文件
打开 Flash CS6 ” → “ 软件后, 选择 文件 新建 选项,系统将弹出 新建文档 窗口, 在窗口
中选择 ActionScript3.0” 选项。
3.1.1 设置文档属性
选择菜单 修改 再选择 文档 选项, 调出 文档属性 对话框。 设置场景的尺寸为
720*780 像素, 背景颜色为浅绿色, 后单击 按钮。 在属性面设置文档Main
3.1.2 设计棋子影片剪辑元件
” → “ 选择菜单 插入 新建元件 。 在新弹出的 新建元件 窗口中, 将元件名称设置为 棋
, 将元件类型设置为 影片剪辑 , 单击 按钮后 , Flash 界面将转为 棋子 元件
导入2 所示 4 图, 注意大小 80*80
3.2 设计游戏文档Main.as
” → “ 选择 文件 新建 选项, 系统将弹出 新建文档 窗口。 在窗口中选择 ActionScript 文件
选项。 这Flash 中新建一个 ActionScript 文件, 将其命名Main.as 导入包及
类:
package {
import flash.display.*;
import flash.events.*;
import flash.text.*;
import flash.utils.Timer;
员变量义:
public class Main extends MovieClip {
//常量
private static const BLACK:int = 1;
private static const WHITE:int = 2;
private static const KONG:int = 0;
private var qizi:Array =new Array();//构造一个二维
//数组用来存储棋子状态
private var qipan:Array =new Array();//构造一个一
//维数组用来存储棋子影片
private var curQizi :int = BLACK;// 前走棋方
var hitTimer:Timer=new Timer(1000);//计时,定时
//清除提示图形
构造函数对保存棋盘上的棋子信息的 qizi 数组初始, 实例化所有棋子影片对象。 同时在棋
盘上显示初始的 4 个棋子。
public function Main():void {
//构造函数
var i,j:int;
for (i=0; i<8; i++) {
qizi[i]=new Array();
for (j=0; j<8; j++) {
qizi[i][j]=KONG;
var qi:Qi=new Qi();//棋子实
qi.y=80*j+42;//定位置
qi.x=80*i+42;
qi.gotoAndStop(4);//显示棋子图形
qipan.push(qi);
qi.addEventListener(MouseEvent.CLICK,clickQi);
addChild(qi);//到显示
}
}
// 棋盘上初始 4 个棋子
qizi[3][3] = WHITE;
qipan[8 * 3 + 3].gotoAndStop(2);//显示白色棋子图形
qizi[4][4] = WHITE;
qipan[8 * 4 + 4].gotoAndStop(2);//显示白色棋子图形
qizi[3][4] = BLACK;
qipan[8 * 3 + 4].gotoAndStop(1);//显示黑色棋子图形
qizi[4][3] = BLACK;
qipan[8 * 4 + 3].gotoAndStop(1);//显示黑色棋子图形
help_btn.addEventListener (MouseEvent.
CLICK,clickHelp);
message_txt.text="该黑棋";
}
构造函数同时对所有的棋子影片对象和 帮助 按钮添加鼠标单击事件的侦听。 如果是
help_btn 按钮被单击, 则执行 clickHelp 函数显示可以落子的位置提示。
public function clickHelp(event:MouseEvent) {
showCanPosition();//显示可以落子的位置
}
摘要:

用FlashAS3实现经典的黑白棋游戏基本功能1、引言黑白棋,又叫反棋(Reversi)、奥赛罗棋(Othello)、苹果棋、翻转棋。黑白棋在西方和日本很流行。黑白棋的棋盘是一个有8*8方格的棋盘。开始时在棋盘正中有两白两黑4个棋子交叉放置,黑棋总是先下子。游戏通过相互翻转对方的棋子(当自己放下的棋子在横、竖、斜8个方向扔幸桓鲎约旱钠遄樱则被夹在中间的全部翻转会成为自己的棋子),如果玩家在��棋盘上没有地方可以下子,则该玩家对手可以连下。最后以棋盘上谁的棋子多来判断胜负。本文使用FlashAS3开发黑白棋游戏程序。该游戏具有显示执棋方可以落棋子的位置提示功能“”和判断胜负功能。在游戏过程中,点...

展开>> 收起<<
用Flash AS3实现经典的黑白棋游戏基本功能.docx

共8页,预览3页

还剩页未读, 继续阅读

作者:闻远设计 分类:其它行业资料 价格:免费 属性:8 页 大小:97.81KB 格式:DOCX 时间:2024-03-16

开通VIP享超值会员特权

  • 多端同步记录
  • 高速下载文档
  • 免费文档工具
  • 分享文档赚钱
  • 每日登录抽奖
  • 优质衍生服务
/ 8
客服
关注