Java实现拼图游戏
来源:优易学  2010-1-15 14:41:15   【优易学:中国教育考试门户网】   资料下载   IT书店

  偶尔帮同学作一个拼图游戏,要求多加注释。实现后加了这么多注释,直接删掉太可惜了,

  不如拿出来共享一下,其实有些注释就是废话。不过先讲一下原理,方始读者了然不惑 -:)。

  主要利用了Graphics中的

  public abstract boolean drawImage(Image img,

  int dx1,

  int dy1,

  int dx2,

  int dy2,

  int sx1,

  int sy1,

  int sx2,

  int sy2,

  Color bgcolor,

  ImageObserver observer)

  方法(Draws as much of the specified area of the specified image as is currently available, scaling it on the fly tofit inside the specified area of the destination drawable surface.)大意是:把 img 中由 (sx1, sy1)(sx2, sy2)指定的矩形区域画到 observer 中由(dx1, dy1)(dx2, dy2)指定的矩形区域内(如果两个指定的大小不同,可能会依目的大小为准进行拉伸或压缩,建议相同)。   有了上面的方法就可以进行构思拼图游戏的具体实现了,主要是计算上面的8个值。以下代码注释很详细(或说很罗嗦),有几点要指出:   1、图片为随机打乱。一个小子说8块图片怎么随机打乱都能拼成,结果有几次拼了多半个小时都不成(我不太擅长拼图),所以如果拼不出来,请重新开始一下。   2、最后的图片为拼图图片。存为 bg.jpg ,放至同一文件夹下即可,如要换图,要改变窗口大小,否则会变形。   3、一直另我很郁闷的事情。空白的一块始终颜色是黑色,无论我加多少 setcolor语句,还望各位大虾指教。   4、显示时间未实现。继承Runnable接口,实现并不难,但 显示正确图片-继续游戏 相当于一个暂停按钮,需要线程间的协作唤醒-等待,恩,不算太难,有需要的就实现,否则就掐表吧

  import java.awt.*;

  import java.awt.event.*;

  import java.awt.image.BufferedImage;

  import java.io.*;

  import javax.imageio.ImageIO;

  import java.util.*;

  import javax.swing.*;

  public class Pintu extends JFrame{

  private Image image, buff;             //原始图片,缓存图片

  private Point point = new Point(2, 2);         //记录第九块图片位置

  private int[][] map = {{0, 1, 2},{3, 4, 5}, {6, 7, 8}}; //给破碎图片标号

  private int sx, sy;       // 分割后每一个图片的宽度和高度

  private Canvas canvas;    //加载图片容器

  private Graphics gs, gb;     //gs 画出Canvas ;gb画出buff图像

  private boolean isRunning = false;   //游戏是否正在进行

  private JButton start = new JButton("开始新的游戏"); // 按钮1

  private JButton show = new JButton("显示正确图片"); //按钮2

  private JTextArea showTime = new JTextArea("显示时间");

  private JTextArea showStep = new JTextArea("显示步骤");

  private JPanel panel = new JPanel(); //装在上面2个按钮

  private int steps = 0;               // 记录移动的步骤

  public Pintu(String title) {   //构造方法

  super(title);

[1] [2] [3] [4] 下一页

责任编辑:cyth

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训