好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

java实现简单三子棋游戏

本文实例为大家分享了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

查看更多关于java实现简单三子棋游戏的详细内容...

  阅读:15次