您的位置:首页 > 编程语言

“易语言.飞扬”开发的彩球游戏,作者美女勿近,含源代码

2008-01-24 14:16 344 查看
飞扬彩球 V1.0

九江_美女勿近 2008年1月23日3时
2008年1月24日修正了点击分数区数组出界问题
其中声音及图片来自易语言的例程

美女勿近:“多普达手机上有一个彩球游戏,我用飞扬写了一个试试,请大家多多指教。点击选择,再击消除”。

请到EF论坛下载完整程序和源代码:http://bbs.dywt.com.cn/dispbbs.asp?boardID=148&ID=147131&page=1



(如果图片再仔细处理一下,界面会更美观)

以下是此游戏的核心EF源代码:

/*
飞扬彩球V1.0 九江_美女勿近 2008年1月23日3时
2008年1月24日修正了点击分数区数组出界问题
其中声音及图片来自易语言的例程
*/
引入 用户界面,工具;

公开 类 彩球<基类型=面板>
{
用户界面.窗口场景 彩球场景;
整数[] 数据;
图片组 彩球图片;
位图 位图1;
掩码 掩码1;
逻辑 是否已选择;
整数 得分;
声音 选择声音;
声音 消除声音;

公开 初始化()
{
本对象.宽度=369;
本对象.高度=369+25;
本对象.左边=10;
本对象.顶边=10;
本对象.提高层次();

彩球场景=创建 窗口场景(本对象);
数据=创建 整数[9][9];
彩球图片=创建 图片组;
彩球图片.初始化(39,39,真,15);
位图1=创建 位图;
掩码1=创建 掩码;
选择声音=创建 声音();
消除声音=创建 声音();
选择声音.创建("声音/选中.wav");
消除声音.创建("声音/消除.wav");

计次循环(15,整数 x)
{
位图1.加载("图片/"+(x+1).到文本()+".bmp",位图类型.BMP);//调试时请把更改目录
彩球图片.添加(位图1,颜色.品红());
}
重来();
}

刷新面板()
{
彩球场景.画矩形(0,0,369,369);
计次循环(8, 整数 x)
{
彩球场景.画线(0,x*41+41,369,x*41+41);
彩球场景.画线(x*41+41,0,x*41+41,369);
}

计次循环(9,整数 x)
{
计次循环(9,整数 y)
{
画图片(x,y);
}
}
彩球场景.画矩形(0,370,100,20);
彩球场景.画文本("得分:"+得分.到文本(),0,370);
}

公开 重来()
{
数学运算.置随机数种子();
是否已选择=假;
得分=0;
计次循环(9,整数 x)
{
计次循环(9,整数 y)
{
数据[x][y]=数学运算.取随机数()%7+1;
}
}
刷新面板();

}

处理程序(整数 x,整数 y)
{
x/=41;
y/=41;
if(y>8)
{返回;}
if(数据[x][y]==0)
{返回;}
假如(是否已选择)
{
为 真:
已选择时处理(x,y);
为其他:
未选择时处理(x,y);
}
}

未选择时处理(整数 x,整数 y)
{
选择声音.播放(声音标记.异步);
数据[x][y]+=7;
画图片(x,y);
如果(x>0)
{
如果(数据[x-1][y]==数据[x][y]-7)
{
画图片(x-1,y);
未选择时处理(x-1,y);
}
}
如果(x<8)
{
如果(数据[x+1][y]==数据[x][y]-7)
{
画图片(x+1,y);
未选择时处理(x+1,y);
}
}
如果(y>0)
{
如果(数据[x][y-1]==数据[x][y]-7)
{
画图片(x,y-1);
未选择时处理(x,y-1);
}

}
如果(y<8)
{
如果(数据[x][y+1]==数据[x][y]-7)
{
画图片(x,y+1);
未选择时处理(x,y+1);
}
}
是否已选择=真;
}

已选择时处理(整数 x,整数 y)
{
如果(数据[x][y]>7)
{
如果(取多少被选择(x,y)>1)
{
消除声音.播放(声音标记.异步);
消球();
下落();
右移();
if(是否结束())
{界面程序.信息框("游戏结束!!!");}
}
否则
{
数据[x][y]-=7;
画图片(x,y);
是否已选择=假;
}
}
否则
{
取消选择();
未选择时处理( x, y);
}

}

整数 取多少被选择(整数 x,整数 y)
{
整数 n;
计次循环(9,整数 i)
{
计次循环(9,整数 j)
{
如果(数据[x][y]==数据[i][j])
{n++;}
}
}
返回 n;
}

取消选择()
{
计次循环(9,整数 x)
{
计次循环(9,整数 y)
{
如果(数据[x][y]>7)
{
数据[x][y]-=7;
画图片(x,y);
}
}
}
}

消球()
{
整数 消球个数;
计次循环(9,整数 x)
{
计次循环(9,整数 y)
{
如果(数据[x][y]>7)
{
数据[x][y]=0;
画图片(x,y);
消球个数++;
}
}
}
得分+=消球个数*(消球个数+1);
彩球场景.画矩形(0,370,100,20);
彩球场景.画文本("得分:"+得分.到文本(),0,370);

}

画图片(整数 x,整数 y)
{
如果(数据[x][y]==0)
{
位图1=彩球图片.取图片(14);
彩球场景.画位图(位图1,x*41+1,y*41+1,真);
}
否则
{
位图1=彩球图片.取图片(数据[x][y]-1);
彩球场景.画位图(位图1,x*41+1,y*41+1,真);
}
}

下落()
{
整数 i;
for(整数 x=8;x>=0;x--)
{

for(整数 y=8;y>0;y--)
{

if(数据[x][y]==0)
{
i=y-1;
循环(数据[x][i]==0)
{
i--;
if(i<0)
{跳出;}
}
if(i>=0) //有下落的球
{
数据[x][y]<=>数据[x][i];
画图片(x,y);
画图片(x,i);
}
}
}
}

}

最左边补球()
{
数学运算.置随机数种子();
整数 y=数学运算.取随机数()%9+1;

for(整数 x=8;x>=y;x--)
{
数据[0][x]=数学运算.取随机数()%7+1;
画图片(0,x);
}
}

右移()
{
for(整数 x=8;x>=0;x--)
{
if(是否整列为空(x))
{右移一列(x);}

}
}

右移一列(整数 列号)
{
if(列号==0)
{最左边补球();}
else
{
if(列号-1>=0)
{
if(是否整列为空(列号-1))
{右移一列(列号-1);}
else
{
计次循环(9,整数 x)
{
数据[列号][x]<=>数据[列号-1][x];
画图片(列号,x);
画图片(列号-1,x);
}
}
}
}
}

逻辑 是否整列为空(整数 列)
{
计次循环(9,整数 x)
{
if(数据[列][x]!=0)
{返回 假;}
}
返回 真;
}

逻辑 是否结束()
{
计次循环(9,整数 x)
{
计次循环(9,整数 y)
{
if(数据[x][y]>0)
{
if(x>0)
{
if(数据[x][y]==数据[x-1][y])
{返回 假;}
}
if(x<8)
{
if(数据[x][y]==数据[x+1][y])
{返回 假;}
}
if(y>0)
{
if(数据[x][y]==数据[x][y-1])
{返回 假;}
}
if(y<8)
{
if(数据[x][y]==数据[x][y+1])
{返回 假;}
}
}
}
}
返回 真;
}

公开 事件处理 逻辑 绘画事件(绘画事件 事件)
{
刷新面板();
返回 真;
}

公开 事件处理 逻辑 鼠标左键被放开(鼠标左键被放开 事件)
{
处理程序(事件.横坐标(),事件.纵坐标());
返回 真;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐