perlfangkuai.pl

Langue: en

Version: 2010-05-12 (fedora - 01/12/10)

Section: 1 (Commandes utilisateur)

NAME

tetris - A tetris game

SYNOPSIS

perl tetris.pl

CONFIGURATION

The configuration file should be the file with name ``.tetris'' under HOME directory. Another option is using Tetris/Config.pm in any directory of @INC.

Here is an example of configuration:
    # -*- perl -*-
    %Config = (
        %Config,
        'start_level' => 3,
        'down_step' => 2,
        'keybindings' => {
            %{$Config{keybindings}},
            ord('j') => \&move_left,
            ord('l') => \&move_right,
            ord('k') => \&rotate,
            ord('n') => \&new_game,
        }
    );
    push @$shapes, shape_from_string(<<SHAPE);
    0 0 8 0   0 8 0 0   0 8 8 8   0 0 0 8
    0 0 8 0   0 8 8 8   0 0 8 0   0 8 8 8
    0 8 8 8   0 8 0 0   0 0 8 0   0 0 0 8
    0 0 0 0   0 0 0 0   0 0 0 0   0 0 0 0
    SHAPE

     push @$shapes, shape_from_string(<<SHAPE);
     0 0 9 0   0 0 0 0   0 0 0 0   0 0 9 0
     0 0 9 9   0 0 9 9   0 9 9 0   0 9 9 0
     0 0 0 0   0 0 9 0   0 0 9 0   0 0 0 0
     0 0 0 0   0 0 0 0   0 0 0 0   0 0 0 0
     SHAPE
 
 

The key specification can get from this script:

     use Gtk2::Gdk::Keysyms;
     use Glib qw/TRUE FALSE/;
     use Gtk2 -init;
     
     my $window = Gtk2::Window->new ('toplevel');
     $window->signal_connect (delete_event => sub { Gtk2->main_quit });
     $window->signal_connect('key-press-event' => \&show_key);
         
         my $label = Gtk2::Label->new();
         $label->set_markup("<span foreground=\"blue\" size=\"x-large\">Type something on the keyboard!</span>");
         
     $window->add ($label);
     $window->show_all;
     $window->set_position ('center-always');
     
     Gtk2->main;
 
     sub show_key {
         my ($widget,$event,$parameter)= @_;
         my $key_nr = $event->keyval();
         foreach my $key (keys %Gtk2::Gdk::Keysyms) {
                 my $key_compare = $Gtk2::Gdk::Keysyms{$key};
                 if ($key_compare == $key_nr) {
                 print "'$key' => $key_nr,\n";
             }
         }
         return FALSE;
     }
 
 

Code to run after the GUI setup, add to code ref $after_load_function.