自画像
自画像のプログラムです。
首の下のスライダーで顔色が変わります。
// 自画像
// プログラミング言語「ドリトル」
// インストール版ドリトルで実行してください
// 2020.06.18 蕪木 孝
// 設定値
画素サイズ = 20。 // 1つの画素(正方形)の幅。これを変更すると全体のサイズも変わる。
横の数 = 13。 // 横方向の画素数
縦の数 = 19。 // 縦方向の画素数
自画像の色 = 配列 !
// 1行目の画素の色情報
255 255 255 255 255 255 255 255 255 42 38 37 43 41 42
44 44 42 32 32 30 34 34 34 37 36 34 48 38 39
255 255 255 255 255 255 255 255 255
// 2行目の画素の色情報
255 255 255 255 255 255 52 42 40 40 36 33 35 34 32
35 42 32 39 38 36 30 29 27 30 29 27 38 34 33
40 30 29 255 255 255 255 255 255
// 3行目の画素の色情報
255 255 255 40 30 29 42 33 28 35 30 26 33 30 25
32 27 23 32 27 24 29 24 21 43 35 32 38 27 23
41 32 27 48 45 36 255 255 255
// 4行目の画素の色情報
48 45 36 35 26 19 44 33 27 37 30 22 36 29 21
36 27 22 44 33 29 50 39 35 44 33 27 45 32 24
49 39 30 49 47 35 255 255 255
// 5行目の画素の色情報
40 37 30 42 32 23 50 37 28 52 42 30 49 39 29
49 34 27 72 55 48 94 77 69 88 71 63 93 75 63
63 49 36 40 34 22 50 51 37
// 6行目の画素の色情報
29 26 21 59 46 37 53 37 24 75 62 46 75 59 44
87 67 56 106 84 73 102 80 69 127 105 92 137 116 99
172 155 139 49 42 26 48 45 30
// 7行目の画素の色情報
48 45 30 109 92 82 74 53 36 67 46 27 103 80 62
157 131 118 152 126 113 117 91 74 149 124 104 101 73 52
186 164 143 61 48 32 52 45 29
// 8行目の画素の色情報
39 34 30 114 95 81 127 100 81 153 126 105 139 111 90
142 113 95 169 140 122 161 133 111 171 141 117 190 156 131
184 156 134 178 161 145 55 43 29
// 9行目の画素の色情報
36 29 23 117 95 81 125 94 73 152 120 97 175 143 120
129 97 76 205 173 152 116 84 59 169 135 107 224 187 160
215 180 158 173 152 135 45 29 14
// 10行目の画素の色情報
26 19 11 120 97 81 128 93 71 117 81 57 130 94 70
120 84 62 202 168 143 149 115 87 141 106 74 206 165 137
209 173 149 179 156 140 72 54 40
// 11行目の画素の色情報
33 26 16 121 98 80 142 107 85 160 122 99 143 105 82
143 105 82 207 171 147 195 160 128 170 134 100 199 158 128
215 179 155 172 149 133 255 255 255
// 12行目の画素の色情報
41 34 24 113 92 73 113 92 73 137 105 82 118 80 59
139 101 80 215 177 154 189 153 121 186 150 116 209 170 141
205 170 148 97 75 62 255 255 255
// 13行目の画素の色情報
100 96 85 108 89 72 126 100 77 145 114 93 122 87 67
113 75 56 171 130 110 188 149 130 168 132 100 214 177 151
215 187 166 89 72 62 255 255 255
// 14行目の画素の色情報
255 255 255 106 91 72 118 96 75 138 111 92 132 99 82
122 83 63 183 140 121 183 142 114 194 157 128 204 170 145
210 184 167 232 222 213 255 255 255
// 15行目の画素の色情報
255 255 255 255 255 255 108 91 71 131 110 93 71 42 28
83 43 31 144 101 84 154 112 87 169 132 105 203 173 149
214 195 178 255 255 255 255 255 255
// 16行目の画素の色情報
255 255 255 255 255 255 108 95 78 124 105 90 124 98 83
128 92 76 156 115 97 188 151 124 207 173 145 199 171 147
240 223 205 255 255 255 255 255 255
// 17行目の画素の色情報
255 255 255 255 255 255 255 255 255 109 92 76 115 93 72
143 115 93 166 136 110 203 172 143 196 167 137 207 181 154
243 225 203 255 255 255 255 255 255
// 18行目の画素の色情報
255 255 255 255 255 255 255 255 255 109 92 76 108 86 63
106 82 56 115 90 60 121 94 64 189 162 132 220 195 165
247 229 205 255 255 255 255 255 255
// 19行目の画素の色情報
255 255 255 255 255 255 255 255 255 117 100 84 123 101 78
135 109 84 169 142 113 211 182 152 222 195 165 228 203 173
204 187 161 255 255 255 255 255 255
作る。
自画像の肌 = 配列 ! // 1 は肌の画素
0 0 0 0 0 0 0 0 0 0 0 0 0 // 1行目
0 0 0 0 0 0 0 0 0 0 0 0 0 // 2行目
0 0 0 0 0 0 0 0 0 0 0 0 0 // 3行目
0 0 0 0 0 0 0 0 0 0 0 0 0 // 4行目
0 0 0 0 0 0 1 1 1 1 0 0 0 // 5行目
0 0 0 1 1 1 1 1 1 1 1 0 0 // 6行目
0 1 1 1 1 1 1 1 1 1 1 0 0 // 7行目
0 1 1 1 1 1 1 1 1 1 1 1 0 // 8行目
0 1 1 1 1 1 1 1 1 1 1 1 0 // 9行目
0 1 1 1 1 1 1 1 1 1 1 1 0 // 10行目
0 1 1 1 1 1 1 1 1 1 1 1 0 // 11行目
0 1 1 1 1 1 1 1 1 1 1 0 0 // 12行目
1 1 1 1 1 1 1 1 1 1 1 0 0 // 13行目
0 1 1 1 1 1 1 1 1 1 1 1 0 // 14行目
0 0 1 1 1 1 1 1 1 1 1 0 0 // 15行目
0 0 1 1 1 1 1 1 1 1 1 0 0 // 16行目
0 0 0 1 1 1 1 1 1 1 1 0 0 // 17行目
0 0 0 1 1 1 1 1 1 1 1 0 0 // 18行目
0 0 0 1 1 1 1 1 1 1 1 0 0 // 19行目
作る。
// 自画像を画面中央に描画するための座標を計算する
x0 = round(画素サイズ * 横の数 / 2) * (-1)。 // 左上隅の画素のx座標
y0 = round(画素サイズ * 縦の数 / 2)。 // 左上隅の画素のy座標
// 描画オブジェクトを作成する
かめた = タートル ! 作る。
かめた ! 1 線の太さ。 // 画素の角が丸まる事象の対策
// 描画オブジェクトを描画開始位置へ移動する
かめた ! ペンなし (x0) (y0) 位置 ペンあり。
// 顔色を変えるときに使う変数
赤最大値 = 0。
緑最大値 = 0。
// 顔色を変えるときに使うスライダー
スラ1幅 = 画素サイズ * (横の数 - 5)。
スラ1高さ = round (スラ1幅 * 2 / 13)。
スラ1x = (スラ1幅 - 画素サイズ) / 2 * (-1)。
スラ1y = y0 - (縦の数 + 1.5) * 画素サイズ。
スライダー1 = スライダー ! 作る (白) 色 -100 から 100 まで 0 値。
スライダー1 ! (スラ1x) (スラ1y) 位置 (スラ1幅) (スラ1高さ) 大きさ 。
古い値 = 0。
// -------------------- 自画像の描画処理 --------------------
「
| i ; 名前 a p 赤色 緑色 青色 肌 |
// 自画像を1行描画する (左から右へ「横の数」個の画素を描画する)
「
| j |
// 各画素の名前を作る
名前 = "画素" + i + "_"+ j。
// 1画素を正方形で描画する
a = 名前 + " = かめた ! " + :画素サイズ + " 4 角形 図形を作る。"。
a ! 実行。
// 1画素の色情報を配列から読み込む
p = (i - 1) * :横の数 * 3 + (j - 1) * 3 + 1。
赤色 = (:自画像の色 ! (p) 読む)。
緑色 = (:自画像の色 ! (p + 1) 読む)。
青色 = (:自画像の色 ! (p + 2) 読む)。
// 肌の画素なら顔色を変えるときに使う変数の値を設定する
p = (i - 1) * :横の数 + j。
肌 = (:自画像の肌 ! (p) 読む)。
「肌 == 1」 ! なら 「
「赤色 > :赤最大値」 ! なら 「:赤最大値 = 赤色」 実行。
「緑色 > :緑最大値」 ! なら 「:緑最大値 = 緑色」 実行。
」 実行。
// 読み込んだ色で画素(正方形)を塗る
色1 = 色 ! (赤色) (緑色) (青色) つくる 。
a = 名前 + " ! (色1) 塗る。"。 a ! 実行。
// 描画オブジェクトを次の画素を描画する位置へ移動する
かめた ! ペンなし (:画素サイズ) 歩く ペンあり。
」 ! (:横の数) 繰り返す。
// 描画オブジェクトを次の行を描画する位置へ移動する
かめた ! ペンなし (x0) (y0 - :画素サイズ * i) 位置 ペンあり。
」 ! (:縦の数) 繰り返す。
// 自画像の描画が終わったので描画オブジェクトの表示を消す
かめた! 消える。
// -------------------- 顔色を変える処理 --------------------
タイマー1 = タイマー ! 作る 0.1秒 間隔 10000 回数。
// (備考 「間隔 * 回数」秒後にはタイマーが停止するので顔色を変えられなくなる)
タイマー1 ! 「
| ; 現在値 引く値 肌 赤色 緑色 青色 名前 a |
現在値 = スライダー1 ! 値?。
「現在値 != :古い値」 ! なら 「 // スライダーが操作されたなら
「現在値 > 0」 ! なら 「
引く値 = round(:緑最大値 * 現在値 / 100)。
」
そうでなければ 「現在値 < 0」 なら 「
引く値 = round(:赤最大値 * 現在値 / 100 * (-1))。
」 実行。
「
| i |
「
| j |
p = (i - 1) * :横の数 + j。
肌 = (:自画像の肌 ! (p) 読む)。
「肌 == 1」 ! なら 「
// 画素の色を読む
名前 = "画素" + i + "_"+ j。
p = (i - 1) * :横の数 * 3 + (j - 1) * 3 + 1。
赤色 = (:自画像の色 ! (p) 読む)。
緑色 = (:自画像の色 ! (p + 1) 読む)。
青色 = (:自画像の色 ! (p + 2) 読む)。
// スライダーの値で色を変える
「現在値 > 0」 ! なら 「
緑色 = 緑色 - 引く値。
「緑色 < 0」 ! なら 「緑色 = 0」 実行。
」
そうでなければ 「現在値 < 0」 なら 「
赤色 = 赤色 - 引く値。
「赤色 < 0」 ! なら 「赤色 = 0」 実行。
」 実行。
// 変えた色で画素(正方形)を塗る
色1=色 ! (赤色) (緑色) (青色) つくる 。
a = 名前 + " ! (色1) 塗る。"。 a ! 実行。
」 実行。
」 ! (:横の数) 繰り返す。
」 ! (:縦の数) 繰り返す。
」 実行。
:古い値 = 現在値。
」 実行。
実行方法
これは教育用プログラミング言語「ドリトル」で書いたプログラムです。
インストール版ドリトルを以下のサイトからダウンロードしてください。
https://dolittle.eplang.jp/download
パソコンのOSがWindowsなら「Windows用」をクリックするとダウンロードがはじまります。
ダウンロードしたら解凍してください。
解凍したら dolittle.bat をダブルクリックするとドリトルが起動します。
プログラムを貼り付けて「実行!」をクリックすると画面が表示されます。
このプログラムを実行したそこのあなた、お宅のPCにお邪魔してすみません。
この記事が気に入ったらサポートをしてみませんか?