`
deepfuture
  • 浏览: 4411706 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:80124
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:70327
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:103582
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:286542
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:15051
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:67781
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:32290
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:46075
社区版块
存档分类
最新评论

perl-sdl处理事件

 
阅读更多
use SDL;
use SDLx::App;
use SDLx::Sprite;
use SDL::Event;
use SDL::Events;
my $app=SDLx::App->new(w=>400,h=>400,d=>32,t=>"sky");
#画大地
$app->draw_rect([0,0,400,400],[0,100,0,255]);
#随机生成大地的麻点
for (my $i = 1; $i < 500; $i++){
    $app->[int(rand(400))][200+int(rand(200))]=[10,10,10,255];
}
#画夜空
my $sky=SDLx::Sprite->new(width=>400,height=>200);
$sky->surface->draw_rect([0,0,400,200],[0,0,0,255]);
#画树
my $tree=SDLx::Surface->new(width=>400,height=>150);
for (my $i = 1; $i < 30; $i++){
    $x=int(20+rand(375));
    $y=int(15+rand(100));
    $tree->draw_circle_filled([$x,$y],15,[0,150,0,255]);
	$tree->draw_rect([$x,$y+15,2,15],[0,0,15,255]);
}
#画月亮
$sky->surface->draw_circle_filled([150,50],25,[255,255,0,255]);
#画星星
for (my $i = 1; $i < 50; $i++)
{
   my $x=int(rand(400));
   my $y=int(rand(200));
   if (not ($x>125 and $x<175  and $y >25 and $y<75))
   {
      $sky->surface->draw_circle_filled([$x,$y],2,[0,0,200,255]);      
   }  
}
$sky->draw_xy($app);
$tree->blit($app,[0,0,400,150],[0,200,400,150]);
$app->update();
my $event=SDL::Event->new();
my $quit=0;
while (!$quit){
     SDL::Events::pump_events();
	 while (SDL::Events::poll_event($event))
	 {
	     $quit=1 if $event->type==SDL_KEYDOWN;
	 }
}

 上面和下面的代码都完成退出窗口,上面的窗口,读取一个键盘信号就退出,下面的代码读到退出信号就退出

use SDL;
use SDLx::App;
use SDL::Event;

my $app=SDLx::App->new(w=>400,h=>400,d=>32,t=>"sky");
$app->add_event_handler(\&quit_handle);
$app->run();


sub quit_handle
{
    my $event=shift;
	my $controller=shift;
	$controller->stop if $event->type==SDL_QUIT;
}

 

use SDL;
use SDLx::App;
use SDL::Event;

my $app=SDLx::App->new(w=>400,h=>400,d=>32,t=>"sky",exit_on_quit=>1);
$app->run();

 

0
0
分享到:
评论

相关推荐

    perl-sdl-breakout:凤凰城总理演讲-2015年10月

    在游戏编程中,事件驱动编程是非常常见的,Perl-SDL-Breakout也不例外。程序会监听用户的输入事件,如键盘按键,根据这些事件更新游戏状态。例如,当用户按下空格键时,游戏可能会暂停或恢复;当用户移动鼠标时,...

    perl-cross-1.3.tar.gz

    总的来说,perl-cross-1.3项目为Perl开发者提供了一种跨平台的解决方案,特别是在处理3D应用时,可能极大地简化了开发和部署过程。通过深入研究其源代码和文档,开发者可以学习到如何编写跨平台的Perl代码,以及如何...

    SDL Perl-开源

    SDL Perl 是一个开源项目,它将 Perl 语言与多媒体处理能力相结合,使程序员能够利用 Perl 编写多媒体应用。这个库特别关注 DirectMedia 层(SDL)和 OpenGL 的绑定,两者都是游戏开发、图形设计和多媒体处理中的...

    SDLperl-开源

    例如,`SDL::Video` 模块用于处理窗口和表面,`SDL::Event` 用于监听和处理用户输入事件,`SDL::Surface` 和 `SDL::Image` 则涉及到图像加载和渲染。同时,`SDL::Audio` 可以用来管理音频播放。 在实际编程中,你...

    vbox compile

    5. **Simple DirectMedia Layer (SDL)**:版本为1.2.15,用于提供多媒体支持。需提取并配置其包含的库文件。 6. **Qt**:版本为4.8.6,用作应用程序框架。 7. **Python**:版本为2.7.5,用于某些脚本处理。 8. **...

    嵌入式linux知识要点

    - Perl语言以其强大的文本处理能力而在系统管理领域受到欢迎。 #### 四、音视频处理技术 1. **音视频播放器**:介绍FFmpeg、VLC等音视频处理工具的使用方法及其在嵌入式Linux系统中的应用案例。 - FFmpeg是一个...

    OpenGL 作图例子 - 全屏幕

    1. **窗口管理**:使用适当的窗口系统API(如Windows的Win32 API,或者跨平台的GLFW、SDL等库)创建全屏窗口,设置其分辨率与屏幕分辨率一致。 2. **上下文创建**:创建OpenGL上下文,这是OpenGL渲染的基础,用于...

    glottie:基于OpenGLWebGL的Lottie动画播放器

    总的来说,glottie是一个利用OpenGL和WebGL技术实现的Lottie动画播放器,采用C++编写,可能结合了SDL、Perl和LLVM等工具和技术。它提供了在各种平台播放Lottie动画的能力,对于需要在应用中嵌入动态图形的开发者来说...

    MySQL(网络数据库指南)

    - **脚本语言Perl**:Perl也是一种常用的脚本语言,支持多种数据库接口,可用于数据处理和分析。 通过上述方法,开发者可以根据具体的应用场景选择最适合的方式来访问和管理数据库中的数据。 综上所述,数据库是...

    E语言源码传输屏幕到远程电脑并显示.zip

    E语言设计简洁,易于学习,其语法结构与Perl和Python等语言有相似之处。它的主要特点是动态类型、解释执行和丰富的内置函数。在本项目中,我们需要掌握E语言的基本语法,如变量定义、条件语句、循环结构以及函数的...

    ivanx-开源

    5. pcre3.dll:Perl Compatible Regular Expressions,是一个强大的正则表达式库,可能在游戏中用于处理各种文本模式匹配或数据解析。 6. ivanx.exe:这是游戏的主执行文件,包含了游戏的核心逻辑和界面。 7. ...

    libagar:跨平台GUI工具包(稳定)

    3. **事件处理**:支持事件驱动编程模型,能响应键盘、鼠标、定时器等各种事件。 4. **字体和文本**:支持多种字体格式,提供文本布局和渲染功能。 5. **图像处理**:可以加载、显示和操作图像,包括位图、PNG、JPEG...

    linux下的俄罗斯方块.zip

    3. **图形库**:如前面提到的GTK+,还有Qt、SDL(Simple DirectMedia Layer)等,它们为开发者提供了一种抽象的方式来处理图形输出、输入事件和音频。 4. **系统接口**:Linux提供了丰富的系统调用来实现游戏的各种...

    各类编程语言汇总.pdf

    12. 数据库和数据处理:涵盖了用于数据库访问、数据处理和操作的技术,如SQL、Perl DBI、Python数据库接口等。 13. 跨平台开发:包括wxWindows、SDL、Java等支持跨平台开发的工具和语言。 14. 函数式编程:指 ...

Global site tag (gtag.js) - Google Analytics