史上最难游戏,hardest2,退出程序后关卡清零,在线等帮助!紧急,紧急,紧急

这是一个俄罗斯方块游戏源代码。

还没完。代码太长。我用另一个电话号码然后粘上。

导入的javax.swing

导入的javax.swing.JOptionPane

导入javax . swing . border . border;导入javax.swing.border.etched边框

导入的软件包java.awt *

从java.awt.event *导入;

/ **

*主游戏类继承自JFrame类,负责游戏的全局控制。

包括

* 1,引用GameCanvas类的一个例子。

保存当前活动块(ErsBlock)的实例

* 3、保存的控制面板(control panel)的例子;* /

公共* * *类ErsBlocksGame {

/ **

*每行有多少个点*/

最终静态int PER _ LINE _ SCORE = 100;

/ **

*图表中的点数可以升级*/

最终静态int per _ level _ score = per _ line _ score * 20;

/ **

*最大级数为10 */

最终静态int MAX _ LEVEL = 10;系统默认值

/ **

*系列*/

public的最终静态解释为DEFAULT _ LEVEL = 5;

私有GameCanvas

私有ErsBlock块;

私有布尔play = FALSE

私人控制面板“ctrlPanel”

Private JMenuBar的bar new JMenuBar();

列兵吉米努的

MGAME的新JMenu(“游戏设置”),

MControl的新JMenu(游戏控制)

MWindowStyle = new JMenu(" windowed ");

个人JMenuItem

MiNewGame = new JMenuItem("新游戏")

MiSetBlockColor = new JMenuItem("设置颜色..."),

MiSetBackColor的新JMenuItem("设置背景颜色..."),

MiTurnHarder = new JMenuItem(" upgrade ")

MiTurnEasier = new JMenuItem("调整后的最低级别")

MiExit = new JMenuItem ("exit ")

MiPlay = new JMenuItem("开始游戏"),

MiPause = new JMenuItem ("pause "),

mire sume new JMenuItem(" continue ");

Private JCheckBoxMenuItem

MiAsWindows:新的JCheckBoxMenuItem ("style "),/& gt;MiAsMotif =新的JCheckBoxMenuItem one ("style "),

mias metal = new JCheckBoxMenuItem A(" style ",real);

/ **

*主游戏类构造函数

。参数标题字符串窗口的_ at _ Title */

:男***ErsBlocksGame(字符串名) (

超(职称);

//this . settitle(" lsk df ");

setSize(315392);

和大小scrsize =工具包。getdefaulttoolkit()。getScreenSize();

//获取屏幕的大小

to parallel set location((scrsize . width-getsize()width))/2。

(scrsize . height-getSize()height)/2);

create menu();

container container = getContentPane();

container . set layout(new borderlayout(6,0));

Canvas =新游戏画布(20,12);

CtrlPanel新建控制面板”(本);

使用Container.add (canvas,使用BorderLayout。居中)

使用Container.add(ctrlPanel,BorderLayout的。东);

AddWindowListener页面(new WindowAdapter(){

无效的窗口关闭(WindowEvent us) {

JooptionPane的covenant = new JooptionPane的();

stop game();

system . exit(0);}

});

AddComponentListener(new component adapter(){

canvas . fanning();

}

});

show();

canvas . fanning();BR/>;}

//“重置”游戏

无效的重置(){

ctrl panel . reset();

canvas.reset()。

} BR/& gt;/ **

*判断游戏还在进行中。

_at_返回一个布尔值,还在运行的real fake已经停止*/

基于(){

回玩;

}

/ **

*当前活动块

_at_ returns,当前活动的ErsBlock的块引用*/

GetCurBlock "男* * *" () {

返回块;

}

/ **

*到当前画布

* _at_ returns,参考GameCanvas中的当前画布*/

GameCanvas getCanvas (){

返回画布

/ **

*开始游戏*/男* * *无效。

笑话(){

& gtplay();

ctrl panel . setplaybuttonenable(false);

mi play . set enabled(false);

ctrl panel . request focus();}

/* * BR/& gt;*游戏暂停*/

无效的pauseGame(){

(挡!= NULL)block . pause move();

ctrl panel . setpausebuttonlabel(false);

& gtmipause . set enabled(false);

米雷苏梅.的set enabled();

}

/ **

让我们继续暂停游戏*/

无效的resume name(){

(block = empty)block . resume move "();

ctrl panel . setpausebuttonlabel(TRUE);

Set enabled(真);

mire sume . set enabled(false);

ctrl panel . request focus();

}

/ **

*用户停止游戏*/

无效的公共stopGame(){

玩=假;

(挡!= NULL)block . stop move();

Set enabled(真);

mipause . set enabled(TRUE);

mire sume . set enabled(false);

ctrl panel setPlayButtonEnable();

ctrl panel . setpausebuttonlabel(TRUE);

}

/ **

*游戏设置游戏难度

_at_以int难度返回游戏-MAX_LEVEL */

男***getLevel(){

返回ctrl panel . getlevel();

}

/ **

*允许用户* @说明参数等级,游戏难度为1 MAX_LEVEL */

男性* * *无效设置级别{

(级别0) ctrlPanel.setLevel(级别);

}

/ **

*获取局部点

_at_ returns int,不可分。* /

男***getScore(){

(画布!= NULL)返回canvas . get score();

返回0;}

/* * BR/& gt;*获取office,因为自从上次升级之后,升级之后,这个就清楚了。

_at_返回int整数。* /

男* * * getscorefolevelupdate () {

(画布!= NULL)返回canvas . getscoreforlevelupdate();

返回0;}

/* * BR/& gt;当分数累积到某个数字或班级时。

_at_ of返回布尔true更新成功,false更新失败。

* /

公共布尔levelUpdate(){

解释cur level getLevel();

(curLevel & ltMAX_LEVEL){

set level(cur level+1);

canvas . resetscoreforlevelupdate();

返回true

}

返回FALSE

}

/ **

*游戏开启*/

私人无效游戏(){

重置()

Hit = TRUE

Thread的thread =新主题(新游戏());

thread . start();

}

/ **

*报告游戏结束*/

无效的private reportGameOver(){

JOptionPane.showMessageDialog(此时“游戏结束!”);

} & ltBR / / **

*创建和设置窗口菜单*/

无效的私有createMenu(){

bar . add(MGAME);

bar . add(m control);

bar . add(mWindowStyle);

mgame . add(miNewGame);

mgame . add separator();

mgame . add(miSetBlockColor);

& gtMGAME .add(miSetBackColor);

mgame . add separator();

mgame . add(miTurnHarder);

mgame . add(miTurnEasier);

mgame . add separator();& ltBR/mgame . add(mi exit);

m control . add(mi play);

m control . add(m pause);

m control . add(mire sume);

BR/>;mwindowstyle . add(mias windows);

mwindowstyle . add(mias motif);

mwindowstyle . add(mias metal);

SetJMenuBar(列);

BR/>;miPause.setAccelerator(

keystone . get keystone(key event。VK_P,关键事件。CTRL _ MASK));

mire sume . set accelerator(keystroke . get keystroke(key event。VK_ENTER,0));

BR/>;MiNewGame.addActionListener(新ActionListener(){

无效的action performed(AE){ of action event){

stop game();

reset();

set LEVEL(DEFAULT _ LEVEL);BR/>;}

});

MisetBlockColor。AddActionListener(新的ActionListener(){

无效的action performed(AE){ of action event){

Color newFrontColor =

颜色选择器。ShowDialog(ErsBlocksGame.this,

"设置建筑颜色块canvas . get block color());

(newFrontColor!=空)

canvas . set block color(new front color);/& gt;}

});

Misetbackcolor。addActionListener(新的ActionListener(){

无效的action performed(AE){ of action event){

颜色newBackColor =

Jcolorchooser。showdialog (ersblocksgame设置基本颜色。这个,

" canvas.getBackgroundColor "的();

(newBackColor!=空)

canvas . set background color(new back color);

} });

miturnharder . addactionlistener(new action listener(){

无效的action performed(AE){ of action event){

解释cur level getLevel();

(curLevel & lt;MAX _ LEVEL)set LEVEL(cur LEVEL+1);

}

});

miturneasier . addactionlistener(new action listener(){

无效的action performed(AE){ of action event){

cur level = getLevel();

(curLevel & gt1)set level(cur level-1);

}

});

mi exit . addactionlistener(new action listener(){ BR/& gt;无效的action performed(AE){ of action event){

(0);

}

});

MiPlay.addActionListener(新actionlistener () {

笑话();

}

});

MiPause.addActionListener(新ActionListener(){

无效的actionPerformed( ActionEvent) {

pauseGame();}

});

mire sume . addactionlistener(new action listener(){

无效的action performed(action event的AE){ br/> resume name();

}

});

MiAsWindows.addActionListener页(新ActionListener(){

执行的操作无效(操作事件的AE)AE){....../& gt;string plaf = " com . sun . Java . swing . plaf . windows . windows观感。

setWindowStyle(PLAF);

canvas . fanning();

ctrl panel . fanning();

mias windows . setstate(TRUE);

mias metal . setstate(false);

mias motif . setstate(false);

}

});

瘴气运动.(new ActionListener(){

无效的action performed(AE){ of action event){

string plaf = " com . sun . Java . swing . plaf . motif . motif外观";

setWindowStyle(PLAF);

canvas . fanning();

ctrl panel . fanning();

mias windows . setstate(false);

mias metal . setstate(false);

瘴气运动.setState();

}

});

MiAsMetal.addActionListener(新ActionListener(){

无效的action performed(AE){ of action event){

字符串plaf " javax . swing . plaf . metal . metal look and feel ";

setWindowStyle(PLAF);

canvas . fanning();

ctrl panel . fanning();

miAsWindows .SetState(假)

mias metal . set state(TRUE);

mias motif . setstate(false);

}

});}

/* * & lt;BR/*根据字符串设置窗口的外观。

参数PLAF字符串_at_的窗口的外观,描述

*/

无效的私有setWindowStyle(字符串PLAF){

尝试{

UIManager.setLookAndFeel(PLAF)

摇摆公用事业。updatecomponentreeui(Ben);

}追赶(例外5) {

}

}

/ *

*在游戏过程中,Runnable界面

*游戏是一个大周期,每100毫秒。

检查当前块是否在游戏中,是否在年末,如果不是,

继续等。如果在最后,你看到一个完整的舱口。

*删除的话给玩家加点,随机生成一个。

*当前块,它会自动下降。*要创建一个新块,首先检查画布上的线条。

占领,而且如果能判断游戏结束。* /

Runnable {通过私人游戏实现

无效的运行(){

//快速创建新的聚会

整数mark =(int)(math . random()*(canvas . get cols()-3)),

Style = ersblock.styles [(int)(数学。Random () * 7)] [(int)(数学。random()* 4)];....../& gt;和(播放){

如果(挡!= NULL){//第一个循环,防止空值。

(block.isAlive()){

请尝试{topic currentThread()。睡眠(100);

} catch(中断异常的IE浏览器){

ie . printstacktrace();

}

继续;

}

}

checkfully()//检查该行

如果完全填满(,是game over()){//检查游戏应该结束。

mi play . set enabled(TRUE);

miPause的set enabled();

mire sume . set enabled(false);

ctrl panel . setplaybuttonenable(TRUE);

ctrl panel . setpausebuttonlabel(TRUE);

reportGameOver()

返回;

}

Block = new ErsBlock (style,-1,在山中,getLevel(),canvas);

阻止。start();

column =(int)(math . random()*(canvas . get cols()-3));

Style = ErsBlock。STYLES [(INT)(数学随机()* 7)] [(INT)(数学随机()* 4)];

ctrl panel . settipstyle(style);

}

} / **

*只需检查画布是否完全填满。如果你删除*/

无效的checkfully () {

is(int I = 0;我& ltCanvas.getRows(),I++) {

line =-1;

Boolean fullLineColorBox = TRUE

(J = 0,J & ltcanvas . get cols();+ +){

(,!canvas.getBox(I,J).isColorBox()){

fullLineColorBox = FALSE

突破;

}

}

(fullLineColorBox){

line =-;

canvas . remove line(line);

}

}

}

/ **

基于帐户的顶行,确定游戏是否已经结束。* @返回一个布尔值,不管真实游戏是否结束*/

私有布尔isGameOver是(){

(INT I = 0;我& ltcanvas . get cols();i + +){

ErsBox box = canvas.getBox(0,I);

(box.isColorBox())返回true}

返回false

}

}