您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 俄罗斯方块完整源代码
//不多说,直接可以拷贝下面的东西,就可以运行。packageday04;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.applet.*;importjava.lang.String.*;importjava.lang.*;importjava.io.*;publicclassERSBlockextendsJPanelimplementsActionListener,KeyListener//应该是继承JPanel{staticButtonbut[]=newButton[6];staticButtonnoStop=newButton(取消暂停);staticLabelscoreLab=newLabel(分数:);staticLabelinfoLab=newLabel(提示:);staticLabelspeedLab=newLabel(级数:);staticLabelscoreTex=newLabel(0);staticLabelinfoTex=newLabel();staticLabelspeedTex=newLabel(1);staticJFramejf=newJFrame();staticMyTimertimer;staticImageIconicon=newImageIcon(resource/Block.jpg);staticJMenuBarmb=newJMenuBar();staticJMenumenu0=newJMenu(游戏);staticJMenumenu1=newJMenu(帮助);staticJMenuItemmi0=newJMenuItem(新游戏);staticJMenuItemmi1=newJMenuItem(退出);staticJMenuItemmi1_0=newJMenuItem(关于);staticJDialogdlg_1;staticJTextAreadlg_1_text=newJTextArea();staticintstartSign=0;//游戏开始标志0未开始1开始2暂停staticStringbutLab[]={开始游戏,重新开始,降低级数,提高级数,游戏暂停,退出游戏};staticintgame_body[][]=newint[19][10];staticintgame_sign_x[]=newint[4];//用于记录4个方格的水平位置staticintgame_sign_y[]=newint[4];//用于记录4个方格的垂直位置staticbooleandownSign=false;//是否落下staticintblockNumber=1;//砖块的编号staticintgameScore=0;//游戏分数staticintspeedMark=1;publicstaticvoidmain(Stringargs[]){ERSBlockmyBlock=newERSBlock();mb.add(menu0);mb.add(menu1);menu0.add(mi0);menu0.add(mi1);menu1.add(mi1_0);jf.setJMenuBar(mb);myBlock.init();jf.add(myBlock);jf.setSize(565,501);jf.setResizable(false);jf.setTitle(俄罗斯方块);jf.setIconImage(icon.getImage());jf.setLocation(200,100);jf.show();timer=newMyTimer(myBlock);//启动线程timer.setDaemon(true);timer.start();timer.suspend();}publicvoidinit(){setLayout(null);for(inti=0;i6;i++){but[i]=newButton(butLab[i]);add(but[i]);but[i].addActionListener(this);but[i].addKeyListener(this);but[i].setBounds(360,(240+30*i),160,25);}add(scoreLab);add(scoreTex);add(speedLab);add(speedTex);add(infoLab);add(infoTex);add(scoreLab);scoreLab.setBounds(320,15,30,20);scoreTex.setBounds(360,15,160,20);scoreTex.setBackground(Color.white);speedLab.setBounds(320,45,30,20);speedTex.setBounds(360,45,160,20);speedTex.setBackground(Color.white);but[1].setEnabled(false);but[4].setEnabled(false);infoLab.setBounds(320,75,30,20);infoTex.setBounds(360,75,160,20);infoTex.setBackground(Color.white);noStop.setBounds(360,360,160,25);noStop.addActionListener(this);noStop.addKeyListener(this);mi0.addActionListener(this);mi1.addActionListener(this);mi1_0.addActionListener(this);num_csh_game();rand_block();}publicvoidactionPerformed(ActionEvente){if(e.getSource()==but[0])//开始游戏{startSign=1;infoTex.setText(游戏已经开始!);but[0].setEnabled(false);but[1].setEnabled(true);but[4].setEnabled(true);timer.resume();}if(e.getSource()==but[1]||e.getSource()==mi0)//重新开始游戏{startSign=0;gameScore=0;timer.suspend();num_csh_restart();repaint();rand_block();scoreTex.setText(0);infoTex.setText(新游戏!);but[0].setEnabled(true);but[1].setEnabled(false);but[4].setEnabled(false);}if(e.getSource()==but[2])//降低级数{infoTex.setText(降低级数!);speedMark--;if(speedMark=1){speedMark=1;infoTex.setText(已经是最低级数!);}speedTex.setText(speedMark+);}if(e.getSource()==but[3])//提高级数{infoTex.setText(提高级数!);speedMark++;if(speedMark=9){speedMark=9;infoTex.setText(已经是最高级数!);}speedTex.setText(speedMark+);}if(e.getSource()==but[4])//游戏暂停{this.add(noStop);this.remove(but[4]);infoTex.setText(游戏暂停!);timer.suspend();}if(e.getSource()==noStop)//取消暂停{this.remove(noStop);this.add(but[4]);infoTex.setText(继续游戏!);timer.resume();}if(e.getSource()==but[5]||e.getSource()==mi1)//退出游戏{jf.dispose();}if(e.getSource()==mi1_0)//退出游戏{dlg_1=newJDialog(jf,关于);try{FileInputStreamio=newFileInputStream(resource/guanyu.txt);//得到路径bytea[]=newbyte[io.available()];io.read(a);io.close();Stringstr=newString(a);dlg_1_text.setText(str);}catch(Exceptiong){}dlg_1_text.setEditable(false);dlg_1.add(dlg_1_text);dlg_1.pack();dlg_1.setResizable(false);dlg_1.setSize(200,120);dlg_1.setLocation(400,240);dlg_1.show();}}publicvoidrand_block()//随机产生砖块{intnum;num=(int)(Math.random()*6)+1;//产生0~6之间的随机数blockNumber=num;switch(blockNumber){case1:block1();blockNumber=1;break;case2:block2();blockNumber=2;break;case3:block3();blockNumber=3;break;case4:block4();blockNumber=4;break;case5:block5();blockNumber=5;break;case6:block6();blockNumber=6;break;case7:block7();blockNumber=7;break;}}publicvoidchange_body(intblockNumber)//改变砖块状态{dingwei();if(blockNumber==1&&downSign==false)//变换长条2种情况{if(game_sign_y[0]==game_sign_y[1]&&game_sign_y[3]=16)//说明长条是横着的{if(game_body[game_sign_y[0]-1][game_sign_x[0]+1]!=2&&game_body[game_sign_y[3]+2][game_sign_x[3]-2]!=2){num_csh_game();game_body[game_sign_y[0]-1][game_sign_x[0]+1]=1;game_body[game_sign_y[1]][game_sign_x[1]]=1;game_body[game_sign_y[2]+1][game_sign_x[2]-1]=1;game_body[game_sign_y[3]+2][game_sign_x[3]-2]=1;infoTex.setText(游戏进行中!);repaint();}}if(game_sign_x[0]==game_sign_x[1]&&game_sign_x[0]=1&&game_sign_x[3]=7)//说明长条是竖着的{if(game_body[game_sign_y[0]+1][game_sign_x[0]-1]!=2&&game_body[game_sign_y[3]-2][game_sign_x[3]+2]!=2){num_csh_game();game_body[game
本文标题:俄罗斯方块完整源代码
链接地址:https://www.777doc.com/doc-7111568 .html