国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java實現四子棋游戲

java實現四子棋游戲

2021-08-24 11:09孤風寒雪 Java教程

這篇文章主要為大家詳細介紹了java實現四子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

非常簡單的四子棋游戲

本人是剛學java的小白,最近在書上看到了有關四子棋游戲的編程題,就試著來寫一寫,代碼也比較簡單。

思路

寫四子棋的難點是如何判斷四個棋子連在一起。

下面給出圖解:

java實現四子棋游戲

觀察上圖,先從落棋點開始,設置一個計數器 i ,并初始化它為1,像左端移動,遇到的是跟落棋點相同顏色的棋子,則使 i 加1,繼續向左端移動,沒有棋子,則回到落棋點從而向右移動,向右端移動遇到第三個相同的棋,這時i = 3,然后繼續向右移動遇到第四個棋子使 i = 4,到最后只要i = 4,即游戲勝利。再看下圖。

java實現四子棋游戲

按照上面的流程,先向左邊移動,遇到沒有棋子的點停止后 i = 2,再向右移動,遇到不同顏色的棋子后停止,i = 3,這樣落棋點兩邊方向判斷結束后,i < 4即游戲繼續。

總結

判斷游戲是否勝利,就是從棋子落點兩個相反的方向,遇到相同的棋子使計數器數值加1,遇到無棋或顏色不同就結束向另一個方向,直到遇到無棋子和不同顏色的棋子,然后判斷計數器是否為4。在四子棋中有7個方向需要判斷。

import java.util.Scanner;
/**
 * 
 * 
 * 玩法:1.跟五子棋玩法差不多,只是少一顆子,下棋只能選擇每列下在每列棋子上面一格。
 * 2.棋子分為黃、紅,執黃先行。
 * 3.勝利條件跟五子棋一樣,就是少一顆子。
 */
class Desk {
 //棋桌類
 private char[][] date = new char[6][7];
 private Scanner scanner = new Scanner(System.in) ;
 private int hand = 1 ;
 
 //畫出整個棋盤以及上面的棋子
 public void draw() {
 for (int i = 0; i < this.date.length; i++) {
 System.out.print("|");
 for (int j = 0; j < this.date[i].length; j++) {
 System.out.print(this.date[i][j] + "|");
 }
 System.out.println();
 }
 if (this.hand % 2 == 1) {
 System.out.print("現在是第" + this.hand + "手,輪到黃棋: ");
 playchess("Y");
 }
 else {
 System.out.print("現在是第" + this.hand + "手,輪到紅棋: ") ;
 playchess("R");
 }
 }
 
 //控制落子
 public void playchess(char color) {
 this.hand ++;
 int place = scanner.nextInt() ;
 int i ;
 for (i = 5; i >= 0; i--) { //
 if (date[i][place] == "u0000") {
 date[i][place] = color;
 break;
 }
 }
 if (i < 0)System.exit(1);
 else win(i, place, color) ;
 }
 
 //判斷游戲是否有人勝利或平局(依據是根據落子位置的兩個方向是否連成四子)
 public void win(int x, int place,char color) {
 int number = 1;
 //第一個方向(右斜線方向)
 for (int i = x - 1, j = place - 1; (i >= 0) && (j >= 0); i--, j--) {
 if (date[i][j] == color) {
 number++;
 }
 else break;
 }
 for (int i = x + 1, j = place + 1; (i <= 5) && (j <= 6); i++, j++) {
 if (date[i][j] == color) {
 number ++ ;
 }
 else break;
 }
 if (number == 4)end(color, "win");
 //第二個方向(左斜線方向)
 number = 1;
 for (int i = x - 1, j = place + 1; (i >= 0) && (j <= 6); i--, j++) {
 if (date[i][j] == color) {
 number++;
 }
 else break;
 }
 for (int i = x + 1, j = place - 1; (i <= 5) && (j >= 0); i++, j--) {
 if (date[i][j] == color) {
 number ++ ;
 }
 else break;
 }
 if (number == 4)end(color, "win");
 //第三個方向(水平)
 number = 1;
 for (int i = x, j = place - 1; j >= 0; j--) {
 if (date[i][j] == color) {
 number ++ ;
 }
 else break ;
 }
 for (int i = x, j = place + 1; j <= 6; j++) {
 if (date[i][j] == color) {
 number ++ ;
 }
 else break;
 }
 if (number == 4)end(color, "win");
 //第四個方向(豎直)
 number = 1;
 for (int i = x + 1, j = place; i <= 5; i++) {
 if (date[i][j] == color) {
 number ++ ;
 }
 else break;
 }
 if (number == 4)end(color, "win") ;
 //判斷平局
 for (int i = 0; i < date.length; i++) {
 for (int j = 0; j < date[i].length; j++) {
 if (date[i][j] != "Y" || date[i][j] != "R")draw() ;
 }
 }
 end(color, "s") ;
 }
 
 //判斷游戲是否結束
 public void end(char color, String str) {
 if (str.equals("win")) {
 System.out.print(color + "棋獲得勝利!!!");
 System.exit(0);
 }
 else {
 System.out.print("兩棋子平局.") ;
 System.exit(0);
 }
 }
}

public class ChessOffour {
 public static void main(String[] args) {
 Desk desk = new Desk() ;
 desk.draw() ;
 }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/m0_52349141/article/details/114692927

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩一二三区 | 羞涩网站 | 天天操夜夜爽 | 四虎免费看黄 | 亚洲成人一区二区三区 | 亚洲天堂久久 | 亚洲情在线 | 免费成人黄色网址 | 国产精品自产拍在线观看 | 精品www| 蜜桃精品一区二区 | 在线观看中文字幕亚洲 | 91精品国产综合久久久久久丝袜 | 激情图区在线观看 | 日韩亚洲视频 | 欧美成年黄网站色视频 | 中文字幕在线精品 | 毛片在线免费观看网站 | 免费看黄色一级视频 | 久久精品亚洲一区二区 | 国产一级片 | 在线观看黄色 | www.777色| 91麻豆产精品久久久 | 亚洲精品一区二区三区四区高清 | 亚洲国产区 | 国产一级黄 | 亚洲精品自拍 | 精品久久久久久久人人人人传媒 | 国产欧美日韩综合精品一区二区 | 国产精品视屏 | 亚洲免费视频一区 | 中文字幕精品一区二区精品 | 欧美激情亚洲 | 久久久国产视频 | 精品国产91亚洲一区二区三区www | 国产美女视频自拍 | 日韩成人在线播放 | 久久久久久久久久久影视 | 国产精品久久久久久亚洲调教 | 精品一区二区三区视频 |