我们爱分享----俄罗斯方块源码(一分钟copy到机器上试玩下)

仙人长 2011-08-31 01:30:39
加精

//大爱伙可以先把源码copy到机器上试一下,再回贴,这是我上学时写的一直没有公开过(不过还有些bug代码也没重构,后来//没时间放下了 一直没写下去了,不怎么会玩贴多次发送吧),分不多谢谢大家的支持谢谢大家无声的掌声^_^

package game;


import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.LayoutManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Random;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.Timer;
import javax.swing.border.Border;

public class QuareGame extends JFrame implements ActionListener {
private GamePanel gamePanel ;
//菜单工具组件
JMenuBar menuBar = new JMenuBar();
//menuBar.setSize(20, 20);
JMenu menuFile = new JMenu("游戏");
JMenuItem newGame = new JMenuItem("新游戏");
JMenuItem pauseGame = new JMenuItem("暂停");
JMenuItem overGame = new JMenuItem("结束");
JMenu menuHelp=new JMenu("帮助");
//
JLabel labLevel=new JLabel("选择关卡:");
JTextField txtLevel=new JTextField();

public QuareGame(GamePanel gp) {
setBounds(500, 100, 400, 480);
setTitle("my small game");
setLayout(new BorderLayout());
JFrame.setDefaultLookAndFeelDecorated(true);
//添加菜单条

setJMenuBar(createMenuBar());
this.gamePanel = gp;
if(gamePanel!=null){
add(gamePanel);
addKeyListener(gamePanel);
}
labLevel.setBounds(260, 140, 50, 30);
txtLevel.setBounds(260, 180, 50, 30);
// add(labLevel);
// add(txtLevel);
setVisible(true);
// setResizable(false);
}

// 菜单条
public JMenuBar createMenuBar() {

menuFile.add(newGame);
menuFile.add(pauseGame);
menuFile.add(overGame);

menuBar.add(menuFile);
menuBar.add(menuHelp);
menuHelp.add(new JMenuItem("版本号"));
//添加事件
newGame.addActionListener(this);
pauseGame.addActionListener(this);
overGame.addActionListener(this);
return menuBar;
}

public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
QuareGame game = new QuareGame(new GamePanel(new int[22][12] ,new int[2][2]));
}

@Override
public void actionPerformed(ActionEvent e) {
//System.out.println(e.getActionCommand());
if(e.getActionCommand(). equals("新游戏")){
System.out.println("newgame");
if(gamePanel!=null){
remove(gamePanel);
removeKeyListener(gamePanel);
}
this.gamePanel = new GamePanel(new int[22][12] ,new int[2][2]);
add(gamePanel);
addKeyListener(gamePanel);
}else if(e.getActionCommand().equals("暂停")){
pauseGame.setText("继续");
gamePanel.timer.stop();
}else if(e.getActionCommand().equals("继续")){
pauseGame.setText("暂停");
gamePanel.timer.start();
}else if(e.getActionCommand().equals("结束")){
if(gamePanel!=null)
this.remove(gamePanel);
gamePanel=null;
}
}
}

class GamePanel extends JPanel implements KeyListener {
/**
*
*/
private static final long serialVersionUID = 1L;
Random random=new Random();
JLabel labLevel=new JLabel("选择关卡:");
JTextField txtLevel=new JTextField();
int size = 20;// 显示大小
// 座标
int x = 4, y;
int i = 0, j = 0;
Timer timer=null;
int level=1;
int score =0;
int steep=1000;//方块下降的速度
TimerAction timerAction;
//绘图颜色
Color mapColor;
Color moveShapColor;
int colors[][]={{255, 222, 173},{47 ,79, 79},{255, 228 ,225},{0 ,255 ,0},{0, 0 ,255},{255, 193, 37}
,{156 ,156 ,156 },{202 ,225, 255},{171, 130, 255},{224 ,102 ,255},{255 ,62 ,150},{255, 0 ,0}};
// squareType类型和 squareState状态
int squareType, squareState;
int nextState=0;//每次产生一个新的会自加1并取2的余数赋给自己
int map[][];// = new int;
int nextTypeAndState [][];
// 方块的几种形状态和状态 (每个方块由一个4*4的矩阵构成)
// I O T Z S L J
int shape[][][];
//构造函数

public GamePanel(int map[][],int nextTypeAndState[][]) {
this.nextTypeAndState=nextTypeAndState;
this.map=map;
this.shape=this.initShap();
setBackground(new Color(250, 250, 250));
initMap();
initWall();
createdSquare();
timerAction=new TimerAction();
timer = new Timer(steep, timerAction);
timer.start();
score = 0;
initTypeAndState();
this.mapColor=createColor();
this.moveShapColor=createColor();
// setLayout();
//
// labLevel.setBounds(260, 140, 80, 30);
// txtLevel.setBounds(50, 80, 50, 80);
// txtLevel.setText("111");
// txtLevel.setSize(10, 10);
// add(labLevel,BorderLayout.EAST);
// add(txtLevel,BorderLayout.EAST);
setSize(400, 480);
}
...全文
7412 132 打赏 收藏 转发到动态 举报
写回复
用AI写文章
132 条回复
切换为时间正序
请发表友善的回复…
发表回复
brvel 2014-03-03
  • 打赏
  • 举报
回复
儿时的游戏,怀念ING
klsstt 2014-01-27
  • 打赏
  • 举报
回复
楼楼敢不敢教教我……
love_wizard 2013-12-17
  • 打赏
  • 举报
回复
强大啊 学习
他帅的一B 2013-11-21
  • 打赏
  • 举报
回复
顶一下 现在正在学习Java开发,希望能有个好的未来
heuman 2013-11-20
  • 打赏
  • 举报
回复
so 牛!!!!!!!
仙人长 2013-11-13
  • 打赏
  • 举报
回复
引用 138 楼 zhuimeng1225 的回复:
能写到这样,已经很不错了,只是这样,让测试的人,很难哦,建议下次如果共享的话把文件src打包,或者工程打包更好。
如果编译报错的话 或者将它copy到myeclipse里有语法错误 请将@override去掉就可以了,这是一个玩整的代码直接copy到一个文件中,只要注意下文件名还包名 ps:我去学习其它语言了一在花在学习上很少上csdn,未能及时回复见谅
zhuimeng1225 2013-09-29
  • 打赏
  • 举报
回复
能写到这样,已经很不错了,只是这样,让测试的人,很难哦,建议下次如果共享的话把文件src打包,或者工程打包更好。
seemlam 2013-09-26
  • 打赏
  • 举报
回复
学习!!
闲去野鹤 2013-09-17
  • 打赏
  • 举报
回复
谁有Web版的俄罗斯?提供一下研究
执笔写春秋 2013-05-06
  • 打赏
  • 举报
回复
为什么我用javac 时候会出现这个 难道是JDK版本问题
求解释大神们。
fenghai22 2013-03-31
  • 打赏
  • 举报
回复
不错哦,值得学习
Simon_lvj 2013-03-22
  • 打赏
  • 举报
回复
游戏的功能是实现了,不过界面做的不怎么好看,不过lz还是相当厉害了。
终结i络 2013-02-23
  • 打赏
  • 举报
回复
作者能加下我的QQ, 把源Code发给我呢; wang123qisheng@163.com
  • 打赏
  • 举报
回复
顶楼主,不过最好还是自己先尝试做下,我有坦克大战的
ld_7558082 2013-01-16
  • 打赏
  • 举报
回复
Swing开发的Java,不错我也学习学习
无奈刀客 2012-12-25
  • 打赏
  • 举报
回复
确实应该顶一下,不过就是有点眼花。
swing_cpp 2012-11-20
  • 打赏
  • 举报
回复
可以发邮箱的吗 谢谢楼主 771068383@qq.com
wy610739572 2012-10-08
  • 打赏
  • 举报
回复
这样也可以啊???
ycy42739 2012-09-21
  • 打赏
  • 举报
回复
这个代码全吗????怎么我拷下来之后少方法啊。。。。 initMap();
initWall();
createdSquare()这些个方法有吗?
麻烦楼主能给我发一份吗?万分感谢!!。。新手见谅啊

邮箱:
476593544@qq.com
  • 打赏
  • 举报
回复
好东西,先存下来看看,呵呵
加载更多回复(112)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧