本文实例为大家分享了java实现简单三子棋游戏的具体代码,供大家参考,具体内容如下
JOptionPane类的使用
编写程序,实现简单的三子棋游戏。在三子棋中,双方在3×3的棋盘中轮流下棋,一方用*示,另一方用O表示。如果一方的3个棋子占据了同一行,同一列或者对角线,则该方获胜。如果棋盘已被棋子占满,但没有一方获胜则出现平局。在程序中,一方为用户,用户在界面上输入每次下棋的位置;另一方下棋的位置为随机自动生成。示例界面如图所示。
提示:(1) 采用Scanner类或者JOptionPane类中提供的方法输入,输出采用System.out中的方法或JOptionPane类提供的方法。 (2) 字符串处理可以使用String或StringBuffer类。
实现代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
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 ; } } } } |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
原文链接:https://blog.csdn.net/newbie_dqt/article/details/121304098