【java】五子棋小游戏
来源:互联网 发布:91视频解析网站源码 编辑:程序博客网 时间:2024/04/30 14:55
/* java简单的五子棋小游戏*/import java.awt.*;import java.awt.event.*;import java.applet.Applet;import java.awt.Color;public class GoBang extends Applet implements ActionListener, MouseListener,MouseMotionListener, ItemListener {int color = 0;// 旗子的颜色标识 0:白子 1:黑子boolean isStart = false;// 游戏开始标志int bodyArray[][] = new int[16][16]; // 设置棋盘棋子状态 0 无子 1 白子 2 黑子Button b1 = new Button("游戏开始");Button b2 = new Button("重置游戏");Label lblWin = new Label(" ");Checkbox ckbHB[] = new Checkbox[2];CheckboxGroup ckgHB = new CheckboxGroup();public void init() {setLayout(null);addMouseListener(this);add(b1);b1.setBounds(330, 50, 80, 30);b1.addActionListener(this);add(b2);b2.setBounds(330, 90, 80, 30);b2.addActionListener(this);ckbHB[0] = new Checkbox("白子先", ckgHB, false);ckbHB[0].setBounds(320, 20, 60, 30);ckbHB[1] = new Checkbox("黑子先", ckgHB, false);ckbHB[1].setBounds(380, 20, 60, 30);add(ckbHB[0]);add(ckbHB[1]);ckbHB[0].addItemListener(this);ckbHB[1].addItemListener(this);add(lblWin);lblWin.setBounds(330, 130, 80, 30);gameInit();this.resize(new Dimension(450, 350));}public void itemStateChanged(ItemEvent e) {if (ckbHB[0].getState()) // 选择黑子先还是白子先{color = 0;} else {color = 1;}}public void actionPerformed(ActionEvent e) {if (e.getSource() == b1) {gameStart();} else {reStart();}}public void mousePressed(MouseEvent e) {}public void mouseClicked(MouseEvent e) {int x1, y1;x1 = e.getX();y1 = e.getY();if (e.getX() < 20 || e.getX() > 300 || e.getY() < 20 || e.getY() > 300) {return;}if (x1 % 20 > 10) {x1 += 20;}if (y1 % 20 > 10) {y1 += 20;}x1 = x1 / 20 * 20;y1 = y1 / 20 * 20;setDown(x1, y1);}public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}public void mouseReleased(MouseEvent e) {}public void mouseDragged(MouseEvent e) {}public void mouseMoved(MouseEvent e) {}public void paint(Graphics g) {g.setColor(Color.lightGray);g.fill3DRect(10, 10, 300, 300, true);g.setColor(Color.black);for (int i = 1; i < 16; i++) {g.drawLine(20, 20 * i, 300, 20 * i);g.drawLine(20 * i, 20, 20 * i, 300);}}public void setDown(int x, int y) // 落子{if (!isStart) // 判断游戏未开始{return;}if (bodyArray[x / 20][y / 20] != 0) {return;}Graphics g = getGraphics();if (color == 1)// 判断黑子还是白子{g.setColor(Color.black);color = 0;} else {g.setColor(Color.white);color = 1;}g.fillOval(x - 10, y - 10, 20, 20);bodyArray[x / 20][y / 20] = color + 1;if (gameWin1(x / 20, y / 20)) // 判断输赢{lblWin.setText(startColor(color) + "赢了!");isStart = false;}if (gameWin2(x / 20, y / 20)) // 判断输赢{lblWin.setText(startColor(color) + "赢了!");isStart = false;}if (gameWin3(x / 20, y / 20)) // 判断输赢{lblWin.setText(startColor(color) + "赢了!");isStart = false;}if (gameWin4(x / 20, y / 20)) // 判断输赢{lblWin.setText(startColor(color) + "赢了!");isStart = false;}}public String startColor(int x) {if (x == 0) {return "黑子";} else {return "白子";}}public void gameStart() // 游戏开始{isStart = true;enableGame(false);b2.setEnabled(true);}public void gameInit() // 游戏开始初始化{isStart = false;enableGame(true);b2.setEnabled(false);ckbHB[0].setState(true);for (int i = 0; i < 16; i++) {for (int j = 0; j < 16; j++) {bodyArray[i][j] = 0;}}lblWin.setText("");}public void reStart() // 游戏重新开始{repaint();gameInit();}public void enableGame(boolean e) // 设置组件状态{b1.setEnabled(e);b2.setEnabled(e);ckbHB[0].setEnabled(e);ckbHB[1].setEnabled(e);}public boolean gameWin1(int x, int y) // 判断输赢 横{int x1, y1, t = 1;x1 = x;y1 = y;for (int i = 1; i < 5; i++) {if (x1 > 15) {break;}if (bodyArray[x1 + i][y1] == bodyArray[x][y]) {t += 1;} else {break;}}for (int i = 1; i < 5; i++) {if (x1 < 1) {break;}if (bodyArray[x1 - i][y1] == bodyArray[x][y]) {t += 1;} else {break;}}if (t > 4) {return true;} else {return false;}}public boolean gameWin2(int x, int y) // 判断输赢 竖{int x1, y1, t = 1;x1 = x;y1 = y;for (int i = 1; i < 5; i++) {if (x1 > 15) {break;}if (bodyArray[x1][y1 + i] == bodyArray[x][y]) {t += 1;} else {break;}}for (int i = 1; i < 5; i++) {if (x1 < 1) {break;}if (bodyArray[x1][y1 - i] == bodyArray[x][y]) {t += 1;} else {break;}}if (t > 4) {return true;} else {return false;}}public boolean gameWin3(int x, int y) // 判断输赢 左斜{int x1, y1, t = 1;x1 = x;y1 = y;for (int i = 1; i < 5; i++) {if (x1 > 15) {break;}if (bodyArray[x1 + i][y1 - i] == bodyArray[x][y]) {t += 1;} else {break;}}for (int i = 1; i < 5; i++) {if (x1 < 1) {break;}if (bodyArray[x1 - i][y1 + i] == bodyArray[x][y]) {t += 1;} else {break;}}if (t > 4) {return true;} else {return false;}}public boolean gameWin4(int x, int y) // 判断输赢 左斜{int x1, y1, t = 1;x1 = x;y1 = y;for (int i = 1; i < 5; i++) {if (x1 > 15) {break;}if (bodyArray[x1 + i][y1 + i] == bodyArray[x][y]) {t += 1;} else {break;}}for (int i = 1; i < 5; i++) {if (x1 < 1) {break;}if (bodyArray[x1 - i][y1 - i] == bodyArray[x][y]) {t += 1;} else {break;}}if (t > 4) {return true;} else {return false;}}}
0 0
- 【java】五子棋小游戏
- 【java】五子棋小游戏
- Java写五子棋小游戏
- java----五子棋小游戏
- Java编写的五子棋小游戏
- Java程序实现五子棋小游戏
- 基于java的五子棋小游戏
- java课程设计五子棋小游戏(1)
- java小游戏第四弹 五子棋
- 五子棋--小游戏
- 小游戏-五子棋
- java-----五子棋小游戏(一)-----背景图片制作
- java-----五子棋小游戏(三)-----判断输赢
- java小游戏之控制台下五子棋!
- java小游戏-双人五子棋小案例
- java swing实现五子棋小游戏项目源码
- java-----五子棋小游戏(二)-----黑白棋落子制作
- java-----五子棋小游戏(四)-----解决闪烁问题(双缓冲)
- 网站通用百度地图调用示例,只需填入座标和百度密钥即可。内容可自己更换。
- java 虚拟机的理解
- 《移动APP测试实战》
- Google 发布 Android 性能优化典范
- BZOJ 1001 狼抓兔子
- 【java】五子棋小游戏
- ValidForm的使用
- Android NavagationBar自定义实现
- 关于weak
- 怎样能很好的将ppt转成pdf格式文件
- 网上如何充值地铁卡?
- SQL游标的使用及实例
- 调试小提示:flash 调试界面让断点再来一次
- shell中临时使用其他用户执行命令