本文实例讲述了java实现的五子棋游戏代码,分享给大家供大家参考,具体代码如下
package gyb.exam; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Graphics; import java.awt.Point; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; import javax.swing.Icon; import javax.swing.ImageIcon; 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.JOptionPane; import javax.swing.JPanel; import javax.swing.border.TitledBorder; public class MainFrame extends JFrame{ private static int BIG=15; private static final int ONE=25; private static final int START=10; private static int X=BIG*START/2; private static int Y=BIG*START/2; private int HL=BIG*ONE+START; private static boolean isBlack; CanvasFrame canvas=new CanvasFrame(); CanvasFrame can; Graphics g; public MainFrame(){ init(); } private Point point; private ArrayList<Point> blacklist=new ArrayList<Point>(); private ArrayList<Point> whitelist=new ArrayList<Point>(); private void init() { JMenuBar bar=new JMenuBar(); setJMenuBar(bar); setSize(600,600); setTitle("五子棋"); JMenu menu=new JMenu("game"); bar.add(menu); JMenuItem start=new JMenuItem("start"); JMenuItem end=new JMenuItem("棋盘大小"); end.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } }); JMenuItem renew=new JMenuItem("重新开始"); JMenuItem exit=new JMenuItem("退出"); exit.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.exit(0); } }); renew.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { blacklist.clear(); whitelist.clear(); } }); menu.add(start); menu.add(renew); menu.add(end); menu.add(exit); setLayout(new BorderLayout()); add(BorderLayout.CENTER,createCenter()); add(BorderLayout.EAST,createEast()); } private boolean isWin(ArrayList<Point> list){ int x; int y; int idx=0; loop:for (Point p : list) { x=p.x; y=p.y; idx=0; while(list.contains(new Point(x,y))){ idx++; x=x-ONE; if(idx==5) break loop; } x=p.x; y=p.y; idx=0; while(list.contains(new Point(x,y))){ idx++; y=y-ONE; if(idx==5) break loop; } x=p.x; y=p.y; idx=0; while(list.contains(new Point(x,y))){ idx++; x=x-ONE; y=y-ONE; if(idx==5) break loop; } x=p.x; y=p.y; idx=0; while(list.contains(new Point(x,y))){ idx++; x=x-ONE; y=y+ONE; if(idx==5) break loop; } } return idx==5; } private JPanel createEast() { JPanel pane=new JPanel(); BorderLayout border=new BorderLayout(); pane.setLayout(border); pane.setBorder(new TitledBorder("五子棋")); Icon image=new ImageIcon(getClass().getResource("mm.png")); pane.add(BorderLayout.NORTH,new JLabel(image,JLabel.CENTER)); pane.add(BorderLayout.CENTER,ballColor()); pane.add(BorderLayout.SOUTH,button()); return pane; } private JPanel ballColor() { JPanel pane=new JPanel(); pane.setLayout(new BorderLayout()); can=new CanvasFrame(){ public void paint(Graphics g){ g.setColor(Color.PINK); g.fillRect(1, 1,200,300); g.setFont(new Font("sans",Font.BOLD,20)); g.setColor(Color.BLACK); g.fillOval(55, 20,25,30); g.drawString("黑子", 10, 43); g.setColor(Color.WHITE); g.fillOval(55, 60,25,30); g.drawString("白子", 10, 83); if(isBlack){ g.setColor(Color.BLACK); g.drawString("黑方落子", 5, 120); }else{ g.setColor(Color.WHITE); g.drawString("白方落子",5,120); } can.repaint(); } }; pane.add(BorderLayout.CENTER,can); return pane; } private JPanel button() { JPanel pane=new JPanel(); BorderLayout bor=new BorderLayout(); JButton start=new JButton("开始"); JButton end=new JButton("结束"); end.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.exit(0); }}); pane.setLayout(bor); bor.setVgap(5); pane.setBorder(new TitledBorder("")); pane.add(BorderLayout.NORTH,start); pane.add(BorderLayout.SOUTH,end); return pane; } private JPanel createCenter() { JPanel pane=new JPanel(); canvas.setPreferredSize(new Dimension(HL+10,HL+10)); canvas.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e){ loop:if(e.getButton()==MouseEvent.BUTTON1){ X=e.getX(); Y=e.getY(); int x=(X/ONE)*ONE; int y=(Y/ONE)*ONE; point=new Point(x,y); if(!(blacklist.contains(point)||whitelist.contains(point))){ if(isBlack){ blacklist.add(point); if(isWin(blacklist)){ JOptionPane.showMessageDialog(null, "黑方胜利!"); blacklist.clear(); whitelist.clear(); } }else{ whitelist.add(point); if(isWin(whitelist)){ JOptionPane.showMessageDialog(null, "白方胜利!"); blacklist.clear(); whitelist.clear(); } } } else{ JOptionPane.showMessageDialog(null, "这里己有子了,换个地方落子吧!"); break loop; } canvas.repaint(); isBlack=!isBlack; } } }); pane.add(canvas); return pane; } public static void main(String[] args) { MainFrame frame=new MainFrame(); frame.center(frame); frame.pack(); frame.setVisible(true); } public void center(JFrame frame){ //Toolkit 是当前 绘图系统集合工具包 Toolkit toolkit=Toolkit.getDefaultToolkit(); Dimension screen=toolkit.getScreenSize();//屏幕的宽高 int frameWidth=frame.getWidth(); int frameHigh=frame.getHeight(); int x=(screen.width-frameWidth)/2; int y=(screen.height-frameHigh)/2; frame.setLocation(x, y); } class CanvasFrame extends JPanel { public void paint(Graphics g){ g.setColor(Color.PINK); g.fillRect(0, 0, HL+20, HL+20); g.setColor(Color.BLACK); for(int i=START;i<=HL;i=i+ONE){ for(int j=START;j<=HL;j=j+ONE){ g.drawLine(i, j, HL, j); } } for(int i=START;i<=HL;i=i+ONE){ for(int j=START;j<=HL;j=j+ONE){ g.drawLine(i, j, i, HL); } } g.setColor(Color.YELLOW); g.drawRect(START/2, START/2, HL+1, HL+1); g.setColor(Color.BLACK); for(Point point : blacklist){ g.fillOval(point.x, point.y, 20, 25); } g.setColor(Color.WHITE); for(Point point : whitelist){ g.fillOval(point.x, point.y, 20, 25); } } } }
效果图:
以上所述就是本文的全部内容了,希望能够对大家熟练掌握java有所帮助。
本文向大家介绍java实现单机版五子棋,包括了java实现单机版五子棋的使用技巧和注意事项,需要的朋友参考一下 这个小游戏是我和我姐们儿的JAVA课程设计,也是我做的第一个JAVA项目,适合初学者,希望能帮到那些被JAVA课设所困扰的孩纸们~~~ 一、该游戏需要实现 1、设计主框架,界面。 2、利用ActionListener接口实现按钮事件的监听。 3、重新开始功能的实现。 4、悔棋功能的实现。
本文向大家介绍Java棋类游戏实践之单机版五子棋,包括了Java棋类游戏实践之单机版五子棋的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了java实现的五子棋游戏代码,分享给大家供大家参考,具体代码如下 一、实践目标 1.掌握JavaGUI界面设计 2.掌握鼠标事件的监听(MouseListener,MouseMotionListener) 二、实践内容
本文向大家介绍java实现五子棋小游戏,包括了java实现五子棋小游戏的使用技巧和注意事项,需要的朋友参考一下 java实现五子棋小游戏 演示图: 以上所述就是本文的全部内容了,希望能够对大家熟练掌握java有所帮助。
本文向大家介绍java Swing实现五子棋游戏,包括了java Swing实现五子棋游戏的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java实现五子棋项目,供大家参考,具体内容如下 运行结果 视频经过压缩画质略显粗糙。 标题 1)绘制网格棋盘: 重写JPanel的paint(Graphics g)方法,绘制16*16网格。 如图: 2)代码如下(仅包含部分代码): 具体运行效果
本文向大家介绍java GUI实现五子棋游戏,包括了java GUI实现五子棋游戏的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java实现五子棋游戏GUI,供大家参考,具体内容如下 引用包 前期预设 设置背景板 主要框架段落 判断是否满了 判断是否赢了 和八皇后有点像,可以考虑那种数组优化四个方向,这里比较懒 设置棋子 导入图片 游戏结束的锁定与弹窗 其他棋子信息 图片显示 以上
本文向大家介绍javafx实现五子棋游戏,包括了javafx实现五子棋游戏的使用技巧和注意事项,需要的朋友参考一下 需求描述 一个五子棋游戏,能实现双方黑白对决,当一方获胜时给出提示信息,利用GUI界面实现 项目结构如下图 一、实体 FiveChess类 提供五子棋实体包含的所有信息 判断游戏是否结束 play方法改变chess[][]棋盘中的数据 二、视图 ChessPane类继承Pane类实现