java推箱子的主要程序文档格式.docx
- 文档编号:15841019
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:25
- 大小:20.90KB
java推箱子的主要程序文档格式.docx
《java推箱子的主要程序文档格式.docx》由会员分享,可在线阅读,更多相关《java推箱子的主要程序文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
importjava.awt.event.KeyListener;
importjava.awt.event.MouseEvent;
importjava.awt.event.MouseListener;
importjava.io.File;
importjava.util.ArrayList;
importjavax.sound.midi.MidiSystem;
importjavax.sound.midi.Sequence;
importjavax.sound.midi.Sequencer;
importjavax.swing.JFrame;
importjavax.swing.JOptionPane;
publicclassGameFrameextendsJFrameimplementsActionListener,MouseListener//主面板类
KeyListener{
privateintgrade=0;
//row,column记载人的行号列号
//leftX,leftY记载左上角图片的位置避免图片从(0,0)坐标开始
privateintrow=7,column=7,leftX=0,leftY=0;
//记载地图的行列数
privateintmapRow=0,mapColumn=0;
//width,height记载屏幕的大小
privateintwidth=0,height=0;
privatebooleanacceptKey=true;
//程序所用到的图片
privateImagepic[]=null;
//定义一些常量,对应地图的元素
finalbyteWALL=1,BOX=2,BOXONEND=3,END=4,MANDOWN=5,
MANLEFT=6,MANRIGHT=7,MANUP=8,GRASS=9,MANDOWNONEND=10,
MANLEFTONEND=11,MANRIGHTONEND=12,MANUPONEND=13;
privatebyte[][]map=null;
privateArrayListlist=newArrayList();
Soundsound;
publicvoidgetManPosition(){
for(inti=0;
i<
map.length;
i++)
for(intj=0;
j<
map[0].length;
j++)
if(map[i][j]==MANDOWN||map[i][j]==MANDOWNONEND
||map[i][j]==MANUP||map[i][j]==MANUPONEND
||map[i][j]==MANLEFT||map[i][j]==MANLEFTONEND
||map[i][j]==MANRIGHT||map[i][j]==MANRIGHTONEND){
row=i;
column=j;
break;
}
}
/*显示提示信息对话框*/
publicvoidDisplayToast(Stringstr){
JOptionPane.showMessageDialog(null,str,"
提示"
JOptionPane.ERROR_MESSAGE);
//撤销移动
publicvoidundo(){
if(acceptKey){
//撤销
if(list.size()>
0){
//若要撤销必须走过
MappriorMap=(Map)list.get(list.size()-1);
map=priorMap.getMap();
row=priorMap.getManX();
column=priorMap.getManY();
repaint();
list.remove(list.size()-1);
}else
DisplayToast("
不能再撤销!
"
);
}else{
DisplayToast("
此关已完成,不能撤销!
}
publicvoidnextGrade(){
//grade++;
if(grade>
=MapFactory.getCount()-1){
恭喜你完成所有关卡!
acceptKey=false;
grade++;
initMap();
repaint();
acceptKey=true;
publicvoidpriorGrade(){
grade--;
acceptKey=true;
if(grade<
0)
grade=0;
initMap();
repaint();
publicvoidinitMap(){
map=getMap(grade);
list.clear();
getMapSizeAndPosition();
getManPosition();
//MapcurrMap=newMap(row,column,map);
//list.add(currMap);
/*
*//原来是从数组读取2012-4-20publicbyte[][]getMap(intgrade){return
*MapFactory.getMap(grade);
*/
publicGameFrame(){
super("
推箱子游戏带音乐版"
setSize(600,600);
setVisible(true);
setResizable(false);
setLocation(300,20);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Containercont=getContentPane();
cont.setLayout(null);
cont.setBackground(Color.black);
//最初始13张图片
getPic();
width=this.getWidth();
height=this.getHeight();
this.setFocusable(true);
//构造方法执行时从优先数据中恢复游戏
//关卡切换时调用initMap()
//resumeGame();
this.addKeyListener(this);
this.addMouseListener(this);
sound=newSound();
sound.loadSound();
privatevoidgetMapSizeAndPosition(){
//TODOAuto-generatedmethodstub
mapRow=map.length;
mapColumn=map[0].length;
leftX=(width-map[0].length*30)/2;
leftY=(height-map.length*30)/2;
System.out.println(leftX);
System.out.println(leftY);
System.out.println(mapRow);
System.out.println(mapColumn);
publicvoidgetPic(){
pic=newImage[14];
=13;
i++){
pic[i]=Toolkit.getDefaultToolkit().getImage(
"
images\\pic"
+i+"
.JPG"
publicbytegrassOrEnd(byteman){
byteresult=GRASS;
if(man==MANDOWNONEND||man==MANLEFTONEND||man==MANRIGHTONEND
||man==MANUPONEND)
result=END;
returnresult;
privatevoidmoveUp(){
//上一位p1为WALL
if(map[row-1][column]==WALL)
return;
//上一位p1为BOX,BOXONEND,须考虑P2
if(map[row-1][column]==BOX||map[row-1][column]==BOXONEND){
//上上一位p2为END,GRASS则向上一步,其他不用处理
if(map[row-2][column]==END||map[row-2][column]==GRASS){
MapcurrMap=newMap(row,column,map);
list.add(currMap);
byteboxTemp=map[row-2][column]==END?
BOXONEND:
BOX;
bytemanTemp=map[row-1][column]==BOX?
MANUP:
MANUPONEND;
//箱子变成temp,箱子往前一步
map[row-2][column]=boxTemp;
//人变成MANU
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 箱子 主要 程序