同期処理とは, プログラムを上から下へ順番に処理することです(同期処理1→同期処理2→同期処理3→同期処理4)。もし同期処理2が終わらない場合, 同期処理2が終わるまで同期処理3と4は処理されないのです。

非同期処理は, プログラムが実行された時に(待たないで), 次のプログラムを処理することです。

 

Promiseオブジェクトは簡潔に言えばいわば「今は価を返せないが, いつか値を返すという約束をする」オブジェクトです。

 

Promiseオブジェクトは3つの状態(pending, fulfilled, rejected)を持っています。

pendingは保留しているという意味で, まだ非同期処理は成功も失敗もしていません。

fulfilledは達成したという意味で, 非同期処理が成功したことを示します。

rejectedは拒否したという意味で, 非同期処理が失敗したことを示します。

初期値はpendingで, 一度でもfulfilledまたはrejectedになったらそれ以降は状態も非同期処理が終了した時に返す値もずっとこのままです。

 

Promiseのコンストラクターは2つの関数(resolve, reject)を引数に取ります。

第1引数である関数(resolve)に引数を渡して実行した場合は, 状態がfulfilledになります。

第2引数である関数(reject)に引数を渡して実行した場合は, 状態がrejectedになります。

引数の値はいずれもPromiseオブジェクトが保持する値になります。

 

resolveとrejectは関数だよ!

fulfilledとrejectedは状態だよ!

ここ重要!

 

then()は2つの関数を引数に取ります。

Promiseの状態がfulfilledになった場合は第1の関数を, Promiseの状態がrejectedになった場合は第2の関数を引数に取ります。

 

成功した(状態がfulfilled)場合はthen関数を実行します。

失敗した(状態がrejected)場合はcatch関数を実行します。

 

promise.allはpromiseが全てresolveされた時に.thenを実行します。

逆にpromiseが1つでもrejectされた場合は.catchを実行します。

 

 

どうもこんにちは、執政官アキヒロ・バッハです。

 

皆さんは人体比率について考えたことがありますか?

 

私はイラスト初心者なので、比率を頭に叩き込んで人物画を上達させたいです。

 

 

全体を14.0とすると、

 

顔は2.0

首は0.5

上腕と胸部は共に2.5

前腕と腰部は共に2.0

 

身体の中心は股が基準で上半身が7.0、下半身が7.0にする。

 

手は1.5

太ももは3.0

ふくらはぎは3.0

足は1.0

 

以上のようになります。

 

私は趣味で漫画家になりたいです。

 

今は就活中(2024卒)なので、漫画制作はあまりできないかもしれませんが、いい企業とご縁があったら趣味で漫画制作していきたいなと思っています。

control.js
//ゲームの進行制御パート

Gameクラス
//チェス盤の大きさの定数を定義する

boardsについて

盤上の配列onBoards

横の座標の定数X
縦の座標の定数Y
駒の色の変数army
駒の種類の変数character
盤の色の変数field

//横の座標は配列の0番目, 縦の座標は配列の1番目, 駒の色は配列の2番目, 駒の種類は配列の3番目, 盤の色は4番目と指定する
//横の座標は0~7にする
//縦の座標は0~7にする
//白は1, 黒は-1, 駒なしは0にする
//駒なしは0, ポーンは1, ルークは2, ナイトは3, ビショップは4, クイーンは5, キングは6にする
//盤の色は横の和が偶数なら白, 奇数なら黒にする

placePiecesメソッド
//盤面に駒を配置する

isMyTurnメソッド
//もし自分のターンなら自分の駒を動かす(駒の色が1~6)

isComTurnメソッド
//もし敵のターンなら敵の駒を動かす(AI, 駒の色が-6~-1)

isCheckメソッド
//王手されているかどうかを返す(初期はfalse)
//もし自キングがチェックされていたらフラグをtrueにする
//もし敵キングがチェックされていたらフラグをtrueにする

isGameOverメソッド
//勝負がついたかどうかを返す(初期はfalse)
//もし自キングがチェックされていてどこに動いてもチェックならフラグをtrueにしてloseを表示する(敗北)
//もし自キングがチェックされていなくてどこに動いてもチェックならフラグをtrueにしてdrawを表示する(引き分け)
//もし敵キングがチェックされていてどこに動いてもチェックならフラグをtrueにしてclearを表示する(勝利)
//もし敵キングがチェックされていなくてどこに動いてもチェックならフラグをtrueにしてdrawを表示する(引き分け)

canAttackKingメソッド
//誰かがキングを攻撃しているかどうかを返す

inputメソッド
//デバイス入力を受け付ける
//もし駒の色の値が1なら自分は動かせる, それ以外は動かせない

aiメソッド
//敵AIの入力を受け付ける
//もし駒の色の値が-1なら敵は動かせる, それ以外は動かせない

printBoardメソッド
//盤面の絵をプリントする

printPiecesメソッド
//盤面の絵をプリントする

piece.jsモジュール
//駒の動きの定義パート

変数moveOfX
//横の移動距離

変数moveOfY
//縦の移動距離

変数sumOfXAndY
//縦と横の移動距離の和は絶対値

canMovesメソッド
//ポーンは行きたいマスに敵の駒がない場合は前に1マス動ける。飛び越し不能。もし斜め前に敵の駒がある場合はそのマスに進める。もし自ポーンが縦の2段にある場合は前に2マス動ける。もし敵ポーンが縦の7段にある場合は前に2マス動ける。
//ルークは横の移動距離が0, 縦の移動距離が-7~7の時or横の移動距離が-7~7, 縦の移動距離が0の時に動ける。飛び越し不能。
//ナイトは縦の移動距離と横の移動距離合計の和が3の時and横の移動距離が3でない時and縦の移動距離が3でない時に動ける。飛び越し可能。
//ビショップは横の移動距離と縦の移動距離が等しい時に動ける。飛び越し不能。
//クイーンは横の移動距離が0, 縦の移動距離が-7~7の時or横の移動距離が-7~7, 縦の移動距離が0の時or横の移動距離と縦の移動距離が等しい時に動ける。飛び越し不能。
キングは移動距離が1の所だけ動ける。もしその場所がチェックされていたらその場所には動けない

avoidGoToOutsideメソッド
//もし横の座標が0~7でない場合または縦の座標が0~7でない場合は動けない


参考サイト

https://midorimici.com/posts/chess-app-devel-1

https://saito-saito-saito.github.io/chess/