JS五子棋ディスコロボットの作成-4
24204 ワード
今日、グラビアを作成し、グラビアと5行を確認する関数を使用して5行を確認するコードを作成します.
まず、グラビアを作るためにあらかじめ手配しておいたコードがあるので、原理を簡単に説明したいのですが、どう説明すればいいか分からないので、そのままアップロードしました.
グラビア
このように2次元0と1からなるアレイを作るために編んでみました簡単です.分割された各凹面の行を1文字で分割し、mapを使用してターゲット石を文字列に一致させ、1または0を返してから操作を再開します.コード:
次に、テストのためにコードを作成し、次のようにコードを返します.
次に、x、y、石の値を使用して石を必要なセルに配置する関数を実装します.
このようにx値とy値を受け入れる配列インデックス値を1つずつ表す場合は、上図のようにコード(?)を記述できます.
関数を実装するために使用します.
まず、グラビアを作るためにあらかじめ手配しておいたコードがあるので、原理を簡単に説明したいのですが、どう説明すればいいか分からないので、そのままアップロードしました.
function makeSheet(x, y){
let originalSheet = Array(y).fill("");
for (let Y = 0; Y < y; Y++) {
let u = ""
for (let X = 0; X < x; X++) {
if (Y == 0) {
u += ((X == 0) ? ("┏") : (
(X == x-1) ? "┓" : "┳"
))
}
else if (Y == y-1) {
u += ((X == 0) ? "┗": (
(X == x-1) ? ("┛") : "┻"
))
}
else {
if (X == 0) u += "┣"
else if (X == x-1) u +="┫"
else u += "╋"
}
}
originalSheet[Y] = u
}
return originalSheet.join("\n")
}
こんなハーモニー汚く見えるけどよく見ればわかるグラビア
makeSheet(19, 19) result
┏┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┓
┣╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋┫
┣╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋┫
┣╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋┫
┣╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋┫
┣╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋┫
┣╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋┫
┣╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋┫
┣╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋┫
┣╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋┫
┣╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋┫
┣╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋┫
┣╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋┫
┣╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋┫
┣╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋┫
┣╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋┫
┣╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋┫
┣╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋┫
┗┻┻┻┻┻┻┻┻┻┻┻┻┻┻┻┻┻┛
// 아마도 블로그 글 상에서는 이상하게 보일껍니다...원래는 거의 정사각형 모양입니다.
このように出力します.そしてこのグラビアは[0,0,0,0,0,0,0,0,0.],[0,0,0,0,0,0,0,0,0.....], [0,0,0,0,0,0,0,0,0.....], [0,0,0,0,0,0,0,0,0.....] .... ]このように2次元0と1からなるアレイを作るために編んでみました簡単です.分割された各凹面の行を1文字で分割し、mapを使用してターゲット石を文字列に一致させ、1または0を返してから操作を再開します.コード:
function makeOmokArray(omokSheet, dol) {
return omokSheet.split("\n").map(a=>a.split("").map(a=>(a==dol)?"1":"0").map(Number))
}
こうなる次に、テストのためにコードを作成し、次のようにコードを返します.
const omokSheet =
`┏┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┓
┣╋╋╋╋╋╋╋╋╋○╋╋╋╋╋╋╋┫
┣╋╋╋╋●╋╋╋╋╋╋╋╋╋╋╋╋┫
┣╋╋╋○╋●╋╋╋○╋╋╋╋╋╋╋┫
┣╋╋╋○╋╋●╋○╋○╋╋╋╋╋╋┫
┣╋╋╋○╋○╋●○╋╋╋╋╋╋╋╋┫
┣╋╋╋╋○╋╋╋●╋○╋╋╋╋╋╋┫
┣╋╋╋╋╋╋╋╋○╋╋╋╋╋╋╋╋┫
┣╋╋╋○○○╋╋╋╋╋╋╋╋╋╋╋┫
┣╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋┫
┣╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋┫
┣╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋┫
┣╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋┫
┣╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋┫
┣╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋┫
┣╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋┫
┣╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋┫
┣╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋┫
┗┻┻┻┻┻┻┻┻┻┻┻┻┻┻┻┻┻┛`
function makeOmokArray(omokSheet, dol) {
return omokSheet.split("\n").map(a=>a.split("").map(a=>(a==dol)?"1":"0").map(Number))
}
function checkFulfill(omokTwoArray) {
let result = false
for (let omokArrayIndex in omokTwoArray) {
omokArrayIndex = Number(omokArrayIndex)
let omokArray = omokTwoArray[omokArrayIndex];
for (let omokIndex in omokArray) {
omokIndex = Number(omokIndex)
let parsedOmok = {
lr: [],
rl: [],
vertical: [],
horizontal: omokArray
};
for (let i = 0; i < 5; i++) {
const nowOmok = omokTwoArray[omokArrayIndex + i];
parsedOmok.lr.push(nowOmok ? nowOmok[omokIndex + i] : 0);
parsedOmok.rl.push(nowOmok ? nowOmok[omokIndex - i] : 0);
parsedOmok.vertical.push(nowOmok ? nowOmok[omokIndex] : 0);
}
if (parsedOmok.lr.join("").includes("1".repeat(5))) {
result = "lr";
}
if (parsedOmok.rl.join("").includes("1".repeat(5))) {
result = "rl";
}
if (parsedOmok.vertical.join("").includes("1".repeat(5))) {
result = "vertical";
}
if (parsedOmok.horizontal.join("").includes("1".repeat(5))) {
result = "horizontal";
}
}
}
return result
}
console.log(checkFulfill(
makeOmokArray(omokSheet, "●")
))
// result : "lr"
console.log(checkFulfill(
makeOmokArray(omokSheet, "○")
))
// result : false
はい、通常は希望する値が得られます.次に、x、y、石の値を使用して石を必要なセルに配置する関数を実装します.
このようにx値とy値を受け入れる配列インデックス値を1つずつ表す場合は、上図のようにコード(?)を記述できます.
関数を実装するために使用します.
function addDol({
omokSheet,
x,
y,
dol
}) {
const omokSheetArray = omokSheet.split("\n");
const xArray = omokSheetArray[y].split("")
xArray[x] = dol
omokSheetArray[y] = xArray.join("")
return omokSheetArray.join("\n")
}
正常に動作.今日はここまでです.Reference
この問題について(JS五子棋ディスコロボットの作成-4), 我々は、より多くの情報をここで見つけました https://velog.io/@central-js/JS-오목-게임-디스코드봇-만들기-4テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol