2024年2月28日发(作者:)
App Inventor随机九宫格拼图的实现
1 基本概念
1.1 App Inventor
App Inventor原是Google实验室的一个子计划,是一个完全在线开发的Android编程环境,使用积木式堆叠法完成Android程序。
App Inventor主要特点有:不需太多编程基础;积木式拼接程序;网络作业;语法错误少;调试容易;支持乐高机器人;文件体积大;发布繁琐。
1.2 九宫格拼图
九宫格拼图是一款益智类游戏,将一副完整图片等分成3行3列,形成九个大小相同的格子,每个格子显示完整图片的1/9,9个格子形成一副完整图片。游戏开始前,传统做法是将右下角的格子内容腾空出来,作为移动其他格子内容的空间,其余8个格子则按乱序出现,玩家利用这个空格子移动被点击的相邻拼图图块,最终恢复完整图片。
2 App Inventor随机九宫格拼图实现方案
2.1 传统九宫格拼图存在的问题
传统九宫格拼图的实现都是利用右下角的格子作为空格子,游戏前后空格子都是出现在右下角,游戏比较固化。
2.2 随机九宫格拼图实现目的
随机生成空格子位置和其他拼图模块位置,游戏前后保持空格子位置不变,使得游戏更为有趣、多样化。
2.3 随机九宫格拼图实现
第 1 页
(1)全局变量的定义
SPos=3,记录随机生成的空格子位置(取值范围1~9);Temp=1,保存生成的随机数(取值范围1~9);SX=100、SY=100,保存默认空格子X坐标、Y坐标;PList,保存随机生成的8个不重复序号;Text="",对应的图片资源;Dis=0,两点间的距离;CTCon=1、CTPos=1保存清单中需要与随机空格子交换的内容和位置;VarX=0、VarY=0,保存被点击图块格子的X、Y坐标。
(2)根据随机生成的序号清单(如241783695),定义一个名为mText的方法将对应编号构成一个实际完整的图片名称来初始化9张图片资源。
String mText(int num){
Text="pic"+select list item(PList,num)+".png"; return Text; }
(3)定义一个名为InitImage的方法根据图片名称初始化与序号清单对应的图块。如序号清单为241783695,那么ImageSprite1对应图片是,ImageSprite2对应图片是,如此类推。
void InitImage(){
for(int i=1;i<=9;i++){ e=mText(i); } }
(4)定义一个名为setSpace的方法设置空格子。
void setSpace(int var){ e=""; }
(5)定义一个名为SXY的方法计算和保存随机空格子的位置。
void SXY(){ SX=(SPos-1)%3*50; SY=floor((SPos-1)/3)*50; }
(6)定义一个名为d的方法计算图块与空格子的距离。
int d(int x,int y){ Dis=sqrt((x?SX)*(x?SX)+(y?SY)*第 2 页
(y?SY)); }
(7)单击开始按钮,先将九张50*50的图块按顺序依次摆放;然后清空PList,随机生成空格子位置和PList序列清单;接着将序号清单中内容与随机空格子位置相同的内容与空格子位置的内容交换(如序号清单241783695,随机空格子位置为5,将位置5对应的内容8与内容5交换,序列清单变为241753698,随机空格子位置与内容相同,游戏前后空格子位置不变);最后初始化图块和空格子,记录空格子坐标。事件:,事件处理:
if(not(is list empty?(PList))){
for(int i=1;i<=length of list(PList);i++){
remove list item(PList,1); } }
SPos=random integer(1,9);
While(length of list(PList)!=9){
Temp=random integer(1,9);
if(not(is in list?(Temp,PList))){
add items to list(Temp,PList); } }
CTCon=select list item(PList,SPos);
if(SPos!=CTCon){
CTPos=position in list(SPos,PList);
replace list item(PList,SPos,SPos);
replace list item(PList,CTPos,CTCon); }
InitialImage(); setSpace(SPos); SXY();
第 3 页
(8)点击图块,判断图块与空格子是否相邻,若是,交换空格子和被点击图块的位置。
for(int i=1;i<=9;i++){
if(d(ImageSpritei.X,ImageSpritei.Y)==50){
VarX=ImageSpritei.X; VarY=ImageSpritei.Y;
(SX,SY);
SX=VarX; SY=VarY; } }
(9)至此方案完成,运行效果如图1。点击开始按钮,运行效果如图2。
图1 运行
图2 开始
3 结束语
本文对传统九宫格拼图进行改进,使用App Inventor开发随机九宫格拼图游戏,实现空格子随机出现的目的,实践结果表明算法有效可行。
希望以上资料对你有所帮助,附励志名言3条::
1、世事忙忙如水流,休将名利挂心头。粗茶淡饭随缘过,富贵荣华莫强求。
2、“我欲”是贫穷的标志。事能常足,心常惬,人到无求品自高。
3、人生至恶是善谈人过;人生至愚恶闻己过。
第 4 页
发布者:admin,转转请注明出处:http://www.yc00.com/news/1709119579a1603951.html
评论列表(0条)