誰も求めないASCIIオペレーティングシステム。
Discordに参加してください! https://discord.gg/fptu8eb
SOSは、Löve2dの助けを借りてLuaで書かれたテキストベースのOSのシミュレーションです。アプリをロードすることもできます。これにより、想像できるものを開発またはダウンロードしてSOSで実行できます。これは、すべてのアプリがサンドボックス化された環境にロードされているため、インターネット上でランダムなLUAスクリプトをダウンロードして /プログラム / /プログラム /プログラムにスローするためのユーザーとして完全に安全です。アプリは、数学関数、SOS API、および他のいくつかのユーティリティにのみアクセスできます。
SOSを実行するには、Love 2Dがインストールされている必要があります。 Zerobrane IDEがインストールされている場合は、SOSをプロジェクトとして開き、Project> Lua InterpreterにアクセスしてLoveに設定してから、F6を使用して実行できます。それ以外の場合は、SOSが「love.exe」にあるフォルダーをドラッグします。
0.1は私たちの最初の主要なマイルストーンです。 SOSはまだルアで書かれているヘルとしてのバグのようなテキストベースの擬似オペレーティングシステムであるため、それを奇妙に感じますが、それはここにあります。アプリをロードして閉じて、新しいレンダリングの新しい、わずかに最適化された方法があります。これで、画面の中央にほぼフルスクリーン化されたアプリが1つあり、両側に現在の実行アプリやその他のシステム情報が表示されているアプリが1つあります。私たちは長い道のりを歩んできましたが、1週間も前に始まったプロジェクトのために(ええ、私は知っています... O_O)、私たちはかなり遠くまでそれを作りました。
乞うご期待!
左に...
タブ(またはシフト +タブ)は、オープンアプリを循環します。アプリが開いている場合でも、「アプリなし」エントリをサイクリングして、すべてのアプリをバックグラウンドで実行することができます。
Escapeは、Currentlty選択したアプリを閉じます。アプリが選択されていない場合(上記)、EscapeはSOSを閉じます。
右側に...
ページアップとページダウンサイクルを検出しました。選択したアプリには、その横に「>」があります。
システムアプリ(上部)とユーザーアプリ(下部)の選択のスイッチを終了します。
ホームは、アプリを選択した新しいプロセスを開始します。
アプリ開発はSコードを使用します。これは、SOS APIを備えた環境制限LUAを言う簡単な方法です。サンドボックス環境のセットアップのリンクは、https://hastebin.com/acolabiqez.luaにあります。このページは、より多くの機能がexplimentedであるため、更新されます。
api.g.set(x、y、char)
入力:「X」と「Y」はキャラクターの座標であり、(1、1)が左上です。 「char」は単一の文字である必要があります。
結果:「char」は、次の描画()でレンダリングされるキャンバス上の座標に置かれます。 draw()で使用します。
戻り:true
api.g.get(x、y)
入力:「X」と「Y」はキャラクターの座標であり、(1、1)が左上です。
結果:最後の描画()からその座標でcharをフェッチします。 tick()で使用します。
返品:文字列
api.g.text(x、y、str)
入力:「x」と「y」は、文字列の開始の座標であり、(1、1)が左上です。 「str」は1つ以上の文字列でなければなりません。
結果:「str」は、次の描画()でレンダリングされるキャンバス上の座標に置かれます。 draw()で使用します。
戻り:true
api.g.box(x、y、w、h、適応)
入力:「x」と「y」は、ボックスの開始の座標であり、(1、1)が左上です。 「W」と「H」は、ボックスの外側の幅と高さであるため、各寸法では内側が2ユニット少ないです。 「Adapt」は、他のボックスのエッジを上書きするのではなく、グリッドまたは交差するラインを作成するために自動的に再フォーマットする必要があるため、「Adapt」はブール値です。
結果:ASCII文字から長方形を引き出します。 Adaptには、上記の特殊効果があります。
戻り:true
api.g.bar(x、y、legth、方向、スタイル、パーセンテージ)
入力:「X」と「Y」はバーの開始の座標であり、(1、1)が左上です。 「長さ」は、バーがあるべき文字の長さです。 「方向」は、最初から、バーが入る方向です。「スタイル」はバーの外観です(後のスタイルの詳細、現在のスタイルは「ブロック」と「フェード」です)。 「パーセンテージ」とは、バーをどれだけ満たすかです。
結果:文字を使用して進行状況バーディスプレイを作成します。バーは常に最も近いユニークなディスプレイまで丸めているため、0.9999はバーを埋めず、1.0(またはそれ以上)しか埋めません。 0.0は常に空のバーになります。
戻り:true
api.i.keystat(key)
入力:「キー」は、チェックするキーの名前の文字列です。たとえば、「a」、「shift」、「space」。
結果:キーが押されているかどうかを確認します。アクティブなアプリではない場合、キーはキーを検出しません。
return:trueキーが押されている場合、それ以外の場合はfalse。
api.s.appstable()
入力:何もありません。
結果:アプリのテーブルを返す(ディープコピー)。これはもう少し複雑で、後でWikiに文書化されます。
RETURN:APPS(テーブル)
次の機能はSOSによって呼び出されます。これはまた、それらが呼ばれる順序であるため、それに応じてコードします。
負荷()
ロード中に1回呼び出されました。アプリに関する情報を含める必要があります。
textinput(char)
オプション。 「Char」は、タイプされ、正しくフォーマットされた文字です。たとえば、「シフト」を保持して「A」をヒットすると、この関数は引数「A」と呼びます。簡単に入力するのに役立ちます。
キープレス(キー、担当者)
オプション。 「キー」はキーの名前です。 「担当者」とは、チャットボックスにキーを保持し、1文字を入力して一時停止し、そのキャラクターを繰り返すように、コールがリリースせずにキーが繰り返されるためです。これは実際のオペレーティングシステムによって定義されており、「担当者」が真である場合、コールを無視することで無視できます。
KeyRelease(key)
オプション。 「キー」はキーの名前です。この関数は、キーがリリースされた場合に呼び出されます。
tick()
すべてのティックと呼ばれました。まだLast Cycleのキャンバスにアクセスできるため、API.G.Get()は引き続き機能します。
キャンバスは、ティック()およびdraw()の後にリセットされます。
ドロー(幅、高さ)
すべてのティックの後に呼び出されます。今こそ、表示するキャンバスに物事を描く時です。 「幅」と「高さ」は、現在のキャンバスの幅と高さの引数です。
これはテンプレートです:https://hastebin.com/iqukigiril.luaアプリをセットアップする以外に何もしません。
アプリは「ローカルApp = {}」で開始し、「return(app)」で終了する必要があります。すべての関数は、「app.load()」または「app.customfunction()」などの「app」で開始する必要があります。
アプリは、SOSの /プログラム /フォルダーに配置する必要があります。それらは自動的に検出されます。