[Android]自己动手做个拼图游戏

目标

在做这个游戏之前,我们先定一些小目标列出来,一个一个的解决,这样,一个小游戏就不知不觉的完成啦。我们的目标如下:
1. 游戏全屏,将图片拉伸成屏幕大小,并将其切成若干块。
2. 将拼图块随机打乱,并保证其能有解。
3. 在屏幕上留出一个空白块,当点空白块旁边的块,将这块移动到空白块。
4. 判断是否已经拼好。
动图

实现目标

1.将图片拉伸成屏幕大小,并将其切成若干块。

想拉伸成屏幕大小,首先要知道屏幕的大小,Android获得屏幕大小的代码如下:

DisplayMetrics metrics =new DisplayMetrics();
getWindowManager().getDefaultDisplay().getRealMetrics(metrics);//sdk17+
int screenWidth = metrics.widthPixels;//屏幕宽
int screenHeight = metrics.heightPixels;//屏幕高

将图片拉伸到屏幕大小

Bitmap back=Bitmap.createScaledBitmap(bitmap,
MainActivity.getScreenWidth(),
MainActivity.getScreenHeight(),
true);

将图片切成若干块

 private final int COL=3;//列,默认3列
 private final int ROW=3;//行,默认3行
 int tileWidth=back.getWidth()/COL;//每一块的宽
 int tileHeight=back.getHeight()/ROW;//每一块的高
 Bitmap[] bitmapTiles =new Bitmap[COL*ROW];
 int idx=0;
 for(int i=0;i<ROW;i++)
 {
     for(int j=0;j<COL;j++)
     {
         bitmapTiles[idx++]=Bitmap.createBitmap(back,
         j*tileWidth,
         i*tileHeight,
        tileWidth,tileHeight);
     }
 }

2. 将拼图块随机打乱,并保证其能有解。

这个问题应该是这个小游戏的核心了,有些人在做拼图的时候就随便乱摆,最后发现拼不回来,超级尴尬。要想打乱了还能拼回来,我们呢,就想到了模拟人打乱拼图的方法,就是将空白块与旁边的非空白块交换位置,与旁边哪个非空白块交换是随机的,然后将这个过程重复若干次,重复的次数也是随机的,这样一来,保证了图块的随机,又保证了能拼回来。在这里我们用数字0到N-1(N为块的数量)表示每一块,并用二维数组存储他们。

评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值