[雑話] 選択ソートをPicthon(ピクトグラミングPython版)で作ってみました.

選択ソートをPicthonを使って書いてみました.現在では,スタンプメソッド(ST)や文字列表示メソッド(T)などもありますので,こういうこともできるようになっています.このような概念をアニメーションで学んだりインフォグラフィックスを作成したりするのは,ピクトグラムの拡大解釈なので,必ず同時にピクトグラムの本質を説明することに留意しつつ活用していきたいものです.

 

def selectionsort(a):
    for i in range(len(a)):
        min_index = i
        for j in range(i+1, len(a),1):
            if a[j]< a[min_index]:
                min_index = j
            draw(a,i,j)
        a[i], a[min_index] = a[min_index], a[i]
        draw(a,i,j)
        
def draw(a,i,j):
    pic.CS()
    pic.C()
    pic.MW(-300,0)
    for k in range(len(a)):
        pic.SC(a[k] / 100)
        pic.ST()
        pic.MW(70, 0)
    pic.SC(0)
    pic.T("⇩", -325 + i * 70, -150, 50)
    pic.T("⇩", -325 + j * 70, -150, 50)    
    pic.W(0.1)

a = [7,22,11,34,17,52,26,13,40]
draw(a, -1, -1)
selectionsort(a)

 

実行例

[ピクトグラミング] ピクトグラミング日本語命令版学習用テキストを新たに公開しました.またそれに合わせ,ピクトグラミング英語命令版学習用テキストも更新しました.

授業用テキスト(ピクトグラミング,ピクソン,ジャバスクピクト)のページで公開している授業用テキストに関して,ピクトグラミング日本語命令版テキスト(26ページ)を新たに公開しました.またそれに合わせ英語命令版テキスト(26ページ)も更新しました.これまでは,対面授業を想定して作成されていましたが,緊急事態宣言に伴う休校状態に対応するため,自宅等での自学習方式での使用を想定し利用手順や説明等を追記しました.名称もピクトグラミング授業用テキストからピクトグラミング学習用テキストに変更しました.

 

以下のリンクからダウンロードできます.

Pictogramming用学習用テキスト(英語命令 20200419版)

Pictogramming用学習用テキスト(日本語命令 20200419版)

短期間で作成しているため,まだ学習テキストとして不十分な点もあると思いますが,今後もテキストの拡充に努めてまいります.今後ともピクトグラミングシリーズをよろしくお願いします.

[ピクトグラミングシリーズ] 文字列描画命令の追加, #pictogramming #ピクトグラミング

文字列描画命令を追加しました.追加された命令の様式は以下の通りです.

命令の様式 処理
T arg1 arg2 arg3 [arg4] 座標(arg2,arg3),文字の大きさ arg4で文字列 arg1 を描く.arg4 が 省略された時は,arg4に80が入力されているものとして取り扱う.

 

標準のピクトグラミングにおける各言語での命令表記は以下になります.

英語表記 英語 日本語 にほんご
T Text 文字(又は)テキスト もじ (又は)てきすと

 

サンプルです.

MW -180 0
ST
MW 180 0
MW 180 0 1
T 2m -50 -40 
PEN ROUND
L -90 20 90 20
L -90 20 -70 0
L -90 20 -70 40
L 90 20 70 0
L 90 20 70 40
W 1

[ピクトグラミングシリーズ] 授業用テキスト(ピクトグラミング,ピクソン,ジャバスクピクト)を更新しました.

主に中学校および高校での50分×6回分の授業利用を想定したテキストを,ピクトグラミング,ピクソン,ジャバスクピクトのいずれも最新の仕様に合わせて更新しました.

こちらのページからアクセスください.

授業用テキスト(ピクトグラミング,ピクソン,ジャバスクピクト)

 

[ピクトグラミングシリーズ] モード変換ルールの変更

ピクトグラミングでは,いくつかのセーフティサインを表示するためのモードや図形描画の際見やすくするためのモード(スケルトンモード)があります.このモードの変更ルールを以下のように変更します.これまで標準以外のモードから標準のモードにするためには,現在のモードと同じ命令を再度実行する仕様になっていましたが,新たに標準のモードに変更するための命令N(Normal)を追加しました.

 

命令の様式 処理
S 安全モード(Safety mode)以外で実行すると安全モードに変更する。 安全モードで再度命令すると通常モードに変更する。安全モード中に描画 した線画の色は人型ピクトグラムと同じ緑色となる。
SG 安全緑モード(Safety Green mode)以外で実行すると安全緑モードに変更する。 安全緑モードで再度命令すると通常モードに変更する。安全緑モード中に描画 した線画の色は人型ピクトグラムと同じ白色となる。
SR 安全赤モード(Safety Red mode)以外で実行すると安全赤モードに変更する。 安全赤モードで再度命令すると通常モードに変更する。安全赤モード中に描画 した線画の色は人型ピクトグラムと同じ白色となる。
P 禁止モード (Prohibit mode) 以外で実行すると禁止モードに変更する。 禁止モードで再度命令すると通常モードに変更する。
I 指示モード(Instruction mode)以外で実行すると指示モードに変更 する。指示モードで再度命令すると通常モードに変更する。指示モード中 に描画した線画の色は人型ピクトグラムと同じ白色となる。
A 注意モード(Attention mode)以外で実行すると注意モードに変更する。注意モードで再度命令すると通常モードに変更する。
SK スケルトンモード(Skelton mode)以外で実行するとスケルトンモードに変更する。スケルトンモードで再度命令すると通常モードに変更する。

 

 

命令の様式 処理
S 安全モード(Safety mode)に変更する。 安全モード中に描画 した線画の色は人型ピクトグラムと同じ緑色となる。
SG 安全緑モード(Safety Green mode)以外で実行すると安全緑モードに変更する。 安全緑モードで再度命令すると通常モードに変更する。安全緑モード中に描画 した線画の色は人型ピクトグラムと同じ白色となる。
SR 安全赤モード(Safety Red mode)以外で実行すると安全赤モードに変更する。 安全赤モードで再度命令すると通常モードに変更する。安全赤モード中に描画 した線画の色は人型ピクトグラムと同じ白色となる。
P 禁止モード (Prohibit mode) 禁止モードに変更する。
I 指示モード(Instruction mode)に変更 する。指示モード中 に描画した線画の色は人型ピクトグラムと同じ白色となる。
A 注意モード(Attention mode)に変更する。
SK スケルトンモード(Skelton mode)スケルトンモードに変更する。
N 通常モード(Normal mode)に変更する。

 

 

各言語の表記

英語表記 英語 日本語 にほんご
N Normal 標準 ひょうじゅん

 

[ピクソン] ピクソン(ピクトグラミングPython版)のプログラム記述領域にコードエディタを採用しました.

これまでピクトグラミングシリーズは,プログラムを記述する領域に,HTML5標準のテキストエリアを使用してきましたが,今回ブラウザ上で動作するコードエディタ CodeMirror を使用することにしました.これにより行番号の表示,シンタックスハイライトなど,プログラムを記述する上でより利便性が高まります.JavaScpictに続けて,ピクトグラミングのPython版である,Picthonに対して適用しました.今後,ピクトグラミングシリーズの他のアプリケーション(ブロックピクトグラミングを除く)にも順次適用予定です.

 

[ジャバスクピクト] ジャバスクピクト(ピクトグラミングJavaScript版)のプログラム記述領域にコードエディタを採用しました.

これまでピクトグラミングシリーズは,プログラムを記述する領域に,HTML5標準のテキストエリアを使用してきましたが,今回ブラウザ上で動作するコードエディタ CodeMirror を使用することにしました.これにより行番号の表示,シンタックスハイライトなど,プログラムを記述する上でより利便性が高まります.手始めにピクトグラミングのJavaScript版である,JavaScpictに対して適用しました.今後,ピクトグラミングシリーズの他のアプリケーション(ブロックピクトグラミングを除く)にも順次適用予定です.

[ピクトグラミングシリーズ] 体の各部位(9箇所)に対するペンの持つ・放すをマウスクリック操作で変更できるようにしました.対応する命令も自動的にプログラムに挿入されます.#pictogramming #ピクトグラミング

ピクトグラミングでは,体,左右のひじ,手,ひざ,あしの9箇所にペンを独立に持つことができます.ペンを持つとその部分の移動の履歴が描画されます.

各部位に対するペンの持つ・放すをマウスクリック操作で変更できるようにしました.表示されている人型ピクトグラムの対応する位置にマウスカーソルを持っていくとピンクの十字が現れますので,そこでマウスをクリックするとペンの持つ・放すが切り替わります.ペンを持っている場合は,対応する位置に赤い十字が表示されます.またマウスで操作した場合においても,対応する「ペンを持つ・放す命令」が自動的にプログラムに挿入されます.

このクリック操作による「ペンの持つ/放す」は,人型ピクトグラムへの様々なマウス操作(回転,平行移動等)が有効になっている場合に限りますので,マウス操作を有効にしたいときは,下の図の「マウス操作禁止」の横にあるチェックボックスをオフにしてください.

人型ピクトグラム表示領域に対する機能追加なので,標準のピクトグラミングPicthonJavaScpict, Block Pictogramming(日本語版英語版いずれも), 自然言語ピクトグラミング全てが対応されています.

 

 

 

 

 

[ブロックピクトグラミング] ブロックピクトグラミングにキーイベントを追加しました.

もともとピクトグラミングはキーイベントをサポートしています.サンプルはこちらです.

今回,ブロックピクトグラミング(標準版IE対応版のいずれも)にキーイベントのサポートを追加しました.

サンプル画面です.上下左右のキーでピクトグラムを動かし,スペースキーを押すと右腕でその場で円を書きます.このサンプルプログラムはこちらです.

 

注意点として,プログラム入力テキストエリア(画面右側)がフォーカスされている場合,キーイベントは発生しませんので,実行開始ボタンを押して実行させ,フォーカスを変更させるか,人型ピクトグラム表示フィールドをクリックしてフォーカスを変更してください.

また,ピクトグラミングでは,一つ以上実行中あるいは実行開始前の命令がある状態をプログラム実行中とみなします.イベントはプログラム実行中しか駆動しませんので,メインプログラムの最後に(1000秒待つ)とかいうブロックを追加して,実行開始からしばらくの間実行中の状態にする必要があります.

工夫次第で簡単なゲームの作成も可能だと思います.