Terminal control/Cursor positioning
You are encouraged to solve this task according to the task description, using any language you may know.
Move the cursor to column 3, row 6 and display the word "Hello", so that the letter H is in column 3 on row 6.
Contents |
[edit] Ada
with Ada.Text_IO;
procedure Cursor_Pos is
begin
Ada.Text_IO.Set_Line(6);
Ada.Text_IO.Set_Col(3);
Ada.Text_IO.Put("Hello");
end Cursor_Pos;
[edit] AutoHotkey
Remember that AHK is not built for the console, so we must call the WinAPI directly.
DllCall( "AllocConsole" ) ; create a console if not launched from one
hConsole := DllCall( "GetStdHandle", int, STDOUT := -11 )
DllCall("SetConsoleCursorPosition", UPtr, hConsole, UInt, (6 << 16) | 3)
WriteConsole(hConsole, "Hello")
MsgBox
WriteConsole(hConsole, text){
VarSetCapacity(out, 16)
If DllCall( "WriteConsole", UPtr, hConsole, Str, text, UInt, StrLen(text)
, UPtrP, out, uint, 0 )
return out
return 0
}
[edit] BASIC
[edit] Applesoft BASIC
10 VTAB 6: HTAB 3
20 PRINT "HELLO"
[edit] Locomotive Basic
10 LOCATE 3,6
20 PRINT "Hello"
[edit] ZX Spectrum Basic
10 REM The top left corner is at position 0,0
20 REM So we subtract one from the coordinates
30 PRINT AT 5,2 "Hello"
[edit] BBC BASIC
PRINT TAB(2,5);"Hello"
[edit] Blast
# This will display a message at a specific position on the terminal screen
.begin
cursor 6,3
display "Hello!"
return
# This is the end of the script
[edit] C
Using ANSI escape sequence, where ESC[y;xH moves curser to row y, col x:#include <stdio.h>
int main()
{
printf("\033[6;3HHello\n");
return 0;
}
The C version of the minesweeper game uses curses. Minesweeper_game#C
[edit] Euphoria
position(6,3)
puts(1,"Hello")
[edit] Forth
2 5 at-xy ." Hello"
[edit] J
Using terminal positioning verbs of Terminal_control/Coloured_text#J
'Hello',~move 6 3
[edit] Liberty BASIC
locate 3, 6
print "Hello"
[edit] Logo
setcursor [2 5]
type "Hello
You can also draw positioned text on the turtle graphics window.
setpos [20 50]
setxy 20 30 ; alternate way to set position
label "Hello
[edit] Mathematica
Run["tput cup 6 3"]
Print["Hello"]
[edit] OCaml
Using the library ANSITerminal:
#load "unix.cma"
#directory "+ANSITerminal"
#load "ANSITerminal.cma"
module Trm = ANSITerminal
let () =
Trm.erase Trm.Screen;
Trm.set_cursor 3 6;
Trm.print_string [] "Hello";
;;
[edit] Pascal
program cursor_pos;
uses crt;
begin
gotoxy(6,3);
write('Hello');
end.
[edit] Perl 6
Assuming an ANSI terminal:
print "\e[6;3H";
print 'Hello';
[edit] PicoLisp
(call 'tput "cup" 6 3)
(prin "Hello")
[edit] PowerShell
The following will only work in the PowerShell console host. Most notably it will not work in the PowerShell ISE.
$Host.UI.RawUI.CursorPosition = New-Object System.Management.Automation.Host.Coordinates 2,5
$Host.UI.Write('Hello')
Alternatively, in any PowerShell host that uses the Windows console, one can directly use the .NET Console class:
[Console]::SetCursorPosition(2,5)
[Console]::Write('Hello')
[edit] PureBasic
EnableGraphicalConsole(#True)
ConsoleLocate(3,6)
Print("Hello")
[edit] Python
Using ANSI escape sequence, where ESC[y;xH moves curser to row y, col x:print("\033[6;3HHello")
On Windows it needs to import and init the colorama module first.
[edit] Racket
#lang racket
(require (planet neil/charterm:3:0))
(with-charterm
(charterm-clear-screen)
(charterm-cursor 3 6)
(displayln "Hello World"))
[edit] REXX
The REXX language doesn't have any cursor or screen management tools, but some REXX interpreters have added the functionality via different methods.
/*REXX program demonstrates cursor position and writing of text to same.*/
call cursor 3,6 /*move the cursor to row 3, col 6*/
say 'Hello' /*write the text at that location*/
call scrwrite 30,50,'Hello.' /*another method. */
call scrwrite 40,60,'Hello.',,,14 /*another ... in yellow.*/
[edit] Retro
with console'
: hello 3 6 at-xy "Hello" puts ;
[edit] Ruby
require 'curses'
Curses.init_screen
begin
Curses.setpos(6, 3) # column 6, row 3
Curses.addstr("Hello")
Curses.getch # Wait until user presses some key.
ensure
Curses.close_screen
end
[edit] Seed7
The function setPos is portable and positions the cursor on the console window. SetPos is based on terminfo respectively the Windows console API.
$ include "seed7_05.s7i";
include "console.s7i";
const proc: main is func
local
var text: console is STD_NULL;
begin
console := open(CONSOLE);
setPos(console, 6, 3);
write(console, "Hello");
# Terminal windows often restore the previous
# content, when a program is terminated. Therefore
# the program waits until Return/Enter is pressed.
readln;
end func;
[edit] Tcl
exec tput cup 5 2 >/dev/tty
puts "Hello"
[edit] UNIX Shell
# The tput utility numbers from zero, so we have subtracted 1 from row and column
# number to obtain correct positioning.
tput cup 5 2
[edit] XPL0
include c:\cxpl\codes; \intrinsic 'code' declarations
[Cursor(2, 5); \3rd column, 6th row
Text(0, "Hello"); \upper-left corner is coordinate 0, 0
]
- Programming Tasks
- Terminal control
- Ada
- AutoHotkey
- BASIC
- Applesoft BASIC
- Locomotive Basic
- ZX Spectrum Basic
- BBC BASIC
- Blast
- C
- Euphoria
- Forth
- J
- Liberty BASIC
- Logo
- Mathematica
- OCaml
- Pascal
- Perl 6
- PicoLisp
- PowerShell
- PureBasic
- Python
- Racket
- REXX
- Retro
- Ruby
- Curses
- Seed7
- Tcl
- UNIX Shell
- XPL0
- ACL2/Omit
- GUISS/Omit
- Maxima/Omit
- PARI/GP/Omit
- Scratch/Omit