Piko
Jump to navigation
Jump to search
Piko
Piko is an esoteric language made by User:Kirbyiseatinghumanmeat. The idea of Piko is a canvas that allows you to draw things on it using commands!
Overview
Piko is based on a canvas, an 8x8, 2D array. Every single string inside the canvas is called cells, you put a character (like /) to every single string on the canvas though commands, so that character will be represented on the current row and column in the canvas, when Piko finished your masterpiece, it will show it to the user.
Commands
| <n> Move horizontally (Go to the <n> row) - <n> Move vertically (Go to the <n> column) > <char> Replace the string at the current row and column with <char> _ <char> Fill the current row with <char> . <t> Sleep for <t> seconds (Kinda useless) ^ <filename> Run the filename
Note that the ^ command hasn't been tested on the original interpreter yet!
Implementations
The original interpreter (Written in Ruby)
To use the interpreter, you will need to run it with a file name (like Arsel).
class String
def raw
gsub("\\" * 2) { "\\" * 3 }
end
end
class Piko
def init_board
result = [[]]*8
for index in 0..result.length
result[index] = [" "]*8
end
return result
end
def initialize(file)
@script = file.split("\n")
@board = init_board
@valid_cmds = %w[
| - > _ . ^
]
@col, @row = 0, 0
@pos = 0
end
def print_board()
for smaller_board in @board
puts smaller_board.to_s
end
end
def run()
while @pos < @script.length
cmd, value = @script[@pos].split(" ")
if @valid_cmds.include? cmd
if cmd == "|"
@row = value.to_i
@pos += 1
elsif cmd == "-"
@col = value.to_i
@pos += 1
elsif cmd == ">"
@board[@row][@col] = value.raw
@pos += 1
elsif cmd == "_"
@board[@row] = [value]*8
@pos += 1
elsif cmd == "."
sleep value.to_i
@pos += 1
elsif cmd == "^"
run File.read(value)
@pos += 1
end
elsif cmd == " " then @pos += 1
else
puts "Invalid command: #{cmd}"
break
end
end
print_board
end
end
piko = Piko.new(File.read(ARGV[0]))
piko.run