俄罗斯方块Word文档下载推荐.docx
《俄罗斯方块Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《俄罗斯方块Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
/**
*俄罗斯方块
*/
publicclassTetrisextendsJPanel{
privateintscore;
//分数
privateintlines;
//销毁的行数
privateCell[][]wall;
//背景墙
privateTetrominotetromino;
//正在下落的四格方块
privateTetrominonextOne;
//下一个四格方块
/**背景图片*/
privatestaticBufferedImagebackground;
privatestaticBufferedImageoverImage;
publicstaticBufferedImageT;
publicstaticBufferedImageS;
publicstaticBufferedImageI;
publicstaticBufferedImageL;
publicstaticBufferedImageJ;
publicstaticBufferedImageO;
publicstaticBufferedImageZ;
publicstaticfinalintROWS=20;
//背景墙的行数
publicstaticfinalintCOLS=10;
//背景墙的列数
//将图片素材,复制到com.tarena.tetris包中.
/**使用静态代码块加载静态的图片*/
static{
try{
//Tetris.class的同一个包中找"
tetris.png"
background=ImageIO.read(Tetris.class.getResource("
));
overImage=ImageIO.read(Tetris.class.getResource("
GAMEOVER.png"
T=ImageIO.read(Tetris.class.getResource("
T.png"
I=ImageIO.read(Tetris.class.getResource("
I.png"
S=ImageIO.read(Tetris.class.getResource("
S.png"
Z=ImageIO.read(Tetris.class.getResource("
Z.png"
J=ImageIO.read(Tetris.class.getResource("
J.png"
L=ImageIO.read(Tetris.class.getResource("
L.png"
O=ImageIO.read(Tetris.class.getResource("
O.png"
}catch(Exceptione){
e.printStackTrace();
}
*JPanelpaint()paint画重写paint()修改原有的绘制方法
**/
@Override
publicvoidpaint(Graphicsg){
//画背景,画墙,画正在下落的方块画下一个方块...
g.drawImage(background,0,0,null);
g.translate(15,15);
//坐标系平移
paintWall(g);
//画墙
paintTetromino(g);
//绘制正在下落的方块
paintNextOne(g);
//绘制下一个要下落的方块
paintScore(g);
//绘制分数
if(gameOver){
g.drawImage(overImage,0,0,null);
/**在Tetris添加启动方法action()*/
publicvoidaction(){
wall=newCell[ROWS][COLS];
startAction();
//wall[2][2]=newCell(2,2,T);
tetromino=Tetromino.randomOne();
nextOne=Tetromino.randomOne();
//处理键盘按下事件,在按下按键时候执行下落方法
KeyAdapterl=newKeyAdapter(){
//key按键Pressed按下了
publicvoidkeyPressed(KeyEvente){
intkey=e.getKeyCode();
//[c]
if(key==KeyEvent.VK_Q){//Q表示退出
System.exit(0);
//结束Java进程
if(gameOver){
if(key==KeyEvent.VK_S){//S表示开始
repaint();
return;
if(pause){//pause=true
if(key==KeyEvent.VK_C){//C表示继续
continueAction();
switch(key){
caseKeyEvent.VK_DOWN:
//向下箭头表示下落
softDropAction();
break;
caseKeyEvent.VK_RIGHT:
//向右箭头表示右移
moveRightAction();
caseKeyEvent.VK_LEFT:
//向左箭头表示左移
moveLeftAction();
caseKeyEvent.VK_SPACE:
//空格键表示自由下落
hardDropAction();
caseKeyEvent.VK_UP:
//向上箭头表示右旋转
rotateRightAction();
caseKeyEvent.VK_P:
//按键盘上的P表示暂停
pauseAction();
//再画一次!
};
//下落流程:
监听键盘事件->
如果下箭头按下->
//执行下落算法tetromino.softDrop()->
//修改每个格子对象的数据->
调用repaint()->
//尽快调用paint()->
paint方法会根据当前的数据
//重新绘制界面->
看到移动以后的方块了
//绑定事件到当前面板
this.requestFocus();
this.addKeyListener(l);
publicstaticfinalintFONT_COLOR=0x667799;
publicstaticfinalintFONT_SIZE=30;
/**
*绘制分数
*@paramg
privatevoidpaintScore(Graphicsg){
intx=290;
inty=160;
g.setColor(newColor(FONT_COLOR));
Fontfont=g.getFont();
//取得g当前字体
font=newFont(font.getName(),font.getStyle(),FONT_S