免费预览已结束,剩余3页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CanvasPalyBL 类:CanvasPalyBL 类继承了Canvas组件,Canvas 组件表示屏幕上一个空白矩形区域,应用程序可以在该区域内绘图,或者可以从该区域捕获用户的输入事件。 应用程序必须为 Canvas 类创建子类,以获得有用的功能(如创建自定义组件)。必须重写 paint 方法,以便在 canvas 上执行自定义图形。import java.awt.Canvas;import java.awt.Color;import java.awt.Graphics;import javax.swing.JOptionPane;public class CanvasPalyBL extends Canvasfinal int unitSize =10; /小方块边长 int rowNum; /正方格的行数 int columnNum; /正方格的列数/* Creates a new instance of CanvasPalyBL */public CanvasPalyBL() rowNum = 48; columnNum = 27; int xx=0,yy=0;static int startx=0,starty=0; /走迷宫者的位置boolean have=true; /控制方块使其不能穿越迷宫墙/迷宫墙的X坐标int x=10,10,20,30,40,40,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,210,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,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,10,0,0,10,20,30,40,50,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,380,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,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,330,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,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,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,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,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,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,130,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,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,240,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(int i = 0; i rowNum; i+)for(int j = 0; j columnNum; j+)g.fill3DRect(i*unitSize,j*unitSize,unitSize, unitSize, true); /功能: 画迷宫的墙(墙的颜色设为绿色)/实现过程:(xi,yi)一点坐标代表了这个小方块是墙,所以只需将这点坐标填充墙的颜色即可(绿色)/ 将所有的(x,y)坐标都填充为墙的颜色,就构成墙的效果g.setColor(Color.green); for(int i=0;ix.length;i+) g.fill3DRect(xi, yi, unitSize, unitSize, true); for(int i=0;icolumnNum;i+) g.fill3DRect(rowNum-1)*unitSize, i*unitSize, unitSize, unitSize, true);for(int i=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)g.fill3DRect(startx, starty, unitSize, unitSize, true);xx=startx;yy=starty;elseg.fill3DRect(xx, yy, unitSize, unitSize, true); /功能:走迷宫者向右移(即重新画迷宫图)/实现过程:实质上就是计算(startx,starty)坐标的右边的新位置的坐标值,这个坐标值就是(startx+unitSize(方块的宽度),starty)。/ 注意,这个新位置的坐标值(startx+unitSize,starty)必须保证:/ 1、在迷宫的范围内/ 2、是一个让走迷宫者可以走的位置(也就是说这个位置的不能是墙的坐标值)/ 如果走迷宫者可以向右移的话,那就要重新画迷宫图了。怎麽样重新画图呢?只需调用repaint()即可。public void moveRight() if(startx470 & starty =250) startx=startx+unitSize; /走迷宫者的新坐标值(startx+unitSize,starty)。for(int i=0;ix.length;i+) /判断方块将要移动的坐标是否与迷宫墙坐标相同if(startx=xi & starty=yi)have=false; /不可以向右移动,如果为true的话,表示可以向右移动,那就要重新画迷宫图了(在这里,只是一个标志位,false时不需要重新画,true时需要重新画)startx=startx-unitSize; /如果相同的话,返回原来的坐标值if(have) /由于可以向右移,因此要重新画迷宫图repaint(); /重新画迷宫图(将会间接调用上面的paint()方法来实现画迷宫图)elsehave=true; elsestartx=startx-unitSize; if(startx=460 & starty=250) /判定是否走出迷宫JOptionPane.showMessageDialog(this,你好变态哦!,测试结果,JOptionPane.INFORMATION_MESSAGE);/迷宫者向左移/实现过程:跟迷宫者向右移差不多public void moveLeft() if(startx470 & starty =250) startx=startx-unitSize;for(int i=0;ix.length;i+)if(startx=xi & starty=yi)have=false;startx=startx+unitSize;if(have)repaint();elsehave=true;elsestartx=startx-unitSize; if(startx=460 & starty=250)JOptionPane.showMessageDialog(this,你好变态哦!,测试结果,JOptionPane.INFORMATION_MESSAGE); /走迷宫者向上移/实现过程:跟迷宫者向右移差不多public void moveUp()if(startx470 & starty =250) starty=starty-unitSize;for(int i=0;iy.length;i+)if(startx=xi & starty=yi)have=false;starty=starty+unitSize;if(have)repaint();elsehave=true;elsestarty=starty-unitSize; if(startx=460 & starty=250)JOptionPane.showMessageDialog(this,你好变态哦!,测试结果,JOptionPane.INFORMATION_MESSAGE); /走迷宫者向下移/实现过程:跟迷宫者向右移差不多public void moveDown() if(startx470 & starty =250) starty=starty+unitSize;for(int i=0;iy.length;i+)if(startx=xi & starty=yi)have=false;starty=starty-unitSize;if(have)repaint();elsehave=true;elsestarty=starty-unitSize;if(startx=460 & starty=250)JOptionPane.showMessageDialog(this,你好变态哦!,测试结果,JOptionPane.INFORMATION_MESSAGE); 走迷宫的主类:PlayJFrameimport java.awt.Button;import java.awt.Dimension;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;/这个类没什么好讲的啦,就是把迷宫图canvas这个组件整合到GUI界面当中,因此都是一些java GUI界面编程最基本的操作public class PlayJFrame extends javax.swing.JFrame implements ActionListener,KeyListenerCa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 产科虚拟教学平台在产科临床技能培训中的应用
- 2025年秋统编版(新教材)初中语文八年级上册期末综合测试卷及答案
- 参加寒假社会实践心得体会范文(32篇)
- 交互式模拟对医疗差错预防体系构建作用
- 初级对外汉语口语课交互活动中的教师话语调查与分析
- 交叉设计在生物等效性试验中的准确度与精密度评价
- 复明片改善糖尿病性干眼大鼠角膜功能和泪液炎症的研究
- 腹腔镜胰体尾手术护理案例分析
- 2025年中国农业保险发展研究报告
- 科技文献检索报告自动化专业
- 产品保修保证书格式
- DL∕T 1860-2018 自动电压控制试验技术导则
- 安装暖气片合同
- 常见心电图危急值及处理
- GB/T 43632-2024供应链安全管理体系供应链韧性的开发要求及使用指南
- 《光伏发电工程预可行性研究报告编制规程》(NB/T32044-2018)中文版
- 全身性骨关节炎个案护理
- MOOC 保险学概论-中央财经大学 中国大学慕课答案
- 赞美的艺术与技巧课件
- 建设项目报建申请表
- 5.第五章 企业主要经济业务的核算(上)
评论
0/150
提交评论