using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
namespace 五子棋
;
/// /// 操作記錄
///
public static listczjl = new list();
/// /// 棋子集合.
///
public static listqzlist = new list();
/// /// 棋盤大小
///
public static int size = 16;
/// /// 當前回合數
///
public static int huihe = 1;
/// /// 當前落子方,0白棋1黑棋
///
public static int type = 0;
/// /// 游標輸入位置x
///
public static int index_x = 0;
/// /// 游標輸入位置y
///
public static int index_y = 0;
/// /// 程式入口
///
///
static void main(string args)
else
// 設定游標輸入點位置
console.setcursorposition(index_x, index_y);
// 定義落子狀態
bool is_lz = true;
// 檢測落子狀態
while (is_lz)
else
}//獲取白棋集合
listbqlist = qzlist.where(r => r.type == 0).tolist();
//獲取黑棋集合
listhqlist = qzlist.where(r => r.type == 1).tolist();
//落子後進行勝負檢測
if (iswin(bqlist))
if (iswin(hqlist))
}console.read();
}/// /// 繪製棋盤
///
/// 棋盤大小
public static void draw_qp(int size)
else
continue;
}//沒有棋子時繪製棋盤
console.write("■");
}//列印遊戲規則
if (gz.length > i)
//換行
console.writeline();}}
/// /// 列印落子記錄
///
/// 操作內容
/// 操作人
public static void draw_czjl(string type)
else
}else
else
}console.writeline();
console.writeline();
//列印落子記錄
foreach (var i in czjl_sort)
}/// /// 勝負校驗
///
/// 棋子集合
public static bool iswin(listqzlist)
qzmodel qzmodel = qzlist.last();// 獲取最新落子點
// 過濾無效棋子
var qzlist_jc = qzlist.where(r =>
(r.x + 8 <= qzmodel.x || r.x - 8 <= qzmodel.x)
&&(r.y - 5 <= qzmodel.y || r.y + 5 <= qzmodel.y)).tolist();
//當有效棋子數不夠時不進行檢測
if (qzlist_jc.count() <= 0)
// 豎向檢測
// 按x座標進行分組獲取和落子點x座標相同的棋子,進行豎向檢測
var qzlist_jc = qzlist_jc.where(r => r.x == qzmodel.x).orderbydescending(s => s.y).tolist();
for (int i = 0; i < qzlist_jc.count; i++)
//檢查棋子是否相連
if (qzlist_jc[i].y == qzlist_jc[i + 1].y)
else
//相連棋子超過5或者等於5時判勝
if (lx_number >= 5)
}// 橫向檢測
// 按y座標進行分組獲取和落子點y座標相同的棋子,進行橫向檢測
var qzlist_jc_x = qzlist_jc.where(r => r.y == qzmodel.y).orderbydescending(s => s.x).tolist();
for (int i = 0; i < qzlist_jc_x.count; i++)
if (qzlist_jc[i].x == qzlist_jc_x[i + 1].x + 2)
else
if (lx_number >= 5)
}// 左斜向檢測\
for (int i = 0; i < 9; i++)
else if (i == 4)
else
if (qzlist_jc.where(r => r.x == x * 2 && r.y == y).count() == 1)
else
if (lx_number >= 5)
}// 右斜向檢測/
for (int i = 0; i < 9; i++)
else if (i == 4)
else
if (qzlist_jc.where(r => r.x == x * 2 && r.y == y).count() == 1)
else
if (lx_number >= 5)
}return is_win;
}/// /// 按鍵檢測游標移動
///
/// 按鍵值
public static bool downkey(consolekey key)
;czjl.add(czjlmodel);
console.setcursorposition(0, 16);
if (type == 0)
else
// 落子失敗返回false,提示玩家重新落子
return false;
}//生成對應棋子,新增到棋子集合
if (type == 0)
;qzlist.add(qzmodel);
}else
;qzlist.add(qzmodel);
}console.setcursorposition(0, 16);
// 生成落子記錄,新增到記錄集合
if (type == 0)
;czjl.add(czjlmodel);
draw_czjl("黑子");
type = 1;
}else
;czjl.add(czjlmodel);
draw_czjl("白子");
huihe++;
type = 0;
}return true;
}return false;
}}/// /// 操作記錄model
///
public class czjlmodel
/// /// 序號
///
public int sort
}/// /// 棋子model
///
public class qzmodel
/// /// 棋子x座標
///
public int x
/// /// 棋子y座標
///
public int y
}
c 控制台五子棋
用控制台來寫五子棋練習。下面是原始碼 首先我寫了個board類,用來處理跟棋盤有關的東西 其成員有 private int checkerboard new int 20,20 public enum checker private void show public void update int ...
五子棋控制台原始碼分享
今天檢視eclipse上的 偶然發現了之前寫過的一段小 感覺命名 等都不是特別規範,不過還是想拿來和大家分享下。希望感興趣的可以看下,裡面有好多bug沒進行處理,只是當時用來寫著玩的。package com.demo created by tt on 2017 01 12.五子棋 public cl...
控制台五子棋遊戲類記錄
這個文件上面的教程和我所理解的有所不同呢,果然還是需要自己來寫,文件只是提供了乙個大致方向 public class chessgame public void newcom map.setmap posx,posy,chessqizi.white.getchessqizi public boole...