Java實(shí)現(xiàn)三子棋游戲
本文實(shí)例為大家分享了Java實(shí)現(xiàn)三子棋游戲的具體代碼,供大家參考,具體內(nèi)容如下
一、題目要求
編寫程序,實(shí)現(xiàn)簡單的三子棋游戲。在三子棋中,雙方在3×3的棋盤中輪流下棋,一方用*示,另一方用O表示。如果一方的3個(gè)棋子占據(jù)了同一行,同一列或者對角線,則該方獲勝。如果棋盤已被棋子占滿,但沒有一方獲勝則出現(xiàn)平局。在程序中,一方為用戶,用戶在界面上輸入每次下棋的位置;另一方下棋的位置為隨機(jī)自動(dòng)生成。
二、代碼示例
import javax.swing.JOptionPane;
?
public class Main {
?
?? ?public static void main(String[] args) {
?? ??? ?char []s=new char[9];
?? ??? ?for(int i=0;i<9;i++) {
?? ??? ??? ?s[i]=(char)(i+49);
?? ??? ?}
?? ??? ?int i=0;
?? ??? ?while(i++<5) {
?? ??? ??? ?String str=JOptionPane.showInputDialog("------------------\n"
?? ??? ??? ??? ? +"| ?"+s[0]+" ?| ?"+s[1]+" ?| ?"+s[2]+" ?|\n"
?? ??? ??? ??? ? +"| ?"+s[3]+" ?| ?"+s[4]+" ?| ?"+s[5]+" ?|\n"
?? ??? ??? ??? ? +"| ?"+s[6]+" ?| ?"+s[7]+" ?| ?"+s[8]+" ?|\n"
?? ??? ??? ??? ? +"------------------\n"
?? ??? ??? ??? ? + "請輸入位置:");
?? ??? ??? ?while(str.length()==0||(str.charAt(0)-49)<0||(str.charAt(0)-49)>8) {
?? ??? ??? ??? ?str=JOptionPane.showInputDialog("------------------\n"
?? ??? ??? ??? ??? ? +"| ?"+s[0]+" ?| ?"+s[1]+" ?| ?"+s[2]+" ?|\n"
?? ??? ??? ??? ??? ? +"| ?"+s[3]+" ?| ?"+s[4]+" ?| ?"+s[5]+" ?|\n"
?? ??? ??? ??? ??? ? +"| ?"+s[6]+" ?| ?"+s[7]+" ?| ?"+s[8]+" ?|\n"
?? ??? ??? ??? ??? ? +"------------------\n"
?? ??? ??? ??? ??? ? + "輸入錯(cuò)誤,請重新輸入:");
?? ??? ??? ?}
?? ??? ??? ?char index=str.charAt(0);
?? ??? ??? ?while(s[index-49]=='*'||s[index-49]=='o') {
?? ??? ??? ??? ?str=JOptionPane.showInputDialog("------------------\n"
?? ??? ??? ??? ??? ? +"| ?"+s[0]+" ?| ?"+s[1]+" ?| ?"+s[2]+" ?|\n"
?? ??? ??? ??? ??? ? +"| ?"+s[3]+" ?| ?"+s[4]+" ?| ?"+s[5]+" ?|\n"
?? ??? ??? ??? ??? ? +"| ?"+s[6]+" ?| ?"+s[7]+" ?| ?"+s[8]+" ?|\n"
?? ??? ??? ??? ??? ? +"------------------\n"
?? ??? ??? ??? ??? ? + "此位置已占用,請重新輸入:");
?? ??? ??? ??? ?index=str.charAt(0);
?? ??? ??? ??? ?while(str.length()==0||(str.charAt(0)-49)<0||(str.charAt(0)-49)>8) {
?? ??? ??? ??? ??? ?str=JOptionPane.showInputDialog("------------------\n"
?? ??? ??? ??? ??? ??? ? +"| ?"+s[0]+" ?| ?"+s[1]+" ?| ?"+s[2]+" ?|\n"
?? ??? ??? ??? ??? ??? ? +"| ?"+s[3]+" ?| ?"+s[4]+" ?| ?"+s[5]+" ?|\n"
?? ??? ??? ??? ??? ??? ? +"| ?"+s[6]+" ?| ?"+s[7]+" ?| ?"+s[8]+" ?|\n"
?? ??? ??? ??? ??? ??? ? +"------------------\n"
?? ??? ??? ??? ??? ??? ? + "輸入錯(cuò)誤,請重新輸入:");
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ??? ?s[index-49]='*';
?? ??? ??? ?if((s[0]=='*'&&s[3]=='*'&&s[6]=='*')||
?? ??? ??? ??? ??? ? ? (s[1]=='*'&&s[4]=='*'&&s[7]=='*')||
?? ??? ??? ??? ??? ? ? (s[2]=='*'&&s[5]=='*'&&s[8]=='*')||
?? ??? ??? ??? ??? ? ? (s[0]=='*'&&s[1]=='*'&&s[2]=='*')||
?? ??? ??? ??? ??? ? ? (s[3]=='*'&&s[4]=='*'&&s[5]=='*')||
?? ??? ??? ??? ??? ? ? (s[6]=='*'&&s[7]=='*'&&s[8]=='*')||
?? ??? ??? ??? ??? ? ? (s[0]=='*'&&s[4]=='*'&&s[8]=='*')||
?? ??? ??? ??? ??? ? ? (s[2]=='*'&&s[4]=='*'&&s[6]=='*'))?
?? ??? ??? ?{
?? ??? ??? ??? ?JOptionPane.showMessageDialog(null, "------------------\n"
?? ??? ??? ??? ??? ? +"| ?"+s[0]+" ?| ?"+s[1]+" ?| ?"+s[2]+" ?|\n"
?? ??? ??? ??? ??? ? +"| ?"+s[3]+" ?| ?"+s[4]+" ?| ?"+s[5]+" ?|\n"
?? ??? ??? ??? ??? ? +"| ?"+s[6]+" ?| ?"+s[7]+" ?| ?"+s[8]+" ?|\n"
?? ??? ??? ??? ??? ? +"------------------\n"
?? ??? ??? ??? ??? ? + "恭喜你贏了");
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ??? ?int b=(int)(Math.random()*9);
?? ??? ??? ?while(s[b]=='*'||s[b]=='o')
?? ??? ??? ?{
?? ??? ??? ??? ?b=(int)(Math.random()*9);
?? ??? ??? ?}
?? ??? ??? ?s[b]='o';
?? ??? ??? ?if((s[0]=='o'&&s[3]=='o'&&s[6]=='o')||
?? ??? ??? ??? ??? ? ? (s[1]=='o'&&s[4]=='o'&&s[7]=='o')||
?? ??? ??? ??? ??? ? ? (s[2]=='o'&&s[5]=='o'&&s[8]=='o')||
?? ??? ??? ??? ??? ? ? (s[0]=='o'&&s[1]=='o'&&s[2]=='o')||
?? ??? ??? ??? ??? ? ? (s[3]=='o'&&s[4]=='o'&&s[5]=='o')||
?? ??? ??? ??? ??? ? ? (s[6]=='o'&&s[7]=='o'&&s[8]=='o')||
?? ??? ??? ??? ??? ? ? (s[0]=='o'&&s[4]=='o'&&s[8]=='o')||
?? ??? ??? ??? ??? ? ? (s[2]=='o'&&s[4]=='o'&&s[6]=='o'))?
?? ??? ??? ?{
?? ??? ??? ??? ?JOptionPane.showMessageDialog(null, "------------------\n"
?? ??? ??? ??? ??? ? +"| ?"+s[0]+" ?| ?"+s[1]+" ?| ?"+s[2]+" ?|\n"
?? ??? ??? ??? ??? ? +"| ?"+s[3]+" ?| ?"+s[4]+" ?| ?"+s[5]+" ?|\n"
?? ??? ??? ??? ??? ? +"| ?"+s[6]+" ?| ?"+s[7]+" ?| ?"+s[8]+" ?|\n"
?? ??? ??? ??? ??? ? +"------------------\n"
?? ??? ??? ??? ??? ? + "失敗了,再接再勵(lì)");
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?
?? ??? ?}
?? ??? ?if(i==6) {
?? ??? ??? ?JOptionPane.showMessageDialog(null, "------------------\n"
?? ??? ??? ??? ??? ? +"| ?"+s[0]+" ?| ?"+s[1]+" ?| ?"+s[2]+" ?|\n"
?? ??? ??? ??? ??? ? +"| ?"+s[3]+" ?| ?"+s[4]+" ?| ?"+s[5]+" ?|\n"
?? ??? ??? ??? ??? ? +"| ?"+s[6]+" ?| ?"+s[7]+" ?| ?"+s[8]+" ?|\n"
?? ??? ??? ??? ??? ? +"------------------\n"
?? ??? ??? ??? ??? ? + "平局,還差一點(diǎn)哦");
?? ??? ?}
?? ?}
}以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java中hashmap容量的初始化實(shí)現(xiàn)
這篇文章主要介紹了java中hashmap容量的初始化實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
專屬于程序員的浪漫-Java輸出動(dòng)態(tài)閃圖iloveyou
這篇文章主要介紹了專屬于程序員的浪漫-Java輸出動(dòng)態(tài)閃圖iloveyou,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11
SpringCloud實(shí)現(xiàn)文件上傳功能的方法詳解
這篇文章主要為大家詳細(xì)介紹了SpringCloud如何實(shí)現(xiàn)文件上傳功能,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)有一定的借鑒價(jià)值,需要的可以參考一下2022-08-08
Spring mvc AJAX技術(shù)實(shí)現(xiàn)原理解析
這篇文章主要介紹了Spring mvc AJAX技術(shù)實(shí)現(xiàn)原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
深入了解Java數(shù)據(jù)結(jié)構(gòu)和算法之堆
這篇文章主要為大家介紹了Java數(shù)據(jù)結(jié)構(gòu)和算法之堆 ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-01-01
JavaCV?本地視頻推流實(shí)現(xiàn)依賴示例
這篇文章主要為大家介紹了JavaCV?本地視頻推流實(shí)現(xiàn)的依賴示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08

