`
deepfuture
  • 浏览: 4411699 次
  • 性别: 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源码...
浏览量:15050
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 SDL::Event;

my $app=SDLx::App->new(w=>400,h=>400,d=>32,t=>"my paint");
my $color =[255,255,255,255];
my $drawing=0;
$app->add_event_handler(\&quit_handle);
$app->add_event_handler(\&key_event);
$app->add_event_handler(\&mouse_event);
$app->run();


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

sub key_event
{
   my $keyevent=shift;
   if ($keyevent->type==SDL_KEYDOWN)
   {
       my $key_name=SDL::Events::get_key_name($keyevent->key_sym);
	   if ($key_name=~/^c$/){
	      $app->draw_rect([0,0,400,400],0);
	   }
	   elsif  ($key_name=~/^q$/)
	   {
	      $app->stop();
	   }
	   else
	   {
	        my $col1=int(rand(255));
			my $col2=int(rand(255));
			my $col3=int(rand(255));
         	$color =[$col1,$col2,$col3,255];
	   }   
   }
}

sub  mouse_event
{
    my $event=shift;
	if ($event->type==SDL_MOUSEBUTTONDOWN||$drawing)
	{
	    $drawing=1;
		my $x=$event->button_x;
		my $y=$event->button_y;		
		$app->draw_rect([$x,$y,2,2],$color);
		$app->update();
	}
    $drawing=0 if ($event->type==SDL_MOUSEBUTTONUP);	
	
}

 

 



 

  • 大小: 32.6 KB
1
2
分享到:
评论

相关推荐

    sdl-mir2-sdl-mir2-sdl-mir2

    sdl-mir2sdl-mir2sdl-mir2sdl-mir2sdl-mir2sdl-mir2sdl-mir2sdl-mir2sdl-mir2sdl-mir2sdl-mir2sdl-mir2sdl-mir2sdl-mir2sdl-mir2sdl-mir2sdl-mir2sdl-mir2sdl-mir2sdl-mir2sdl-mir2sdl-mir2sdl-mir2sdl-mir2sdl-mir2...

    开源项目-veandco-go-sdl2.zip

    - 处理键盘、鼠标和控制器输入。 - 播放音频和音乐。 - 加载和渲染图像。 - 实现复杂的定时器和事件循环。 为了开始使用go-sdl2,你需要先安装Go环境,然后根据`README.md`中的指示获取和编译项目。通常,这涉及到...

    devcpp-cmake-template-devcpp-sdl-template

    devcpp-cmake-template-devcpp-sdl-templatedevcpp-cmake-template-devcpp-sdl-templatedevcpp-cmake-template-devcpp-sdl-templatedevcpp-cmake-template-devcpp-sdl-templatedevcpp-cmake-template-devcpp-sdl-...

    perl-interpreter-5.16.3-6.sdl7.noarch.rpm

    perl-interpreterz库包,找了很久,只支持Centos 7以上系统

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

    它提供了一个直接的接口来管理窗口、渲染图像、处理键盘和鼠标输入,以及播放音频,这些都是游戏开发的基础需求。 在Perl-SDL-Breakout项目中,开发者使用了Perl的SDL绑定来创建游戏的基本元素:游戏窗口、球、砖块...

    tank-sdl-0.3.0.tar.gz_game tank sdl_sdl game sour_tank-sdl _tan

    《坦克大战3.0》是一款基于SDL库开发的游戏,其源代码被封装在名为"tank-sdl-0.3.0.tar.gz"的压缩包中。这个文件是开发者们分享和学习游戏编程的一个宝贵资源,它揭示了如何利用SDL(Simple DirectMedia Layer)库来...

    开源项目-gen2brain-go-sdl2-android-example.zip

    SDL2(Simple DirectMedia Layer 2)是一个跨平台的开发库,用于处理图形、音频、输入设备等多媒体元素。它在游戏开发领域特别受欢迎,因为它的API简洁高效,并且支持多种操作系统,包括Windows、Linux、Mac OS X...

    Go-go-sdl2-Go绑定SimpleDirectMediaLayer

    总结一下,Go-sdl2是一个将C语言的SDL2库与Go语言紧密结合的项目,旨在提供一套全面、易于使用的接口,让Go程序员能够在游戏开发和多媒体应用中充分利用SDL2的功能。通过这个库,开发者可以创建丰富的图形界面、处理...

    09-SDL音视频渲染实战SDL安装和接口说明

    2. **06linux-sdl-event**:事件处理是任何交互式应用的核心。SDL提供了一个事件模型,允许程序响应用户的键盘、鼠标输入以及窗口事件,如窗口大小改变或关闭请求。 3. **07linux-sdl-thread**:多线程编程在现代...

    滑动窗口协议--SDL设计

    滑动窗口协议--SDL设计;北邮滑动窗口协议实验设计。滑动窗口协议--SDL设计;北邮滑动窗口协议实验设计。

    Android-运行在Android之上的Go-SDL2示例

    它提供了窗口管理、事件处理、音频输出、图像加载和渲染、以及键盘和鼠标输入等功能。SDL2的一个主要优点是它的跨平台性,可以在Windows、Linux、Mac OS X、Android和iOS等操作系统上运行。 **Android NDK和JNI** ...

    PyPI 官网下载 | wix-protos-sdl-testing-test-0.0.1.tar.gz

    因此,“wix-protos-sdl-testing-test”可能包含与Zookeeper交互的组件,支持在分布式环境中进行测试或管理。 “云原生”是指一种构建和运行应用程序的方法,强调利用云计算的优势,如弹性伸缩、服务发现、微服务...

    对TinyPTC-SDL-0.3.2库的更新,通过cairo示例显示中文

    总之,TinyPTC-SDL-0.3.2-renewed的更新为开发者带来了在SDL环境中显示中文的能力,这是对先前版本的一个重要补充,特别是在多语言应用开发领域。开发者现在可以充分利用cairo的强大功能,创建更加本地化和用户体验...

    S-SDL企业应用实践.pdf

    S-SDL(Software Secure Development Lifecycle,软件安全开发生命周期)是一种企业级的软件安全实践框架,旨在帮助组织通过在整个软件开发生命周期中集成安全措施,实现更加安全的系统交付。S-SDL不仅关注技术层面...

    3-FFmpeg-SDL视频播放器-只能播放视频.zip

    《【FFmpeg编程实战】(3)实现FFmpeg4.3 + SDL2视频播放器(只播放视频)(C++)》 https://ciellee.blog.csdn.net/article/details/108990754

    06-SDL音视频渲染实战.rar

    SDL主要功能包括窗口管理、事件处理、键盘和鼠标输入、图像渲染、音频播放和文件加载等。它的设计目标是简化这些任务,使得开发者可以专注于游戏逻辑和应用程序的核心功能,而不是底层的系统细节。 音视频渲染是SDL...

    perl-cross-1.3.tar.gz

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

    ONScripter-Jh-sdl2.ipa

    ONScripter-Jh-sdl2.ipa

Global site tag (gtag.js) - Google Analytics