2022年JAVA实现走迷宫图小程序 .pdf

上传人:Che****ry 文档编号:27256695 上传时间:2022-07-23 格式:PDF 页数:7 大小:50.97KB
返回 下载 相关 举报
2022年JAVA实现走迷宫图小程序 .pdf_第1页
第1页 / 共7页
2022年JAVA实现走迷宫图小程序 .pdf_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《2022年JAVA实现走迷宫图小程序 .pdf》由会员分享,可在线阅读,更多相关《2022年JAVA实现走迷宫图小程序 .pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、CanvasPalyBL 类:CanvasPalyBL 类继承了 Canvas组件, Canvas 组件表示屏幕上一个空白矩形区域,应用程序可以在该区域内绘图,或者可以从该区域捕获用户的输入事件。应用程序必须为 Canvas 类创建子类,以获得有用的功能(如创建自定义组件) 。必须重写 paint 方法,以便在 canvas 上执行自定义图形。importjava.awt.Canvas; import java.awt.Color; import java.awt.Graphics; import javax.swing.JOptionPane; public class CanvasPaly

2、BL extends Canvas final intunitSize =10; /小方块边长introwNum; /正方格的行数intcolumnNum; /正方格的列数/* Creates a new instance of CanvasPalyBL */ public CanvasPalyBL() rowNum = 48; columnNum = 27; int xx=0,yy=0; static intstartx=0,starty=0; /走迷宫者的位置boolean have=true; /控制方块使其不能穿越迷宫墙/ 迷宫墙的 X坐标int x=10,10,20,30,40,40

3、,40,50,70,80,90,100,110, 120,130,140,150,160,170,180,190,200,200,200,200, 200,200,200,210,220,230,240,250,250,250,250,250, 250,250,250,250,250,250,270,270,270,270,270,270, 280,290,300,310,320,330,340,350,350,350,350,350, 350,350,350,350,350,350,340,330,320,310,300,290, 280,270,260,250,240,230,220,21

4、0,200,190,180,170, 160,150,140,130,120,110,100,90,80,70,60,50,200, 200,200,200,200,210,220,230,240,250,260,270,280, 290,300,310,320,330,340,350,350,350,350,350,360, 370,380,390,400,410,420,430,440,450,80,90,100,110, 120,130,140,150,160,170,180,190,200,210,220,220, 220,220,220,220,220,0,10,20,20,20,2

5、0,20,20,20,20,20, 20,20,20,20,20,20,20,20,20,10,0,0,10,20,30,40,50, 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - 60,70,80,90,100,100,100,100,120,120,120,120,130,140, 150,160,170,180,190,200,200,380,380,380,380,380,380, 380,380,380,380,38

6、0,380,380,380,380,380,380,370,360, 350,340,330,320,380,310,300,290,280,270,260,250,240,230, 220,380,390,400,410,420,430,440,450,380,380,380,390, 400,410,420,430,440,450,460,400,400,400,400,400,400, 400,400,400,400,400,400,400,400,400,400,410,420,430, 440,450,460,40,50,60,70,80,90,100,110,120,130,140

7、,150, 160,170,180,40,40,40,40,40,40,40,40,180,180,180,180,180, 180,170,160,150,140,130,120,110,100,90,80,70,70,70,70,70, 80,90,100,110,120,130,140,150,150,150,140,130,120,40,50,60, 70,80,90,100,110,120,130,140,150,160,160,160,150,140,130,120,110, 100,90,80,70,60,270,270,270,270,280,290,300,310,320,3

8、30,340,350, 350,350,350,200,210,220,230,240,250,260,270,280,290,300,310, 320,320,320,320,320,320,320,310,300,300,300,300,300,420,430,440, 440,440,440,440,440,440,440,440,440,440,440,440,430,420,420,420, 420,420,420,420,420,420,420,420,420,150,160,170,180,190,200,210, 220,230,240,250,260,270,280,290,

9、300,310,320,320,320,310,300,290, 280,270,260,250,240,230,450; / 迷宫墙的 Y坐标int y= 0,10,10,10,10,20,30,40,40,40,40,40,40,40,40,40, 40,40,40,40,40,40,50,60,70,80,90,100,100,100,100,100, 100,90,80,70,60,50,40,30,20,10,0,100,90,80,70,60,50,50, 50,50,50,50,50,50,50,60,70,80,90,100,110,120,130,140,150, 150,1

10、50,150,150,150,150,150,150,150,150,150,150,150,150, 150,150,150,150,150,150,150,150,150,150,150,150,150,150, 150,150,160,170,180,190,200,200,200,200,200,200,200,200, 200,200,200,200,200,200,200,200,210,220,230,240,240,240, 240,240,240,240,240,240,240,240,20,20,20,20,20,20,20,20, 20,20,20,20,20,20,20

11、,30,40,50,60,70,80,30,30,30,40,50,60, 70,80,90,100,110,120,130,140,150,160,170,180,190,200,200, 200,220,220,220,220,220,220,220,220,220,220,220,230,240, 250,250,240,230,220,220,220,220,220,220,220,220,220,210, 0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160, 170,170,170,170,170,170,170,170,

12、170,170,170,170,170,170, 170,170,170,190,190,190,190,190,190,190,190,200,210,220, 220,220,220,220,220,220,220,220,0,10,20,30,40,50,60,70,80, 90,100,110,120,130,140,150,150,150,150,150,150,150,70,70, 70,70,70,70,70,70,70,70,70,70,70,70,70,80,90,100,110,120, 130,140,150,80,90,100,110,120,130,130,130,1

13、30,130,130,130, 130,130,130,130,130,120,110,100,90,90,90,90,90,90,90,90,90, 100,110,110,110,110,170,170,170,170,170,170,170,170,170,170, 170,170,170,180,190,190,190,190,190,190,190,190,190,190,190, 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - -

14、- - - 0,10,20,30,30,30,30,30,30,30,30,30,20,10,0,130,130,130,130,130, 130,130,130,130,130,130,130,130,120,110,100,90,80,70,70,70,80,90, 100,110,10,10,10,20,30,40,50,60,70,80,90,100,110,120,130,130,130, 120,110,100,90,80,70,60,50,40,30,20,240,240,240,240,240,240,240,240, 240,240,240,240,240,240,240,2

15、40,240,240,230,220,220,220,220,220,220, 220,220,220,220,250; / 画整个迷宫图:/ 过程: 1、先画背景/ 2 、再画墙/ 3 、再画走迷宫者public void paint(Graphics g) / 功能:用黑色颜色画背景/ 实现过程:将每一个小方块的颜色都填充为黑色g.setColor(Color.black); for(inti = 0; irowNum; i+) for(int j = 0; j columnNum; j+) g.fill3DRect(i*unitSize,j*unitSize,unitSize, unit

16、Size, true); / 功能: 画迷宫的墙(墙的颜色设为绿色)/ 实现过程: (xi,yi)一点坐标代表了这个小方块是墙,所以只需将这点坐标填充墙的颜色即可(绿色)/ 将所有的( x,y)坐标都填充为墙的颜色,就构成墙的效果g.setColor(Color.green); for(inti=0;ix.length;i+) g.fill3DRect(xi, yi, unitSize, unitSize, true); for(inti=0;icolumnNum;i+) g.fill3DRect(rowNum-1)*unitSize, i*unitSize, unitSize, unitSi

17、ze, true); for(inti=0;irowNum-2;i+) g.fill3DRect(i*unitSize, (columnNum-1)*unitSize, unitSize, unitSize, true); / 功能:画走迷宫的人的位置/ 实现过程:走迷宫人的位置实质上就是一个方块坐标值,这个坐标值便是(startx,starty), 所以之需要将这个坐标的方块填充为人的颜色即可(红色)g.setColor(Color.red); if(startx 470 &starty= 250) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - -

18、 - - - - - 名师精心整理 - - - - - - - 第 3 页,共 7 页 - - - - - - - - - g.fill3DRect(startx, starty, unitSize, unitSize, true); xx=startx; yy=starty; else g.fill3DRect(xx, yy, unitSize, unitSize, true); / 功能:走迷宫者向右移(即重新画迷宫图)/ 实现过程:实质上就是计算(startx , starty ) 坐标的右边的新位置的坐标值,这个坐标值就是( startx+unitSize(方块的宽度), starty

19、 )。/ 注意,这个新位置的坐标值(startx+unitSize,starty)必须保证:/ 1 、在迷宫的范围内/ 2、 是一个让走迷宫者可以走的位置 (也就是说这个位置的不能是墙的坐标值)/ 如果走迷宫者可以向右移的话, 那就要重新画迷宫图了。 怎麽样重新画图呢?只需调用 repaint()即可。public void moveRight() if(startx470 &starty=250) startx=startx+unitSize; / 走迷宫者的新坐标值 (startx+unitSize, starty) 。for(inti=0;ix.length;i+) /判断方块将要移动的

20、坐标是否与迷宫墙坐标相同if(startx=xi &starty=yi) have=false; /不可以向右移动,如果为true 的话,表示可以向右移动,那就要重新画迷宫图了(在这里,只是一个标志位,false 时不需要重新画, true时需要重新画)startx=startx-unitSize; /如果相同的话,返回原来的坐标值 if(have) /由于可以向右移,因此要重新画迷宫图repaint(); /重新画迷宫图(将会间接调用上面的paint()方法来实现画迷宫图)else have=true; else startx=startx-unitSize; if(startx=460 &

21、starty=250) /判定是否走出迷宫JOptionPane.showMessageDialog(this,你好变态哦! , 测试结果,JOptionPane.INFORMATION_MESSAGE); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 7 页 - - - - - - - - - / 迷宫者向左移/ 实现过程:跟迷宫者向右移差不多public void moveLeft() if(startx470 &starty=250) startx=startx-

22、unitSize; for(inti=0;ix.length;i+) if(startx=xi &starty=yi) have=false; startx=startx+unitSize; if(have) repaint(); else have=true; else startx=startx-unitSize; if(startx=460 &starty=250) JOptionPane.showMessageDialog(this,你好变态哦! , 测试结果,JOptionPane.INFORMATION_MESSAGE); / 走迷宫者向上移/ 实现过程:跟迷宫者向右移差不多pub

23、lic void moveUp() if(startx470 &starty=250) starty=starty-unitSize; for(inti=0;iy.length;i+) if(startx=xi &starty=yi) have=false; starty=starty+unitSize; if(have) repaint(); else have=true; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 7 页 - - - - - - - - - el

24、se starty=starty-unitSize; if(startx=460 &starty=250) JOptionPane.showMessageDialog(this,你好变态哦! , 测试结果,JOptionPane.INFORMATION_MESSAGE); / 走迷宫者向下移/ 实现过程:跟迷宫者向右移差不多public void moveDown() if(startx470 &starty=250) starty=starty+unitSize; for(inti=0;iy.length;i+) if(startx=xi &starty=yi) have=false; st

25、arty=starty-unitSize; if(have) repaint(); else have=true; else starty=starty-unitSize; if(startx=460 &starty=250) JOptionPane.showMessageDialog(this,你好变态哦! , 测试结果,JOptionPane.INFORMATION_MESSAGE); 走迷宫的主类: PlayJFrame importjava.awt.Button; import java.awt.Dimension; import java.awt.event.ActionEvent;

26、 import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 7 页 - - - - - - - - - / 这个类没什么好讲的啦, 就是把迷宫图 canvas 这个组件整合到 GUI界面当中,因此都是一些 java GUI 界面编程最基本的操作public class Pla

27、yJFrame extends javax.swing.JFrame implements ActionListener,KeyListener CanvasPalyBL canvas=new CanvasPalyBL(); /* Creates new form PlayJFrame */ public PlayJFrame() this.setTitle(电子迷宫 ); addKeyListener(this); /监听键盘事件add(canvas); /将这个画迷宫对象整合到这个GUI界面程序当中setVisible(true); /窗口可见setSize(490,310); /设置窗口

28、大小 public static void main(String args) java.awt.EventQueue.invokeLater(new Runnable() public void run() new PlayJFrame().setVisible(true); ); public void actionPerformed(ActionEvent e) public void keyTyped(KeyEvent e) public void keyReleased(KeyEvent e) / 处理键盘输入的方法/ 当按下键盘时,会自动条用这个方法public void keyP

29、ressed(KeyEvent e) switch(e.getKeyCode() case KeyEvent.VK_DOWN:canvas.moveDown();break; /如果按下的键盘是DOWN,则调用 canvas.moveDown(),以重新画迷宫图case KeyEvent.VK_LEFT:canvas.moveLeft();break; case KeyEvent.VK_RIGHT:canvas.moveRight();break; case KeyEvent.VK_UP:canvas.moveUp();break; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 7 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁