当前位置: 代码迷 >> Java相关 >> [原创]一个五子棋程序
  详细解决方案

[原创]一个五子棋程序

热度:607   发布时间:2004-06-17 19:13:00.0
[原创]一个五子棋程序

刚刚到Java GUI版报告,给大家贴一个我写的五子棋程序。这里重点是关注Java GUI的设计,所以程序只能人和人走(就是没有智能:),不过大家可以看看,做个参考:

程序代码:

/* * filename: Game.java * * author: jellen * */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.awt.geom.*; import java.util.*;

class PaintPanel extends JPanel { ArrayList Items = new ArrayList();

public PaintPanel() { setLayout(new BorderLayout()); ButtonPanel buttonPanel = new ButtonPanel(); add(buttonPanel, BorderLayout.SOUTH); addMouseListener(new MouseHandler()); }

public void paintComponent(Graphics g) { int startX = 50; int startY = 50; boolean isMy = false; super.paintComponent(g); Graphics2D g2 = (Graphics2D)g;

for(int i=0; i<16; i++) { g2.draw(new Line2D.Double(startX, startY+20*i, startX+300, startY+20*i)); g2.draw(new Line2D.Double(startX+20*i, startY, startX+20*i, startY+300)); } for(int i=0; i<Items.size(); i++) { isMy = !isMy; if(isMy) g2.setColor(Color.BLACK); else g2.setColor(Color.WHITE); g2.fill((Ellipse2D)Items.get(i)); } } void myRepaint() { repaint(); } private class MouseHandler extends MouseAdapter { public void mousePressed(MouseEvent event) { int x = event.getX(); int y = event.getY(); paintItem(x, y); repaint(); } void paintItem(int x, int y) { if(x > 50 && x < 350 && y >50 && y < 350) { int X = x / 20; int Y = y / 20; int centerX = X*20 + 10; int centerY = Y*20 + 10; Ellipse2D ellipse = new Ellipse2D.Double(); ellipse.setFrameFromCenter(centerX, centerY, centerX+8, centerY+8); Items.add(ellipse); } } } private class ButtonPanel extends JPanel { public ButtonPanel() { JButton reset = new JButton(\"Reset\"); add(reset); JButton quit = new JButton(\"Quit\"); add(quit);

ResetEvent listenerR = new ResetEvent(); reset.addMouseListener(listenerR); QuitEvent listenerQ = new QuitEvent(); quit.addMouseListener(listenerQ); }

private class QuitEvent extends MouseAdapter { public void mouseClicked(MouseEvent event) { System.exit(1); } }

private class ResetEvent extends MouseAdapter { public void mouseClicked(MouseEvent event) { Items.clear(); myRepaint(); } } } }

class GameFrame extends JFrame { public GameFrame() { setTitle(\"A Little Game\"); setSize(400, 500); setResizable(false);

PaintPanel panel = new PaintPanel(); getContentPane().add(panel); } } public class Game { public static void main(String[] args) { GameFrame frame = new GameFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.show(); } }

搜索更多相关的解决方案: 五子棋  

----------------解决方案--------------------------------------------------------

呵呵 虽然没有人工智能 但也顶 也支持你喔


----------------解决方案--------------------------------------------------------

哈哈,不但没AI,连输赢判定也没啊,而且可以在一个地方重复下。

不过还是支持。大家一起继续努力。


----------------解决方案--------------------------------------------------------
呵呵,现丑了。谢谢楼上两位的鼓励!
只是胡乱贴几个以前的程序,想提高论坛的人气。
----------------解决方案--------------------------------------------------------
哈哈,我也要跟上啊,最近忙着考试,55555,以后也贴几个上来
----------------解决方案--------------------------------------------------------
楼主继续努力把它完成看看。
----------------解决方案--------------------------------------------------------
要完成”五子棋“的人工智能部分如果自己重新来写,要花很多时间,如果利用现成的算法的算法应该不难:)

我的目的是学习Java Swing编程,所以不打算写算法了。(网上有五子棋的例子)


----------------解决方案--------------------------------------------------------

不错拉~!!

我的多学习咯 不然就不行咯


----------------解决方案--------------------------------------------------------

呵呵,应大家的要求,我改进了这个五子棋程序,修复了可以覆盖以前棋子的Bug,并且加入了判断输赢的模块。

现在这个程序终于有了一点可玩性,大家可以看看:)


----------------解决方案--------------------------------------------------------

既然做了,就试着完善一下啦.


----------------解决方案--------------------------------------------------------
  相关解决方案