最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java編程實(shí)現(xiàn)五子棋人人對(duì)戰(zhàn)代碼示例

 更新時(shí)間:2017年11月28日 16:18:25   作者:在成為巨擘的路上  
這篇文章主要介紹了Java編程實(shí)現(xiàn)五子棋人人對(duì)戰(zhàn)代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下。

利用Java,在控制臺(tái)操作下,編寫(xiě)的五子棋,作為復(fù)習(xí)二維數(shù)組,面向?qū)ο蟮然A(chǔ)知識(shí)。w表示白棋,b表示黑棋

import java.util.Scanner;

public class MainMethod {

	public static char[][] c = new char[10][10];

	public static void main(String[] args) {
		MainMethod mainMethod = new MainMethod();
		mainMethod.init();
		int i;
		boolean color;
		int[] point = new int[2];
		Scanner scanner = new Scanner(System.in);

		for (i = 1; i < 100; i++) {
			mainMethod.draw();// 繪制棋盤(pán)
			System.out.println("請(qǐng)輸入坐標(biāo),范圍為(0,0)到(9,9)");
			int x = scanner.nextInt();
			int y = scanner.nextInt();
			if (i % 2 == 1)
				color = true;
			else
				color = false;
			point[0] = x;
			point[1] = y;
			if (mainMethod.paint(point, color) == false) {//
				System.out.println("下的位置不合理,請(qǐng)重新開(kāi)始");
				break;
			}
			if (mainMethod.win() == 1) {
				mainMethod.draw();
				System.out.println("恭喜白棋贏??!");
				break;
			} else if (mainMethod.win() == -1) {
				mainMethod.draw();
				System.out.println("恭喜黑棋贏??!");
				break;
			}

		}

		if (i == 100)
			System.out.println("平局");

	}

	public char[][] init() {// 初始化棋盤(pán)
		for (int i = 0; i < c.length; i++) {
			for (int j = 0; j < c.length; j++) {
				c[i][j] = '+';
			}
		}
		return c;
	}

	public boolean paint(int[] point, boolean colr) {// 判斷下的位置是否正確,若正確改變棋盤(pán)
		boolean b = true;
		int x = point[0];
		int y = point[1];

		if (inBoard(point) == false || c[x][y] == 'w' || c[x][y] == 'b' || x < 0) {
			b = false;
			return b;
		}

		else if (colr == true) {// 白棋下
			if (c[x][y] == '+') {
				c[x][y] = 'w';
			}
		}

		else if (colr == false) {// 黑棋下
			if (c[x][y] == '+') {
				c[x][y] = 'b';
			}
		}
		return b;
	}

	public boolean inBoard(int[] point) {// 判斷point是否在棋盤(pán)上
		int x = point[0];
		int y = point[1];
		if (x < 0 || y < 0 || x >= c.length || y >= c.length)
			return false;
		else
			return true;

	}

	public int win() {// 判斷輸贏,1表示白的贏,-1黑的贏,0暫無(wú)輸贏
		int whoWin = 0;

		int[] point = new int[2];
		outer: while (true) {
			for (int i = 0; i < c.length; i++) {
				for (int j = 0; j < c.length; j++) {

					if (c[i][j] == 'w') {// 遍歷數(shù)組,找到的第一個(gè)白棋
						point[0] = i;
						point[1] = j + 4;

						if (inBoard(point)) {// 如果存在向右數(shù)4個(gè)的棋盤(pán)
							if (c[i][j + 1] == 'w' && c[i][j + 2] == 'w' && c[i][j + 3] == 'w' && c[i][j + 4] == 'w') {
								whoWin = 1;
								break outer;
							}
						}

						point[0] = i + 4;
						point[1] = j + 4;

						if (inBoard(point)) {// 如果存在向右,向下數(shù)4個(gè)的棋盤(pán)
							if (c[i + 1][j + 1] == 'w' && c[i + 2][j + 2] == 'w' && c[i + 3][j + 3] == 'w'
									&& c[i + 4][j + 4] == 'w') {
								whoWin = 1;
								break outer;
							}
						}

						point[0] = i + 4;
						point[1] = j;

						if (inBoard(point)) {// 如果存在向下數(shù)4個(gè)的棋盤(pán)
							if (c[i + 1][j] == 'w' && c[i + 2][j] == 'w' && c[i + 3][j] == 'w' && c[i + 4][j] == 'w') {
								whoWin = 1;
								break outer;
							}
						}

						point[0] = i - 4;
						point[1] = j + 4;

						if (inBoard(point)) {// 如果存在向左,向下數(shù)4個(gè)的棋盤(pán)
							if (c[i - 1][j + 1] == 'w' && c[i - 2][j + 2] == 'w' && c[i - 3][j + 3] == 'w'
									&& c[i - 4][j + 4] == 'w') {
								whoWin = 1;
								break outer;
							}
						}

					} else if (c[i][j] == 'b') {
						point[0] = i;
						point[1] = j + 4;

						if (inBoard(point)) {// 如果存在向右數(shù)4個(gè)的棋盤(pán)
							if (c[i][j + 1] == 'b' && c[i][j + 2] == 'b' && c[i][j + 3] == 'b' && c[i][j + 4] == 'b') {
								whoWin = -1;
								break outer;
							}
						}

						point[0] = i + 4;
						point[1] = j + 4;

						if (inBoard(point)) {// 如果存在向右,向下數(shù)4個(gè)的棋盤(pán)
							if (c[i + 1][j + 1] == 'b' && c[i + 2][j + 2] == 'b' && c[i + 3][j + 3] == 'b'
									&& c[i + 4][j + 4] == 'b') {
								whoWin = -1;
								break outer;
							}
						}

						point[0] = i + 4;
						point[1] = j;

						if (inBoard(point)) {// 如果存在向下數(shù)4個(gè)的棋盤(pán)
							if (c[i + 1][j] == 'b' && c[i + 2][j] == 'b' && c[i + 3][j] == 'b' && c[i + 4][j] == 'b') {
								whoWin = -1;
								break outer;
							}
						}

						point[0] = i - 4;
						point[1] = j + 4;

						if (inBoard(point)) {// 如果存在向左,向下數(shù)4個(gè)的棋盤(pán)
							if (c[i - 1][j + 1] == 'b' && c[i - 2][j + 2] == 'b' && c[i - 3][j + 3] == 'b'
									&& c[i - 4][j + 4] == 'b') {
								whoWin = -1;
								break outer;
							}
						}

					}

				}
			}
			whoWin = 0;
			break outer;

		}
		return whoWin;
	}

	public void draw() {// 繪制棋盤(pán)
		for (int i = 0; i < c.length; i++) {
			for (int j = 0; j < c.length; j++) {
				System.out.print(c[i][j] + " ");
			}
			System.out.println();
		}
	}

}

運(yùn)行結(jié)果:

+ + + + + + + + + + 
+ + + + + + + + + + 
+ + + + + + + + + + 
+ + + + + + + + + + 
+ + + + + + + + + + 
+ + + + + + + + + + 
+ + + + + + + + + + 
+ + + + + + + + + + 
+ + + + + + + + + + 
+ + + + + + + + + + 
請(qǐng)輸入坐標(biāo),范圍為(0,0)到(9,9)
4
6
+ + + + + + + + + + 
+ + + + + + + + + + 
+ + + + + + + + + + 
+ + + + + + + + + + 
+ + + + + + w + + + 
+ + + + + + + + + + 
+ + + + + + + + + + 
+ + + + + + + + + + 
+ + + + + + + + + + 
+ + + + + + + + + + 
請(qǐng)輸入坐標(biāo),范圍為(0,0)到(9,9)
6
5
+ + + + + + + + + + 
+ + + + + + + + + + 
+ + + + + + + + + + 
+ + + + + + + + + + 
+ + + + + + w + + + 
+ + + + + + + + + + 
+ + + + + b + + + + 
+ + + + + + + + + + 
+ + + + + + + + + + 
+ + + + + + + + + + 
請(qǐng)輸入坐標(biāo),范圍為(0,0)到(9,9)

誰(shuí)輸誰(shuí)贏我就不弄出來(lái)了,太長(zhǎng),占地。。

總結(jié)

以上就是本文關(guān)于Java編程實(shí)現(xiàn)五子棋人人對(duì)戰(zhàn)代碼示例的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專(zhuān)題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!

相關(guān)文章

  • MyBatis多表操作查詢(xún)功能

    MyBatis多表操作查詢(xún)功能

    這篇文章主要介紹了MyBatis多表操作,包括一對(duì)一查詢(xún),一對(duì)多查詢(xún)的模型,多對(duì)多查詢(xún)的需求,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-11-11
  • Springboot中項(xiàng)目的屬性配置的詳細(xì)介紹

    Springboot中項(xiàng)目的屬性配置的詳細(xì)介紹

    很多時(shí)候需要用到一些配置的信息,這些信息可能在測(cè)試環(huán)境和生產(chǎn)環(huán)境下會(huì)有不同的配置,本文主要介紹了Springboot中項(xiàng)目的屬性配置的詳細(xì)介紹,感興趣的可以了解一下
    2022-01-01
  • Java 中運(yùn)行字符串表達(dá)式的方法

    Java 中運(yùn)行字符串表達(dá)式的方法

    這篇文章主要介紹了Java 中運(yùn)行字符串表達(dá)式的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • SpringBoot整合mybatis/mybatis-plus實(shí)現(xiàn)數(shù)據(jù)持久化的操作

    SpringBoot整合mybatis/mybatis-plus實(shí)現(xiàn)數(shù)據(jù)持久化的操作

    這篇文章主要介紹了SpringBoot整合mybatis/mybatis-plus實(shí)現(xiàn)數(shù)據(jù)持久化,本節(jié)內(nèi)容我們介紹了數(shù)據(jù)持久化的相關(guān)操作,并且是基礎(chǔ)傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)——mysql,需要的朋友可以參考下
    2022-10-10
  • JVM中堆內(nèi)存和棧內(nèi)存的區(qū)別

    JVM中堆內(nèi)存和棧內(nèi)存的區(qū)別

    本文主要介紹了JVM中堆內(nèi)存和棧內(nèi)存的區(qū)別,具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-02-02
  • Spring中的@Transactional事務(wù)失效場(chǎng)景解讀

    Spring中的@Transactional事務(wù)失效場(chǎng)景解讀

    這篇文章主要介紹了Spring中的@Transactional事務(wù)失效場(chǎng)景解讀,如果Transactional注解應(yīng)用在非public 修飾的方法上,Transactional將會(huì)失效此方法會(huì)檢查目標(biāo)方法的修飾符是否為 public,不是 public則不會(huì)獲取@Transactional 的屬性配置信息,需要的朋友可以參考下
    2023-12-12
  • Java通過(guò)Process類(lèi)Runtime.getRuntime().exec()執(zhí)行bat腳本程序

    Java通過(guò)Process類(lèi)Runtime.getRuntime().exec()執(zhí)行bat腳本程序

    用Java編寫(xiě)應(yīng)用時(shí),有時(shí)需要在程序中調(diào)用另一個(gè)現(xiàn)成的可執(zhí)行程序或系統(tǒng)命令,這篇文章主要給大家介紹了關(guān)于Java如何通過(guò)Process類(lèi)Runtime.getRuntime().exec()執(zhí)行bat腳本程序的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • Java經(jīng)典快排思想以及快排的改進(jìn)講解

    Java經(jīng)典快排思想以及快排的改進(jìn)講解

    今天小編就為大家分享一篇關(guān)于Java經(jīng)典快排思想以及快排的改進(jìn)講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • SpringBoot配置文件中系統(tǒng)環(huán)境變量存在特殊字符的處理方式

    SpringBoot配置文件中系統(tǒng)環(huán)境變量存在特殊字符的處理方式

    這篇文章主要介紹了SpringBoot配置文件中系統(tǒng)環(huán)境變量存在特殊字符的處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • java-for循環(huán)問(wèn)題

    java-for循環(huán)問(wèn)題

    這篇文章主要介紹了java-for循環(huán)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03

最新評(píng)論

敦化市| SHOW| 阳西县| 芜湖县| 若羌县| 临清市| 拜泉县| 新龙县| 白沙| 驻马店市| 抚宁县| 壶关县| 饶河县| 灵寿县| 双鸭山市| 陇西县| 左权县| 桦甸市| 阿巴嘎旗| 滨海县| 北宁市| 乌鲁木齐市| 新河县| 锦屏县| 夏河县| 龙里县| 高安市| 淄博市| 全椒县| 安吉县| 酒泉市| 山阳县| 宜川县| 巫溪县| 孟津县| 交口县| 新宁县| 司法| 丹棱县| 东方市| 洪洞县|