
用java做一个俄罗斯方块,要用到那方面的技术才行
JAVA俄罗斯方块
这让我想到了初学JAVA的时候,我就是做的俄罗斯方块。
完成最简单的俄罗斯的方块只需要 监听、线程、SWING就行了。
让我想想,好像没了。
最主要的地方就是,你要写好几个形状,其实就是坐标啦。
还有在写一个地图,判断有没有落地还有消去什么的。
然后在线程中,随机生成形状,让形状一直往下落,就是一直改变坐标,然后要有是否越界,是否落地,是否消去的判断。
就是一个不断画图的简单程序
java俄罗斯方块思路
java.awt.*; import java.awt.event.*; \\\/\\\/俄罗斯方块类 public class ERS_Block extends Frame{ public static boolean isPlay=false; public static int level=1,score=0; public static TextField scoreField,levelField; public static MyTimer timer; GameCanvas gameScr; public static void main(String[] argus){ ERS_Block ers = new ERS_Block(俄罗斯方块游戏 V1.0 Author:Vincent); WindowListener win_listener = new WinListener(); ers.addWindowListener(win_listener); } \\\/\\\/俄罗斯方块类的构造方法 ERS_Block(String title){ super(title); setSize(600,480); setLayout(new GridLayout(1,2)); gameScr = new GameCanvas(); gameScr.addKeyListener(gameScr); timer = new MyTimer(gameScr); timer.setDaemon(true); timer.start(); timer.suspend(); add(gameScr); Panel rightScr = new Panel(); rightScr.setLayout(new GridLayout(2,1,0,30)); rightScr.setSize(120,500); add(rightScr); \\\/\\\/右边信息窗体的布局 MyPanel infoScr = new MyPanel(); infoScr.setLayout(new GridLayout(4,1,0,5)); infoScr.setSize(120,300); rightScr.add(infoScr); \\\/\\\/定义标签和初始值 Label scorep = new Label(分数:,Label.LEFT); Label levelp = new Label(级数:,Label.LEFT); scoreField = new TextField(8); levelField = new TextField(8); scoreField.setEditable(false); levelField.setEditable(false); infoScr.add(scorep); infoScr.add(scoreField); infoScr.add(levelp); infoScr.add(levelField); scorep.setSize(new Dimension(20,60)); scoreField.setSize(new Dimension(20,60)); levelp.setSize(new Dimension(20,60)); levelField.setSize(new Dimension(20,60)); scoreField.setText(0); levelField.setText(1); \\\/\\\/右边控制按钮窗体的布局 MyPanel controlScr = new MyPanel(); controlScr.setLayout(new GridLayout(5,1,0,5)); rightScr.add(controlScr); \\\/\\\/定义按钮play Button play_b = new Button(开始游戏); play_b.setSize(new Dimension(50,200)); play_b.addActionListener(new Command(Command.button_play,gameScr)); \\\/\\\/定义按钮Level UP Button level_up_b = new Button(提高级数); level_up_b.setSize(new Dimension(50,200)); level_up_b.addActionListener(new Command(Command.button_levelup,gameScr)); \\\/\\\/定义按钮Level Down Button level_down_b =new Button(降低级数); level_down_b.setSize(new Dimension(50,200)); level_down_b.addActionListener(new Command(Command.button_leveldown,gameScr)); \\\/\\\/定义按钮Level Pause Button pause_b =new Button(游戏暂停); pause_b.setSize(new Dimension(50,200)); pause_b.addActionListener(new Command(Command.button_pause,gameScr)); \\\/\\\/定义按钮Quit Button quit_b = new Button(退出游戏); quit_b.setSize(new Dimension(50,200)); quit_b.addActionListener(new Command(Command.button_quit,gameScr)); controlScr.add(play_b); controlScr.add(level_up_b); controlScr.add(level_down_b); controlScr.add(pause_b); controlScr.add(quit_b); setVisible(true); gameScr.requestFocus(); } } \\\/\\\/重写MyPanel类,使Panel的四周留空间 class MyPanel extends Panel{ public Insets getInsets(){ return new Insets(30,50,30,50); } } \\\/\\\/游戏画布类 class GameCanvas extends Canvas implements KeyListener{ final int unitSize = 30; \\\/\\\/小方块边长 int rowNum; \\\/\\\/正方格的行数 int columnNum; \\\/\\\/正方格的列数 int maxAllowRowNum; \\\/\\\/允许有多少行未削 int blockInitRow; \\\/\\\/新出现块的起始行坐标 int blockInitCol; \\\/\\\/新出现块的起始列坐标 int [][] scrArr; \\\/\\\/屏幕数组 Block b; \\\/\\\/对方快的引用 \\\/\\\/画布类的构造方法 GameCanvas(){ rowNum = 15; columnNum = 10; maxAllowRowNum = rowNum - 2; b = new Block(this); blockInitRow = rowNum - 1; blockInitCol = columnNum\\\/2 - 2; scrArr = new int [32][32]; } \\\/\\\/初始化屏幕,并将屏幕数组清零的方法 void initScr(){ for(int i=0;i 我觉得明白算法比较重要:因为俄罗斯方块的游戏区是20行*10列,可以设定一个20*10的数组,初始状态下值为0,同时游戏区的20*10个小格也为空。 当有方块落到停下时,把这个方块相对的位置从数组中标出,按其颜色标出相应数字,同时屏幕区按这个数组的变化对相应位置的小格着色。 为0则空,非0则上色。 明白算法,其他就简单了。 你是cs还是bs呀 把方块弄出来需要你看书上的图形部分。 不是一句话两句话的问题。 先把方块的总类编号然后用Math.random()可以出随机数。 用(Math.random()*10)%你的方块的总类就可以得到总类的编号。 你可以尝试这么办,在游戏开始的下一条代码,Date d1=new Date();在游戏结束的时候Date d2=new Date(); d2-d1就是时间差啊。 就可以显示出用了多长时间。 不就OK了吗 满意必要做一个时钟在界面上吧 谁会在玩游戏的时候不断关注时钟呢 其实做这种游戏对水平的提高帮助不是很大,不过可以提高自信,希望你多多努力。 您的进步是我最大的动力和满足,如果您对我的回答很满意,请给我多加分。 谢谢如果想用JAVA编一个俄罗斯方块的游戏,需要用到哪些知识点
java做俄罗斯方块的问题
java 做一个俄罗斯方块,已做好了,我想加个时钟,怎么办



