欢迎来到天天文库
浏览记录
ID:8458093
大小:79.50 KB
页数:11页
时间:2018-03-28
《推箱子 电信081 陈剑 3080432008》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、推箱子实验报告1、实验目的运用Java有关知识更进一步掌握编程方法;了解一些小游戏的相关代码,2、设计思路在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。玩家和箱子的正确移动,包括对撞墙的检测;当所有的箱子都到达目的地的时候,就提示“恭喜过关”;家可以用键盘的“上下左右”来控制前进的方向;整个代码的思路是:把游戏界面看成一个二维的数组,然后用一个布尔型的数组booleana[][]去填充它。3、设计方法//初始化界面元素publicGamePanel(
2、)加入提示菜单publicstaticvoidmain(Stringargs[]){GameFrameframe=newGameFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.show();JOptionPane.showMessageDialog(null,"红色方块代表玩家把紫色箱子推到蓝框中过关方向键控制方向不能返回到上一步");}要给方块绘制游戏背景,玩家和箱子.,绘制墙壁,绘制目的地.,//定义箱子,玩家和目的地的初始位置i
3、ntx=5;inty=8;man=newNode(x,y);a[x][y]=true;//定义游戏中的箱子的位置,并置为TRUE;b=newNode[4];box=newNode(10,9);a[10][9]=true;b[0]=box;box1=newNode(6,7);a[6][7]=true;b[1]=box1;box2=newNode(11,8);a[11][8]=true;b[2]=box2;box3=newNode(8,8);11a[8][8]=true;b[3]=box3;//定义墙和目的地.createWall()
4、;target=newNode[4];target[0]=newNode(7,9);target[1]=newNode(6,9);target[2]=newNode(7,10);target[3]=newNode(6,10);}publicvoidmove(intd1,intd2){a[man.x][man.y]=false;man.x+=d1;man.y+=d2;//如果所有的箱子到位,则游戏结束publicvoidisArrive(Noden){for(inti=0;i5、[i].x==n.x&&target[i].y==n.y){list.add(target[i]);}elseif(target[i].x==man.x&&target[i].y==man.y){list.remove(target[i]);}}if(list.size()==target.length){end=true;}}4、流程图游戏开始提示游戏结束游戏过程115、实验过程①实验开始②箱子撞墙③游戏过关116、相关代码importjavax.swing.*;importjava.awt.*;importjava.awt.e6、vent.*;importjava.util.*;importjava.awt.geom.*;publicclassPushBox{publicstaticvoidmain(Stringargs[]){GameFrameframe=newGameFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.show();JOptionPane.showMessageDialog(null,"红色方块代表玩家把紫色箱子推到蓝框中过关方向键控制方向不能7、返回到上一步");}}classGameFrameextendsJFrame{staticintnum;publicGameFrame(){setSize(400,400);Containerc=getContentPane();GamePanelpanel1=newGamePanel();c.add(panel1);}}11classGamePanel_2extendsJPanel{publicGamePanel_2(){this.setBackground(Color.BLACK);}}classGamePanelextend8、sJPanelimplementsKeyListener{intwidth=400;intheight=400;Boxb;Nodeman;Nodebox;Node[]target;intd=1;//移动的步长intsideX=25;intsideY
5、[i].x==n.x&&target[i].y==n.y){list.add(target[i]);}elseif(target[i].x==man.x&&target[i].y==man.y){list.remove(target[i]);}}if(list.size()==target.length){end=true;}}4、流程图游戏开始提示游戏结束游戏过程115、实验过程①实验开始②箱子撞墙③游戏过关116、相关代码importjavax.swing.*;importjava.awt.*;importjava.awt.e
6、vent.*;importjava.util.*;importjava.awt.geom.*;publicclassPushBox{publicstaticvoidmain(Stringargs[]){GameFrameframe=newGameFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.show();JOptionPane.showMessageDialog(null,"红色方块代表玩家把紫色箱子推到蓝框中过关方向键控制方向不能
7、返回到上一步");}}classGameFrameextendsJFrame{staticintnum;publicGameFrame(){setSize(400,400);Containerc=getContentPane();GamePanelpanel1=newGamePanel();c.add(panel1);}}11classGamePanel_2extendsJPanel{publicGamePanel_2(){this.setBackground(Color.BLACK);}}classGamePanelextend
8、sJPanelimplementsKeyListener{intwidth=400;intheight=400;Boxb;Nodeman;Nodebox;Node[]target;intd=1;//移动的步长intsideX=25;intsideY
此文档下载收益归作者所有