Terminal control/Cursor positioning

From Rosetta Code
Jump to: navigation, search
Task
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

Works with: AutoHotkey_L

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]

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

Library: curses
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
]
Personal tools
Namespaces

Variants
Actions
Community
Explore
Misc
Toolbox