ロジック/基本情報

Last-modified: 2021-01-04 (月) 18:54:49

ロジックブロックの種類と説明

※リンク名はプロセッサ類を使用する際にSensorなどで指定する名称、末尾に連番がつく

メッセージブロック
5.0と同じように機能しますが、ロジックプロセッサで編集できるようになったため、再設定されてロジックセクションに移動されました。
message.png
  • リンク名: message
  • マウスオンすると文字を表示する
  • PrintPrintFlushで操作する
  • マウスオンする手間はあるが文字や数字を簡単に書き出せるのでロジックと組み合わせて以下の用途に使える
    • ロジック作成時のデバッグ(変数内の値確認)
    • ロジックの稼働状況やSensorの情報を表示
スイッチ
1x1ブロックで、クリック/タップすることでオンとオフを切り替えることができます。その状態は、マイクロ/ロジックプロセッサから読み取ることができます
switch.png
  • リンク名: switch
  • SensorでON,OFFを判定する

    sensor a = @enabled in switch1

  • @enabledの値はONの場合true(=1), OFFの場合false(=0)
  • オンオフの切り替えが手動でできるのが特徴で用途例は以下
    • ロジックを強制停止したい場合の保険機能
マイクロプロセッサ
最初の実際の処理ブロックです。これは1x1で、10ブロックのリンク範囲(以下を参照)があり、さまざまなタスクを実行するように設定できます。120コマンド/秒で実行されます。
micro-processor.png
  • 命令を記入するメインとなるブロック
  • マイクロ、ロジック、ハイパーそれぞれのプロセッサの機能は同じ。性能が異なる。
ロジックプロセッサ
マイクロプロセッサに似ていますが、2x2です。20ブロックのリンク範囲があります。300コマンド/秒で実行されます。
logic-processor.png
ハイパープロセッサ
ロジックプロセッサに似ていますが、3x3です。それは40ブロックのリンク範囲を持っています。1500コマンド/秒で実行されます。冷却水も必要です。
hyper-processor.png
ロジックディスプレイ
描画可能な大きな3x3ブロックです。プレイヤーはそれを使って何もできませんが(それを見る以外)、ロジックブロックはそれを使用して形状を描画できます(たとえば、長方形、線、多角形、三角形ですが、円を作成するには、多くの辺を持つ多角形を使用するだけです)。画面サイズは80x80です。
logic-display.png
  • リンク名: display
  • Draw, DrawFlushで操作する
  • ディスプレイの左下がx=0 y=0、右上がx=80 y=80
  • メッセージブロックと異なりマウスオンしなくてもマップ上にビジュアル表現ができるのが特徴で用途例は以下
    • コアのアイテム格納率を棒グラフ風に表示
    • 電力に余力があるかないかを色で表示
大型ロジックディスプレイ
ロジックディスプレイの大型バージョンです。画面サイズは179x179ピクセルで、6x6のスペースを占有します。
large-logic-display.png
  • 基本はロジックディスプレイと同じ
メモリセル
データの保存に使用できる1x1ブロックです。ロジックブロックは独自のデータを格納できますが、2つのブロック間でデータを転送する唯一の方法は、メモリセルを使用することです。これにより、64個の値を64個の一意の位置に格納できます。
memory-cell.png
  • Read, Writeで操作する
  • 保存できる値は数字のみ
  • 複数のプロセッサ間で値を共有できることが特徴で以下の用途などがある
    • プロセッサを組み合わせて複雑な処理をする場合の共有の値保存場所
    • 離れた距離のプロセッサに値を渡す(プロセッサ1(write) → メモリセル1 → プロセッサ2(read & write) → メモリセル2 → プロセッサ3(read)とつなげることで値を遠くまで伝えられる)
メモリバンク
より多くのデータを格納できる2x2のメモリセルです。具体的には、512の値
memory-bank.png
  • 基本はメモリセルと同じ
リンク
プロセッサによって読み取られ、制御されることができるブロックです。
  • リンクというブロックがあるのではなくプロセッサとリンクしたブロックのことを指す

コマンド

※詳細な使い方はロジック/使用方法を参照

プログラミングインターフェイスはスクラッチに似ていますが、ネストできないブロックのスタックが1つだけです。プログラムの最後に達するとすぐに、再び上から始まります。ブロックはさまざまなものの計算に時間がかかる可能性があるため、長いプログラムをいくつかの小さなロジックブロックに分割することをお勧めします。現在6.0にあるコマンドは次のとおりです。

※GUIでの名称(クリップボードにコピーした際の名称)を追記

  • Get link(getlink):各リンクにmeltdown1またはsmelter3の代わりにカスタム名を付けます。各リンクはインデックスで取得できるため、タレットをループできます。
  • Write(write):ある位置のメモリセルに書き込みます
  • Read(read):ある位置のメモリセルから読み取ります
  • Draw(draw):複数のコマンドを「描画バッファ」に保存します
  • Draw Flush(drawflush):ドローバッファの内容をディスプレイに書き込む(フラッシュする)
  • Print(print):「プリントバッファ」に追加します
  • Print flush(printflush):メッセージブロック内のテキストを印刷バッファの内容に置き換えます。
  • Control(control):ブロックを制御できます。(工場を有効/無効にするか、砲塔を撃ちます)
  • Radar(radar):エンティティを検出できます。結果からプロパティを取得するには、senor
  • Sensor(sensor):ブロック用レーダー。(例えば、コンテンツ、ヘルス、パワー、および他の多くのものを取得できます→次項)。radarまたは@unit/ubindから取得したユニットからプロパティを取得することもできます
  • Set(set):変数を値に設定します。すべての「サイクル」の後にリセットされます。
  • Operation(op):数学を行います(足し算、引き算など)。多くの操作があります(ビットシフトと三角法を含む)。このコマンドは、1つまたは2つの入力で数学を実行できます。私がそれらをリストするつもりはないほどたくさんあります。
  • End(end):プログラムをすぐに終了し、トップに移動します。また、プロセッサに保存されている変数をクリアします。
  • Jump(jump):条件が満たされると、コード内の任意の場所にジャンプします。(条件を常にに設定して、強制的にジャンプさせます)。それはだだけMindustryにおける制御コマンド。確かに、if / else / goto / switch / case / default / break / continue / unless / for /(do)while / function / defステートメントとして使用できますが、使用するのは面倒です。
  • Unit bind(ubind):選択したタイプの単一ユニットにバインドします。@unit現在バインドされているユニットを参照するために使用します
  • Unit control(ucontrol):現在バインドされているユニットを制御します。ユニットの移動やコンテナからのアイテムの取得など、いくつかのサブコマンドがあります
  • Unit radar(uradar):radarと同様に、ユニットをレーダーとして使用します(距離による並べ替えに影響を与える可能性があります)
  • Unit locate(ulocate):特定の種類のタイルを見つけることができます。鉱石、特定の種類の建物、損傷した建物、または敵のスポーンを見つけることができます。

サブコマンド

各コマンドにはいくつかのサブコマンドがあります。「draw」のサブコマンドは次のとおりです。

  • clear:表示を単色にリセットします
  • stroke:線/ストローク幅を設定します
  • color:別の色になるまで次の図形の色を設定します
  • line:線を引く
  • rect:長方形を塗りつぶします
  • linerect:中空の長方形をストロークします
  • poly / linepoly:長方形とラインレクと同じですが、半径と辺の数が可変です
  • triangle:3点間の三角形を塗りつぶします。このサブコマンドの中空バージョンはありません

他の形については、創造的にならなければなりません:

  • 円:多くの辺を持つポリゴンを追加します
  • 中空の三角形:大きな三角形の内側に小さな三角形を作成します
  • 円弧:円を作成し、長方形を使用して側面を切り取るか、多くの線分を描画します
  • ポイント:小さな長方形を作る

組み込み変数

セットと操作を使用して変数を作成できますが、プロセッサに組み込まれている変数がいくつかあります

  • @links:プロセッサリンクの数
  • @time:「Unix時間」、1970年1月1日からのミリ秒数
  • @unit: 上記を参照
  • @ipt:ティックごとの指示
  • @this:それ自体を参照し、「container1」と同様に使用します
  • @thisx:プロセッサのx位置
  • @thisy:上記と同じですが、yの場合

ノート

  • 各サイクルの後にすべての変数がクリアされるため、メモリセルがあることを確認してください 変数は、終了ブロックを使用する場合にのみクリアされます
  • 印刷フラッシュはメッセージブロックの内容を上書きしますが、描画は古い内容を上書きします(2つの長方形を描画フラッシュすると長方形が重なり、2単語を印刷フラッシュすると最初の単語が2番目の単語で上書きされます)
  • ドローンの状態(ヘルスやx位置など)のみを読み取ることができますが、それらを制御することはできません
  • プログラムをクリップボードにインポートおよびエクスポートできます。
  • 各プロセッサは「サイクル」でコードを実行し、終了後、上から再起動します
  • 無効にされたブロックは、プロセッサによって常に無効にされていない場合、それ自体が有効になります
  • ユニットバインドを使用するたびに、別のユニットにバインドされるため、そのタイプのすべてのユニットを一度に誤ってバインドする可能性があります。
 

Source: : https://www.reddit.com/r/Mindustry/comments/ic9wrm/logic_in_60/ (reddit)