ระบบปฏิบัติการ ASCII ไม่มีใครขอ
เข้าร่วมกับเราใน Discord! https://discord.gg/fptu8eb
SOS เป็นการจำลองระบบปฏิบัติการที่เขียนด้วยข้อความที่เขียนใน Lua ด้วยความช่วยเหลือของLöve 2D แอพสามารถโหลดได้ช่วยให้คุณพัฒนาหรือดาวน์โหลดทุกสิ่งที่คุณสามารถจินตนาการและเรียกใช้ใน SOS! สิ่งนี้ปลอดภัยอย่างสมบูรณ์สำหรับคุณในฐานะผู้ใช้ในการดาวน์โหลดสคริปต์ Lua แบบสุ่มบนอินเทอร์เน็ตและโยนพวกเขาใน / โปรแกรม / เพราะแอพทั้งหมดจะโหลดในสภาพแวดล้อมแบบ sandboxed แอพได้รับการเข้าถึงฟังก์ชั่นคณิตศาสตร์ SOS API และยูทิลิตี้อื่น ๆ อีกสองสามอย่างเท่านั้น
คุณต้องติดตั้ง Love 2D เพื่อเรียกใช้ SOS หากคุณติดตั้ง Zerobrane IDE คุณสามารถเปิด SOS เป็นโครงการไปที่โครงการ> ล่าม Lua และตั้งค่าให้รักจากนั้นใช้ F6 เพื่อดำเนินการ มิฉะนั้นลาก โฟลเดอร์ ที่ SOS เข้าสู่ 'love.exe'
0.1 เป็นเหตุการณ์สำคัญครั้งสำคัญครั้งแรกของเรา มันรู้สึกแปลก ๆ ที่เรียกว่าเพราะ SOS ยังคงเป็นระบบปฏิบัติการหลอกข้อความตามข้อความที่เขียนด้วยข้อความที่เขียนใน Lua แต่อยู่ที่นี่ ตอนนี้แอพสามารถโหลดปิดเรามีวิธีการเรนเดอร์ใหม่และปรับให้เหมาะสมขึ้นเล็กน้อย ตอนนี้คุณมีแอพหนึ่งแอพที่มีหน้าจอเต็มรูปแบบอยู่ตรงกลางหน้าจอและแถบด้านข้างในแต่ละด้านแสดงแอพที่กำลังทำงานอยู่ปัจจุบันและข้อมูลระบบอื่น ๆ เรามีทางไปไกล แต่สำหรับโครงการที่เริ่มต้นน้อยกว่าหนึ่งสัปดาห์ที่ผ่านมา (ใช่ฉันรู้ว่า ... o_o) เราทำให้มันค่อนข้างไกล
คอยติดตาม!
ทางซ้าย ...
แท็บ (หรือ กะ + แท็บ ) ผ่านแอพเปิด แม้ว่าแอพจะเปิดอยู่คุณสามารถหมุนเวียนผ่านรายการ 'No App' ทำให้แอปทั้งหมดทำงานในพื้นหลัง
Escape ปิดแอพที่เลือกปัจจุบัน หากไม่มีการเลือกแอพ (อธิบายไว้ข้างต้น) ให้ Escape ปิด SOS
ด้านขวา ...
Page Up และ Page Down Cycle ผ่านแอพที่ตรวจพบ แอพที่เลือกมี '>' ถัดจากมัน
สวิตช์ สิ้นสุด ระหว่างการเลือกแอพระบบ (ด้านบน) และแอพผู้ใช้ (ที่ด้านล่าง)
หน้าแรก เริ่มกระบวนการใหม่ด้วยแอปที่เลือก
การพัฒนาแอพใช้ S-Code ซึ่งเป็นวิธีที่ง่ายกว่าในการพูด LUA ที่ จำกัด สภาพแวดล้อมกับ SOS API ลิงค์สำหรับการตั้งค่าสำหรับสภาพแวดล้อม Sandbox อยู่ที่นี่: https://hastebin.com/acolabiqez.lua คุณอาจใช้ฟังก์ชั่น LUA ใด ๆ ที่รวมอยู่ในนั้นรวมถึงฟังก์ชั่น API ที่ด้านล่าง หน้านี้จะได้รับการอัปเดตเนื่องจากมีการพิจารณาคุณสมบัติเพิ่มเติม
api.g.set (x, y, char)
อินพุต: 'x' และ 'y' เป็นพิกัดสำหรับตัวละครโดยมี (1, 1) เป็นด้านบนซ้าย 'Char' ควรเป็นตัวละครเดียว
ผลลัพธ์: 'char' ถูกวางลงบนพิกัดบนผืนผ้าใบเพื่อแสดงผลในการวาดครั้งต่อไป () ใช้ในการวาด ()
กลับ: จริง
api.g.get (x, y)
อินพุต: 'x' และ 'y' เป็นพิกัดสำหรับตัวละครโดยมี (1, 1) เป็นด้านบนซ้าย
ผลลัพธ์: ดึงถ่านที่พิกัดนั้นจากการวาดครั้งสุดท้าย () ใช้ในเห็บ ()
return: String
api.g.text (x, y, str)
อินพุต: 'x' และ 'y' เป็นพิกัดสำหรับการเริ่มต้นของสตริงด้วย (1, 1) เป็นด้านบนซ้าย 'STR' ควรเป็นสตริงของอักขระอย่างน้อยหนึ่งตัว
ผลลัพธ์: 'str' ถูกวางลงบนพิกัดนั้นบนผืนผ้าใบที่จะแสดงผลในการวาดครั้งต่อไป () ใช้ในการวาด ()
กลับ: จริง
api.g.box (X, Y, W, H, Adapt)
อินพุต: 'x' และ 'y' เป็นพิกัดสำหรับการเริ่มต้นของกล่องโดยมี (1, 1) เป็นด้านบนซ้าย 'W' และ 'H' คือความกว้างและความสูงของด้านนอกของกล่องดังนั้นด้านในคือ 2 หน่วยน้อยกว่าในแต่ละมิติ 'Adapt' เป็นบูลีนสำหรับถ้าขอบและมุมของกล่องที่ถูกดึงออกมาควรฟอร์แมตโดยอัตโนมัติเพื่อทำกริดหรือตัดเส้นแทนที่จะเขียนทับขอบของกล่องอื่น ๆ
ผลลัพธ์: ดึงสี่เหลี่ยมออกจากอักขระ ASCII Adapt มีเอฟเฟกต์พิเศษที่อธิบายไว้ข้างต้น
กลับ: จริง
api.g.bar (x, y, legth, ทิศทาง, สไตล์, เปอร์เซ็นต์)
อินพุต: 'x' และ 'y' เป็นพิกัดสำหรับการเริ่มต้นของแถบด้วย (1, 1) เป็นด้านบนซ้าย 'ความยาว' เป็นเวลากี่อักขระที่บาร์ควรจะเป็น 'Direction' คือทิศทางตั้งแต่เริ่มต้นว่าบาร์จะเข้า 'สไตล์' คือการปรากฏตัวของบาร์ (ข้อมูลเพิ่มเติมเกี่ยวกับสไตล์ในภายหลังสไตล์ปัจจุบันคือ 'บล็อก' และ 'จาง') 'เปอร์เซ็นต์' คือจำนวนบาร์ที่ควรเติม
ผลลัพธ์: สร้างการแสดงความคืบหน้าบาร์โดยใช้อักขระ บาร์มักจะปัดเศษลงไปยังจอแสดงผลที่ไม่ซ้ำกันที่ใกล้ที่สุดดังนั้น 0.9999 จะไม่เติมเต็มบาร์เพียง 1.0 (หรือมากกว่า) จะ 0.0 จะเป็นแถบที่ว่างเปล่าเสมอ
กลับ: จริง
api.i.keystat (คีย์)
อินพุต: 'คีย์' เป็นสตริงสำหรับชื่อของคีย์ที่จะตรวจสอบ ตัวอย่างเช่น "A", "Shift", "Space"
ผลลัพธ์: ตรวจสอบเพื่อดูว่ากดปุ่มหรือไม่ จะไม่ตรวจจับคีย์หากไม่ได้ใช้งานแอป
return: จริงถ้ากดปุ่มเท็จเป็นอย่างอื่น
api.s.appstable ()
อินพุต: ไม่มีอะไร
ผลลัพธ์: ส่งคืน (สำเนาลึกของ) ตารางของแอพ นี่เป็นเรื่องที่ซับซ้อนมากขึ้นและจะถูกบันทึกไว้ในวิกิในภายหลัง
return: แอพ (ตาราง)
ฟังก์ชั่นต่อไปนี้เรียกโดย SOS นี่คือลำดับที่พวกเขาถูกเรียกดังนั้นรหัสตาม
โหลด ()
เรียกหนึ่งครั้งเมื่อโหลด ควรมีข้อมูลเกี่ยวกับแอพ
TextInput (ถ่าน)
ไม่จำเป็น. 'Char' เป็นตัวละครที่พิมพ์และจัดรูปแบบอย่างถูกต้อง ตัวอย่างเช่นหากคุณถือ 'shift' และกด 'A' ฟังก์ชั่นนี้จะเรียกด้วยอาร์กิวเมนต์ 'A' มีประโยชน์สำหรับการพิมพ์ง่าย
Keypress (คีย์, ตัวแทน)
ไม่จำเป็น. 'คีย์' เป็นชื่อของคีย์ 'ตัวแทน' คือถ้าการโทรเป็นเพราะคีย์ซ้ำโดยไม่ต้องปล่อยมันเหมือนกับถ้าคุณถือกุญแจในกล่องแชทและพิมพ์ตัวอักษรหนึ่งตัวหยุดและจากนั้นทำซ้ำตัวละครนั้น สิ่งนี้ถูกกำหนดโดยระบบปฏิบัติการจริงของคุณและสามารถละเว้นได้โดยการละเว้นการโทรหาก 'ตัวแทน' เป็นจริง
แป้นพิมพ์ (กุญแจ)
ไม่จำเป็น. 'คีย์' เป็นชื่อของคีย์ ฟังก์ชั่นนี้เรียกว่าหากมีการปล่อยคีย์
เห็บ ()
เรียกว่าทุกเห็บ ยังคงสามารถเข้าถึงผืนผ้าใบของรอบสุดท้ายได้ดังนั้น api.g.get () จะยังคงทำงานอยู่
ผ้าใบถูกรีเซ็ตหลังจากติ๊ก () และก่อนวาด ()
วาด (ความกว้างความสูง)
เรียกว่าทุกเห็บ ตอนนี้เป็นเวลาที่จะวาดสิ่งต่าง ๆ ลงบนผืนผ้าใบเพื่อแสดง 'ความกว้าง' และ 'ความสูง' เป็นอาร์กิวเมนต์สำหรับความกว้างและความสูงของผืนผ้าใบปัจจุบัน
นี่คือเทมเพลต: https://hastebin.com/iqukigiril.lua มันไม่ได้ทำอะไรเลยนอกจากตั้งค่าแอป
แอพต้องเริ่มต้นด้วย 'แอปท้องถิ่น = {}' และลงท้ายด้วย 'return (แอป)' ฟังก์ชั่นทั้งหมดจะต้องเริ่มต้นด้วย 'แอพ' เช่น 'app.load ()' หรือ 'app.customfunction ()'
แอพจะต้องวางลงใน / โปรแกรม / โฟลเดอร์ของ SOS พวกเขาจะถูกตรวจพบโดยอัตโนมัติ