[size=large]自己写的一个移动拼图的雏形,自己可以在此基础上发展[/size]

public class MovePuzzle {

  /**    *     */   static int rank[][];

    /**    * 0数组的索引  */   public static int ZERO_INDEX_Y;   public static int ZERO_INDEX_X;

 /**    *     */   private static int x = 3;    private static int y = 3;

  /**    *     * @param rak     */   public MovePuzzle(int x, int y) {     this.rank = new int[x][y];       this.x = x;      this.y = y;

    }

   /**    * 初始化this.rank    *     * @return 返回一个初始化的二维数组   */   public int[][] initRank() {       return this.initRank(initRank(this.rank));    }

   /**    * 初始化参数1  *     * @param rak     * @return 将参数1的二维数组初始化成一个 从0开始的一个二维数组 0 1 2 3 4 5 6 7 8  */   private int[][] initRank(int[][] rak) {       for (int i = 0; i < rak.length; i++) {          for (int j = 0; j < rak[i].length; j++) {               rak[i][j] = i * rak.length + j;             if (rak[i][j] == 0) {                   this.ZERO_INDEX_X = i;                   this.ZERO_INDEX_Y = j;               }         }     }     return rak;   }

   /**    * 打印数组    */   public void printArr() {      this.print2DArr(this.rank);   }

   /**    * 打印出所有的二维数组  */   public void print2DArr(int[][] twoDArr) {     for (int i = 0; i < twoDArr.length; i++) {          for (int j = 0; j < twoDArr[i].length; j++) {               System.out.print(twoDArr[i][j] + "\t");            }         System.out.println();     } }

   /**    * 得到0值得x索引和y索引    *     * @param twoDArr     */   public void getZero_index(int[][] twoDArr) {      for (int i = 0; i < twoDArr.length; i++) {          for (int j = 0; j < twoDArr[i].length; j++) {               if (twoDArr[i][j] == 0) {                   this.ZERO_INDEX_X = i;                   this.ZERO_INDEX_Y = j;               }         }     } }

   /**    * 调换this.rank[oldX][oldY] 和 this.rank[newX][newY]的值   *     * @param oldX    * @param oldY    * @param newX    * @param newY    * @return 是否调换成功     */   public boolean exchangeBlock(int oldX, int oldY, int newX, int newY) {        int tmp = 1;     tmp = this.rank[oldX][oldY];     this.rank[oldX][oldY] = this.rank[newX][newY];       this.rank[newX][newY] = tmp;     if (tmp == 0) {         this.ZERO_INDEX_X = newX;            this.ZERO_INDEX_Y = newY;        }     return true;  }

   /**    * 检查是否可以移动    *     * @param oldX    * @param oldY    * @param newX    * @param newY    * @return    */   public boolean checkCanMove(int oldX, int oldY, int newX, int newY) {     boolean result = true;       if (this.rank[oldX][oldY] != 0 && this.rank[newX][newY] != 0) {         result = false;      } else if ((oldX != newX) && (oldY != newY)) {          result = false;      }     return result;    }

   /**    * 移动数字index   *     * @param index   */   public void moveBlock(int index) {        int index_x = 0;     int index_y = 0;     /**        * 找出要移动的数字的位置         */       for (int i = 0; i < this.rank.length; i++) {            for (int j = 0; j < this.rank[i].length; j++) {             if (this.rank[i][j] == index) {                 index_x = i;                 index_y = j;             }         }     }     if (checkCanMove(this.ZERO_INDEX_X, this.ZERO_INDEX_Y, index_x, index_y)) {           exchangeBlock(this.ZERO_INDEX_X, this.ZERO_INDEX_Y, index_x,                  index_y);     } }}

[size=large]下面是test类:[/size]

public class Test {

    /**    * @param args    */   public static void main(String[] args) {      MovePuzzle movePuzzle = new MovePuzzle(3, 3);        movePuzzle.initRank();        movePuzzle.printArr();        move(movePuzzle,1);       move(movePuzzle,2);       move(movePuzzle,5);       move(movePuzzle,4);       move(movePuzzle,3);       move(movePuzzle,1);       move(movePuzzle,2);       move(movePuzzle,3);       move(movePuzzle,4);       move(movePuzzle,8);       move(movePuzzle,7);       move(movePuzzle,6);       move(movePuzzle,1);       move(movePuzzle,2);       move(movePuzzle,3);       move(movePuzzle,5);       move(movePuzzle,8);       move(movePuzzle,7);       move(movePuzzle,6);       move(movePuzzle,4);       move(movePuzzle,5);       move(movePuzzle,8);       move(movePuzzle,7);       move(movePuzzle,6);       move(movePuzzle,4);       move(movePuzzle,1);       move(movePuzzle,2);       move(movePuzzle,3);       move(movePuzzle,8);       move(movePuzzle,5);       move(movePuzzle,6);       move(movePuzzle,4);       move(movePuzzle,1);       move(movePuzzle,2);       move(movePuzzle,3);       move(movePuzzle,6);       move(movePuzzle,5);       move(movePuzzle,7);       move(movePuzzle,4);       move(movePuzzle,1);       move(movePuzzle,2);       move(movePuzzle,3);       move(movePuzzle,6);       move(movePuzzle,8);       move(movePuzzle,7);       move(movePuzzle,4);       move(movePuzzle,1);       move(movePuzzle,2);       move(movePuzzle,3);       move(movePuzzle,6);       move(movePuzzle,8);       move(movePuzzle,7);       move(movePuzzle,4);       move(movePuzzle,1);       move(movePuzzle,2);       move(movePuzzle,3);       move(movePuzzle,6);       move(movePuzzle,8);       move(movePuzzle,7);       move(movePuzzle,4);       move(movePuzzle,1);       move(movePuzzle,2);       move(movePuzzle,3);       move(movePuzzle,6);       move(movePuzzle,8);       move(movePuzzle,7);       move(movePuzzle,7);       move(movePuzzle,8);   }

   public static void move(MovePuzzle movePuzzle,int i){     movePuzzle.moveBlock(i);      System.out.println("-----调换后"+i+"后------");     movePuzzle.printArr();    }}

java移动拼图游戏模拟相关推荐

  1. JAVA实现拼图游戏

    JAVA实现拼图游戏 package org.test; /**  * <p>Title: LoonFramework</p>  * <p>Description: ...

  2. java拼图游戏设计文档_基于JAVA的拼图游戏的设计与实现(含录像)

    基于JAVA的拼图游戏的设计与实现(含录像)(任务书,开题报告,中期检查表,外文翻译,毕业论文15500字,程序代码,答辩PPT,答辩视频录像) 摘  要 在我们日常生活中,有很多的益智类游戏,如七巧 ...

  3. java实现智能拼图,JAVA实现拼图游戏

    JAVA实现拼图游戏 /** * Title: LoonFramework * Description:拼图图像处理[未优化](优化算法已内置于loonframework-game框架中.) * Co ...

  4. Java实战---拼图游戏

    目录 1:拼图游戏的介绍 2:实战演示 (1)整体的窗体搭建 (2)菜单的搭建 (3)加载图片 (4)图片顺序的打乱 (5)实现图片的移动以及可以创建一些快捷键 (6)点击事件的实现 3:拼图游戏完整 ...

  5. java拼图游戏系统总体方案_基于JAVA的拼图游戏的设计与实现(含录像)

    基于的拼图游戏的设计与实现(含录像)(任务书,开题报告,中期检查表,外文翻译,毕业论文15500字,程序代码,答辩PPT,答辩视频录像) 摘  要 在我们日常生活中,有很多的益智类游戏,如七巧板,21 ...

  6. Java 简单拼图游戏(实现音乐播放功能)

    此程序为用JAVA编写的拼图小游戏,可通过简单的图片移动实现拼图,并实现音乐播放功能.(此程序只完成简单功能的实现,大佬勿喷) 程序源码下载:点击下载程序源码 软件系统实现 拼图主体为一方形区域,位于 ...

  7. java练习--拼图游戏之登录

    点击重新登录菜单,进入登录页面 1. 首先要隐藏游戏的主界面 2. 展示登录界面 3. 当按下登录按钮时,登录按钮图片颜色变深. 4. 松开登录按钮时,获取用户名.密码和验证码的输入信息,进行检验,正 ...

  8. java拼图游戏Mian_Java拼图游戏源码 MainApp启动器 main(): 创建主界面类对 联合开发网 - pudn.com...

    Java拼图游戏源码 所属分类:其他 开发工具:Java 文件大小:1977KB 下载次数:3 上传日期:2019-05-18 10:44:10 上 传 者:李易峰1 说明:  MainApp启动器 ...

  9. 拼图游戏 java_Java实现拼图游戏

    Java实现拼图游戏以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 偶尔帮同学作一个拼图游戏 要求多加注释 实现后加了这 ...

最新文章

  1. .net中的IO体系介绍
  2. #pragma once 是什么意思?
  3. abap中利用se95还原程序到原始版本
  4. OpenCV_008-OpenCV 中的图像算术运算
  5. 笔记:《突破现实的困境:趋势、禀赋与企业家的大战略》
  6. Qt学习笔记-QSS装饰控件
  7. linux内核之字符设备驱动图解
  8. PHP中文手册官方下载地址
  9. Spring学习-入门
  10. NVIDIA CUDA各版本下载链接(包括最新11版本和以往10.2版本)
  11. 浅析《数据安全能力成熟度模型》
  12. react-native系列(11)组件篇:Image图片加载和ImageEditor图片剪切
  13. 【转】Web 设计中最常用的 10 种色调以及它们的示例
  14. 初步使用计算机教学案列,中小学信息技术教学案例
  15. vue.js创建网站实例1
  16. zynq 加载bit方法总结
  17. arcpy更换符号系统
  18. 《Android群英传》读书笔记---10.2(终篇)
  19. html 按钮禁用状态,按钮状态——禁用状态
  20. Research Commentary on Recommendations with Side Information: A Survey and Research Directions

热门文章

  1. win10系统改win7设置bios方法图文教程
  2. ECharts 绘制地图飞线
  3. 如何看待IT行业发展前景,就业前景和人才需求趋势
  4. itext html to pdf设置边距,itextpdf特定页面上的不同边距
  5. Error:Attempt to invoke virtual method ‘void android.widget.TextView.setText(java.lang.CharSeq
  6. 清华大学交叉信息研究院姚班修改培养模式:姚班、智班、量信班全合并
  7. 2022数据安全法律法规标准关注文件整理
  8. 1000geno_maf
  9. excel翻译功能怎么用?试试这些翻译excel的软件吧
  10. 高通耳机阻抗估算流程