编写程序,实现简单的三子棋游戏。在三子棋中,双方在3×3的棋盘中轮流下棋,一方用*示,另一方用o表示。如果一方的3个棋子占据了同一行,同一列或者对角线,则该方获胜。如果棋盘已被棋子占满,但没有一方获胜则出现平局。在程序中,一方为用户,用户在界面上输入每次下棋的位置;另一方下棋的位置为随机自动生成。示例界面如图所示。
提示:(1) 采用scanner类或者joptionpane类中提供的方法输入,输出采用system.out中的方法或joptionpane类提供的方法。 (2) 字符串处理可以使用string或stringbuffer类。
实现代码:
import java.util.random;import javax.swing.*;public class main { public static boolean check(stringbuffer st,int pos){ //检查pos上的棋子有没有获胜 char des=st.charat(pos); char []s=new char[10]; for(int i=1;i<=9;i++) s[i]=st.charat(i); if((s[3]==des&&s[6]==des&&s[9]==des)|| (s[1]==des&&s[4]==des&&s[7]==des)|| (s[2]==des&&s[5]==des&&s[8]==des)|| (s[1]==des&&s[3]==des&&s[2]==des)|| (s[6]==des&&s[4]==des&&s[5]==des)|| (s[9]==des&&s[7]==des&&s[8]==des)|| (s[1]==des&&s[5]==des&&s[9]==des)|| (s[3]==des&&s[5]==des&&s[7]==des)) return true; return false; } public static void main(string[] args) { stringbuffer s= new stringbuffer("0123456789"); string tp; for(int i=0;i<=5;){ int k=-1; tp=joptionpane.showinputdialog("---------------------------\n| "+s.charat(1)+" | "+s.charat(2)+" | "+s.charat(3)+" |\n---------------------------\n| "+s.charat(4)+" | "+s.charat(5)+" | "+s.charat(6)+" |\n---------------------------\n| "+s.charat(7)+" | "+s.charat(8)+" | "+s.charat(9)+" |\n---------------------------\n"+"请输入落子位置(1~9):"); boolean f=true; if(tp.length()==1){ k=tp.charat(0)-'0'; if(k>=1&&k<=9){ if(s.charat(k)>='1'&&s.charat(k)<='9'){ i++; //有效下棋 f=false; } } } while(f){ tp=joptionpane.showinputdialog("---------------------------\n| "+s.charat(1)+" | "+s.charat(2)+" | "+s.charat(3)+" |\n---------------------------\n| "+s.charat(4)+" | "+s.charat(5)+" | "+s.charat(6)+" |\n---------------------------\n| "+s.charat(7)+" | "+s.charat(8)+" | "+s.charat(9)+" |\n---------------------------\n"+"输入错误,请重新输入落子的位置:"); if(tp.length()==1){ k=tp.charat(0)-'0'; if(k>=1&&k<=9){ if(s.charat(k)>='1'&&s.charat(k)<='9'){ i++; //有效下棋 f=false; } } } } //在k处落子 s.replace(k,k+1,"o"); if(check(s,k)){ //获胜 joptionpane.showmessagedialog(null,"---------------------------\n| "+s.charat(1)+" | "+s.charat(2)+" | "+s.charat(3)+" |\n---------------------------\n| "+s.charat(4)+" | "+s.charat(5)+" | "+s.charat(6)+" |\n---------------------------\n| "+s.charat(7)+" | "+s.charat(8)+" | "+s.charat(9)+" |\n---------------------------\n"+"恭喜你,你赢了!"); break; } //电脑随机落子 if(i==5) { joptionpane.showmessagedialog(null,"---------------------------\n| "+s.charat(1)+" | "+s.charat(2)+" | "+s.charat(3)+" |\n---------------------------\n| "+s.charat(4)+" | "+s.charat(5)+" | "+s.charat(6)+" |\n---------------------------\n| "+s.charat(7)+" | "+s.charat(8)+" | "+s.charat(9)+" |\n---------------------------\n"+"平局!"); break; } random rs=new random(); k=rs.nextint(9)+1; while(k<1||k>9||s.charat(k)=='*'||s.charat(k)=='o') k=rs.nextint(9)+1; s.replace(k,k+1,"*"); if(check(s,k)){ //电脑胜 joptionpane.showmessagedialog(null,"---------------------------\n| "+s.charat(1)+" | "+s.charat(2)+" | "+s.charat(3)+" |\n---------------------------\n| "+s.charat(4)+" | "+s.charat(5)+" | "+s.charat(6)+" |\n---------------------------\n| "+s.charat(7)+" | "+s.charat(8)+" | "+s.charat(9)+" |\n---------------------------\n"+"你输了,再接再厉吧!"); break; } } }}
以上就是如何使用java实现简单的三子棋游戏?的详细内容。
