■ごとではなく、線のみをバッファするのです。
▼テキトーに実装してみたスクリプト
// テキトーなサンプル開始(初期化)
ax = 1
ay = 1
x = 40
y = 50
// テキトーなサンプル終了(初期化)
screen 0,500,400
title "こっちがスクリーン"// 判別用タイトルをつける。bufferにするときは消す
screen 1, ginfo(12), ginfo(13)// 同じ大きさのバッファを作成。今は、動作の様子を示すためscreenを使用。
title "こっちがバッファー"// 判別用タイトルをつける。bufferにするときは消す
;赤色=ゲームオーバー
;青色=ゴール
color 255,0,0
boxf
course_x=0
course_y=100
;コース生成
repeat 10
color 255,255,255
boxf course_x,course_y,course_x+100,course_y+100
course_x+100
loop
color 0,0,0
gsel 0, 1// スクリーンを操作先にする。screen 1をbufferにするときはgsel 0だけにする。
gcopy 1, 0, 0, ginfo(12), ginfo(13)// 一応コースもコピー
;メインループ
repeat
;線引き
getkey keys,1
_mousex = mousex// バッファーだとmousexが使えないと思うので、変数に退避
_mousey = mousey// バッファーだとmouseyが使えないと思うので、変数に退避
if keys=1:{
gsel 1// 操作先をバッファにして
line mx,my,_mousex,_mousey// 線を描く
gsel 0// 操作先をスクリーンに
mx=_mousex
my=_mousey
}else{
mx=_mousex
my=_mousey
}
;追跡
redraw 0
pos 0, 0
gcopy 1, 0, 0, ginfo(12), ginfo(13)
// テキトーなサンプル開始(描画)
x += ax
y += ay
if x >= ginfo(12) - 5 : ax = 0 - abs(ax) : x = ginfo(12) - 5
if y >= ginfo(13) - 5 : ay = 0 - abs(ay) : y = ginfo(13) - 5
if x < 5 : ax = abs(ax) : x = 5
if y < 5 : ay = abs(ay) : y = 5
boxf x - 5, y - 5, x + 5, y + 5
// テキトーなサンプル終了(描画)
redraw
await 1
loop