跳转至内容

Pixilang/命令详细列表

来自 Wikibooks,开放世界中的开放书籍

命令详细列表

[编辑 | 编辑源代码]

(参数在括号内)

dot (x,y,color) - 绘制一个点。例如:dot(10,20,#FFFF00)

get_dot (x,y) - 获取坐标x,y处的像素颜色

fps - 获取当前的帧率

frame (delay,clip_x,clip_y,clip_xsize,clip_ysize) - 重绘屏幕并暂停,尤其用于帧切换。1000 - 一秒,500 - 半秒,0 - 不暂停。请注意,在第一次调用frame()之前,屏幕上不会显示任何内容。示例

frame(500) //Full screen redraw after 0.5 seconds
frame(500,10,10,32,32) //Redraw region with coordinates x=10,y=10,xsize=32,ysize=32

clear (color) - 清除屏幕。例如:clear(#FFFF00)

print (text,x,y,color) - 在x, y坐标处打印文本。例如:print("HELLO!",10,10,#ffffff) 您也可以打印变量的值。只需在字符串中写入$X,其中X是变量的名称。例如:print("VALUE OF b=$b",10,10,#ffffff)

line (x1,y1,x2,y2,color) - 绘制一条线。例如:line(0,0,10,10,#FFFF00)

box (x1,y1,xsize,ysize,color) - 绘制一个矩形。例如:box(0,0,10,10,#FFFF00)

fbox (x1,y1,xsize,ysize,color) - 绘制一个填充矩形。例如:box(0,0,10,10,#FFFF00)

triangle (x1,y1,x2,y2,x3,y3,color) - 绘制一个填充三角形

pixi_triangle (x1,y1,tx1,ty1,x2,y2,tx2,ty2,x3,y3,tx3,ty3,image,frame) - 绘制一个纹理三角形。纹理坐标:tx1, ty1, tx2, ty2, tx3, ty3。纹理来源是“image”参数。

triangles3d (vertexes,triangles), pixi_triangles3d (vertexes,triangles,pixi,frame) - 从数值数组vertexes和triangles绘制颜色或pixi纹理三角形。

//structure of array "vertexes":
X, Y, Z, texture_X, texture_Y, 0, 0, 0,
X, Y, Z, texture_X, texture_Y, 0, 0, 0,
...
//structure of array "triangles":
V1, V2, V3, COLOR, TRANSPARENCY, 0, 0, ORDER, 
V1, V2, V3, COLOR, TRANSPARENCY, 0, 0, ORDER,
...
//V1..V3 - numbers of vertexes. ORDER - number of triangle (use sort_triangles for automatic fill this value)
//X,Y,Z - fixed point integers

sort_triangles (vertexes,triangles) - 根据Z坐标对三角形进行排序(在triangles数组中填充ORDER值)。

save_screen(filename,x,y,xsize,ysize) - 将屏幕的一部分保存到文本文件

set_screen (some_image) - 将屏幕缓冲区设置为选定的图像。0 - 默认屏幕

make_pixi (text_source,alpha_pixi,transparent_color) - 将文本字符串转换为具有选定透明颜色和alpha通道的彩色图像。

警告:此命令将黑色像素转换为深蓝色(我们将其视为黑色)。

输入文本字符串的符号

0,1,2,3,4,5,6,7,8,9 - 灰度;

.(点) - 透明颜色;

其他符号 - 具有颜色的变量的名称

make_ascii_pixi (text_source,color_pixi) - 与前面的命令相同,但图像将以ASCII文本模式显示。每个符号的颜色都在color_pixi中。示例

text =       "Hello World!"
text_color = "123456789123"
make_ascii_pixi( text, text_color )

new_pixi (xsize,ysize,frames) - 创建一个具有选定大小和帧数的新图像。例如:bird = new_pixi( 32, 32, 4 )

load_pixi (filename) - 从GIF或JPG文件加载图像

remove_pixi (pixi) - 删除pixi容器

resize_pixi (pixi,xsize,ysize,mode) - 调整图形pixi容器的大小;xsize,ysize - 新尺寸(像素)。模式:0 - 调整大小后清除pixi。

clone_pixi (pixi,clone_alpha) - 克隆pixi容器。clone_alpha值:0 - 不克隆alpha通道图像;1 - 克隆alpha通道图像。例如:new_image = clone_pixi( dog, 1 )

get_pixi_xsize (image) - 获取图像宽度(像素)。例如:xsize = get_pixi_xsize( dog )

get_pixi_ysize (image) - 获取图像高度(像素)。例如:ysize = get_pixi_ysize( dog )

get_pixi_frames (image) - 获取图像中的帧数。例如:frames = get_pixi_frames( dog )

get_pixi_alpha (image) - 获取用作选定图像的alpha通道的图像。例如:alpha = get_pixi_alpha( dog ) pixi( alpha, 10, 10, 1 )

pixi_alpha (image,new_alpha) - 为选定图像设置alpha通道(new_alpha)图像

pixi_transp (image,transp,transp_color) - 设置选定图像的透明颜色。transp - 透明度开/关(1/0)。transp_color - 透明颜色

pixi (image,x,y,pixel_size,pixel_size_correction), fpixi (image,x,y,pixel_size,pixel_size_correction,frame) - 绘制图像。frame - 帧编号(0是第一帧)。在“pixi”命令中,帧编号自动计算。像素 - 它是文本字符串,将被识别为像素数组。pixel_size - 像素大小(1,2,3,4,5...)。pixel_size_correction - 固定点(1=256)添加到pixel_size。警告:带有像素数组的文本字符串将转换为更方便pixi/fpixi命令的特殊格式。让我们看看例子

//LETS CREATE AN ANIMATION THAT CONTAINS 5 FRAMES. SOMETHING LIKE A SMALL FLYING BIRD :)
//FRAMES MUST BE DIVIDED BY "+" SYMBOL
//SYMBOL "." - TRANSPARENT PIXEL
//OTHER SYMBOLS - NAMES OF VARIABLES WITH COLORS
//OK. NOW ASSIGN RED COLOR TO THE "B" VARIABLE:
B = #FF0000
//BIRD:
t = "
B......B
.B....B.
..BBBB..
+
........
BB....BB
..BBBB..
+
........
........
BBBBBBBB
+
........
........
...BB...
BBB..BBB
+
........
BB....BB
..BBBB..
"
//CONVERT IT TO IMAGE:
make_pixi( t )
//AND DRAW RESULTING THING TO THE SCREEN:
loop_marker:
  clear(BLACK)
  pixi(t,10,10)
  frame(100)
go loop_marker

get_window_xsize - 获取用户窗口宽度(像素)

get_window_ysize - 获取用户窗口高度(像素)

get_color (r,g,b) - 返回从r,g,b(红、绿、蓝)值转换的颜色值

get_red (color) - 获取选定颜色的红色分量(0..255)

get_green (color) - 获取选定颜色的绿色分量(0..255)

get_blue (color) - 获取选定颜色的蓝色分量(0..255)

get_blend (color1,color2,val) - 获取一个新的颜色,该颜色介于color1和color2之间。val - 与color1和color2的接近程度:0 - 与color1最接近;256 - 与color2最接近

transp (value) - 设置后续命令的透明度。值可以从0到255;0 - 无可见... 255 - 可见

effector (color,power,type,x,y,xsize,ysize,xadd) - 用于使用标准图形效果的命令。color - 效果的颜色。power - 效果的强度(从0到256)。type:0 - 噪声;1 - 水平模糊;2 - 垂直模糊。x,y,xsize,ysize - 工作区域。xadd - 点之间的距离。

pixel_shader (pixel_shader_subprogram) - 为所有pixi和纹理三角形启用软件像素着色器(版本PS1)。pixel_shader_subprogram - 用户定义的子程序。pixel_shader_subprogram的输入参数:PS_T - 带有纹理的pixi容器编号;PS_TX - 纹理上的当前X坐标(定点);PS_TY - 纹理上的当前Y坐标(定点);PS_TP - 纹理中的当前指针;PS_P - 屏幕上的当前指针。输出参数:PS_R - 结果颜色。

示例

pixel_shader( GLASS_PIXEL_SHADER ) //Enable glass pixel shader
...
pixel_shader( -1 ) //Disable pixel shaders 
GLASS_PIXEL_SHADER:
v = get_red( PS_T[ PS_TP - 1 ] ) - get_red( PS_T[ PS_TP + 1 ] )
PS_R = get_blend( scr0[ PS_P + get_red( PS_T[ PS_TP ] ) / 8 ], WHITE, v )
ret

pixi_font (image) - 设置新的字体图像(动画pixi容器)。字体是等宽字体。字体中的每个符号 - 动画pixi容器中的帧。

get_pixi_font - 获取当前字体图像

t_reset - 重置变换

t_rotate_x (angle,x,y,z), t_rotate_y (angle,x,y,z), t_rotate_z (angle,x,y,z) - 添加旋转变换(围绕X、Y或Z轴)。角度为整数:512 = 2*PI。旋转中心为x,y,z

t_translate (x,y,z) - 添加平移变换。x,y,z是定点整数。

t_scale (x,y,z) - 添加缩放变换。x,y,z是定点整数:256 = 1.0(正常缩放);512 = 2.0(2倍缩放)

t_get_matrix (m), t_set_matrix (m), t_mul_matrix (m) - 对变换矩阵进行操作(4x4单元格 - 16个整数的数组)。t_get_matrix - 将矩阵获取到数组m中。t_set_matrix - 从数组m中设置矩阵。t_mul_matrix - 将当前矩阵与数组m中的矩阵相乘。

t_get_x (x,y,z), t_get_y (x,y,z), t_get_z (x,y,z) - 使用坐标x,y,z(定点整数)变换点并返回新的坐标x、y或z。

字符串

[编辑 | 编辑源代码]

new_string (size) - 创建空字符串。size - 此字符串中的符号数。例如:str = new_string( 10 )

get_string_size (string) - 获取字符串的大小(字符数)。例如:strsize = get_string_size( "nothing but here" )

数组是任何数据存储(pixi容器)。数组示例

  • 图像 - 像素存储;
  • 字符串 - 符号存储;
  • 数字 - 数字存储。

new_array (len) - 创建一个新的32位数字数组(数值pixi容器)。len - 数字的数量。请注意,如果您在使用数组之前没有使用new_array先创建它,Pixilang不会报错,但您会得到垃圾数据。例如:array = new_array( 256 )

get_array_size (array) - 获取数值数组的大小(数字数量)

start_timer (t) - 启动计时器 t。例如:start_timer(3)

get_timer (t) - 获取计时器 t 的值。例如:get_timer(3) 例如值:1000 - 一秒,500 - 半秒。

get_seconds - 获取当前秒数

get_minutes - 获取当前分钟数

get_hours - 获取当前小时数

用户交互

[编辑 | 编辑源代码]

handle_pen_keys (button_down_handler,pen_move_handler,button_up_handler), handle_keys (...) - 处理当前帧中发生的所有鼠标(触控笔)事件。这些命令的参数是用户定义的程序(子程序) - 处理程序。

例如:handle_pen_keys( {x=get_pen_x}, 0, 0 )

get_pen_x, gpx - 获取鼠标(或触控笔)的当前 x 坐标

get_pen_y, gpy - 获取鼠标(或触控笔)的当前 y 坐标

get_pen_region (x,y,xsize,ysize), gpr (x,y,xsize,ysize) - 如果鼠标(或触控笔)指针在选定区域内,则返回 1

get_pen_key, gpk - 获取鼠标(或触控笔)的当前按键状态;1 - 按下按键,或 0 - 未按下按键

handle_hard_keys (button_down_handler,button_up_handler) - 处理当前帧中发生的所有键盘事件。工作方式类似于 handle_pen_keys。使用 get_hard_key(或 ghk)获取当前按键代码。

例如:handle_hard_keys( {key_code=get_hard_key}, 0, 0 )

get_hard_key, ghk - 获取当前按键代码。按键代码是标准的 ASCII 代码或以下之一

256: F1
257: F2
258: F3
259: F4
260: F5
261: F6
262: F7
263: F8
264: UP
265: DOWN
266: LEFT
267: RIGHT
268: INSERT
269: DELETE
270: HOME
271: END
272: PAGEUP
273: PAGEDOWN
274: CAPS

如果按下 SHIFT,则将 512 添加到按键代码。如果按下 CTRL,则将 1024 添加到按键代码。

视频导出

[编辑 | 编辑源代码]

video_export_gif (filename,x,y,xsize,ysize), video_export_avi (filename,x,y,xsize,ysize) - 打开将所有帧导出到选定动画的功能。GIF 文件或 AVI 文件(目前 AVI 仅在 Windows 上工作)。

示例

//Save full screen:
video_export_gif("my_video.gif")
//Save selected region:
video_export_gif("my_video.gif",-10,-10,32,32)

每执行一次 "frame" 命令,帧将保存到 GIF 文件中。

pause_video_export - 暂停视频导出。

resume_video_export - 恢复视频导出。

stop_video_export - 停止视频导出并保存到文件。

video_export_fps (fps) - 设置导出到 AVI 文件的每秒帧数(默认 FPS 为 30)。

video_export_realtime (rt) - 设置实时 AVI 导出模式。

示例

video_export_realtime( 1 ) //Set realtime export mode. AVI file will be without sound
video_export_realtime( 0 ) //Set non-realtime export mode. AVI file will be with sound

video_export_dither (dither) - 在视频导出期间打开/关闭抖动。打开示例:video_export_dither(1) 关闭示例:video_export_dither(0)

video_export_hq (highquality) - 打开/关闭 GIF 的高质量视频导出。打开示例:video_export_hq(1) 关闭示例:video_export_hq(0)

load_music (filenamem,slot) - 加载 XM 或 MOD 格式的音乐。slot - 同时播放音乐的插槽编号(从 0 到 15)。

play_music (slot)

stop_music (slot)

music_volume (volume,slot) - 设置音乐音量(从 0 到 255)

get_music_pattern (slot)

get_music_position (slot)

send_sound (sound_pixi,freq,channels,loop) - 将 sound_pixi(包含某些声音片段的 pixi 容器)发送到全局声音缓冲区。freq - 选定声音片段的采样频率。channels - 通道数(1 - 单声道,2 - 立体声)。loop - 播放后是否从全局声音缓冲区中删除选定声音片段?如果 loop = 1,则选定声音片段将无限循环播放。此命令的返回值是选定声音片段在全局声音缓冲区中的 ID。send_sound_to (sound_id, sound_pixi, freq, channels, loop) - 与上一条命令相同,但手动设置全局声音缓冲区中的位置(buffer_id)。

示例

sound_id = send_sound( some_sound, 44100, 2, 0 )
send_sound_to( sound_id, new_sound, 44100, 2, 0 ) //Overwrite some_sound with new_sound

get_sound_status (sound_id) - 获取选定声音中当前的播放位置。

示例

sound_id = send_sound(sound,44100,2,0)
position = get_sound_status( sound_id )

sound_volume (volume) - 设置声音音量(从 0 到 256)

示例。创建 8 位声音

snd = new_string( 256 ) //Sound size is 256 samples
//Amplitude in 8bit sound is a value from -127 to 127
send_sound( snd, 44100, 1, 1 )

创建 32 位声音

snd = new_array( 256 )
//Amplitude in 32bit sound is a value from -32767 to 32767
send_sound( snd, 44100, 1, 1 )

fopen, fclose, fgetc, fputc, fseek, ftell, feof - 用于处理文件的标准 POSIX 函数。有关更多信息,请参阅任何 C/C++ 手册。

set_disk0 (TAR_file_name) - 设置将加载为虚拟磁盘 0 的 TAR 归档文件的名称。

示例

set_disk0( "archive.tar" ) //archive.tar contains some files and PIC.JPG
img = load_pixi( "0:/PIC.JPG" ); //Load PIC.JPG from the virtual disk 0

file_dialog (filename,dialogname,mask,id) - 打开文件选择对话框。filename - 选择的文件名的目标容器。dialogname - 对话框名称。mask - 文件类型掩码(例如:“gif/jpg”)。id - 用于保存当前对话框状态的文件名称。返回值:1 - 文件选择成功;0 - 文件未选择。

示例

filename = "................................"
if( file_dialog( filename, "Select graphics file", "jpg/gif", "gfx_files_dialog" ) )
{ /* file selected. Name in the filename variable now*/ }
else
{ /* file not selected */ }

sin (angle) - 获取整数正弦值。角度值:512 = 2*PI。返回值:-256...0...256

cos (angle) - 获取整数余弦值。角度值:512 = 2*PI。返回值:-256...0...256

csin (angle), ccos (angle) - 与 sin 和 cos 相同,但精度较低。角度值:256 = 2*PI。返回值:-128...0...128

rand - 获取随机数(从 0 到 32768)

rand_seed (seed) - 设置随机种子

stop - 停止程序执行 :(

halt - 与 stop 相同。

exit (exit_code) - 退出到操作系统;exit(1) - 以退出代码 1 退出到操作系统。

noesc (no) - 启用/禁用 ESC 退出;noesc(0) - ESC 退出;noesc(1) - ESC 不退出。

华夏公益教科书