拡大につきましては、皆さまのおっしゃってる通りですが、
加減速については、標準命令のイージング関数をいかがでしょうか?
せっかくあるのに使わないともったいないので。
ただ初心者とおっしゃっているので、どこまで理解いただけるか
心配ですが、参考にどうぞ。
#define GX 1280 // 画像のXサイズ
#define GY 680 // 画像のYサイズ
#define LOOP_TIME (1000 / 60) // 1ループの時間(ms)
#define ZOOM_TIME 3000 // 拡大する時間(ms)
buffer 1, GX, GY, 0
color 0, 0, 255:boxf
screen 0, GX, GY, 0
// 処理時間カウント用
nTime = 0
// イージング関数初期設定
setease 0.0f, 1.0f, ease_cubic_inout // タイプを変えることで効果が変わる
*main
nTime += LOOP_TIME
if (nTime > ZOOM_TIME):nTime = ZOOM_TIME
n = geteasef(nTime, ZOOM_TIME) // nTime = 0 ~ ZOOM_TIME, n = 0.0 ~ 1.0
sx = n * GX // sx = 0 ~ 1280
sy = n * GY // sy = 0 ~ 680
redraw 0
color 0, 0, 0:boxf
pos (GX - sx) / 2, (GY - sy) / 2
gzoom sx, sy, 1, 0, 0, GX, GY
redraw 1
await LOOP_TIME
goto *main