box-o-sand/PracticingCurses/perl/07.pl

59 lines
1.2 KiB
Raku
Executable File

#!/usr/bin/perl
#
# Copyright (C) 2003 by Virtusa Corporation
# http://www.virtusa.com
#
# Anuradha Ratnaweera
# http://www.linux.lk/~anuradha/
#
use Curses;
initscr();
cbreak();
keypad(1);
$height = 3;
$width = 10;
$starty = ($LINES - $height) / 2;
$startx = ($COLS - $width) / 2;
printw("Press F1 to exit");
refresh();
$my_win = create_newwin($height, $width, $starty, $startx);
while (($ch = getch()) != KEY_F(1)) {
if ($ch == KEY_LEFT) {
destroy_win($my_win);
$my_win = create_newwin($height, $width, $starty, --$startx);
}
elsif ($ch == KEY_RIGHT) {
destroy_win($my_win);
$my_win = create_newwin($height, $width, $starty, ++$startx);
}
elsif ($ch == KEY_UP) {
destroy_win($my_win);
$my_win = create_newwin($height, $width, --$starty, $startx);
}
elsif ($ch == KEY_DOWN) {
destroy_win($my_win);
$my_win = create_newwin($height, $width, ++$starty, $startx);
}
}
endwin();
sub create_newwin {
$local_win = newwin(shift, shift, shift, shift);
box($local_win, 0, 0);
refresh($local_win);
return $local_win;
}
sub destroy_win {
$local_win = shift;
border($local_win, ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ');
refresh($local_win);
delwin($local_win);
}