Alla yksinkertainen siniaalto skrolleri 8th-ohjelmointikielellä.
needs nk/gui
needs nk/win
with: nk
64 font:system font:new "font1" font:atlas! drop
"8th 22.03" constant MESSAGE
: new-win
{
name: "main",
wide: 800,
high: 220,
bg: "black",
title: "Sinus Scroller"
}
win ;
0.1 var, dt
var frame-time
var current-time
var game-time
800 var, x
var theta
30 var, amplitude
: draw
x @ MESSAGE measure nip n:neg n:< if
win-wide x !
then
x @ >r
-8 x n:+!
theta @
( MESSAGE swap 1 s:slice dup
measure swap r> dup 3 pick n:+ >r
4 pick n:sin amplitude @ n:* win-content-bounds x>rect -1 a:@ nip 2 n:/ amplitude @ n:- n:+ 2swap 4 a:close
swap "font1" "black" "white" draw-text 0.8 n:+
) 0 MESSAGE s:len nip n:1- loop theta ! rdrop ;
: secs
d:ticks d:ticks/sec n:/ ;
: event-loop
0 event-msec
secs game-time !
repeat
{
bg: "black",
flags: [ @WINDOW_NO_SCROLLBAR ]
}
begin
secs current-time !
current-time @ game-time @ n:- frame-time !
current-time @ game-time !
dt @ frame-time @ n:- game-time n:+!
repeat
secs game-time @ n:< not if
secs game-time !
break
then
0.01 sleep
again
event
draw
end
render
again ;
: app:main
new-win
event-loop ;Aihe on jo aika vanha, joten et voi enää vastata siihen.