If I were to create, not that I will mind you, an old text-based adventure game** using N7, is there a way to scroll the text up the screen when the game output goes beyond a "screen full"?
** Interactive Fiction... I think is the going genre for text adventures...
If this is too involved or difficult then it would be best to ignore the request... after letting me know of course... lol
Looking through my drives, for anything Naalaa, I came across a reference to N4... Then I got to thinking (stop laughing) as to when Naalaa was created?
When you get a spare moment, would it be possible, to briefly go through the history of Naalaa? If you can, could you also include authorized video interviews; media references and general folk-lore? A twenty minute video or a 235page PDF would be appreciated... Nah! Kidding! It does not have to be authorized... lol
set color 0, 0, 0
cls
for x = 0 to sizeof(maze) - 1
for y = 0 to sizeof(maze[0]) - 1
dx = x*side
dy = y*side
set color 255, 255, 255
if not maze[x][y].l draw line dx, dy, dx, dy + side - 1
if not maze[x][y].r draw line dx + side - 1, dy, dx + side - 1, dy + side - 1
if not maze[x][y].u draw line dx, dy, dx + side - 1, dy
if not maze[x][y].d draw line dx, dy + side - 1, dx + side - 1, dy + side - 1
next
next
redraw
while not keydown(KEY_ESCAPE, true) fwait 60
' GenerateMaze
' ------------
' Return an array of the size w*h, where every element has four fields, l, r, u and d, telling if
' there's a way left, right, up and down.
function GenerateMaze(w, h)
maze = fill([vis: false, l: false, r: false, u: false, d: false], w, h)
GenerateMazeRec(maze, rnd(sizeof(maze)), rnd(sizeof(maze[0])), 0)
return maze
function GenerateMazeRec(maze, x, y, dir)
if x < 0 or x >= sizeof(maze) or y < 0 or y >= sizeof(maze[0]) return false
if maze[x][y].vis return false
maze[x][y].vis = true
if dir = 1
maze[x][y].r = true
maze[x + 1][y].l = true
elseif dir = 2
maze[x][y].l = true
maze[x - 1][y].r = true
elseif dir = 3
maze[x][y].d = true
maze[x][y + 1].u = true
elseif dir = 4
maze[x][y].u = true
maze[x][y - 1].d = true
endif
visit = [1, 2, 3, 4]
while sizeof(visit)
index = rnd(sizeof(visit))
if visit[index] = 1 GenerateMazeRec(maze, x - 1, y, 1)
elseif visit[index] = 2 GenerateMazeRec(maze, x + 1, y, 2)
elseif visit[index] = 3 GenerateMazeRec(maze, x, y - 1, 3)
else GenerateMazeRec(maze, x, y + 1, 4)
free key visit, index
wend
return true
endfunc
endfunc
I'll post some more code later, explaining how this can be used for creating a map for the wolf3d library.
I'm making a tiny karaoke machine, but I can't find a function to convert string to number and to syncronize song and lyrics.
Could you please advise me ?
Code:
'TOBE...synchronize lyrics and timestamps
clearscreen()
set caret 10,10
for i = 1 to j-2
'time1 = left(lyrics[i],2) 'take the first two digits number of lyrics[i]
'convert time1 from string to number
'if 'real time' = time1 then display lyrics
wln mid(lyrics[i],3,80)
wait 3000 'this line should be removed if lyrics and timestamps are synchronized
next
Herewith the full code
Code:
'==================================================================================
' T.I.N.Y K.A.R.A.O.K.E
'
' Songs :
' 1. Nathan Evans - Wellerman (Sea Shanty)
' https://www.youtube.com/watch?v=bNQSMTNSnUw
'
' DISCLAIMER
' It is not intended for commercial use and not for sale
' No person or entity associated with this game received payment
' or anything of value, or entered into any agreement,
' in connection with any game assets used in this game.
'
' All trademarks and game assets are the property of their respective owners.
' While every effort is made to acknowledge their works,
' some of the game assets used in in this tiny game may not have
' clear name of the artist/author/creator/developer to be referred with.
' It may not include all relevant facts or the most up-to-date information.
'
'==================================================================================
'-----------------
' INITIALIZATION
'-----------------
set window "Karaoke",500,225,false,2
' color definition
visible black = [0,0,0]
visible white = [255,255,255]
' table to store lyrics line by line
lyrics = []
'-----------
' MAIN LOOP
'-----------
do
clearscreen()
'karaoke menu
set caret 10,10
wln "Karaoke"
wln "* Choose music file (wav)"
wln "* Choose lyric file (txt)"
wln
wln "Press SPACE to continue or ESC to quit"
do
if keydown(KEY_ESCAPE,true) then end
wait 1
until keydown(KEY_SPACE,true)
'loop until filename is not blank
do
filemusic = openfiledialog("wav")
filelyrics = openfiledialog("txt")
until not filemusic="" and not filelyrics=""
'loop until ready
loopready("Are you ready",14)
'read lyrics from text file line by line
f = openfile(filelyrics)
j = 1
do
lyrics[j] = frln(f)
j = j + 1
until frln(f) = unset
free file f
'load and play music
load music 1,filemusic
play music 1
'TOBE...synchronize lyrics and timestamps
clearscreen()
set caret 10,10
for i = 1 to j-2
'time1 = left(lyrics[i],2) 'take the first two digits number of lyrics[i]
'convert time1 from string to number
'if 'real time' = time1 then display lyrics
wln mid(lyrics[i],3,80)
wait 3000 'this line should be removed if lyrics and timestamps are synchronized
next
'loop until ready
loopready("Next Song ",14)
free music 1
loop
'-----------
' FUNCTIONS
'-----------
function clearscreen()
set color black;cls;set color white
endfunc
function loopready(message,lineNum)
do
'clear inside a defined rectangle
set color black
draw rect 10,lineNum*15,300,15,1
'continue ?
set color white
set caret 10,lineNum*15
write message+" (Y/N) ?"
answer = rln()
if upper(answer)="N" then end
until upper(answer)="Y"
endfunc