JAVA五子棋中如何实现重新开始和悔棋的功能 5

importjava.awt.*;importjava.awt.event.*;publicclassQPextendsjava.awt.Frame{intqpDimen... import java.awt.*;
import java.awt.event.*;
public class QP extends java.awt.Frame{
int qpDimension=19;
int[][] chess=new int[qpDimension][ qpDimension];
boolean isBlack=true;
MEA qPMEA=new MEA();
WEA qPWEA=new WEA();
Button btnReStart=new Button("重新开始");
Button btnGoBack=new Button("悔棋");
java.awt.Panel pBtn=new Panel();
Canvas cvsQP=new Canvas();
public QP(){
super("五子棋");
this.setVisible(true);
this.setSize(840, 740);
pBtn.add(btnReStart);
pBtn.add(btnGoBack);
this.add(pBtn,"West");
cvsQP.setBackground(java.awt.Color.LIGHT_GRAY);
this.add(cvsQP,"Center");
this.addWindowListener(qPWEA);
cvsQP.addMouseListener(qPMEA);
}
public void paint(Graphics g){
pBtn.setSize(100, 740);
cvsQP.setSize(740, 740);
Graphics cvs_g=cvsQP.getGraphics();
//g.drawOval(100, 100, 200, 200);
//cvs_g.fillOval(0, 0, 200, 100);
for(int i=0;i<qpDimension;i++){
cvs_g.drawLine(100, 100+i*30, 100+(qpDimension-1)*30, 100+i*30);
cvs_g.drawLine(100+i*30, 100,100+i*30 , 100+(qpDimension-1)*30);
}
}
字数超限了,代码在图上。如何添加一段代码使得这个程序能实现“重新开始”和“悔棋”功能呢?
展开
 我来答
DoramiHe
推荐于2017-07-09 · 知道合伙人互联网行家
DoramiHe
知道合伙人互联网行家
采纳数:25332 获赞数:59542
2011年中山职业技术学院毕业,现担任毅衣公司京东小二

向TA提问 私信TA
展开全部
一般来说是不应该像你这样写的,应该是把要画的步骤写在组件的被覆写的paintComponent函数里,然后在你响应事件的函数里直接掉用该组件的repaint()函数即可。repaint函数是会去掉该组件的paintComponent()函数的。至于你这么写为啥不行,这个我也不清楚,据我猜测,repaint函数要做的事情是刷新组件,并且重新去画一遍,不过这个步骤不一定是立即完成,可能有延迟。总之在你画那些棋子之后,它又干了一些事情,导致你画的棋子没了(但这不会影响到它自己想去画的东西,即paintComponent()函数里的东西),另外不要忘了,覆写paintComponent时,第一行要写,super.paintComponent(g),这是去画它原来有的东西(比如加上去的按钮,文本框之类的东西)

例如下面:
12345678910111213141516171819202122232425262728293031323334353637class PanelM extends JPanel{ ImageIcon icon = new ImageIcon("app.gif"); JLabel jl = new JLabel(icon, SwingConstants.CENTER); int x, y; private List<Integer> listX = new ArrayList<Integer>(); private List<Integer> listY = new ArrayList<Integer>(); public PanelM() { add(jl); addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent m) { x = m.getX(); y = m.getY(); listX.add(x); listY.add(y); repaint(); } }); } public void paintComponent(Graphics g) { super.paintComponent(g); for (int i = 0; i < listX.size(); i++) { g.fillOval(listX.get(i), listY.get(i), 20, 20); } }}
匿名用户
2017-07-09
展开全部
这个我写过,一共要往4个方向判断横向竖向斜角有两种算法大概是这样的按下棋子的瞬间那个点开始算,遍历到有棋子的地方在往反方向遍历找到数量等于5就赢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
贸垒2u
2015-06-29 · TA获得超过207个赞
知道小有建树答主
回答量:464
采纳率:0%
帮助的人:338万
展开全部
如果五子棋走法判断输赢都会做了,还会烦恼重新开始和悔棋的功能?
追问
😂并不会做走法判断输赢,刚刚的初学者……
追答
不会走路就别跑啊,学做一些简单的例子,把语言基础都弄明白了。
之后想要做一些什么功能的话,最重要的是思路,如果想不出什么做的话,问别人设计思路是怎么样的,然后自己写代码....
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式