求用java写的俄罗斯方块代码 http://www.csdn.net/cnshare/soft/13/13888.shtm 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.csdn.net/cnshare/soft/8/8388.shtm public class Game extends java.awt.Frame{ public Game() { setTitle("¶íÂÞ˹·½¿éÓÎÏ· - Ghost Valley"); addWindowListener(new java.awt.event.WindowAdapter(){ public void windowClosing(java.awt.event.WindowEvent e){ dispose(); System.exit(0); } }); GameCanvas gameCanvas = new GameCanvas(); setLayout(new java.awt.BorderLayout()); add(gameCanvas,"Center"); setResizable(false); setLocation((java.awt.Toolkit.getDefaultToolkit().getScreenSize().width-gameCanvas.getPreferredSize().width)/2,(java.awt.Toolkit.getDefaultToolkit().getScreenSize().height-gameCanvas.getPreferredSize().height)/2); pack(); show(); } public static void main(String args[]){ new Game(); }}class GameCanvas extends java.awt.Canvas implements Runnable{ public static final int BKSIZE = 5; public static final int BDWIDTH = 20; public static final int BDHEIGHT = 30; ////// Inner class Block//////// private class Block { public boolean bkdata[][] = new boolean[BKSIZE][BKSIZE]; public int rpos,cpos; public Block(final boolean bkdata1[][],int rpos,int cpos) { //this.bkdata = (boolean[][])bkdata1.clone(); for(int i=0; i<BKSIZE; i++) for(int j=0; j<BKSIZE; j++) this.bkdata[i][j] = bkdata1[i][j]; this.rpos = rpos; this.cpos = cpos; } public Block(final Block bk) { //this.bkdata = (boolean[][])bk.bkdata.clone(); for(int i=0; i<BKSIZE; i++) for(int j=0; j<BKSIZE; j++) this.bkdata[i][j] = bk.bkdata[i][j]; this.rpos = bk.rpos; this.cpos = bk.cpos; } public void doAction(int action) { switch(action) { case Message.MOVE_UP: this.rpos--; break; case Message.MOVE_DOWN: this.rpos++; break; case Message.MOVE_LEFT: this.cpos--; break; case Message.MOVE_RIGHT: this.cpos++; break; case Message.ROTATE_CLOCK: { final int x0 = BKSIZE/2; final int y0 = BKSIZE/2; //boolean bkdata1[][] = (boolean[][])this.bkdata.clone(); boolean bkdata1[][] = new boolean[BKSIZE][BKSIZE]; for(int i=0; i<BKSIZE; i++) for(int j=0; j<BKSIZE; j++) bkdata1[i][j] = this.bkdata[i][j]; for(int x=0; x<BKSIZE; x++) for(int y=0; y<BKSIZE; y++) this.bkdata[y][-x+2*y0] = bkdata1[x][y]; break; } case Message.ROTATE_ANTICLOCK: { final int x0 = BKSIZE/2; final int y0 = BKSIZE/2; //boolean bkdata1[][] = (boolean[][])this.bkdata.clone(); boolean bkdata1[][] = new boolean[BKSIZE][BKSIZE]; for(int i=0; i<BKSIZE; i++) for(int j=0; j<BKSIZE; j++) bkdata1[i][j] = this.bkdata[i][j]; for(int x=0; x<BKSIZE; x++) for(int y=0; y<BKSIZE; y++) this.bkdata[-y+2*x0][x] = bkdata1[x][y]; break; } } } } ////// Inner class Board ///// private class Board { public boolean bddata[][] = new boolean[BDHEIGHT][BDWIDTH]; public Board() { clear(); } public Board(final Board board) { //this.bddata = (boolean[][])board.bddata.clone(); for(int i=0; i<BDHEIGHT; i++) for(int j=0; j<BDWIDTH; j++) this.bddata[i][j] = board.bddata[i][j]; } public void clear() { for(int i=0; i<BDHEIGHT; i++) for(int j=0; j<BDWIDTH; j++) bddata[i][j] = false; } } 关于十进制和八进制的问题 java代码中生成大量的new File()对象,对程序有不好的影响吗? 谁哪有PhoneNumberArea.dat源代码 帮帮忙大虾们··我这段代码哪里问题? 包内文件路径问题 用java程序如何修改Linux中的ip地址? 哈哈,发现interface和abstract class可以声明为private的! java如何执行ms sql2000的存储过程 java的类库说明从那里下载啊? java 数据库连接问题 在这样一个例子中,为什么会出现这种现象,难道一个整形数里竟能存放多个数字么? 怎么实现文本框左对齐????
{
public Game()
{
setTitle("¶íÂÞ˹·½¿éÓÎÏ· - Ghost Valley");
addWindowListener(new java.awt.event.WindowAdapter(){
public void windowClosing(java.awt.event.WindowEvent e){
dispose();
System.exit(0);
}
});
GameCanvas gameCanvas = new GameCanvas();
setLayout(new java.awt.BorderLayout());
add(gameCanvas,"Center");
setResizable(false);
setLocation((java.awt.Toolkit.getDefaultToolkit().getScreenSize().width-gameCanvas.getPreferredSize().width)/2,(java.awt.Toolkit.getDefaultToolkit().getScreenSize().height-gameCanvas.getPreferredSize().height)/2);
pack();
show();
}
public static void main(String args[]){ new Game(); }
}
class GameCanvas extends java.awt.Canvas implements Runnable
{
public static final int BKSIZE = 5;
public static final int BDWIDTH = 20;
public static final int BDHEIGHT = 30;
////// Inner class Block////////
private class Block
{
public boolean bkdata[][] = new boolean[BKSIZE][BKSIZE];
public int rpos,cpos;
public Block(final boolean bkdata1[][],int rpos,int cpos)
{
//this.bkdata = (boolean[][])bkdata1.clone();
for(int i=0; i<BKSIZE; i++)
for(int j=0; j<BKSIZE; j++)
this.bkdata[i][j] = bkdata1[i][j];
this.rpos = rpos;
this.cpos = cpos;
}
public Block(final Block bk)
{
//this.bkdata = (boolean[][])bk.bkdata.clone();
for(int i=0; i<BKSIZE; i++)
for(int j=0; j<BKSIZE; j++)
this.bkdata[i][j] = bk.bkdata[i][j];
this.rpos = bk.rpos;
this.cpos = bk.cpos;
}
public void doAction(int action)
{
switch(action)
{
case Message.MOVE_UP:
this.rpos--;
break;
case Message.MOVE_DOWN:
this.rpos++;
break;
case Message.MOVE_LEFT:
this.cpos--;
break;
case Message.MOVE_RIGHT:
this.cpos++;
break;
case Message.ROTATE_CLOCK:
{
final int x0 = BKSIZE/2;
final int y0 = BKSIZE/2;
//boolean bkdata1[][] = (boolean[][])this.bkdata.clone();
boolean bkdata1[][] = new boolean[BKSIZE][BKSIZE];
for(int i=0; i<BKSIZE; i++)
for(int j=0; j<BKSIZE; j++)
bkdata1[i][j] = this.bkdata[i][j];
for(int x=0; x<BKSIZE; x++)
for(int y=0; y<BKSIZE; y++)
this.bkdata[y][-x+2*y0] = bkdata1[x][y];
break;
}
case Message.ROTATE_ANTICLOCK:
{
final int x0 = BKSIZE/2;
final int y0 = BKSIZE/2;
//boolean bkdata1[][] = (boolean[][])this.bkdata.clone();
boolean bkdata1[][] = new boolean[BKSIZE][BKSIZE];
for(int i=0; i<BKSIZE; i++)
for(int j=0; j<BKSIZE; j++)
bkdata1[i][j] = this.bkdata[i][j];
for(int x=0; x<BKSIZE; x++)
for(int y=0; y<BKSIZE; y++)
this.bkdata[-y+2*x0][x] = bkdata1[x][y];
break;
}
}
}
}
////// Inner class Board /////
private class Board
{
public boolean bddata[][] = new boolean[BDHEIGHT][BDWIDTH];
public Board()
{
clear();
}
public Board(final Board board)
{
//this.bddata = (boolean[][])board.bddata.clone();
for(int i=0; i<BDHEIGHT; i++)
for(int j=0; j<BDWIDTH; j++)
this.bddata[i][j] = board.bddata[i][j];
}
public void clear()
{
for(int i=0; i<BDHEIGHT; i++)
for(int j=0; j<BDWIDTH; j++)
bddata[i][j] = false;
}
}