怎么用Android实现拼图游戏
发表于:2024-12-02 作者:千家信息网编辑
千家信息网最后更新 2024年12月02日,小编给大家分享一下怎么用Android实现拼图游戏,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体内容如下源码package packageName;import android.
千家信息网最后更新 2024年12月02日怎么用Android实现拼图游戏
小编给大家分享一下怎么用Android实现拼图游戏,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
具体内容如下
源码
package packageName;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.ViewGroup;import android.widget.Button;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.Toast;import MyImg;public class MainActivity extends AppCompatActivity { // 显示图片的宽度 public static final int W = 250; // 左上边距 public static final int MARGIN = 200; // 空图片的索引 public static final int NULLINDEX = 0; private MyImg[] imgs = new MyImg[9]; // 存储图片位置的地图 private int[] map = new int[9]; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 主布局没设置啥东西 setContentView(R.layout.activity_main); // 用于设置生成 view 对象的宽高 ViewGroup.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); initImg(params); randomMap(); addImg(params); // 开始新游戏 Button newBtn = new Button(this); newBtn.setText("新游戏"); newBtn.setTextSize(16); newBtn.setX(40); // 添加控件要用的 ViewGroup.LayoutParams p1= new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); addContentView(newBtn, p1); newBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { newGame(); } }); } // 添加图片到布局中并设置点击事件 private void addImg(ViewGroup.LayoutParams params) { for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { int index = i * 3 + j; // 计算x, y坐标 int x = j * W + MARGIN; int y = i * W + MARGIN; ImageView imgView = imgs[map[index]].getImg(); imgView.setX(x); imgView.setY(y); addContentView(imgView, params); imgView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ImageView tempImg = imgs[NULLINDEX].getImg(); int x = (int) v.getX(); int y = (int) v.getY(); // goal image int x1 = (int) tempImg.getX(); int y1 = (int) tempImg.getY(); // move top if (y - y1 == W && x == x1) { top((ImageView) v); } else if (y - y1 == -W && x == x1) { down((ImageView) v); } else if (x - x1 == W && y == y1) { left((ImageView) v); } else if (x - x1 == -W && y == y1) { right((ImageView) v); } if (isWin()) { Toast.makeText(MainActivity.this, "You Win!", Toast.LENGTH_SHORT).show(); } } }); } } } private void newGame() { randomMap(); // 设置图片的 x, y坐标 for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { int index = i * 3 + j; int x = j * W + MARGIN; int y = i * W + MARGIN; ImageView imgView = imgs[map[index]].getImg(); imgView.setX(x); imgView.setY(y); } } } private void left(ImageView img) { img.setX(img.getX() - W); imgs[NULLINDEX].getImg().setX(img.getX() + W); } private void right(ImageView img) { img.setX(img.getX() + W); imgs[NULLINDEX].getImg().setX(img.getX() - W); } private void top(ImageView img) { img.setY(img.getY() - W); imgs[NULLINDEX].getImg().setY(img.getY() + W); } private void down(ImageView img) { img.setY(img.getY() + W); imgs[NULLINDEX].getImg().setY(img.getY() - W); } private boolean isWin() { // 根据 x, y的坐标算出图片的位置,假如一一对应的话,那么久是赢了 for (int i = 0; i < 9; i++) { ImageView img = imgs[i].getImg(); int x = (int) img.getX(); int y = (int) img.getY(); int index = (y - MARGIN) / W * 3 + (x - MARGIN) / W; // 有一个没对上,就是没赢 if (index != imgs[i].getType()) { return false; } } return true; } private void randomMap() { // 打乱地图的位置 int a, b; for (int i = 0; i < 50; i++) { a = (int) (Math.random() * 9); b = (int) (Math.random() * 9); int t = map[a]; map[a] = map[b]; map[b] = t; } } // 安排图片数组 private void initImg(ViewGroup.LayoutParams params) { int[] imgId = {R.drawable.img10, R.drawable.img2, R.drawable.img3, R.drawable.img4, R.drawable.img5, R.drawable.img6, R.drawable.img7, R.drawable.img8, R.drawable.img9}; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { int index = i * 3 + j; imgs[index] = new MyImg(index); MyImg img = imgs[index]; ImageView image = new ImageView(this); params.width = W; params.height = W; image.setLayoutParams(params); image.setImageResource(imgId[index]); img.setImg(image); // 让地图初始化 map[index] = index; } } }}
MyImg类
package packageName;import android.widget.ImageView;public class MyImg { // 用于存储图片位置的索引 private int type; private ImageView img; public MyImg(int type) { this.type = type; } public void setImg(ImageView img) { this.img = img; } public ImageView getImg() { return img; } // 获取图片索引 public int getType() { return type; }}
看完了这篇文章,相信你对"怎么用Android实现拼图游戏"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!
图片
位置
地图
坐标
索引
j++
布局
篇文章
存储
一一对应
上边
东西
事件
内容
完了
宽度
对象
就是
控件
数组
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
计算机网络技术有没有数学课
软件开发工商注册类别
计算机网络技术推广
地理信息数据库建库流程
tr069 acs服务器
大班网络安全教案备课
网络安全网上答题
如何通过路由器加强网络安全
学校网络安全责任制制度
2020国家网络安全周启动
易易网络技术有限公司
服务器安全保障能力
三丰云服务器有几个
聊生活百态提升网络安全意识
我国数据库普及率
前端需要掌握数据库嘛
数据库技术与应用严晖pdf版
深圳市达人网络技术
网络安全手妙报简单又好看
软件开发违约金如何赔偿
从事软件开发需要什么电脑
恒捷互联网科技有限公司
全程软件开发常见问题
电脑服务器怎么做
歌声数据库
怎样筛选汇总其他表格数据库
完美平台显示服务器异常
管理服务器ip怎么设置
久和网络技术工作室官方帐号
三六零互联网科技