欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java實(shí)現(xiàn)簡(jiǎn)單三子棋游戲

 更新時(shí)間:2022年05月04日 14:34:35   作者:指間理想  
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單三子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了java實(shí)現(xiàn)簡(jiǎn)單三子棋游戲的具體代碼,供大家參考,具體內(nèi)容如下

JOptionPane類的使用

編寫程序,實(shí)現(xiàn)簡(jiǎn)單的三子棋游戲。在三子棋中,雙方在3×3的棋盤中輪流下棋,一方用*示,另一方用O表示。如果一方的3個(gè)棋子占據(jù)了同一行,同一列或者對(duì)角線,則該方獲勝。如果棋盤已被棋子占滿,但沒(méi)有一方獲勝則出現(xiàn)平局。在程序中,一方為用戶,用戶在界面上輸入每次下棋的位置;另一方下棋的位置為隨機(jī)自動(dòng)生成。示例界面如圖所示。

提示:(1) 采用Scanner類或者JOptionPane類中提供的方法輸入,輸出采用System.out中的方法或JOptionPane類提供的方法。 (2) 字符串處理可以使用String或StringBuffer類。

實(shí)現(xiàn)代碼:

import java.util.Random;
import javax.swing.*;
public class Main {
? ?public static boolean check(StringBuffer st,int pos){ ? //檢查pos上的棋子有沒(méi)有獲勝
? ? ? 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"+"請(qǐng)輸入落子位置(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"+"輸入錯(cuò)誤,請(qǐng)重新輸入落子的位置:");
? ? ? ? ? ? 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;
? ? ? ? ?}
? ? ? ? ?//電腦隨機(jī)落子
? ? ? ? ?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;
? ? ? ? ?}
? ? ? }
? ?}
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot中常用注解的使用合集

    SpringBoot中常用注解的使用合集

    注解?annotation一般是用來(lái)定義一個(gè)類、屬性和一些方法,以便程序能夠被編譯處理,本文為大家整理了SpringBoot中的常用注解以及它們的使用,需要的可以參考下
    2023-07-07
  • 解決ThreadLocal獲取不到值大坑

    解決ThreadLocal獲取不到值大坑

    這篇文章主要介紹了解決ThreadLocal獲取不到值大坑
    2023-05-05
  • Spring Retry 重試實(shí)例詳解

    Spring Retry 重試實(shí)例詳解

    這篇文章主要介紹了Spring Retry 重試,使用方式有兩種分別是命令式和聲明式,本文通過(guò)實(shí)例代碼給大家詳細(xì)講解,需要的朋友可以參考下
    2022-10-10
  • 淺談java中為什么重寫equals后需要重寫hashCode

    淺談java中為什么重寫equals后需要重寫hashCode

    今天帶各位學(xué)習(xí)一下java中為什么重寫equals后需要重寫hashCode,文中有非常詳細(xì)的圖文介紹及代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05
  • SpringBoot中的依賴管理詳解

    SpringBoot中的依賴管理詳解

    這篇文章主要介紹了SpringBoot中的依賴管理詳解,傳統(tǒng)的Spring框架實(shí)現(xiàn)一個(gè)Web服務(wù),需要導(dǎo)入各種依賴JAR包,然后編寫對(duì)應(yīng)的XML配置文件等,相較而言,Spring Boot顯得更加方便、快捷和高效,需要的朋友可以參考下
    2023-08-08
  • Java聊天室之實(shí)現(xiàn)使用Socket傳遞音頻

    Java聊天室之實(shí)現(xiàn)使用Socket傳遞音頻

    這篇文章主要為大家詳細(xì)介紹了Java簡(jiǎn)易聊天室之使用Socket實(shí)現(xiàn)傳遞音頻功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以了解一下
    2022-10-10
  • java語(yǔ)法糖之jdk迭代的新特性匯總

    java語(yǔ)法糖之jdk迭代的新特性匯總

    什么是語(yǔ)法糖?泛型、自動(dòng)裝箱拆箱、變長(zhǎng)參數(shù)、增強(qiáng)for循環(huán)、switch字符類型、lambda表達(dá)式等,這些其實(shí)都是語(yǔ)法糖。這篇文章主要給大家介紹了關(guān)于java語(yǔ)法糖之jdk迭代的新特性的相關(guān)資料,需要的朋友可以參考下
    2021-05-05
  • 解讀CommandLineRunner和@PostConstruct區(qū)別與應(yīng)用場(chǎng)景

    解讀CommandLineRunner和@PostConstruct區(qū)別與應(yīng)用場(chǎng)景

    這篇文章主要介紹了解讀CommandLineRunner和@PostConstruct區(qū)別與應(yīng)用場(chǎng)景,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • dubbo將異常轉(zhuǎn)換成RuntimeException的原因分析?ExceptionFilter

    dubbo將異常轉(zhuǎn)換成RuntimeException的原因分析?ExceptionFilter

    這篇文章主要介紹了dubbo將異常轉(zhuǎn)換成RuntimeException的原因分析?ExceptionFilter問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 深入學(xué)習(xí)Java 動(dòng)態(tài)代理

    深入學(xué)習(xí)Java 動(dòng)態(tài)代理

    Java 動(dòng)態(tài)代理機(jī)制的出現(xiàn),使得 Java 開(kāi)發(fā)人員不用手工編寫代理類,只要簡(jiǎn)單地指定一組接口及委托類對(duì)象,便能動(dòng)態(tài)地獲得代理類。下面小編和大家來(lái)一起學(xué)習(xí)一下吧
    2019-05-05

最新評(píng)論