拼图游戏实现的思路

2022-05-18 19:42:16   文档大全网     [ 字体: ] [ 阅读: ]

#文档大全网# 导语】以下是®文档大全网的小编为您整理的《拼图游戏实现的思路》,欢迎阅读!
拼图,思路,实现,游戏
拼图游戏实现的思路

正在学习JAVA,对JAVA有了一些基本的了解。需要多编程,通过一些具体实例来提高编程水平。 网上有许多游戏的例子,如拼图、俄罗斯方块、24点等等,但人家是人家的,只能参考不要照搬,不然不能真正提高自身水平

编程最重要的是什么?每个人的认识可能不一,但我认为最重要是思路和方法。 有了思路和方法才能通过语言来实现,进而不断优化。

比如拼图游戏,我们都玩过,但如何实现的,我们能不能自己编一个?

先不参考别人的(网上有许多,Baidu一下会有不少),自己先想一下解题思路。 。。。

1图片的载入

先从简单的开始,最好是矩形图片300X300的,以后再考虑长方形的,异性的; try{

加载图片资源

img= Image.createImage("/pic.png"); }

catch(Exception e) {

System.out.println("Not found pic"); } //画图

g.drawImage(img,getWidth()/2,getHeight()/2,Graphics.HCENTER|Graphics.VCENTER); //或采用以下方式

g.drawImage( img, x0,y0, Graphics.LEFT | Graphics.TOP ); 2图片的分割

将载入的图片按要求分割,如3X34X4等; 分割的图片放入图形数组;

构造一个图片分割的方法,网上有不少,可以参考; public static Image[] splitImage( Image img, int rows, int cols ) {

if ( img == null ) { return null; }

Image[] result = new Image[ rows * cols ]; int w = img.getWidth() / cols; int h = img.getHeight() / rows;

for ( int i = 0; i < result.length; i++ )


{

result = Image.createImage( w, h ); Graphics g = result.getGraphics();

g.translate( ( -i % cols ) * w, ( -i / cols ) * h );

g.drawImage( img, 0, 0, Graphics.LEFT | Graphics.TOP ); }

return result; }

3、初始化

3X3九宫格为例,按 1 2 3 4 5 6 7 8 0

载入,0为空白处;

图片打碎,随机化,如变为: 5 1 3 4 6 8 2 0 7

4、完成状态的判断

当图形达到初始状态时,拼图完成。

载入图片时,同时也构造了一个数字矩阵a[i,j] 如上例当矩阵中的值都满足:3*(i-1) +j 时拼图完成。 一般情况

/** int m 图片的行数 int n 图片的列数 */

public boolean isFinish() { for (int i = 0; i < m; i++) { for (int j = 0; j if (a[j] != (i * m + j)) { return false; } } } return true; }

5、可移动块的判断

分割的子图片,能否按上下左右移动,需要加以判断 上下移动,改变图片位置的y值,数字矩阵的行值; 左右移动,改变图片位置的x值,数字矩阵的列值; 即经过变更后数字矩阵满足:a[i,j]=0,则移动有效; 如上例,6向下,2向右,7向左都为有效移动。 6、移动的实现


键值响应,一个移动是有效的,需要重绘图形来实现。 移动的过程是一个位置交换的过程。

如上例,6向下,是60位置互换,数字矩阵值和图片互换。 构造一个方法swap( ) 实现以下要求: (1) 数字矩阵a[i,j]数值互换; (2) 图片重绘,图片互换;




本文来源:https://www.wddqxz.cn/5f645ced19e8b8f67c1cb9ec.html

相关推荐