俄罗斯方块java求连连看,俄罗斯方块java源代码包,谢谢了!!!

俄罗斯方块java  时间:2021-07-17  阅读:()

java俄罗斯方块问题,我看俄罗斯方块游戏,里面的右上角可以看见下一个方块是什么,这是怎么做出来的提示

比如有5种方块类型,分别对应0、1、2、3、4。

例如,第1次生成方块时,一次生成2个随机数,第一个随机数a是将要出现的方块,第二个随机数b就对应下一个方块;第2次生成新方块时,将第1次的b赋给a,然后b再生成一个随机数,以后就循环第2次这个过程。

java俄罗斯方块

我以前写过一个仿QQ火拼俄罗斯的俄罗斯方块程序。

给你提供一个思路吧,你不要整张往上画,而是用一个小方块,画到每块相应的位置上。

每个块确定一个小块为对称中心,然后剩下的3小块可以写出坐标,坐标放在每一个大块的一个数组里面保存就行了。

求JAVA课程设计俄罗斯方块代码,流程图,能有详细说明介绍的更好!感激不尽!

importnbsp;java.awt.*;nbsp;importnbsp;java.awt.event.*;nbsp;//俄罗斯方块类nbsp;bsp;classnbsp;ERS_Blocknbsp;extendsnbsp;Frame{nbsp;bsp;bsp;booleannbsp;isPlay=false;nbsp;bsp;bsp;intnbsp;level=1,score=0;nbsp;bsp;bsp;TextFieldnbsp;scoreField,levelField;nbsp;bsp;bsp;MyTimernbsp;timer;nbsp;GameCanvasnbsp;gameScr;nbsp;bsp;bsp;voidnbsp;main(String[]nbsp;argus){nbsp;ERS_Blocknbsp;ersnbsp;=nbsp;newnbsp;ERS_Block(“俄罗斯方块游戏nbsp;V1.0nbsp;Author:Vincent“);nbsp;WindowListenernbsp;win_listenernbsp;=nbsp;newnbsp;WinListener();nbsp;ers.addWindowListener(win_listener);nbsp;}nbsp;//俄罗斯方块类的构造方法nbsp;ERS_Block(Stringnbsp;title){nbsp;super(title);nbsp;setSize(600,480);nbsp;setLayout(newnbsp;GridLayout(1,2));nbsp;gameScrnbsp;=nbsp;newnbsp;GameCanvas();nbsp;gameScr.addKeyListener(gameScr);nbsp;timernbsp;=nbsp;newnbsp;MyTimer(gameScr);nbsp;timer.setDaemon(true);nbsp;timer.start();nbsp;timer.suspend();nbsp;add(gameScr);nbsp;Panelnbsp;rightScrnbsp;=nbsp;newnbsp;Panel();nbsp;rightScr.setLayout(newnbsp;GridLayout(2,1,0,30));nbsp;rightScr.setSize(120,500);nbsp;add(rightScr);nbsp;//右边信息窗体的布局nbsp;MyPanelnbsp;infoScrnbsp;=nbsp;newnbsp;MyPanel();nbsp;infoScr.setLayout(newnbsp;GridLayout(4,1,0,5));nbsp;infoScr.setSize(120,300);nbsp;rightScr.add(infoScr);nbsp;//定义标签和初始值nbsp;Labelnbsp;scorepnbsp;=nbsp;newnbsp;Label(“分数:“,Label.LEFT);nbsp;Labelnbsp;levelpnbsp;=nbsp;newnbsp;Label(“级数:“,Label.LEFT);nbsp;scoreFieldnbsp;=nbsp;newnbsp;TextField(8);nbsp;levelFieldnbsp;=nbsp;newnbsp;TextField(8);nbsp;scoreField.setEditable(false);nbsp;levelField.setEditable(false);nbsp;infoScr.add(scorep);nbsp;infoScr.add(scoreField);nbsp;infoScr.add(levelp);nbsp;infoScr.add(levelField);nbsp;scorep.setSize(newnbsp;Dimension(20,60));nbsp;scoreField.setSize(newnbsp;Dimension(20,60));nbsp;levelp.setSize(newnbsp;Dimension(20,60));nbsp;levelField.setSize(newnbsp;Dimension(20,60));nbsp;scoreField.setText(“0“);nbsp;levelField.setText(“1“);nbsp;//右边控制按钮窗体的布局nbsp;MyPanelnbsp;controlScrnbsp;=nbsp;newnbsp;MyPanel();nbsp;controlScr.setLayout(newnbsp;GridLayout(5,1,0,5));nbsp;rightScr.add(controlScr);nbsp;//定义按钮playnbsp;Buttonnbsp;play_bnbsp;=nbsp;newnbsp;Button(“开始游戏“);nbsp;play_b.setSize(newnbsp;Dimension(50,200));nbsp;play_b.addActionL

用JAVA初级做俄罗斯方块,怎么把所有方块都写出来,最初级简单的就行

你是cs还是bs呀?把方块弄出来需要你看书上的图形部分。

不是一句话两句话的问题。

先把方块的总类编号然后用Math.random()可以出随机数。

用(Math.random()*10)%你的方块的总类就可以得到总类的编号。

求java编的俄罗斯方块代码! 最好是网络版的!单机版的也好啊!谢谢诶啊

其实java做的俄罗斯方块游戏的源码网上有很多的,我给你一个单击版的吧,希望你喜欢,并且能研究一下,代码如下: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Els extends JFrame implements KeyListener,Runnable { public Els() { setSize(240,320); setUndecorated(true); int H=(int) (this.getToolkit().getScreenSize().height); int W=(int) (this.getToolkit().getScreenSize().width); setLocation(W/2-120,H/2-160); setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void paint(Graphics g) { super.paint(g); Graphics2D g2=(Graphics2D)g; g2.setColor(Color.darkGray.brighter().brighter()); //绘制小框格 for(int m=192;m<=232;m+=10) { g2.drawLine(m, 52, m,92); } for(int m=52;m<=92;m+=10) { g2.drawLine(192, m, 232, m); } //绘制大框格 for(int m=0;m<=180;m+=15) { g2.drawLine(m, 0, m, 300); } for(int m=0;m<=300;m+=15) { g2.drawLine(0, m, 180, m); } //将值不非0的格子涂黑 for(int i=1;i<13;i++) { for(int j=0;j<20;j++) { g2.setColor(Color.DARK_GRAY); if (o[i][j]!=0) g2.fillRect(15*i-13, 15*j+2, 13, 13); } } //在小框格中绘制下一个的模型 switch(nextMODE) { case 0: g2.fillRect(204, 54, 8, 8); g2.fillRect(204, 64, 8, 8); g2.fillRect(204, 74, 8, 8); g2.fillRect(204, 84, 8, 8); break; case 1: g2.fillRect(194, 64, 8, 8); g2.fillRect(204, 64, 8, 8); g2.fillRect(214, 64, 8, 8); g2.fillRect(224, 64, 8, 8); break; case 2: g2.fillRect(214, 64, 8, 8); g2.fillRect(214, 74, 8, 8); g2.fillRect(214, 84, 8, 8); g2.fillRect(204, 84, 8, 8); break; case 3: g2.fillRect(204, 64, 8, 8); g2.fillRect(204, 74, 8, 8); g2.fillRect(214, 74, 8, 8); g2.fillRect(224, 74, 8, 8); break; case 4: g2.fillRect(204, 64, 8, 8); g2.fillRect(214, 64, 8, 8); g2.fillRect(204, 74, 8, 8); g2.fillRect(204, 84, 8, 8); break; case 5: g2.fillRect(204, 64, 8, 8); g2.fillRect(214, 64, 8, 8); g2.fillRect(224, 64, 8, 8); g2.fillRect(224, 74, 8, 8); break; case 6: g2.fillRect(204, 54, 8, 8); g2.fillRect(204, 64, 8, 8); g2.fillRect(204, 74, 8, 8); g2.fillRect(214, 74, 8, 8); break; case 7: g2.fillRect(204, 74, 8, 8); g2.fillRect(214, 74, 8, 8); g2.fillRect(224, 74, 8, 8); g2.fillRect(224, 64, 8, 8); break; case 8: g2.fillRect(204, 64, 8, 8); g2.fillRect(214, 64, 8, 8); g2.fillRect(214, 74, 8, 8); g2.fillRect(214, 84, 8, 8); break; case 9: g2.fillRect(204, 64, 8, 8); g2.fillRect(214, 64, 8, 8); g2.fillRect(224, 64, 8, 8); g2.fillRect(204, 74, 8, 8); break; case 10: g2.fillRect(204, 64, 8, 8); g2.fillRect(204, 74, 8, 8); g2.fillRect(214, 74, 8, 8); g2.fillRect(214, 84, 8, 8); break; case 11: g2.fillRect(204, 74, 8, 8); g2.fillRect(214, 74, 8, 8); g2.fillRect(214, 64, 8, 8); g2.fillRect(224, 64, 8, 8); break; case 12: g2.fillRect(214, 64, 8, 8); g2.fillRect(214, 74, 8, 8); g2.fillRect(204, 74, 8, 8); g2.fillRect(204, 84, 8, 8); break; case 13: g2.fillRect(204, 64, 8, 8); g2.fillRect(214, 64, 8, 8); g2.fillRect(214, 74, 8, 8); g2.fillRect(224, 74, 8, 8); break; case 14: g2.fillRect(204, 64, 8, 8); g2.fillRect(214, 64, 8, 8); g2.fillRect(204, 74, 8, 8); g2.fillRect(214, 74, 8, 8); break; } g2.setColor(Color.black); g2.drawLine(180, 0, 180, 300); g2.setColor(Color.DARK_GRAY); g2.drawString("LEVEL", 194, 10); g2.drawString(""+LEVEL, 210, 28); g2.drawString("NEXT", 196, 45); g2.drawString("SCORE",193, 110); g2.drawString(""+SCORE,205, 130); g2.drawString("Xiong", 205, 160); g2.drawString("Xuan", 205, 180); } //方块下落的方法 public void down() { Y++; switch(MODE) { case 0: o[X+2][Y]=1; o[X+2][Y+1]=1; o[X+2][Y+2]=1; o[X+2][Y+3]++; o[X+2][Y-1]=0; break; case 1: o[X][Y+1]++; o[X+1][Y+1]++; o[X+2][Y+1]++; o[X+3][Y+1]++; o[X][Y]=0; o[X+1][Y]=0; o[X+2][Y]=0; o[X+3][Y]=0; break; case 2: o[X+2][Y]=1; o[X+2][Y+1]=1; o[X+2][Y+2]++; o[X+1][Y+2]++; o[X+2][Y-1]=0; o[X+1][Y+1]=0; break; case 3: o[X][Y]=1; o[X][Y+1]++; o[X+1][Y+1]++; o[X+2][Y+1]++; o[X][Y-1]=0; //o[X][Y]=0; o[X+1][Y]=0; o[X+2][Y]=0; break; case 4: o[X+1][Y]=1; o[X+2][Y]++; o[X+1][Y+1]=1; o[X+1][Y+2]++; o[X+1][Y-1]=0; o[X+2][Y-1]=0; break; case 5: o[X][Y]++; o[X+1][Y]++; o[X+2][Y]=1; o[X+2][Y+1]++; o[X][Y-1]=0; o[X+1][Y-1]=0; o[X+2][Y-1]=0; break; case 6: o[X+1][Y]=1; o[X+1][Y+1]=1; o[X+1][Y+2]++; o[X+2][Y+2]++; o[X+1][Y-1]=0; //o[X+1][Y]=0; //o[X+1][Y+1]=0; o[X+2][Y+1]=0; break; case 7: o[X][Y+1]++; o[X+1][Y+1]++; o[X+2][Y+1]++; o[X+2][Y]=1; o[X][Y]=0; o[X+1][Y]=0; //o[X+2][Y]=0; o[X+2][Y-1]=0; break; case 8: o[X+1][Y]++; o[X+2][Y]=1; o[X+2][Y+1]=1; o[X+2][Y+2]++; o[X+1][Y-1]=0; o[X+2][Y-1]=0; //o[X+2][Y]=0; //o[X+2][Y+1]=0; break; case 9: o[X+1][Y]=1; o[X+2][Y]++; o[X+3][Y]++; o[X+1][Y+1]++; o[X+1][Y-1]=0; o[X+2][Y-1]=0; o[X+3][Y-1]=0; //o[X+1][Y]=0; break; case 10:o[X+1][Y]=1; o[X+1][Y+1]++; o[X+2][Y+1]=1; o[X+2][Y+2]++; o[X+1][Y-1]=0; //o[X+1][Y]=0; o[X+2][Y]=0; //o[X+2][Y+1]=0; break; case 11:o[X+2][Y]=1; o[X+3][Y]++; o[X+1][Y+1]++; o[X+2][Y+1]++; o[X+2][Y-1]=0; o[X+3][Y-1]=0; o[X+1][Y]=0; //o[X+2][Y]=0; break; case 12:o[X+1][Y+1]=1; o[X+2][Y+1]++; o[X+1][Y+2]++; o[X+2][Y]=1; o[X+1][Y]=0; //o[X+2][Y]=0; //o[X+1][Y+1]=0; o[X+2][Y-1]=0; break; case 13:o[X+1][Y]++; o[X+2][Y]=1; o[X+2][Y+1]++; o[X+3][Y+1]++; o[X+1][Y-1]=0; o[X+2][Y-1]=0; //o[X+2][Y]=0; o[X+3][Y]=0; break; case 14:o[X+1][Y]=1; o[X+2][Y]=1; o[X+1][Y+1]++; o[X+2][Y+1]++; o[X+1][Y-1]=0; o[X+2][Y-1]=0; //o[X+1][Y]=0; //o[X+2][Y]=0; break; } //如果碰撞,则自动上升一格 for(int i=0;i<13;i++) { for(int j=0;j<21;j++) { if (o[i][j]==2) up(); } } } //方块上升的方法 public void up() { Y--; switch(MODE) { case 0: o[X+2][Y]++; o[X+2][Y+1]=1; o[X+2][Y+2]=1; o[X+2][Y+3]=1; o[X+2][Y+4]--; break; case 1: o[X][Y+1]++; o[X+1][Y+1]++; o[X+2][Y+1]++; o[X+3][Y+1]++; o[X][Y+2]--; o[X+1][Y+2]--; o[X+2][Y+2]--; o[X+3][Y+2]--; break; case 2: o[X+2][Y]++; o[X+2][Y+1]=1; o[X+2][Y+2]=1; o[X+1][Y+2]++; o[X+2][Y+3]--; o[X+1][Y+3]--; break; case 3: o[X][Y]++; o[X][Y+1]=1; o[X+1][Y+1]++; o[X+2][Y+1]++; o[X][Y+2]--; //o[X][Y]=0; o[X+1][Y+2]--; o[X+2][Y+2]--; break; case 4: o[X+1][Y]++; o[X+2][Y]++; o[X+1][Y+1]=1; o[X+1][Y+2]=1; o[X+1][Y+3]--; o[X+2][Y+1]--; break; case 5: o[X][Y]++; o[X+1][Y]++; o[X+2][Y]++; o[X+2][Y+1]=1; o[X][Y+1]--; o[X+1][Y+1]--; o[X+2][Y+2]--; break; case 6: o[X+1][Y]++; o[X+1][Y+1]=1; o[X+1][Y+2]=1; o[X+2][Y+2]++; o[X+1][Y+3]--; //o[X+1][Y]=0; //o[X+1][Y+1]=0; o[X+2][Y+3]--; break; case 7: o[X][Y+1]++; o[X+1][Y+1]++; o[X+2][Y+1]=1; o[X+2][Y]++; o[X][Y+2]--; o[X+1][Y+2]--; //o[X+2][Y]=0; o[X+2][Y+2]--; break; case 8: o[X+1][Y]++; o[X+2][Y]++; o[X+2][Y+1]=1; o[X+2][Y+2]=1; o[X+1][Y+1]--; o[X+2][Y+3]--; //o[X+2][Y]=0; //o[X+2][Y+1]=0; break; case 9: o[X+1][Y]++; o[X+2][Y]++; o[X+3][Y]++; o[X+1][Y+1]=1; o[X+1][Y+2]--; o[X+2][Y+1]--; o[X+3][Y+1]--; //o[X+1][Y]=0; break; case 10:o[X+1][Y]++; o[X+1][Y+1]=1; o[X+2][Y+1]++; o[X+2][Y+2]=1; o[X+1][Y+2]--; //o[X+1][Y]=0; o[X+2][Y+3]--; //o[X+2][Y+1]=0; break; case 11:o[X+2][Y]++; o[X+3][Y]++; o[X+1][Y+1]++; o[X+2][Y+1]=1; o[X+2][Y+2]--; o[X+1][Y+2]--; o[X+3][Y+1]--; //o[X+2][Y]=0; break; case 12:o[X+1][Y+1]++; o[X+2][Y+1]=1; o[X+1][Y+2]=1; o[X+2][Y]++; o[X+2][Y+2]--; //o[X+2][Y]=0; //o[X+1][Y+1]=0; o[X+1][Y+3]--; break; case 13:o[X+1][Y]++; o[X+2][Y]++; o[X+2][Y+1]=1; o[X+3][Y+1]++; o[X+1][Y+1]--; o[X+2][Y+2]--; //o[X+2][Y]=0; o[X+3][Y+2]--; break; case 14:o[X+1][Y]++; o[X+2][Y]++; o[X+1][Y+1]=1; o[X+2][Y+1]=1; o[X+1][Y+2]--; o[X+2][Y+2]--; //o[X+1][Y]=0; //o[X+2][Y]=0; break; } for(int i=0;i<20;i++) { if (o[1][i]==1&& o[2][i]==1&& o[3][i]==1&& o[4][i]==1&& o[5][i]==1&& o[6][i]==1&& o[7][i]==1&& o[8][i]==1&& o[9][i]==1&& o[10][i]==1&& o[11][i]==1&& o[12][i]==1 ) {for(int k=1;k<=12;k++) { for(int j=i;j>=1;j--) { o[k][j]=o[k][j-1]; } } SCORE++; if(SCORE==5)LEVEL++; if(SCORE==10)LEVEL++; } } X=5;Y=0; MODE=nextMODE; down(); repaint(); nextMODE=(int)(Math.random()*14); } public void left() { X--; switch(MODE) { case 0: o[X+2][Y]++; o[X+2][Y+1]++; o[X+2][Y+2]++; o[X+2][Y+3]++; o[X+3][Y]--; o[X+3][Y+1]--; o[X+3][Y+2]--; o[X+3][Y+3]--; break; case 1: o[X][Y+1]++; o[X+1][Y+1]=1; o[X+2][Y+1]=1; o[X+3][Y+1]=1; //o[X+1][Y+1]=0; //o[X+2][Y+1]=0; //o[X+3][Y+1]=0; o[X+4][Y+1]--; break; case 2: //if(X==-2)X++; o[X+2][Y]++; o[X+2][Y+1]++; o[X+2][Y+2]=1; o[X+1][Y+2]++; o[X+3][Y]--; o[X+3][Y+1]--; o[X+3][Y+2]--; //o[X+2][Y+2]=0; break; case 3: //if(X==-1)X++; o[X][Y]++; o[X][Y+1]++; o[X+1][Y+1]=1; o[X+2][Y+1]=1; o[X+1][Y]--; //o[X+1][Y+1]=0; //o[X+2][Y+1]=0; o[X+3][Y+1]--; break; case 4: //if(X==-2)X++; o[X+1][Y]++; o[X+2][Y]=1; o[X+1][Y+1]++; o[X+1][Y+2]++; //o[X+2][Y]=0; o[X+3][Y]--; o[X+2][Y+1]--; o[X+2][Y+2]--; break; case 5: //if(X==-1)X++; o[X][Y]++; o[X+1][Y]=1; o[X+2][Y]=1; o[X+2][Y+1]++; //o[X+1][Y]=0; //o[X+2][Y]=0; o[X+3][Y]--; o[X+3][Y+1]--; break; case 6: //if(X==-2)X++; o[X+1][Y]++; o[X+1][Y+1]++; o[X+1][Y+2]++; o[X+2][Y+2]=1; o[X+2][Y]--; o[X+2][Y+1]--; //o[X+2][Y+2]=0; o[X+3][Y+2]--; break; case 7: //if(X==-1)X++; o[X][Y+1]++; o[X+1][Y+1]=1; o[X+2][Y+1]=1; o[X+2][Y]++; //o[X+1][Y+1]=0; //o[X+2][Y+1]=0; o[X+3][Y+1]--; o[X+3][Y]--; break; case 8: //if(X==-2)X++; o[X+1][Y]++; o[X+2][Y]=1; o[X+2][Y+1]++; o[X+2][Y+2]++; //o[X+2][Y]=0; o[X+3][Y]--; o[X+3][Y+1]--; o[X+3][Y+2]--; break; case 9: //if(X==-2)X++; o[X+1][Y]++; o[X+2][Y]=1; o[X+3][Y]=1; o[X+1][Y+1]++; //o[X+2][Y]=0; //o[X+3][Y]=0; o[X+4][Y]--; o[X+2][Y+1]--; break; case 10://if(X==-2)X++; o[X+1][Y]++; o[X+1][Y+1]++; o[X+2][Y+1]=1; o[X+2][Y+2]++; o[X+2][Y]--; //o[X+3][Y+1]=0; o[X+3][Y+1]--; o[X+3][Y+2]--; break; case 11://if(X==-2)X++; o[X+2][Y]++; o[X+3][Y]=1; o[X+1][Y+1]++; o[X+2][Y+1]=1; //o[X+3][Y]=0; o[X+4][Y]--; //o[X+2][Y+1]=0; o[X+3][Y+1]--; break; case 12://if(X==-2)X++; o[X+1][Y+1]++; o[X+2][Y+1]=1; o[X+1][Y+2]++; o[X+2][Y]++; //o[X+2][Y+1]=0; o[X+3][Y+1]--; o[X+2][Y+2]--; o[X+3][Y]--; break; case 13://if(X==-2)X++; o[X+1][Y]++; o[X+2][Y]=1; o[X+2][Y+1]++; o[X+3][Y+1]=1; //o[X+2][Y]=0; o[X+3][Y]--; //o[X+3][Y+1]=0; o[X+4][Y+1]--; break; case 14://if(X==-2)X++; o[X+1][Y]++; o[X+2][Y]=1; o[X+1][Y+1]++; o[X+2][Y+1]=1; //o[X+2][Y]=0; o[X+3][Y]--; //o[X+2][Y+1]=0; o[X+3][Y+1]--; break; } for(int i=0;i<13;i++) { for(int j=0;j<21;j++) { if (o[i][j]==2) right(); } } } public void right() { X++; switch(MODE) { case 0: o[X+2][Y]++; o[X+2][Y+1]++; o[X+2][Y+2]++; o[X+2][Y+3]++; o[X+1][Y]--; o[X+1][Y+1]--; o[X+1][Y+2]--; o[X+1][Y+3]--; break; case 1: //if(X==11)X--; o[X][Y+1]=1; o[X+1][Y+1]=1; o[X+2][Y+1]=1; o[X+3][Y+1]++; o[X-1][Y+1]--; //o[X][Y+1]=0; //o[X+1][Y+1]=0; //o[X+2][Y+1]=0; break; case 2: //if(X==10)X--; o[X+2][Y]++; o[X+2][Y+1]++; o[X+2][Y+2]++; o[X+1][Y+2]=1; o[X+1][Y]--; o[X+1][Y+1]--; //o[X+1][Y+2]=0; o[X][Y+2]--; break; case 3: o[X][Y]++; o[X][Y+1]=1; o[X+1][Y+1]=1; o[X+2][Y+1]++; o[X-1][Y]--; o[X-1][Y+1]--; //o[X][Y+1]=0; //o[X+1][Y+1]=0; break; case 4: //if(X==10)X--; o[X+1][Y]=1; o[X+2][Y]++; o[X+1][Y+1]++; o[X+1][Y+2]++; o[X][Y]--; //o[X+1][Y]=0; o[X][Y+1]--; o[X][Y+2]--; break; case 5://if(X==10)X--; o[X][Y]=1; o[X+1][Y]=1; o[X+2][Y]++; o[X+2][Y+1]++; o[X-1][Y]--; //o[X][Y]=0; //o[X+1][Y]=0; o[X+1][Y+1]--; break; case 6: //if(X==9)X--; o[X+1][Y]++; o[X+1][Y+1]++; o[X+1][Y+2]=1; o[X+2][Y+2]++; o[X][Y]--; o[X][Y+1]--; o[X][Y+2]--; //o[X+1][Y+2]=0; break; case 7: //if(X==10)X--; o[X][Y+1]=1; o[X+1][Y+1]=1; o[X+2][Y+1]++; o[X+2][Y]++; o[X-1][Y+1]--; //o[X][Y+1]=0; //o[X+1][Y+1]=0; o[X+1][Y]--; break; case 8: //if(X==10)X--; o[X+1][Y]=1; o[X+2][Y]++; o[X+2][Y+1]++; o[X+2][Y+2]++; o[X][Y]--; //o[X+1][Y]=0; o[X+1][Y+1]--; o[X+1][Y+2]--; break; case 9: //if(X==11)X--; o[X+1][Y]=1; o[X+2][Y]=1; o[X+3][Y]++; o[X+1][Y+1]++; o[X][Y]--; //o[X+1][Y]=0; //o[X+2][Y]=0; o[X][Y+1]--; break; case 10://if(X==10)X--; o[X+1][Y]++; o[X+1][Y+1]=1; o[X+2][Y+1]++; o[X+2][Y+2]++; o[X][Y]--; o[X][Y+1]--; //o[X+1][Y+1]=0; o[X+1][Y+2]--; break; case 11://if(X==11)X--; o[X+2][Y]=1; o[X+3][Y]++; o[X+1][Y+1]=1; o[X+2][Y+1]++; o[X+1][Y]--; //o[X+2][Y]=0; o[X][Y+1]--; //o[X+1][Y+1]=0; break; case 12://if(X==10)X--; o[X+1][Y+1]=1; o[X+2][Y+1]++; o[X+1][Y+2]++; o[X+2][Y]++; o[X][Y+1]--; //o[X+1][Y+1]=0; o[X][Y+2]--; o[X+1][Y]--; break; case 13://if(X==11)X--; o[X+1][Y]=1; o[X+2][Y]++; o[X+2][Y+1]=1; o[X+3][Y+1]++; o[X][Y]--; //o[X+1][Y]=0; o[X+1][Y+1]--; //o[X+2][Y+1]=0; break; case 14://if(X==10)X--; o[X+1][Y]=1; o[X+2][Y]++; o[X+1][Y+1]=1; o[X+2][Y+1]++; o[X][Y]--; //o[X+1][Y]=0; o[X][Y+1]--; //o[X+1][Y+1]=0; break; } for(int i=0;i<14;i++) { for(int j=0;j<21;j++) { if (o[i][j]==2) left(); } } } public void change() { switch(MODE) { case 0: o[X+2][Y]--; o[X+2][Y+1]--; o[X+2][Y+2]--; o[X+2][Y+3]--; o[X][Y+1]++; o[X+1][Y+1]++; o[X+2][Y+1]++; o[X+3][Y+1]++; MODE=1; break; case 1: o[X][Y+1]--; o[X+1][Y+1]--; o[X+2][Y+1]--; o[X+3][Y+1]--; o[X+2][Y]++; o[X+2][Y+1]++; o[X+2][Y+2]++; o[X+2][Y+3]++; MODE=0; break; case 2: o[X+2][Y]--; o[X+2][Y+1]--; o[X+2][Y+2]--; o[X+1][Y+2]--; o[X][Y]++; o[X+1][Y]++; o[X+2][Y]++; o[X+2][Y+1]++; MODE=5; break; case 3: o[X][Y]--; o[X][Y+1]--; o[X+1][Y+1]--; o[X+2][Y+1]--; o[X+2][Y]++; o[X+2][Y+1]++; o[X+2][Y+2]++; o[X+1][Y+2]++; MODE=2; break; case 4: o[X+1][Y]--; o[X+2][Y]--; o[X+1][Y+1]--; o[X+1][Y+2]--; o[X][Y]++; o[X][Y+1]++; o[X+1][Y+1]++; o[X+2][Y+1]++; MODE=3; break; case 5: o[X][Y]--; o[X+1][Y]--; o[X+2][Y]--; o[X+2][Y+1]--; o[X+1][Y]++; o[X+2][Y]++; o[X+1][Y+1]++; o[X+1][Y+2]++; MODE=4; break; case 6: o[X+1][Y]--; o[X+1][Y+1]--; o[X+1][Y+2]--; o[X+2][Y+2]--; o[X][Y+1]++; o[X+1][Y+1]++; o[X+2][Y+1]++; o[X+2][Y]++; MODE=7; break; case 7: o[X][Y+1]--; o[X+1][Y+1]--; o[X+2][Y+1]--; o[X+2][Y]--; o[X+1][Y]++; o[X+2][Y]++; o[X+2][Y+1]++; o[X+2][Y+2]++; MODE=8; break; case 8: o[X+1][Y]--; o[X+2][Y]--; o[X+2][Y+1]--; o[X+2][Y+2]--; o[X+1][Y]++; o[X+2][Y]++; o[X+3][Y]++; o[X+1][Y+1]++; MODE=9; break; case 9: o[X+1][Y]--; o[X+2][Y]--; o[X+3][Y]--; o[X+1][Y+1]--; o[X+1][Y]++; o[X+1][Y+1]++; o[X+1][Y+2]++; o[X+2][Y+2]++; MODE=6; break; case 10:o[X+1][Y]--; o[X+1][Y+1]--; o[X+2][Y+1]--; o[X+2][Y+2]--; o[X+2][Y]++; o[X+3][Y]++; o[X+1][Y+1]++; o[X+2][Y+1]++; MODE=11; break; case 11:o[X+2][Y]--; o[X+3][Y]--; o[X+1][Y+1]--; o[X+2][Y+1]--; o[X+1][Y]++; o[X+1][Y+1]++; o[X+2][Y+1]++; o[X+2][Y+2]++; MODE=10; break; case 12:o[X+1][Y+1]--; o[X+2][Y+1]--; o[X+1][Y+2]--; o[X+2][Y]--; o[X+1][Y]++; o[X+2][Y]++; o[X+2][Y+1]++; o[X+3][Y+1]++; MODE=13; break; case 13:o[X+1][Y]--; o[X+2][Y]--; o[X+2][Y+1]--; o[X+3][Y+1]--; o[X+1][Y+1]++; o[X+2][Y+1]++; o[X+1][Y+2]++; o[X+2][Y]++; MODE=12; break; case 14:o[X+1][Y]=1; o[X+2][Y]=1; o[X+1][Y+1]=1; o[X+2][Y+1]=1; break; } for(int i=0;i<14;i++) { for(int j=0;j<21;j++) { if (o[i][j]==2) changeback(); } } } public void changeback() { switch(MODE) { case 0:o[X+2][Y]--; o[X+2][Y+1]--; o[X+2][Y+2]--; o[X+2][Y+3]--; o[X][Y+1]++; o[X+1][Y+1]++; o[X+2][Y+1]++; o[X+3][Y+1]++; MODE=1; break; case 1:o[X][Y+1]--; o[X+1][Y+1]--; o[X+2][Y+1]--; o[X+3][Y+1]--; o[X+2][Y]++; o[X+2][Y+1]++; o[X+2][Y+2]++; o[X+2][Y+3]++; MODE=0; break; case 2:o[X+2][Y]--; o[X+2][Y+1]--; o[X+2][Y+2]--; o[X+1][Y+2]--; o[X][Y]++; o[X][Y+1]++; o[X+1][Y+1]++; o[X+2][Y+1]++; MODE=3; break; case 3:o[X][Y]--; o[X][Y+1]--; o[X+1][Y+1]--; o[X+2][Y+1]--; o[X+1][Y]++; o[X+2][Y]++; o[X+1][Y+1]++; o[X+1][Y+2]++; MODE=4; break; case 4:o[X+1][Y]--; o[X+2][Y]--; o[X+1][Y+1]--; o[X+1][Y+2]--; o[X][Y]++; o[X+1][Y]++; o[X+2][Y]++; o[X+2][Y+1]++; MODE=5; break; case 5:o[X][Y]--; o[X+1][Y]--; o[X+2][Y]--; o[X+2][Y+1]--; o[X+2][Y]++; o[X+2][Y+1]++; o[X+2][Y+2]++; o[X+1][Y+2]++; MODE=2; break; case 6:o[X+1][Y]--; o[X+1][Y+1]--; o[X+1][Y+2]--; o[X+2][Y+2]--; o[X+1][Y]++; o[X+2][Y]++; o[X+3][Y]++; o[X+1][Y+1]++; MODE=9; break; case 7:o[X][Y+1]--; o[X+1][Y+1]--; o[X+2][Y+1]--; o[X+2][Y]--; o[X+1][Y]++; o[X+1][Y+1]++; o[X+1][Y+2]++; o[X+2][Y+2]++; MODE=6; break; case 8:o[X+1][Y]--; o[X+2][Y]--; o[X+2][Y+1]--; o[X+2][Y+2]--; o[X][Y+1]++; o[X+1][Y+1]++; o[X+2][Y+1]++; o[X+2][Y]++; MODE=7; break; case 9:o[X+1][Y]--; o[X+2][Y]--; o[X+3][Y]--; o[X+1][Y+1]--; o[X+1][Y]++; o[X+2][Y]++; o[X+2][Y+1]++; o[X+2][Y+2]++; MODE=8; break; case 10:o[X+1][Y]--; o[X+1][Y+1]--; o[X+2][Y+1]--; o[X+2][Y+2]--; o[X+2][Y]++; o[X+3][Y]++; o[X+1][Y+1]++; o[X+2][Y+1]++; MODE=11; break; case 11:o[X+2][Y]--; o[X+3][Y]--; o[X+1][Y+1]--; o[X+2][Y+1]--; o[X+1][Y]++; o[X+1][Y+1]++; o[X+2][Y+1]++; o[X+2][Y+2]++; MODE=10; break; case 12:o[X+1][Y+1]--; o[X+2][Y+1]--; o[X+1][Y+2]--; o[X+2][Y]--; o[X+1][Y]++; o[X+2][Y]++; o[X+2][Y+1]++; o[X+3][Y+1]++; MODE=13; break; case 13:o[X+1][Y]--; o[X+2][Y]--; o[X+2][Y+1]--; o[X+3][Y+1]--; o[X+1][Y+1]++; o[X+2][Y+1]++; o[X+1][Y+2]++; o[X+2][Y]++; MODE=12; break; case 14:o[X+1][Y]=1; o[X+2][Y]=1; o[X+1][Y+1]=1; o[X+2][Y+1]=1; break; } } 不好意思,如果全部代码都发上来的话,就超过了10000字了,所以后面 的代码都发不了了,如果你要的话,留一下你的邮箱,我给你发过去

求连连看,俄罗斯方块java源代码包,谢谢了!!!

//直接可以运行 import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.*; import javax.swing.Timer; public class Tetris extends JFrame { public Tetris() { Tetrisblok a = new Tetrisblok(); addKeyListener(a); add(a); } public static void main(String[] args) { Tetris frame = new Tetris(); JMenuBar menu = new JMenuBar(); frame.setJMenuBar(menu); JMenu game = new JMenu("游戏"); JMenuItem newgame = game.add("新游戏"); JMenuItem pause = game.add("暂停"); JMenuItem goon = game.add("继续"); JMenuItem exit = game.add("退出"); JMenu help = new JMenu("帮助"); JMenuItem about = help.add("关于"); menu.add(game); menu.add(help); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(220, 275); frame.setTitle("俄罗斯方块"); // frame.setUndecorated(true); frame.setVisible(true); frame.setResizable(false); } } // 创建一个俄罗斯方块类 class Tetrisblok extends JPanel implements KeyListener { // blockType 代表方块类型 // turnState代表方块状态 private int blockType; private int score = 0; private int turnState; private int x; private int y; private int i = 0; int j = 0; int flag = 0; // 定义已经放下的方块x=0-11,y=0-21; int[][] map = new int[13][23]; // 方块的形状 第一组代表方块类型有S、Z、L、J、I、O、T 7种 第二组 代表旋转几次 第三四组为 方块矩阵 private final int shapes[][][] = new int[][][] { // i { { 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 } }, // s { { 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 } }, // z { { 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }, { 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 } }, // j { { 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }, { 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, // o { { 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, // l { { 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 }, { 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, // t { { 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 } } }; // 生成新方块的方法 public void newblock() { blockType = (int) (Math.random() * 1000) % 7; turnState = (int) (Math.random() * 1000) % 4; x = 4; y = 0; if (gameover(x, y) == 1) { newmap(); drawwall(); score = 0; JOptionPane.showMessageDialog(null, "GAME OVER"); } } // 画围墙 public void drawwall() { for (i = 0; i < 12; i++) { map[i][21] = 2; } for (j = 0; j < 22; j++) { map[11][j] = 2; map[0][j] = 2; } } // 初始化地图 public void newmap() { for (i = 0; i < 12; i++) { for (j = 0; j < 22; j++) { map[i][j] = 0; } } } // 初始化构造方法 Tetrisblok() { newblock(); newmap(); drawwall(); Timer timer = new Timer(1000, new TimerListener()); timer.start(); } // 旋转的方法 public void turn() { int tempturnState = turnState; turnState = (turnState + 1) % 4; if (blow(x, y, blockType, turnState) == 1) { } if (blow(x, y, blockType, turnState) == 0) { turnState = tempturnState; } repaint(); } // 左移的方法 public void left() { if (blow(x - 1, y, blockType, turnState) == 1) { x = x - 1; } ; repaint(); } // 右移的方法 public void right() { if (blow(x + 1, y, blockType, turnState) == 1) { x = x + 1; } ; repaint(); } // 下落的方法 public void down() { if (blow(x, y + 1, blockType, turnState) == 1) { y = y + 1; delline(); } ; if (blow(x, y + 1, blockType, turnState) == 0) { add(x, y, blockType, turnState); newblock(); delline(); } ; repaint(); } // 是否合法的方法 public int blow(int x, int y, int blockType, int turnState) { for (int a = 0; a < 4; a++) { for (int b = 0; b < 4; b++) { if (((shapes[blockType][turnState][a * 4 + b] == 1) && (map[x + b + 1][y + a] == 1)) || ((shapes[blockType][turnState][a * 4 + b] == 1) && (map[x + b + 1][y + a] == 2))) { return 0; } } } return 1; } // 消行的方法 public void delline() { int c = 0; for (int b = 0; b < 22; b++) { for (int a = 0; a < 12; a++) { if (map[a][b] == 1) { c = c + 1; if (c == 10) { score += 10; for (int d = b; d > 0; d--) { for (int e = 0; e < 11; e++) { map[e][d] = map[e][d - 1]; } } } } } c = 0; } } // 判断你挂的方法 public int gameover(int x, int y) { if (blow(x, y, blockType, turnState) == 0) { return 1; } return 0; } // 把当前添加map public void add(int x, int y, int blockType, int turnState) { int j = 0; for (int a = 0; a < 4; a++) { for (int b = 0; b < 4; b++) { if (map[x + b + 1][y + a] == 0) { map[x + b + 1][y + a] = shapes[blockType][turnState][j]; } ; j++; } } } // 画方块的的方法 public void paintComponent(Graphics g) { super.paintComponent(g); // 画当前方块 for (j = 0; j < 16; j++) { if (shapes[blockType][turnState][j] == 1) { g.fillRect((j % 4 + x + 1) * 10, (j / 4 + y) * 10, 10, 10); } } // 画已经固定的方块 for (j = 0; j < 22; j++) { for (i = 0; i < 12; i++) { if (map[i][j] == 1) { g.fillRect(i * 10, j * 10, 10, 10); } if (map[i][j] == 2) { g.drawRect(i * 10, j * 10, 10, 10); } } } g.drawString("score=" + score, 125, 10); g.drawString("上课不要玩游戏,", 125, 50); g.drawString("上课不要玩游戏。

", 125, 70); g.drawString("上课不要玩游戏,", 125, 90); g.drawString("上课不要玩游戏。

", 125, 110); g.drawString("上课不要玩游戏,", 125, 130); g.drawString("上课不要玩游戏。

", 125, 150); g.drawString("上课不要玩游戏,", 125, 170); g.drawString("上课不要玩游戏。

", 125, 190); } // 键盘监听 public void keyPressed(KeyEvent e) { switch (e.getKeyCode()) { case KeyEvent.VK_DOWN: down(); break; case KeyEvent.VK_UP: turn(); break; case KeyEvent.VK_RIGHT: right(); break; case KeyEvent.VK_LEFT: left(); break; } } // 无用 public void keyReleased(KeyEvent e) { } // 无用 public void keyTyped(KeyEvent e) { } // 定时器监听 class TimerListener implements ActionListener { public void actionPerformed(ActionEvent e) { repaint(); if (blow(x, y + 1, blockType, turnState) == 1) { y = y + 1; delline(); } ; if (blow(x, y + 1, blockType, turnState) == 0) { if (flag == 1) { add(x, y, blockType, turnState); delline(); newblock(); flag = 0; } flag = 1; } ; } } }

星梦云-100G高防4H4G21M月付仅99元,成都/雅安/德阳

商家介绍:星梦云怎么样,星梦云好不好,资质齐全,IDC/ISP均有,从星梦云这边租的服务器均可以备案,属于一手资源,高防机柜、大带宽、高防IP业务,一手整C IP段,四川电信,星梦云专注四川高防服务器,成都服务器,雅安服务器,。活动优惠促销:1、成都电信夏日激情大宽带活动机(封锁UDP,不可解封):机房CPU内存硬盘带宽IP防护流量原价活动价开通方式成都电信优化线路2vCPU2G40G+60G21...

轻云互联22元/月,美国硅谷、圣何塞CN2GIA云服务器,香港沙田cn2建站vps仅25元/月

轻云互联怎么样?轻云互联,广州轻云网络科技有限公司旗下品牌,2018年5月成立以来,轻云互联以性价比的价格一直为提供个人,中大小型企业/团队云上解决方案。本次轻云互联送上的是美国圣何塞cn2 vps(免费50G集群防御)及香港沙田cn2 vps(免费10G集群防御)促销活动,促销产品均为cn2直连中国大陆线路、采用kvm虚拟技术架构及静态内存。目前,轻云互联推出美国硅谷、圣何塞CN2GIA云服务器...

瓜云互联-美国洛杉矶高防CN2高防云服务器,新老用户均可9折促销!低至32.4元/月!

瓜云互联一直主打超高性价比的海外vps产品,主要以美国cn2、香港cn2线路为主,100M以内高宽带,非常适合个人使用、企业等等!安全防护体系 弹性灵活,能为提供简单、 高效、智能、快速、低成本的云防护,帮助个人、企业从实现网络攻击防御,同时也承诺产品24H支持退换,不喜欢可以找客服退现,诚信自由交易!官方网站:点击访问瓜云互联官网活动方案:打折优惠策略:新老用户购买服务器统统9折优惠预存返款活动...

俄罗斯方块java为你推荐
oncontextmenu鼠标右键很好用,但是左键一点反应也没有,请问是什么原因呢?郭凡生慧聪网公司怎么样webcrackwebcrack4网页密码天融信防火墙都说天融信的产品不错,那天融信的下一代防火墙真的是当今最好的防火墙产品了吗?cf加速器玩cf ping高用什么加速器比较好数据分析报告范文如何写数据分析报告?什么是句柄按键精灵的句柄是什么?新手怎么制作表格如何学会制作表格?新手怎么制作表格怎么制作表格?手机建设银行网址建设银行个人网上银行使用手机浏览器访问没有登录入口。
免费申请域名 lnmp googleapps idc评测网 suspended 租空间 警告本网站美国保护 135邮箱 台湾google 宏讯 免费ftp 美国盐湖城 石家庄服务器托管 netvigator 网站防护 闪讯网 香港ip windowssever2008 winds 超低价 更多