63 lines
1.6 KiB
Lua
63 lines
1.6 KiB
Lua
local createCarre = require('/apis/libcarre');
|
|
local createVersion = require('/apis/libversion');
|
|
|
|
-- Les arguments du programme sont disponibles dans `...`.
|
|
-- `table.pack` permet de les garder dans une table facile a parcourir.
|
|
local args = table.pack(...);
|
|
|
|
local function printUsage()
|
|
print('carre usage:');
|
|
print();
|
|
print(' carre');
|
|
print(' carre -size <n> [-x <n>] [-y <n>] [-char <c>] [-fill] [-clear]');
|
|
print(' carre -random [-count <n>] [-delay <s>] [-clear]');
|
|
print(' carre --version');
|
|
print(' carre --help');
|
|
print();
|
|
print('exemples:');
|
|
print(' carre -size 10 -char * -clear');
|
|
print(' carre -size 6 -fill -x 4 -y 3');
|
|
print(' carre -random -count 5 -delay 0.2');
|
|
end
|
|
|
|
local command = args[1];
|
|
|
|
if command == '-help' or command == '--help' or command == 'help' then
|
|
printUsage();
|
|
return;
|
|
end
|
|
|
|
if command == '-version' or command == '--version' or command == 'version' then
|
|
print('v' .. createVersion().forSelf());
|
|
return;
|
|
end
|
|
|
|
local carre = createCarre();
|
|
local config, err = carre.parseArgs(args);
|
|
if not config then
|
|
print(err);
|
|
print('utilise: carre -help');
|
|
return;
|
|
end
|
|
|
|
local width, height = term.getSize();
|
|
|
|
for index = 1, config.count do
|
|
if config.clear then
|
|
term.clear();
|
|
end
|
|
|
|
-- Le calcul choisit une position visible. Si rien n'est donne,
|
|
-- le carre est centre dans le terminal.
|
|
local square = carre.computeSquare(config, width, height);
|
|
|
|
-- Le mode contour ecrit seulement les bords. Le mode plein ecrit partout.
|
|
carre.drawSquare(term.current(), square);
|
|
|
|
if config.delay > 0 and index < config.count then
|
|
sleep(config.delay);
|
|
end
|
|
end
|
|
|
|
term.setCursorPos(1, height);
|