正在学习五子棋的开发,现在是第一步,一切都还是渣渣,给新手看看。
简陋的界面。。
代码没什么难度,唯一需要注意的地方就是判断鼠标点击屏幕,需要在哪里出现棋子。
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);
}
}
}