刚进公司,老大让我写2个小游戏给他 求各位新老朋友提供下,简单小游戏就好了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 扫雷swing强的话就去做坦克大战 关键是我从网上下的小游戏不能在我的JDK下重新编译和执行,我最起码把作者名字改了吧哪位老大能给个好点子的?我的JDK版本是jdk1.6.0_02感激就不用强调了吧,第一份工作,肯定都很急迫的,好心人帮解决后下次争取自己解决自己开发(主要是慢和不熟,老大只给我半天时间就要看效果) 不要下jar包要下源代码=。= 谢谢你的回答,但我已经下了源码,但是作者编的源码是老版本的JDK开发的,在我的机子上没法编译和执行啊 不肯能JDK1.6不兼容以前版本吧 网上有坦克大战跟俄罗斯方块的代码超级玛丽的也有google一下 你老大够狠的,新人还要做一个游戏出来。我对swing也有一定了解了,还从没搞过游戏。 居然没有人贴代码·贴两个游戏吗~扫雷:import javax.swing.JButton;public class MyButton extends JButton { /** * */ private static final long serialVersionUID = 1L; private boolean b1; private boolean b2; private int row; private int col; public MyButton(String text, boolean b1, boolean b2, int row, int col) { setText(text); this.b1 = b1; this.b2 = b2; this.col = col; this.row = row; } public MyButton(int row, int col) { this("", false, false, row, col); } public MyButton(String text, int row, int col) { this(text, false, false, row, col); } public void setB1(boolean b1) { this.b1 = b1; } public void setB2(boolean b2) { this.b2 = b2; } public boolean getB1() { return b1; } public boolean getB2() { return b2; } public int getRow() { return row; } public int getCol() { return col; }}import java.awt.BorderLayout;import java.awt.Container;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import javax.swing.ButtonGroup;import javax.swing.JButton;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.JRadioButtonMenuItem;import javax.swing.Timer;public class MyFirstGame { private JFrame f; private Container con; private JPanel pUp, pDown; private JMenuItem item1; private JMenuItem item2; private JMenuItem exitItem; private JButton btn; private MyButton[][] btns; private JLabel l1; private JLabel l2; private Timer timer; private int sum; private int rows; private int cols; private int temp; private boolean flag; public MyFirstGame() { f = new JFrame(""); con = f.getContentPane(); pUp = new JPanel(); pDown = new JPanel(); con.add(pUp, BorderLayout.NORTH); con.add(pDown); // 处理Game菜单!! JMenuBar bar = new JMenuBar(); JMenu menu = new JMenu("Game"); item1 = new JRadioButtonMenuItem("Normal"); item2 = new JRadioButtonMenuItem("Hard"); exitItem = new JMenuItem("Exit"); MenuActionListener listener = new MenuActionListener(); item1.addActionListener(listener); item2.addActionListener(listener); exitItem.addActionListener(listener); menu.addSeparator(); menu.add(item1); menu.add(item2); menu.addSeparator(); menu.add(exitItem); bar.add(menu); f.setJMenuBar(bar); ButtonGroup bg = new ButtonGroup(); bg.add(item1); bg.add(item2); reset(9, 9, 10); timer = new Timer(1000, new TimerActionListener()); f.setResizable(false); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } private void reset(int rows, int cols, int sum) { this.rows = rows; this.cols = cols; this.sum = sum; temp = rows * cols - sum; flag = false; if (sum == 10) item1.setSelected(true); if (sum == 40) item2.setSelected(true); pUp.removeAll(); pUp.setLayout(new GridLayout(1, 3)); l1 = new JLabel(sum + ""); pUp.add(l1); btn = new JButton("Restart"); btn.addActionListener(new StartActionListener()); pUp.add(btn); l2 = new JLabel("0"); pUp.add(l2); pDown.removeAll(); pDown.setLayout(new GridLayout(rows, cols)); btns = new MyButton[rows][cols]; initBtns(); f.pack(); f.validate(); } private void initBtns() { double temp = (double) sum / (rows * cols); int num1 = sum; int num2 = rows * cols; for (int i = 0; i < btns.length; i++) { for (int j = 0; j < btns[i].length; j++) { double random = Math.random(); if (num1 == 0) { btns[i][j] = new MyButton("ㅂ", i, j); num2--; } else if (num1 == num2) { btns[i][j] = new MyButton("ㅂ", false, true, i, j); num1--; num2--; } else if (random > temp) { btns[i][j] = new MyButton("ㅂ", i, j); num2--; } else if (random <= temp) { btns[i][j] = new MyButton("ㅂ", false, true, i, j); num1--; num2--; } pDown.add(btns[i][j]); btns[i][j].addMouseListener(new NormalMouseListener()); } } } class TimerActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { l2.setText(Integer.parseInt(l2.getText()) + 1 + ""); } }; class MenuActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { Object source = e.getSource(); // get information of the button that be push if (source == item1) { item1.setSelected(true); // the method setSelected:set up the menu is selected or not! reset(9, 9, 10); } else if (source == item2) { item2.setSelected(true); reset(16, 16, 40); } else { System.exit(0); } } }; class StartActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { if (item1.isSelected() == true) reset(9, 9, 10); else if (item2.isSelected() == true) reset(16, 16, 40); } }; class NormalMouseListener extends MouseAdapter { public void mouseClicked(MouseEvent e) { if (!flag) { timer.start(); flag = true; } MyButton btn = (MyButton) e.getSource(); if (btn.isEnabled() == false) return; if (e.getButton() == MouseEvent.BUTTON1/* 鼠标左键 */) { if (btn.getText().equals("*")) l1.setText(Integer.parseInt(l1.getText()) + 1 + ""); if (btn.getB2() == true) { l2.setText("Game over ,You lose!!!!"); showAll(); } else { showLeave(btn.getRow(), btn.getCol()); } } else if (e.getButton() == MouseEvent.BUTTON3/* 鼠标右键 */) { if (btn.getText().equals("*")) { btn.setText("ㅂ"); l1.setText(Integer.parseInt(l1.getText()) + 1 + ""); } else { btn.setText("*"); l1.setText(Integer.parseInt(l1.getText()) - 1 + ""); } } f.validate(); } // 显示所有MyButton信息 private void showAll() { timer.stop(); for (int i = 0; i < btns.length; i++) { for (int j = 0; j < btns[i].length; j++) { if (btns[i][j].getB2() == true) btns[i][j].setText("*"); else { int num = check(i, j); if (num == 0) btns[i][j].setText(""); else btns[i][j].setText("" + num); } btns[i][j].setEnabled(false); } } } // 显示点击MyButton应显示的信息! private void showLeave(int row, int col) { int num = check(row, col); btns[row][col].setB1(true); if (--temp == 0) { l2.setText("you win take " + l2.getText() + "seconds!"); showAll(); } btns[row][col].setEnabled(false); if (num > 0) btns[row][col].setText("" + num); else { btns[row][col].setText(""); if (row - 1 >= 0 && col - 1 >= 0 && btns[row - 1][col - 1].getB1() == false) { showLeave(row - 1, col - 1); } if (row - 1 >= 0 && btns[row - 1][col].getB1() == false) { showLeave(row - 1, col); } if (row - 1 >= 0 && col + 1 < cols && btns[row - 1][col + 1].getB1() == false) { showLeave(row - 1, col + 1); } if (col - 1 >= 0 && btns[row][col - 1].getB1() == false) { showLeave(row, col - 1); } if (col + 1 < cols && btns[row][col + 1].getB1() == false) { showLeave(row, col + 1); } if (row + 1 < rows && col - 1 >= 0 && btns[row + 1][col - 1].getB1() == false) { showLeave(row + 1, col - 1); } if (row + 1 < rows && btns[row + 1][col].getB1() == false) { showLeave(row + 1, col); } if (row + 1 < rows && col + 1 < cols && btns[row + 1][col + 1].getB1() == false) { showLeave(row + 1, col + 1); } } } // 检查周围地雷数量 private int check(int row, int col) { int count = 0; if (row - 1 >= 0 && col - 1 >= 0 && btns[row - 1][col - 1].getB2() == true) count++; if (row - 1 >= 0 && btns[row - 1][col].getB2() == true) count++; if (row - 1 >= 0 && col + 1 < cols && btns[row - 1][col + 1].getB2() == true) count++; if (col - 1 >= 0 && btns[row][col - 1].getB2() == true) count++; if (col + 1 < cols && btns[row][col + 1].getB2() == true) count++; if (row + 1 < rows && col - 1 >= 0 && btns[row + 1][col - 1].getB2() == true) count++; if (row + 1 < rows && btns[row + 1][col].getB2() == true) count++; if (row + 1 < rows && col + 1 < cols && btns[row + 1][col + 1].getB2() == true) count++; return count; } }; public static void main(String[] args) { new MyFirstGame(); }} 俄罗斯方块--这个论坛上面有~//@id jfreeChar.g.java is created by jiangwh 下午12:32:46/2010-6-22package game;import java.awt.Graphics;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.Timer;public class Tetris extends JFrame { private static final long serialVersionUID = 1L; public Tetris() { Tetrisblok a = new Tetrisblok(); addKeyListener(a); add(a); } /** * @desc:界面部分 * @param args */ 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("Tetris内测版"); // 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(); case KeyEvent.VK_S: down(); break; case KeyEvent.VK_W: turn(); break; case KeyEvent.VK_D: right(); break; case KeyEvent.VK_A: 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; } } }}//这个是copy他人的· 哥们你太有才了啊 war3 你知道是多少人开发的不,有多少人测试啊 很简单的序列化程序,抛出io.EOFException 异常 求一个NIO实现的长连接池 关于多线程的执行顺序 前辈们请进.....!!!!! jdbc-odbc桥中Statments和PreStatments有什么区别? Java Windows下串口通信包的诡异问题 新手求问一个方法 字节数组问题 大家如何连接sybase数据库的,我不想用jdbcodbc桥来联接。 如何通过一个JFrame对象来重写其中的paint方法。 才开始学java 老是会遇到空指针问题。。。 求解。。。
我的JDK版本是jdk1.6.0_02感激就不用强调了吧,第一份工作,肯定都很急迫的,好心人帮解决后下次争取自己解决自己开发(主要是慢和不熟,老大只给我半天时间就要看效果)
不要下jar包要下源代码=。=
谢谢你的回答,但我已经下了源码,但是作者编的源码是老版本的JDK开发的,在我的机子上没法编译和执行啊
超级玛丽的也有
google一下
扫雷:import javax.swing.JButton;public class MyButton extends JButton {
/**
*
*/
private static final long serialVersionUID = 1L;
private boolean b1;
private boolean b2;
private int row;
private int col; public MyButton(String text, boolean b1, boolean b2, int row, int col) {
setText(text);
this.b1 = b1;
this.b2 = b2;
this.col = col;
this.row = row;
} public MyButton(int row, int col) {
this("", false, false, row, col);
} public MyButton(String text, int row, int col) {
this(text, false, false, row, col);
} public void setB1(boolean b1) {
this.b1 = b1;
} public void setB2(boolean b2) {
this.b2 = b2;
} public boolean getB1() {
return b1;
} public boolean getB2() {
return b2;
} public int getRow() {
return row;
} public int getCol() {
return col;
}}
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;import javax.swing.ButtonGroup;
import javax.swing.JButton;
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.JRadioButtonMenuItem;
import javax.swing.Timer;public class MyFirstGame {
private JFrame f;
private Container con;
private JPanel pUp, pDown;
private JMenuItem item1;
private JMenuItem item2;
private JMenuItem exitItem;
private JButton btn;
private MyButton[][] btns;
private JLabel l1;
private JLabel l2;
private Timer timer;
private int sum;
private int rows;
private int cols;
private int temp;
private boolean flag; public MyFirstGame() { f = new JFrame("");
con = f.getContentPane();
pUp = new JPanel();
pDown = new JPanel();
con.add(pUp, BorderLayout.NORTH);
con.add(pDown); // 处理Game菜单!!
JMenuBar bar = new JMenuBar();
JMenu menu = new JMenu("Game");
item1 = new JRadioButtonMenuItem("Normal");
item2 = new JRadioButtonMenuItem("Hard");
exitItem = new JMenuItem("Exit"); MenuActionListener listener = new MenuActionListener();
item1.addActionListener(listener);
item2.addActionListener(listener);
exitItem.addActionListener(listener); menu.addSeparator();
menu.add(item1);
menu.add(item2);
menu.addSeparator();
menu.add(exitItem); bar.add(menu); f.setJMenuBar(bar); ButtonGroup bg = new ButtonGroup();
bg.add(item1);
bg.add(item2); reset(9, 9, 10); timer = new Timer(1000, new TimerActionListener());
f.setResizable(false);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
} private void reset(int rows, int cols, int sum) {
this.rows = rows;
this.cols = cols;
this.sum = sum;
temp = rows * cols - sum;
flag = false; if (sum == 10)
item1.setSelected(true);
if (sum == 40)
item2.setSelected(true); pUp.removeAll();
pUp.setLayout(new GridLayout(1, 3));
l1 = new JLabel(sum + "");
pUp.add(l1);
btn = new JButton("Restart");
btn.addActionListener(new StartActionListener());
pUp.add(btn); l2 = new JLabel("0");
pUp.add(l2); pDown.removeAll();
pDown.setLayout(new GridLayout(rows, cols));
btns = new MyButton[rows][cols]; initBtns(); f.pack();
f.validate();
} private void initBtns() {
double temp = (double) sum / (rows * cols);
int num1 = sum;
int num2 = rows * cols;
for (int i = 0; i < btns.length; i++) {
for (int j = 0; j < btns[i].length; j++) {
double random = Math.random();
if (num1 == 0) {
btns[i][j] = new MyButton("ㅂ", i, j);
num2--;
} else if (num1 == num2) {
btns[i][j] = new MyButton("ㅂ", false, true, i, j);
num1--;
num2--;
} else if (random > temp) {
btns[i][j] = new MyButton("ㅂ", i, j);
num2--;
} else if (random <= temp) {
btns[i][j] = new MyButton("ㅂ", false, true, i, j);
num1--;
num2--;
}
pDown.add(btns[i][j]);
btns[i][j].addMouseListener(new NormalMouseListener());
}
}
} class TimerActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
l2.setText(Integer.parseInt(l2.getText()) + 1 + "");
}
}; class MenuActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
// get information of the button that be push
if (source == item1) {
item1.setSelected(true);
// the method setSelected:set up the menu is selected or not!
reset(9, 9, 10);
} else if (source == item2) {
item2.setSelected(true);
reset(16, 16, 40);
} else {
System.exit(0);
}
}
}; class StartActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (item1.isSelected() == true)
reset(9, 9, 10);
else if (item2.isSelected() == true)
reset(16, 16, 40);
}
}; class NormalMouseListener extends MouseAdapter {
public void mouseClicked(MouseEvent e) {
if (!flag) {
timer.start();
flag = true;
} MyButton btn = (MyButton) e.getSource(); if (btn.isEnabled() == false)
return; if (e.getButton() == MouseEvent.BUTTON1/* 鼠标左键 */) {
if (btn.getText().equals("*"))
l1.setText(Integer.parseInt(l1.getText()) + 1 + ""); if (btn.getB2() == true) {
l2.setText("Game over ,You lose!!!!");
showAll();
} else {
showLeave(btn.getRow(), btn.getCol());
}
} else if (e.getButton() == MouseEvent.BUTTON3/* 鼠标右键 */) {
if (btn.getText().equals("*")) {
btn.setText("ㅂ");
l1.setText(Integer.parseInt(l1.getText()) + 1 + "");
} else {
btn.setText("*");
l1.setText(Integer.parseInt(l1.getText()) - 1 + "");
}
}
f.validate();
} // 显示所有MyButton信息
private void showAll() {
timer.stop();
for (int i = 0; i < btns.length; i++) {
for (int j = 0; j < btns[i].length; j++) {
if (btns[i][j].getB2() == true)
btns[i][j].setText("*");
else {
int num = check(i, j);
if (num == 0)
btns[i][j].setText("");
else
btns[i][j].setText("" + num);
}
btns[i][j].setEnabled(false);
}
}
} // 显示点击MyButton应显示的信息!
private void showLeave(int row, int col) { int num = check(row, col); btns[row][col].setB1(true);
if (--temp == 0) {
l2.setText("you win take " + l2.getText() + "seconds!");
showAll();
}
btns[row][col].setEnabled(false); if (num > 0)
btns[row][col].setText("" + num);
else {
btns[row][col].setText(""); if (row - 1 >= 0 && col - 1 >= 0
&& btns[row - 1][col - 1].getB1() == false) {
showLeave(row - 1, col - 1);
}
if (row - 1 >= 0 && btns[row - 1][col].getB1() == false) {
showLeave(row - 1, col);
}
if (row - 1 >= 0 && col + 1 < cols
&& btns[row - 1][col + 1].getB1() == false) {
showLeave(row - 1, col + 1);
}
if (col - 1 >= 0 && btns[row][col - 1].getB1() == false) {
showLeave(row, col - 1);
}
if (col + 1 < cols && btns[row][col + 1].getB1() == false) {
showLeave(row, col + 1);
}
if (row + 1 < rows && col - 1 >= 0
&& btns[row + 1][col - 1].getB1() == false) {
showLeave(row + 1, col - 1);
}
if (row + 1 < rows && btns[row + 1][col].getB1() == false) {
showLeave(row + 1, col);
}
if (row + 1 < rows && col + 1 < cols
&& btns[row + 1][col + 1].getB1() == false) {
showLeave(row + 1, col + 1);
}
}
} // 检查周围地雷数量
private int check(int row, int col) {
int count = 0;
if (row - 1 >= 0 && col - 1 >= 0
&& btns[row - 1][col - 1].getB2() == true)
count++;
if (row - 1 >= 0 && btns[row - 1][col].getB2() == true)
count++;
if (row - 1 >= 0 && col + 1 < cols
&& btns[row - 1][col + 1].getB2() == true)
count++;
if (col - 1 >= 0 && btns[row][col - 1].getB2() == true)
count++;
if (col + 1 < cols && btns[row][col + 1].getB2() == true)
count++;
if (row + 1 < rows && col - 1 >= 0
&& btns[row + 1][col - 1].getB2() == true)
count++;
if (row + 1 < rows && btns[row + 1][col].getB2() == true)
count++;
if (row + 1 < rows && col + 1 < cols
&& btns[row + 1][col + 1].getB2() == true)
count++;
return count;
}
}; public static void main(String[] args) {
new MyFirstGame();
}
}
俄罗斯方块--这个论坛上面有~//@id jfreeChar.g.java is created by jiangwh 下午12:32:46/2010-6-22
package game;import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.Timer;public class Tetris extends JFrame {
private static final long serialVersionUID = 1L; public Tetris() {
Tetrisblok a = new Tetrisblok();
addKeyListener(a);
add(a); } /**
* @desc:界面部分
* @param args
*/
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("Tetris内测版");
// 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();
case KeyEvent.VK_S:
down();
break;
case KeyEvent.VK_W:
turn();
break;
case KeyEvent.VK_D:
right();
break;
case KeyEvent.VK_A:
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;
}
}
}
}
//这个是copy他人的·
war3 你知道是多少人开发的不,有多少人测试啊