五子棋开发,初步实现界面和落棋子

正在学习五子棋的开发,现在是第一步,一切都还是渣渣,给新手看看。

简陋的界面。。



 代码没什么难度,唯一需要注意的地方就是判断鼠标点击屏幕,需要在哪里出现棋子。

 

package data0609_五子棋;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class PMouseAda  extends  MouseAdapter  implements Config1{
	Graphics g;
	public PMouseAda(Graphics g)
	{
				this.g=g;
	}
	public void mouseReleased(MouseEvent e)
	 {
		 int x=e.getX();
		 int y=e.getY();
		 int click=e.getButton();
//以下代码为判断在哪里画棋子
		 	int flag=1;
		 	double tx=((double)x-x0)/size;
		 	double ty=((double)y-y0)/size;
		 	int tx1=(int)tx;
		 	int ty1=(int)ty;
		 	if(tx-tx1>2.0/3)
		 		tx1++;
		 	if(ty-ty1>2.0/3)
		 		ty1++;
		 	if(tx-(int)tx>1.0/3&&tx-(int)tx<2.0/3)
	 				flag=0;
		 	if(ty-(int)ty>1.0/3&&ty-(int)ty<2.0/3)
		 			flag=0;
		 int xc=tx1*size+x0;
		 int yc=ty1*size+y0;
		 if(flag==1)
		 {
			 if(click==1)
				 g.setColor(Color.BLACK);
			 if(click==3)
				 g.setColor(Color.WHITE);
			g.fillOval(xc-chessSize/2, yc-chessSize/2, chessSize, chessSize);
		 }
	 }
}

 

package data0609_五子棋;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;

import data0609_五子棋.test.WZQListener;
/**
 * 五子棋界面
 * @author ZhangZunC
 *
 */
public class MainFrame extends JFrame {
	public MainFrame()
	{
		
		MyPanel panel=new MyPanel();
		this.add(panel);//JFrame默认是BorderLayout 布局 
		this.setSize(600,600);
		this.setTitle("五子棋");
		this.setDefaultCloseOperation(3);
		this.setResizable(false);
		this.setVisible(true);//为什么一定要放在这里
		Graphics g=panel.getGraphics();
		PMouseAda listener=new PMouseAda(g);
		panel.addMouseListener(listener);
	}
	public static void main(String[] args) {
		new MainFrame();
	}
}

 

package data0609_五子棋;

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Paint;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;

import javax.swing.ImageIcon;
import javax.swing.JPanel;

import data0609_五子棋.test.Config;

public class MyPanel  extends JPanel implements Config1{
	Graphics g;

	/**
	 * 重写绘制组件的方法  这个方法在组件需要绘制的时候会自动调用
	 * @param g
	 */
	public  void paint(Graphics g) {
		super.paint(g);
		for(int i=0;i<row;i++)
		{
			g.drawLine(x0+i*size, y0, x0+i*size, y0+size*14);
		}
		for(int i=0;i<col;i++)
		{
			g.drawLine(x0,y0+i*size,x0+size*14,y0+i*size);
		}
	}
	
}

 

 

开发步骤思路 1、 编写主框架类JFiveFrame, 设置大小,标题,关闭窗口的行为, 在main中创建并显示。 2、 编写DrawPanel extends JPanel,定义构造函数,来设置背景颜色。 然后在主框架类中创建DrawPanel对象,并添加到主框架中。 3、 DrawPanel中覆盖paintComponent方法来进行绘制。 绘制15*15网格的棋盘, 绘制前先定义边距、行数、列数、网格宽度等常量 4、 定义Chess类,包括x,y索引, 颜色。 定义构造函数相应的get方法。 5、 在DrawPanel中创建Chess[], 然后在paintComponent方法中绘制棋子数组(注意将索引转换成坐标)。 6、 为DrawPanel实现监听器MouseListener, 覆盖相应抽象方法。在构造方法中增加监听器(addMouseListener...)。 7、 编写mousePressed方法的内容,预先定义isBlack表示下的是黑棋还是白棋, chessCount表示当前棋子的个数 8、 在mousePressed中获得下的坐标,转换成索引, 再创建Chess对象,添加到chessList中。再重新绘制。 9、 添加相应的判断: 不能画到棋盘外, 下过的地方不能再下(需要辅助方法findChess...) 10、 再添加胜利的判断isWin, 添加标记变量gameOver. 在mousePressed方法的最前面调用加入gameOver的判断, 在mousePressed方法的最后调用isWin, 返回true则给出消息提示,gameOver设置为true。 11、isWin方法具体的编写。在当前下棋的横向,纵向,两个斜向上分别判断是否有连续的同色五子。 继续改进: 加入菜单:重新开始; 退出; 悔棋; 加入工具栏,三个按纽。 为最后下的棋子做出标记(画红色的矩形边界)。 改变鼠标形状, 在可以下的地方变手形;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值