use SDL;
use SDLx::App;
my $app=SDLx::App->new(w=>400,h=>400,d=>32,t=>"我的第二个程序");
#画大地
$app->draw_rect([0,0,400,400],[0,0,100,255]);
#画夜空
my $sky=SDLx::Surface->new(width=>400,height=>200);
$sky->draw_rect([0,0,400,200],[0,0,0,255]);
#画月亮
$sky->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->draw_circle_filled([$x,$y],2,[0,0,200,255]);
}
}
$sky->blit($app);
$app->update();
sleep(5);
use SDL;
use SDLx::App;
my $app=SDLx::App->new(w=>400,h=>400,d=>32,t=>"我的第二个程序");
#画大地
$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::Surface->new(width=>400,height=>200);
$sky->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->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->draw_circle_filled([$x,$y],2,[0,0,200,255]);
}
}
$sky->blit($app);
$tree->blit($app,[0,0,400,150],[0,200,400,150]);
$app->update();
sleep(5);
读取PNG图片
use SDL;
use SDLx::App;
my $app=SDLx::App->new(w=>400,h=>400,d=>32,t=>"我的第二个程序");
#画大地
$app->draw_rect([0,0,400,400],[10,80,10,255]);
#随机生成大地的麻点
for (my $i = 1; $i < 500; $i++){
$app->[int(rand(400))][200+int(rand(200))]=[10,10,10,255];
}
#画夜空
my $sky=SDLx::Surface->new(width=>400,height=>200);
$sky->draw_rect([0,0,400,200],[0,0,0,255]);
#画月亮
$sky->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->draw_circle_filled([$x,$y],2,[0,0,200,255]);
}
}
$sky->blit($app);
#画树
for (my $i = 1; $i < 20; $i++){
$x=int(rand(350));
$y=150+int(rand(100));
my $tree=SDL::Image::load('tree.png');
$tree= SDLx::Surface->new(surface =>$tree);
$tree->blit($app,[0,0,100,133],[$x,$y,100,133]);
}
$app->update();
sleep(5);
- 大小: 29.2 KB
- 大小: 28.4 KB
- 大小: 128.8 KB
分享到:
相关推荐
SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, 0); if (renderer == NULL) { printf("创建渲染器失败: %s\n", SDL_GetError()); SDL_DestroyWindow(window); SDL_Quit(); return -1; } SDL_...
SDL,全称为 Simple DirectMedia Layer,是一个跨平台的多媒体开发库,广泛应用于游戏开发、图形用户界面构建和其他与音频、视频以及输入设备交互的应用。 描述中的 "SDL2-devel-2.0.12-VC" 同样强调了这是针对 ...
sdl-ft-1:使用FreeType 2和SDL2的基本文本呈现 sdl-ft-stroke:每个字符带有边框的文本 sdl-ft-outlinerender:使用Outline Render回调来渲染文本,而不是默认的FreeType渲染器。 sdl-ft-harfbuzz:添加harfbuzz-...
VScode中安装LVGL模拟器所使用的依赖下载文件,SDL2-devel-2.30.1-mingw.zip 安装LVGL模拟器的教程如下 https://blog.csdn.net/weixin_49337111/article/details/136536375#comments_31930883
SDL,全称Simple DirectMedia Layer,是一个跨平台的多媒体开发库,常用于游戏开发和其他实时多媒体应用。它提供了一个抽象层,方便开发者在不同的操作系统上处理图形、音频和输入设备。 描述“SDL for Windows Vs,...
这个包通常包含源代码、头文件、库文件以及必要的构建工具,方便开发者在Windows上构建和调试使用SDL2的C或C++应用。 **SDL2(Simple DirectMedia Layer 2)** SDL2是一个跨平台的开发库,主要用在游戏开发、媒体...
1. **图形渲染**:SDL2提供了一套高效且灵活的2D图形渲染接口,允许开发者直接绘制像素,创建复杂的图像,并支持纹理映射。它还支持硬件加速,提高了图形性能。 2. **事件处理**:SDL2能够处理各种用户输入事件,...
1. **SDL2 库**:SDL2 是一个 C 语言编写的应用程序开发库,主要用于处理低级的多媒体任务,如窗口管理、图像渲染、音频播放和输入设备的管理。它为开发者提供了一个抽象层,使其能够在多种操作系统上轻松移植应用...
return -1; } SDL_Window* window = SDL_CreateWindow("Hello, SDL2!", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_SHOWN); if (!window) { printf("创建窗口失败: %s\n", SDL_...
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...
标题中的“sdl12-compat”是一个项目或库,其目标是提供对SDL(Simple DirectMedia Layer)1.2版本的兼容性,同时在实际运行时利用SDL 2.0的优势。这是一个对于那些依赖旧版SDL API但又希望利用新版本功能的开发者...
1. **SDL2简介**:SDL2是一个开源的、跨平台的开发库,主要用于游戏开发、多媒体应用以及图形用户界面。它提供了一组API,使得开发者可以轻松地处理图形渲染、音频播放、事件处理、文件I/O和多线程等任务。 2. **...
SDL2是SDL的第二个主要版本,相比于早期的SDL1.x,它带来了许多改进和新特性,如更好的硬件支持、新的渲染系统、改进的事件处理以及对现代编程语言的更好支持。在Windows 64位环境下,这个版本的SDL2应该能充分利用...
1. **SDL2介绍**:SDL2是一个开源的跨平台开发库,它提供了一组API,用于处理图形渲染、音频播放、视频播放、键盘和鼠标输入、游戏控制器输入等。SDL2支持Windows、Linux、Mac OS X、iOS、Android等多个操作系统。 ...
Project build error: Non-resolvable parent POM for com.taotao:taotao-common:0.0.1-SNAPSHOT: Could not find artifact ...
SDL2.2.0.1的移植,包含SDL的每个参数的意思,包含交叉编译器的安装,包含移植过程中出错的处理方法。 --prefix=/usr/arm 安装SDL路径 --enable-shared=yes 构建共享库[开启] --enable-nasm 装配blitters x86上的...
1. **性能提升**:通过一次性加载和渲染字体,避免了每帧都进行昂贵的字体计算,提高了游戏或应用的帧率。 2. **内存优化**:缓存的纹理可以重复使用,减少了内存分配和释放的开销。 3. **易于使用**:项目提供的API...
(SDL) 是一个用 C 编写的跨平台开发库,它为多媒体应用程序提供低级音频、视频和输入功能。 库通过提供加载和处理各种图像文件格式的功能来扩展 SDL。 Haskell 已经有 SDL 和 SDL_image 的绑定,可以与库的版本 1 ...
1. **SDL2库**:提供了窗口管理、事件处理、图像渲染、音频播放、文件I/O、定时器等功能,广泛应用于游戏开发、多媒体应用等领域。 2. **跨平台性**:SDL2可以在多个操作系统上运行,适应性强。 3. **多媒体支持**:...
接下来,你可以将`Surface`转换为`sdl2-sprite`的`Sprite`类型,这可以通过`makeSprite`函数完成。这个`Sprite`对象包含了精灵的所有必要信息,包括其图像数据和初始位置。 在`sdl2-sprite`中,设置精灵的位置非常...