1. 程式人生 > >java版-五子棋-個人-原始碼參考

java版-五子棋-個人-原始碼參考

package wuziqi;

importjava.io.IOException;

importjava.util.*; 

public class Wuziqi{

   public static void main(String args[]) {

          //五子棋的宣告

          int[][] wuziqi=new int[16][16];

          //列印佈局,並檢查是否有誤

          xunhun(true,0,0,0,wuziqi);

          Scanner in=new Scanner(System.in); //使用Scanner類定義物件

          System.out.println("\t\t\t歡迎來到下棋中心(人機對戰馬上開始)");

          System.out.println();

          //選擇下棋物件

          while (true) {

              System.out.println("請選擇下棋物件作為起始者:1:人類,2:電腦 ");

              String str = null;

              str = in.nextLine();

              try {

                 char a =(char)(Integer.parseInt(str)+'0');

                 System.out.println(a);     

                 if(a == '1' || a == '2'){

                    //下棋開始

                    start(a,wuziqi);

                 }

              } catch (NumberFormatException e){

                 System.out.println("輸入格式有誤,請輸入 1:人類,2:電腦 ");

              }

          }

       }

   //下棋開始

   public static void start(char ab,intwuziqi[][]){

          if (ab == '1'){

              while(true){

                 //人類下棋

              people(wuziqi);

              //電腦下棋

              computer(wuziqi);

              }

          }

          if (ab == '2'){

              while(true){

                 //電腦下棋

              computer(wuziqi);

              //人類下棋

              people(wuziqi);

              }

          }

       }

   //電腦下棋

   public static void computer(int wuziqi[][]){

          int x=1+(int)(Math.random()*15);

          int y=1+(int)(Math.random()*15);

          System.out.println("電腦下棋座標為:("+ x + "," + y + ")");

          //列印佈局,並檢查是否有誤

          xunhun(false, 2, x, y, wuziqi);

          //檢查是否獲勝

          checkWin(wuziqi, 66);

       }

   // 人類下棋

       public static void people(int wuziqi[][]){

          int[] cun = new int[2];

          Scanner in = new Scanner(System.in);

          while (true) {

              System.out.println("人類下棋:輸入橫座標,按回車鍵");

              String str = null;

              str = in.nextLine();

              try {

                 int x = Integer.parseInt(str);

                 System.out.println(x);     

                 if (x >0 && x <16) {

                     cun[0] = x;

                     break;

                 }

              } catch (NumberFormatException e){

                 System.out.println("輸入格式有誤,:輸入橫座標,按回車鍵");

              }

          }

          while (true) {

              System.out.println("請輸入縱座標:");

              String str = null;

              str = in.nextLine();

              try {

                 int y = Integer.parseInt(str);

                 System.out.println(y);     

                 if (y >0 && y <16) {

                     cun[1] = y;

                     break;

                 }

              } catch (NumberFormatException e){

                 System.out.println("輸入格式有誤,請輸入縱座標:");

              }

          }

          // 列印佈局,並檢查是否有誤

          xunhun(false, 1, cun[0], cun[1], wuziqi);

          // 檢查是否獲勝

          checkWin(wuziqi, 65);

       }

   //檢查是否勝利

   public static void checkWin(int a[][],int ab){

       int i,j,tatol,k,g;

          for (i = 0; i < 16; i++) {

              for (j = 0; j < 16; j++) {

                 if (a[i][j] == ab){

                     tatol = 0;

                     //這是從第一個開始橫向檢查是否滿足五步

                     for (k = j; k < 16; k++){

                        if (a[i][k] == ab) {

                            tatol++;

                            if (tatol == 5) {

                               System.out.println("Congratulation!You Winning!!!");

                               System.exit(0);

                            }

                        } else {

                            break;

                        }

                     }

                     tatol = 0;

                     //這是從第一個開始縱向檢查是否滿足五步

                     for (k = i; k < 16; k++){

                        if (a[k][j] == ab) {

                            tatol++;

                            if (tatol == 5) {

                               System.out.println("Congratulation!You Winning!!!");

                               System.exit(0);

                            }

                        } else {

                            break;

                        }

                     }

                     tatol = 0;

                     //這是從第一個開始右向下檢查是否滿足五步

                     for (g = i; g < 16; g++){

                        if (a[g][j] == ab) {

                            tatol++;

                            if (tatol == 5) {

                               System.out.println("Congratulation!You Winning!!!");

                               System.exit(0);

                            }

                            j++;

                            if (j > 15){

                               break;

                            }

                        } else {

                            break;

                        }

                     }

                     tatol = 0;

                     //這是從第一個開始左向下檢查是否滿足五步

                     for (g = j; g > 0; g--){

                        if (a[j-g+1][g] == ab) {

                            tatol++;

                            if(tatol == 5){

                               System.out.println("Congratulation!You Winning!!!");

                               System.exit(0);

                            }

                        } else {

                            break;

                        }

                     }

                 }

              }

          }

       }

   //列印佈局,並檢查是否有誤

   public static void xunhun(boolean b,int a,intz,int h,int[][] wuziqi){

          int i, j;

          while(b){

              //第一次賦值

              for (i = 0; i < 16; i++) {

                 for( j = 0; j < 16; j++ ){

                     wuziqi[i][j] = 43;

                 }

              }

              break;

          }

          //判斷是否位置重複

          if (wuziqi[z][h]==65 || wuziqi[z][h]==66){

              System.out.println("輸入位置重複,程式已終止!!!");

              System.exit(0);

          }

          if (a == 1) {

              //賦值

              wuziqi[z][h] = 65;

          }

          if(a == 2 ){

              //賦值

              wuziqi[z][h] = 66;

          }

          //第一次列印佈局

          for (i = 0; i < 16; i++ ){

              for (j = 0; j < 16; j++) {

                 if (i == 0 ){

                     System.out.print(j +"   ");

                 } else {

                     if (j >= 10 ){

                        System.out.printf("%c    ",wuziqi[i][j]);

                     } else {

                        if (j == 0) {

                            if (i >= 10 ){

                               System.out.printf("%d  ",i);

                            } else {

                               System.out.printf("%d   ",i);

                            }

                        } else {

                            System.out.printf("%c   ",wuziqi[i][j]);

                        }

                     }

                 }

              }

              System.out.println();

          }

          System.out.println();

       }

}  

相關推薦

java-五子棋-個人-原始碼參考

package wuziqi;importjava.io.IOException;importjava.util.*;  public class Wuziqi{   public static void main(String args[]) {          //五子棋的宣告          int

JAVA聯機五子棋——原始碼(一個類一個main暴力開發)

第一次寫部落格,排版啥的都比較亂,大家不要嫌棄啊。 所謂暴力開發,其實是啥也不會,硬懟哈哈哈。只是剛學會一點JAVA程式設計,參考網路資源寫了個聯機版五子棋(支援單機),來這裡記錄一下學習過程,而且我也是靠別人的分享才能寫出來,所以本著互相幫助的原則,分享給大家

劍指Offer演算法題JAVA21-30題(全是個人寫的非官方,只供參考和自己複習,測試用例都通過了。)

21.棧的壓入、彈出序列、 輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的一個彈出序列,但4,3,5,1,2就不可能是該壓

劍指Offer演算法題JAVA13-20題(全是個人寫的非官方,只供參考和自己複習,測試用例都通過了。)

13.調整陣列順序使奇數位於偶數前面 輸入一個整數陣列,實現一個函式來調整該陣列中數字的順序,使得所有的奇數位於陣列的前半部分,所有的偶數位於位於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。 (思路:是一個類似與快速排序,的思路,但快速排序是不穩定的。要

Java流程控制---個人參考資料

else 循環 while default string java流程控制 for 多層 如果 前言:我寫博客的目的很簡單,很單純,把自己平時學的東西,放到博客上,空閑的時間,就可以看看自己曾經看到過得東西。 Java流程控制語句:判斷結構、選擇結構、循環結構 一.判斷結構

Java推箱子(搬箱子)遊戲開發入門示例及原始碼

                推(搬)箱子,又名Sokoban,倉庫番等,是一款堪稱古玩級的電腦遊戲。提起它,筆者相信沒什麼人會感覺到陌生,更沒什麼生物會連聽都沒聽說過。它的發展歷史之久遠,甚至超越了俄羅斯方塊(1988年電腦遊戲化)。這款遊戲最初起源於日本,是個很難爭辯的事實(我知道有人反對,但筆者確實找

個人所得稅計算java

watermark handler ret 鏡像 ply 員工 else int bae 年關將至,該到了發年終獎的時候了。所以就到網上去找下,個稅計算器,但是發現做的有點像病毒網站似的。所以計算結果也不太敢信,於是琢磨著,要不自己動手寫一個個稅計算器吧。 說幹就幹,先上

Java GUI 單機五子棋

  前言   剛開始學java時接觸到GUI,一時興起寫了個五子棋,五子棋的關鍵點在於判斷輸贏,其他的都沒什麼,現在翻出來整理並記錄下來,不足之處還望各位路過的大佬多多指教。   程式碼實現   程式碼不多,四百多行,全都在這個類裡面,直接執行main函式就可以看到效果,JDK用的是1.7 @

java 仿qq程式碼 完整原始碼 (已測試)

import javax.swing.Icon; public class ListItem {  private String name;  private Icon icon;  public ListItem(String name,Icon icon){   

阿里巴巴Java開發手冊個人整理精簡(一)

個人程式設計時日雖說不短,但整體專案經驗感覺上還是比較欠缺,而且個人的程式設計風格並未形成,為了使自己的程式設計更加讓人賞心悅目(而不是傷心)最近看了阿里的Java開發程式設計的規約希望對自己的程式設計風格有些正面的影響,下面是我的一些筆記和總結: 一、程式設

JAVA 微信企業號開發 個人總結(微信網頁授權例子,微信企業號精準定位,誤差5-10米)

總路線 主要內容:案例微信網頁授權,企業號精準定位(誤差5-10米) 一、 access_token獲取 二、 獲取js-sdk的許可權,票據jsapi_ticket 三、js-sdk的signature 四、js-sdk前臺配置,獲取精準的經緯度

jQuery網頁五子棋小遊戲原始碼下載

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>jquery五子棋遊戲 -&

仿QQ聊天軟體及原始碼java

一直以來,很多java的同志們都沒有一個完整資料來參考。把原始碼貼出來,大家共享! import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dialog; import java.a

五子棋人機對弈程式碼——java

演算法是窮舉遞迴法,只不過用java重新寫了一遍 import java.awt.Color; import java.awt.Container; import java.awt.Graphics; import java.awt.event.ActionEvent

Java——企業進銷存管理系統設計文件+原始碼

進 銷 存 管 理 系 統 專案成員: 學號 姓名 完成的工作 12601310211 後臺編寫 12601310212 資料庫設計 12601310215 圖片模組 12601310237 GUI介面設計 一、專案的總

企業級開發的JAVA程式碼生成器-java快速開發平臺原始碼

專案地址: http://www.javafast.cn JavaFast是一款基於程式碼生成器的智慧快速開發平臺,可以幫助解決java專案中80%的重複工作,讓開發者更多關注業務邏輯。 既能快速提高開發效率,幫助公司節省人力成本,同時不失靈活性。 可以應用在任何J

java專案實踐】詳解Ajax工作原理以及實現非同步驗證使用者名稱是否存在+原始碼下載(java)

      一年前,從不知道Ajax是什麼,伴隨著不斷的積累,到現在經常使用,逐漸有了深入的認識。今天,如果想開發一個更加人性化,友好,無重新整理,互動性更強的網頁,那您的目標一定是Ajax。 介紹

java 自己寫的五子棋程式 原始碼和大家分享

//wuziqi.java import java.applet.*; import java.awt.*; import java.awt.event.*; import java.applet.Applet; import java.awt.Color; public

sina網頁新聞小偷原理及原始碼java

在網上看到網頁小偷,有偷笑話的有偷天氣的。。。最可笑的是GOOGLE上有個人釋出了一篇文章,說是js版本的,我開啟一看,language=vbscript.......還被很多人引用,一搜網頁小偷,都是那一篇文章,真讓人無語。更讓人無語的就是那個所謂的超級經典的笑話小偷。引用

我在生產專案裡是如何使用Redis釋出訂閱的?(二)Java程式碼實現(含原始碼

上篇文章講了在實際專案裡的哪些業務場景用到Redis釋出訂閱,這篇文章就講一下,在Java中如何實現的。   圖解程式碼結構 釋出訂閱的理論以及使用場景大家都已經有了大致瞭解了,但是怎麼用程式碼實現釋出訂閱呢?在這裡給大家分享一下實現方式。   我們以上篇文章的第三種使用場景為例