首页 > Java > java教程 > 如何使用Java实现简单的三子棋游戏?

如何使用Java实现简单的三子棋游戏?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2023-04-26 22:28:06
转载
1348 人浏览过

JOptionPane类的使用

编写程序,实现简单的三子棋游戏。在三子棋中,双方在3×3的棋盘中轮流下棋,一方用*示,另一方用O表示。如果一方的3个棋子占据了同一行,同一列或者对角线,则该方获胜。如果棋盘已被棋子占满,但没有一方获胜则出现平局。在程序中,一方为用户,用户在界面上输入每次下棋的位置;另一方下棋的位置为随机自动生成。示例界面如图所示。

java如何实现简单三子棋游戏

java如何实现简单三子棋游戏

提示:(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)-&#39;0&#39;;

            if(k>=1&&k<=9){

               if(s.charAt(k)>=&#39;1&#39;&&s.charAt(k)<=&#39;9&#39;){

                  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)-&#39;0&#39;;

               if(k>=1&&k<=9){

                  if(s.charAt(k)>=&#39;1&#39;&&s.charAt(k)<=&#39;9&#39;){

                     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)==&#39;*&#39;||s.charAt(k)==&#39;O&#39;) 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实现简单的三子棋游戏?的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
java可以做为web的后端吗?
来自于 1970-01-01 08:00:00
0
0
0
安装JAVA
来自于 1970-01-01 08:00:00
0
0
0
无法安装java
来自于 1970-01-01 08:00:00
0
0
0
java - php调取webservice的map类型,如果封装?
来自于 1970-01-01 08:00:00
0
0
0
这个是Java语言的吗
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板