自己做的五子棋游戏有点问题谁能帮看看
问题是 画的棋子有点方
显示胜方的时候有点慢
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class wzq extends JApplet{
int[][] ss=new int[25][25];
int[][] ff=new int[625][2];
int ln=0;//下到第几步
int db=0;//当前棋子的颜色
int qgs=0;//连子数
int sf=0;//胜方是谁?
JButton b1=new JButton("开始");
JButton b2=new JButton("悔棋");
TextField tf1=new TextField(15);
public static void mian(String args[]){
JFrame f=new JFrame("五子棋");
wzq gig=new wzq();
gig.init();
f.setContentPane(gig);
f.setSize(680, 680);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void init(){//画棋盘
final wzq f=this;
Container fs =getContentPane();
tf1.setBounds(260, 615, 120, 20);
b2.setBounds(160, 615, 80, 40);
b2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
f.ln=f.ln-1;
if(f.ln>=0){
f.ss[f.ff[f.ln][0]][f.ff[f.ln][1]]=0;
}
f.ln=f.ln-1;
if(f.ln>=0){
f.ss[f.ff[f.ln][0]][f.ff[f.ln][1]]=0;
}
f.sf=3;
f.repaint();
}
});
b1.setBounds(40, 615, 80, 40);
b1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
for(int i=0;i<25;i++){
for(int j=0;j<25;j++){
f.ss[i][j]=0;
}
}
f.ln=0;
f.sf=3;
f.repaint();
}
});
fs.add(tf1);
fs.add(b2);
fs.add(b1);
fs.setLayout(null);
fs.setBackground(Color.WHITE);
fs.addMouseListener( new MouseAdapter(){
public void mousePressed(MouseEvent event){
if((event.getX()-24)%23<10){
if((event.getY()-44)%23<10){
f.qz(((event.getX()-24)-((event.getX()-24)%23))/23,(event.getY()-44-(event.getY()-44)%23)/23);
}
if((event.getY()-44)%23>13){
f.qz(((event.getX()-24)-((event.getX()-24)%23))/23,((event.getY()-44-(event.getY()-44)%23)/23)+1);
}
}
if((event.getX()-24)%23>13){
if((event.getY()-44)%23<10){
f.qz((((event.getX()-24)-((event.getX()-24)%23))/23)+1,(event.getY()-44-(event.getY()-44)%23)/23);
}
if((event.getY()-44)%23>13){
f.qz((((event.getX()-24)-((event.getX()-24)%23))/23)+1,((event.getY()-44-(event.getY()-44)%23)/23)+1);
}
}}});
}
public void update(Graphics g){
if(sf==3){
g.clearRect(0, 0, 680, 680);
paint(g);
sf=0;
}else{
paint(g);
}
}
public void sfif(int i,int j){//判断胜方的方法
sf=0;
qgs=0;
db=ss[i][j];
if(db!=0){
for(int si=i;si>=0;si--){
if(db==ss[si][j]){
qgs++;
}else{
break;
}
}
for(int si=i;si<25;si++){
if(db==ss[si][j]){
qgs++;
}else{
break;
}
}
if(qgs>5){
if(db==1){
sf=1;
}else if(db==2){
sf=2;
}
}
qgs=0;
for(int sj=j;sj>=0;sj--){
if(db==ss[i][sj]){
qgs++;
}else{
break;
}
}
for(int sj=j;sj<25;sj++){
if(db==ss[i][sj]){
qgs++;
}else{
break;
}
}
if(qgs>5){
if(db==1){
sf=1;
}else if(db==2){
sf=2;
}
}
qgs=0;
for(int si=i,sj=j;si>=0&&sj>=0;si--,sj--){
if(db==ss[si][sj]){
qgs++;
}else{
break;
}
}
for(int si=i,sj=j;si<25&&sj<25;si++,sj++){
if(db==ss[si][sj]){
qgs++;
}else{
break;
}
}
if(qgs>5){
if(db==1){
sf=1;
}else if(db==2){
sf=2;
}
}
qgs=0;
for(int si=i,sj=j;si>=0&&sj<25;si--,sj++){
if(db==ss[si][sj]){
qgs++;
}else{
break;
}
}
for(int si=i,sj=j;si<25&&sj>=0;si++,sj--){
if(db==ss[si][sj]){
qgs++;
}else{
break;
}
}
if(qgs>5){
if(db==1){
sf=1;
}else if(db==2){
sf=2;
}
}
}
}
public void qz(int i,int j){//把棋子写到数组里
if(i<25&i>=0&j<25&j>=0){
if(sf!=1&&sf!=2){
if(ss[i][j]==0){
ff[ln][0]=i;
ff[ln][1]=j;
if(ln%2==0){
ss[i][j]=2;
}
else{
ss[i][j]=1;
}
sfif(i,j);
repaint();
ln++;
}
}
}
}
public void paint(Graphics g){
for(int i=0;i<25;i++){
g.drawLine(24, 44+i*23, 575, 44+i*23);
}
for(int i=0;i<25;i++){
g.drawLine(24+i*23, 44, 24+i*23, 595);
}
for(int i=0;i<25;i++){//画棋子
for(int j=0 ;j<25;j++){
if(ss[i][j]==1){
g.setColor(Color.RED);
g.fillOval(24+i*23-10, 44+j*23-10, 20, 20);
}
if(ss[i][j]==2){
g.setColor(Color.BLACK);
g.fillOval(24+i*23-10, 44+j*23-10, 20, 20);
}
}
}
if(sf==1){//写出胜方
g.setColor(Color.RED);
g.setFont(new Font("etText",22,72));
g.drawString("红方胜", 200, 300);
}
if(sf==2){
g.setColor(Color.BLACK);
g.setFont(new Font("etText",22,72));
g.drawString("黑方胜",200, 300);
}
b1.setVisible(false);
b1.setVisible(true);
b2.setVisible(false);
b2.setVisible(true);
}
}