---
# System prepended metadata

title: 海鮮丼のHackMDページ

---

# 海鮮丼のHackMDページ

<h2>Nクイーン問題</h2>

・一次元配列を使って、置ける場所を判定

あとで書きます

<h2>
    迷路(Proccesing)
</h2>

--------ステップ1-----------

![](https://i.imgur.com/R5bdvFa.png)

0→通路、1→壁　

資料内リスト4
// 分岐や曲がり角があったら曲がるかも
// 垂直方向に進んでいる場合
if(vx == 0 && (meiro[y][x+1] != 1
|| meiro[y][x-1] != 1)){　    //←自分自身から見て右もしくは左が壁じゃないときに動作
vx = (int)
vy = 0;



--------ステップ1終(´･ω･)b-----------

--------ステップ2-----------
WALKED    //定数として使う。0は地面,1は壁なので0,1以外の数字であれば良い
atack_top    //スタック用配列の位置 増減で進む、戻るを調整

<h2>
迷路(java)
</h2>

makeMaze()→迷路を作る関数
block[x][y] が1→壁
block[x][y] が0→通路

<h3>
スタックの実装
</h3>

スタック→後入れ先出しのデータ構造
行列に並ぶようなもの(最後に来た人は列の最後尾に並ぶ感じ)

配列　hai_x , hai_y
変数　q_first , q_last
maru_x,maru_y →　現在の座標

```
//キューに入れる
void en_q(int x, int y) {
	hai_x[q_first] = x;
	hai_y[q_first] = y;
	q_first++;
}
//キューから取り出す
void de_q() {
	marux = hai_x[q_last];
	maruy = hai_y[q_last];
	q_last++;
}
```
<h2>

テトリス
</h2>

FieldWithEvaluation.java←評価処理
TetrisAI.java←メイン処理

・246行目付近のswitch文について
0→次のブロックを生成、次の場所に落ちる
1→落下処理 AIが落としているように見せかける。なくてもよい
2→フィールドの状態を更新、ブロックを落ちた状態にする

今回はケース0が大事 🐖=3
・case0
```
int k = TetrisAI.this.blkg[Math.abs(rnd.nextInt()) % 7];
```
↑7で割るのは7種類のブロックを判別するため
```
for (int bestEvaluationVal = 0; TetrisAI.this.blk[k][0] >= 0; k++) 
```
↑k = 種類。値が-になると判定おしまい
```
TetrisAI.this.fieldForEval.setField(TetrisAI.this.field);
TetrisAI.this.fieldForEval.evaluateState(k, i);
```
↑仮にブロックを置いてスコア付けをしたりする部分

<br>

・38行目あたりblkの2次配列について
{-1}を挟むことにより別のブロックに移る
複数行あるミノは、向きを変えた時のパターンが複数あるもの
{0, 8, 0, 0, 1, 0, 0, 1, 1, 1}→四角ブロック
最初の0,8は横方向に置ける場所の数(0~8で9個)、その後ろは描画
それぞれ(0,0) (0,1) (1,0) (1,1) と分けられ四角を意味する

・`private int[] blkg = new int[]{0, 2, 7, 12, 17, 20, 23};`
 それぞれのミノがblk[][]の何行目から始まるか示す
 0:O, 2:T, 7:J, 12:L, 17:S, 20:Z, 23:I
 
・int[][] cell
 10x24のマス。表示されているマスは10x20だが、Iミノを縦に入れるため内部では10x24となっている。0:ミノなし,1:ミノあり
 
・fieldForEval.evaluateState(int setting, int x)
　評価値(this.value)を計算。this.value = 30000から減算していく。
 1.ミノを置いた時の最大の高さ(max)*10を減算
 2.穴あきの数(高い位置にあるものほど点数大きく)*20を減算
 
<h2>
オセロ
</h2>
・MainPanel.java
	オセロゲーム自体の処理
    

	