java实现简单三子棋游戏(简单五子棋编程java)

网友投稿 288 2022-08-01


本文实例为大家分享了java实现简单三子棋游戏的具体代码,供大家参考,具体内容如下

JOptionPane类的使用

编写程序,实现简单的三子棋游戏。在三子棋中,双方在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;

}

}

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java实现简易五子棋小游戏
下一篇:Java 定时任务技术趋势详情
相关文章

 发表评论

暂时没有评论,来抢沙发吧~