欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android實現(xiàn)拼圖游戲

 更新時間:2022年03月24日 11:33:45   作者:hellolxb  
這篇文章主要為大家詳細介紹了Android實現(xiàn)拼圖小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Android實現(xiàn)拼圖游戲的具體代碼,供大家參考,具體內容如下

本人是用 android studio 完成的

源碼

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;
? ? ? ? }
? ? }
? ? // 安排圖片數(shù)組
? ? 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控件CardView實現(xiàn)卡片布局

    Android控件CardView實現(xiàn)卡片布局

    這篇文章主要為大家詳細介紹了Android控件CardView實現(xiàn)卡片布局,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • Android?DialogFragment使用之底部彈窗封裝示例

    Android?DialogFragment使用之底部彈窗封裝示例

    這篇文章主要為大家介紹了Android?DialogFragment使用之底部彈窗封裝示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • Android 6.0 無法在SD卡創(chuàng)建目錄的方法

    Android 6.0 無法在SD卡創(chuàng)建目錄的方法

    今天小編就為大家分享一篇Android 6.0 無法在SD卡創(chuàng)建目錄的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • Android Fragment使用之實例演示

    Android Fragment使用之實例演示

    本文主要介紹Android Fragment的知識,這里整理了詳細資料及簡單示例代碼,有需要的朋友可以參考下
    2016-09-09
  • Android中SurfaceView和普通view的區(qū)別及使用

    Android中SurfaceView和普通view的區(qū)別及使用

    SurfaceView第一印象它是一個view,因為它繼承了View,本文主要介紹了SurfaceView和普通view的區(qū)別及使用,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Android中利用Xposed框架實現(xiàn)攔截系統(tǒng)方法

    Android中利用Xposed框架實現(xiàn)攔截系統(tǒng)方法

    這篇文章主要介紹了Android中利用Xposed框架實現(xiàn)攔截系統(tǒng)方法的相關資料,需要的朋友可以參考下
    2016-11-11
  • Android實現(xiàn)圖片預覽與保存功能

    Android實現(xiàn)圖片預覽與保存功能

    在App開發(fā)中,通常為了省流提高加載速度提升用戶體驗我們通常在列表中或新聞中的插圖都是以縮略圖壓縮過的圖片來進行展示,當用戶點擊圖片時我們再去加載真正像素的大圖讓用戶預覽。本文將利用Flutter實現(xiàn)這一功能,需要的可以參考一下
    2022-04-04
  • android中圖形圖像處理之drawable用法分析

    android中圖形圖像處理之drawable用法分析

    這篇文章主要介紹了android中圖形圖像處理之drawable用法,較為詳細的分析了Android中繪圖所涉及的各種常用技巧與方法,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • Android實現(xiàn)實時通信示例

    Android實現(xiàn)實時通信示例

    本篇文章主要介紹了Android實時通信示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • Android ViewFlipper簡單用法解析

    Android ViewFlipper簡單用法解析

    這篇文章主要為大家詳細介紹了Android ViewFlipper簡單用法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09

最新評論