java 五子棋 源代码
来源:互联网 发布:开发一套软件多少钱 编辑:程序博客网 时间:2024/06/06 04:55
package books;//import java.io.*;//import java.util.Arrays;import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;import javax.swing.JApplet; import javax.swing.JButton; import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JPanel; import javax.swing.JTextField;public class book_Gobang extends JApplet implements ActionListener { private static final long serialVersionUID = 1L; private static int BOARD_SIZE = 25;//定义棋盘大小。 private boolean who = true; private boolean result=false; private boolean continuer=true; private int count=0;; public JTextField textfield =new JTextField("黑方先手"); public JButton board[][]=new JButton[BOARD_SIZE][BOARD_SIZE]; public void init() {//创建棋盘。 Container c= getContentPane(); JPanel panel = new JPanel(); c.add(textfield,BorderLayout.NORTH); c.add(panel,BorderLayout.CENTER); panel.setLayout(new GridLayout(BOARD_SIZE,BOARD_SIZE,0,0));//布局 for(int i=0;i<BOARD_SIZE;i++) {//添加按钮 for(int j=0;j<BOARD_SIZE;j++) { board[i][j]=new JButton(""); board[i][j].setBackground(Color.white); board[i][j].setFont(new Font("宋体",Font.PLAIN,2)); panel.add(board[i][j]); board[i][j].addActionListener(this); } } } public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals("+")||e.getActionCommand().equals("-")) { textfield.setText("您不能下在已经有子的地方"); }else if(who) { for(int i=0;i<BOARD_SIZE;i++) { for(int j=0;j<BOARD_SIZE;j++) { if(e.getSource()==board[i][j]) { board[i][j].setBackground(Color.BLACK); board[i][j].setText("+"); } } } if(win("+")) {//判断是否胜利。 JOptionPane.showMessageDialog(null, "黑方胜利!"); textfield.setText("黑方胜利!"); }else {//否则对方落子。 textfield.setText("请红方落子"); who = false; } }else { for(int i=0;i<BOARD_SIZE;i++) { for(int j=0;j<BOARD_SIZE;j++) { if(e.getSource()==board[i][j]) { board[i][j].setBackground(Color.red); board[i][j].setText("-"); } } } if(win("-")) {//判断是否胜利 JOptionPane.showMessageDialog(null, "红方胜利!"); textfield.setText("红方胜利!"); }else { textfield.setText("请黑方落子"); who = true; } } } public boolean win(String player) {//疯狂遍历二阶数组。 count=0; outer://外循环 for(int i=0;i<BOARD_SIZE;i++) {//横向遍历 for(int j=0;j<(BOARD_SIZE-4);j++) {//中间循环 if(board[i][j].getText().equals(player)) { iner://内循环 for(int k=j;k<(j+5);k++) { if(board[i][k].getText().equals(player)) { count++; if(count==5) {//五子连珠 count=0; result = true;//win=true; continuer = false;//第一种判断win=true不再继续判断。 break outer;//跳出外循环,返回result } }else { count=0; result = false; break iner;//跳出内循环,继续遍历。 } } } } } if(continuer) { count=0; outer: for(int j=0;j<BOARD_SIZE;j++) {//纵向遍历 for(int i=0;i<(BOARD_SIZE-4);i++) { if(board[i][j].getText().equals(player)) { iner: for(int k=i;k<(i+5);k++) { if(board[k][j].getText().equals(player)) { count++; if(count==5) { count=0; result = true; continuer = false; break outer; } }else { count=0; result = false; break iner; } } } } } } if(continuer) { count=0; outer: for(int i=0;i<(BOARD_SIZE-4);i++) {//左下遍历 for(int j=0;j<(BOARD_SIZE-4);j++) { if(board[i][j].getText().equals(player)) { int x = i; iner: for(int k=j;k<(j+5);k++,x++) { if(board[x][k].getText().equals(player)) { count++; if(count==5) { count=0; result = true; continuer = false; break outer; } }else { count=0; result = false; break iner; } } } } } } if(continuer) {//右下遍历 count=0; outer: for(int i=0;i<(BOARD_SIZE-4);i++) { for(int j=4;j<BOARD_SIZE;j++) { if(board[i][j].getText().equals(player)) { int x = i; iner: for(int k=j;k<(j+5);k--,x++) { if(board[x][k].getText().equals(player)) { count++; if(count==5) { count=0; result = true; continuer = false; break outer; } }else { count=0; result = false; break iner; } } } } } } return result; } public static void main(String[] args) throws Exception{ JFrame frame = new JFrame("五子棋"); book_Gobang gb= new book_Gobang(); frame.getContentPane().add(gb, BorderLayout.CENTER); gb.init(); gb.start(); frame.setSize(550,574); frame.setVisible(true); } }
阅读全文
0 0
- java简单五子棋源代码
- java 五子棋源代码+注释
- java 五子棋 源代码
- java网络五子棋的源代码
- 用JAVA做五子棋源代码
- java图形界面五子棋源代码共享
- java网络五子棋的源代码(一)
- java网络五子棋的源代码(二)
- 简易五子棋详细Java源代码(1)
- 简易五子棋详细Java源代码(2)
- java 自己写的五子棋程序 源代码和大家分享
- java swing开发单机版五子棋源代码下载
- java swing开发单机版五子棋源代码下载,休闲娱乐
- Java开发的游戏之一 五子棋 完整源代码
- 五子棋的源代码
- 五子棋源代码(VC++6.0)
- 五子棋游戏源代码
- 我的五子棋源代码
- bzoj2212&3702 [Poi2011]Tree Rotations 二叉树 (线段树合并)
- 7-65 平面向量加法
- python3 scrapy startproject报错解决
- 3.Spring Boot的Web开发
- JZOJ 3468. 【NOIP2013模拟联考7】OSU!(osu)
- java 五子棋 源代码
- C++ Vector 运用
- 写给自己
- Spring Boot 之Spring Boot Starter依赖包及作用
- 创建单链表,然后进行递增排序
- 结构体知识总结
- 数据库基础知识复习
- 稀疏矩阵的简单操作
- 连接查询的几种写法