Das ASCII -Betriebssystem, nach dem niemand gefragt hat.
Begleiten Sie uns auf Zwietracht! https://discord.gg/fptu8eb
SOS ist eine Simulation eines textbasierten Betriebssystems, das mit Hilfe von Löve 2D in Lua geschrieben wurde. Apps können auch geladen werden, sodass Sie alles entwickeln oder herunterladen können, was Sie sich vorstellen und in SOS ausführen können! Dies ist für Sie als Benutzer völlig sicher, um zufällige Lua -Skripte im Internet herunterzuladen und sie in / Programme zu werfen / weil alle Apps in einer Sandbox -Umgebung geladen werden. Die Apps erhalten nur Zugriff auf Mathematikfunktionen, die SOS -API und einige andere Versorgungsunternehmen.
Sie müssen die Liebe 2D installieren lassen, um SOS auszuführen. Wenn Sie Zerobrane IDE installiert haben, können Sie SOS als Projekt öffnen, zu Project> Lua -Dolmetscher gehen und sie auf die Liebe setzen, dann verwenden Sie F6, um auszuführen. Ansonsten ziehen Sie den Ordner , den SOS befindet, auf 'love.exe'.
0.1 ist unser erster Major-Meilenstein. Es fühlt sich seltsam an, dass SOS immer noch ein fehlerhaftes textbasiertes Pseudo-Betriebssystem ist, das in Lua geschrieben wurde, aber es ist hier. Apps können jetzt geladen und geschlossen werden. Wir haben eine neue und etwas optimiertere Rendernmethode. Jetzt haben Sie eine App, die in der Mitte des Bildschirms ziemlich voll ausgestattet ist, und eine Seitenleiste auf jeder Seite, in der aktuelle Apps und andere Systeminformationen angezeigt werden. Wir haben noch einen langen Weg vor uns, aber für ein Projekt, das vor weniger als einer Woche begonnen hat (ja, ich weiß ... o_o), haben wir es ziemlich weit gemacht.
Bleiben Sie dran!
Auf der linken Seite...
Registerkarte (oder Verschiebung + Registerkarte ) Fahrt durch offene Apps. Selbst wenn Apps geöffnet sind, können Sie den Eintrag "No App" durchlaufen und alle Apps im Hintergrund ausgeführt werden.
Escape schließt die aktuell ausgewählte App. Wenn keine App ausgewählt wird (oben beschrieben), schließt die Flucht SOS.
Rechts...
Page Up and Page Down -Zyklus über die erkannten Apps. Die ausgewählte App hat ein '>' daneben.
Beenden Sie Schalter zwischen System -Apps (oben) und Benutzer -Apps (unten).
Home startet einen neuen Prozess mit der ausgewählten App.
App Development verwendet S-Code, was nur eine einfachere Möglichkeit ist, mit SOS-API umweltbegrenzte Lua zu sagen. Der Link für das Setup für die Sandbox -Umgebung ist hier: https://hastebin.com/acolabiqez.lua Sie können alle dort enthaltenen Lua -Funktionen verwenden, einschließlich der API -Funktionen unten. Diese Seite wird aktualisiert, wenn weitere Funktionen geplant werden.
api.g.set (x, y, char)
Eingänge: 'x' und 'y' sind die Koordinaten für den Charakter, wobei (1, 1) die obere links sind. 'Char' sollte ein einzelner Charakter sein.
Ergebnis: 'Char' wird in diese Koordinate auf der Leinwand in die nächste Ziehung () aufgenommen. Verwendung in Draw ().
Rückkehr: Richtig
api.g.get (x, y)
Eingänge: 'x' und 'y' sind die Koordinaten für den Charakter, wobei (1, 1) die obere links sind.
Ergebnis: Ruft das Zeichen bei dieser Koordinate aus der letzten Auslosung (). Verwendung in tick ().
Rückkehr: String
api.g.text (x, y, str)
Eingänge: 'x' und 'y' sind die Koordinaten für den Beginn der Zeichenfolge, wobei (1, 1) die obere links sind. 'Str' sollte eine Zeichenfolge von einem oder mehreren Zeichen sein.
Ergebnis: 'Str' wird auf diese Koordinate auf der Leinwand eingerichtet, die im nächsten Zug () gerendert werden sollen. Verwendung in Draw ().
Rückkehr: Richtig
api.g.box (x, y, w, h, anpassen)
Eingänge: 'x' und 'y' sind die Koordinaten für den Start der Box, wobei (1, 1) die obere links sind. 'W' und 'H' sind die Breite und Höhe der Außenseite des Kastens, so dass das Innere 2 Einheiten auf jeder Dimension weniger beträgt. 'Adapt' ist ein Boolean, wenn die Ränder und Ecken der gezogenen Box automatisch neu formatieren sollten, um Gitter zu erstellen oder Linien zu überschneiden, anstatt die Kanten anderer Kisten zu überschreiben.
Ergebnis: Zeichnet ein Rechteck aus ASCII -Zeichen. Anpassung hat oben beschriebene Spezialeffekte.
Rückkehr: Richtig
api.g.bar (x, y, Legth, Richtung, Stil, Prozentsatz)
Eingänge: 'x' und 'y' sind Koordinaten für den Beginn der Stange, wobei (1, 1) die obere links sind. 'Länge' ist, wie viele Charaktere lange die Bar sein sollte. 'Richtung' ist die Richtung von Anfang an, dass die Bar eingehen wird. "Stil" ist das Erscheinungsbild der Bar (weitere Informationen zu Stilen später sind aktuelle Stile "Block" und "Verblassen"). "Prozentsatz" ist, wie viel von der Bar gefüllt werden sollte.
Ergebnis: Erstellt eine Fortschrittsbar-Anzeige mit Zeichen. Balken runden immer auf das nächste einzigartige Display ab, so dass 0,9999 die Stange nicht füllen, nur 1,0 (oder mehr). 0.0 wird immer eine leere Balken sein.
Rückkehr: Richtig
api.i.keystat (Schlüssel)
Eingänge: 'Key' ist eine Zeichenfolge für den Namen des zu überprüfenden Schlüssels. Zum Beispiel "a", "Verschiebung", "Raum".
Ergebnis: Überprüft, ob die Taste gedrückt wird. Erkennt keine Schlüssel, wenn keine aktive App.
Rückgabe: Richtig, wenn die Taste gedrückt wird, sonst falsch.
API.S.Appstable ()
Eingaben: Nichts.
Ergebnis: Rückgabe (eine tiefe Kopie) die App -Tabelle. Dies ist etwas komplizierter und wird später auf dem Wiki dokumentiert.
Rückgabe: Apps (Tabelle)
Die folgenden Funktionen werden von SOS aufgerufen. Dies ist auch die Reihenfolge, in der sie aufgerufen werden, also codieren Sie entsprechend.
laden()
Einmal auf der Last gerufen. Sollte Informationen über die App enthalten.
textInput (char)
Optional. 'char' ist ein charaktertippt und formatiert. Wenn Sie beispielsweise "Verschiebung" und "A" halten, wird diese Funktion mit dem Argument "a" aufgerufen. Nützlich zum einfachen Tippen.
TastePress (Schlüssel, Rep)
Optional. 'Schlüssel' ist der Name eines Schlüssels. 'Rep' ist, wenn der Anruf darauf zurückzuführen ist, dass der Schlüssel wiederholt wird, ohne ihn zu veröffentlichen, genau wie wenn Sie einen Schlüssel in einem Chatbox halten und einen Buchstaben, Pausen und dann diesen Charakter wiederholt. Dies wird durch Ihr tatsächliches Betriebssystem definiert und kann ignoriert werden, indem der Anruf ignoriert wird, wenn 'Rep' wahr ist.
KeyRelease (Schlüssel)
Optional. 'Schlüssel' ist der Name eines Schlüssels. Diese Funktion wird aufgerufen, wenn ein Schlüssel veröffentlicht wird.
Tick()
Rief jede Zecke an. Hat immer noch Zugriff auf die Leinwand des letzten Zyklus, also funktioniert api.g.get () weiterhin.
Die Leinwand wird nach Tick () und vor dem Zeichnen () zurückgesetzt.
Zeichnen (Breite, Höhe)
Nach jeder Zecke angerufen. Jetzt ist es an der Zeit, Dinge auf die Leinwand zu ziehen, um anzuzeigen. "Breite" und "Höhe" sind Argumente für die aktuelle Leinwandbreite und -höhe.
Dies ist eine Vorlage: https://hastebin.com/iqukigiril.lua Es tut nichts anderes, als die App einzurichten.
Die App muss mit 'Local App = {}' beginnen und mit 'return (App)' enden. Alle Funktionen müssen mit 'App' wie 'app.load ()' oder 'app.customfunction ()' beginnen.
Apps müssen in den / Program / Ordner von SOS eingebaut werden. Sie werden automatisch erkannt.