您的位置:程序门 -> java -> gui 设计



自己做的五子棋游戏有点问题谁能帮看看


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


自己做的五子棋游戏有点问题谁能帮看看[无满意答案结贴,结贴人:redjewelbiao]
发表于:2007-11-25 09:52:24 楼主
问题是   画的棋子有点方
              显示胜方的时候有点慢
           

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);
}
}


快速检索

最新资讯
热门点击