#! /opt/perl/bin/perl package game; use strict; use warnings; use SDL; use SDL::Event; use SDL::Events; use SDLx::App; use Switch; use Mob; my $app = SDLx::App->new( w => 400, h => 400, t => "Pew Pew", hw_surface => 1, double_buf => 1, dt => .1, delay => 10, ); SDL::Events::enable_key_repeat(10, 10); my $ship = Mob->new(); $app->add_event_handler(\&moveship); $app->add_move_handler ( \&{$ship->move} ); $app->add_show_handler ( \&{$ship->draw} ); sub moveship { my $event = shift; my $controller = shift; if ($event->type == SDL_KEYDOWN) { switch($event->key_sym()) { case SDLK_UP { $ship->{velocity}->{y} -= 1} case SDLK_DOWN { $ship->{velocity }->{y} += 1} case SDLK_LEFT{ $ship->{velocity }->{x} -= 1} case SDLK_RIGHT{ $ship->{velocity }->{x} += 1} } } } $app->run; #### #! /opt/perl/bin/perl package Mob; use Moose; use Data::Dumper; has 'position' => (is => 'rw', builder => 'build_pos'); has 'velocity' => (is => 'rw', builder => 'build_vel'); sub build_pos { return {x => 0, y => 0}; } sub build_vel { return {x => 0, y => 0}; } sub move { print Dumper("Move", @_); } sub draw { print Dumper("Draw", @_); } 1;