Tutorial: Interactive Story Book

Design an interactive story book for kids available in multiple languages (English and French) with voice (text-to-speech).

Source Code

'-------------------------------------------------
' Source code for demo app: The Beginner's Bible
' Book Author: zonderkidz.com
' English: https://www.d2soft.com/en/Run/Lev/ebc5ade6c3
' French: https://www.d2soft.com/fr/Run/Lev/ebc5ade6c3
'-------------------------------------------------

DIM cover, img, left, right AS IMAGE
DIM btnStart AS BUTTON
DIM title, verse, desc AS TEXT
DIM page AS INTEGER : page = 1
DIM maxPages AS INTEGER : maxPages = 9
DIM line1 AS LINE

SET VOICE {"emma"|[FR]"denise"}
BGCOLOR #0FB4E1

' Arrows.
left = IMAGE "arrow_left", (10, _MIDDLEY), "hide"
right = IMAGE "arrow_right", (550, _MIDDLEY), "hide"
ON CLICK left, previousPage
ON CLICK right, nextPage

' Main page.
MUSIC "jazz_theme"
cover = IMAGE "bible_cover", (_MIDDLEX, _MIDDLEY), "fade-in", 2000
WAIT
VOICE {"Welcome to The Beginners Bible"|[FR]"Bienvenue dans la Bible du débutant"}
WAIT
btnStart = BUTTON "button_anim_orange", {"Start"|[FR]"Démarrer"}, (_MIDDLEX, 640), "font5", 40, #FFFFFF, "fade-in", 1000
MOVE btnStart, (_MIDDLEX, 520), 1000
SOUND "win"
WAIT
VOICE {"Press Start to begin!"|[FR]"Appuyez sur Démarrer pour commencer !"}
WAIT
ON CLICK btnStart, startRead
ON CLICK cover, startRead

SUB startRead
SOUND "click"
BGCOLOR #FFFFFF
HIDE cover, "fade-out", 1000
HIDE btnStart
STOP MUSIC
WAIT
title = TEXT {"Noah's Ark"|[FR]"L'arche de Noé"}, (_MIDDLEX, 250), "font1", 70, #000000, "fade-in", 1000
line1 = LINE (30, 350)-(610, 350), #000000, 2, "fade-in", 1000
verse = TEXT "Genesis 6-9", (_MIDDLEX, 380), "default", 40, #000000, "fade-in", 1000
VOICE {"Noahs Ark"|[FR]"Larche de Noé"}
WAIT
MUSIC "orchestra"
SLEEP 2000
HIDE title, "fade-out", 1000
HIDE line1, "fade-out", 1000
HIDE verse, "fade-out", 1000
WAIT
openPage
END SUB

SUB previousPage
SOUND "book_page"
page = page - 1
openPage
END SUB

SUB nextPage
SOUND "book_page"
page = page + 1
openPage
END SUB

SUB openPage
IF page = 1 THEN
page1
END IF
IF page = 2 THEN
page2
END IF
IF page = 3 THEN
page3
END IF
IF page = 4 THEN
page4
END IF
IF page = 5 THEN
page5
END IF
IF page = 6 THEN
page6
END IF
IF page = 7 THEN
page7
END IF
IF page = 8 THEN
page8
END IF
IF page = 9 THEN
pageEnd
END IF
END SUB

SUB page1
pageClear
WAIT
img = IMAGE "bible_noa1", (_MIDDLEX, 10), "fade-in", 2000
WAIT
desc = TEXT {"After Adam and Eve left the garden, many people were born. The people kept doing bad things, and they forgot about God."|[FR]"Après qu'Adam et Ève eurent quitté le jardin, beaucoup de gens naquirent. Ils continuèrent à faire de mauvaises choses et ils oublièrent Dieu."}, (10, 450)
MAX WIDTH desc, 620
VOICE {"After Adam and Eve left the garden, many people were born. The people kept doing bad things, and they forgot about God."|[FR]"Après qu'Adam et Ève eurent quitté le jardin, beaucoup de gens naquirent. Ils continuèrent à faire de mauvaises choses et ils oublièrent Dieu."}
WAIT
showArrows
END SUB

SUB page2
pageClear
WAIT
img = IMAGE "bible_noa2", (_MIDDLEX, 10), "fade-in", 2000
WAIT
desc = TEXT {"Except Noah. Noah loved God."|[FR]"Sauf Noé. Noé aimait Dieu."}, (_MIDDLEX, 520)
VOICE {"Except Noah. Noah loved God."|[FR]"Sauf Noé. Noé aimait Dieu."}
WAIT
showArrows
END SUB

SUB page3
pageClear
WAIT
img = IMAGE "bible_noa3", (_MIDDLEX, 10), "fade-in", 2000
WAIT
desc = TEXT {"God was sad that everyone but Noah forgot about him. He told Noah about his plan to start over. \"Make yourself an ark,\" God said. \"Here's how.\" So Noah and his family began working on the ark."|[FR]"Dieu était triste que tout le monde l'ait oublié, sauf Noé. Il lui fit part de son projet de repartir à zéro. \"Construis-toi une arche\", lui dit Dieu. \"Voici comment faire.\" Alors Noé et sa famille commencèrent à travailler sur l'arche."}, (10, 420)
MAX WIDTH desc, 620
VOICE {"God was sad that everyone but Noah forgot about him. He told Noah about his plan to start over. Make yourself an ark, God said. Heres how. So Noah and his family began working on the ark."|[FR]"Dieu était triste que tout le monde lait oublié, sauf Noé. Il lui fit part de son projet de repartir à zéro. Construis-toi une arche, lui dit Dieu. Voici comment faire. Alors Noé et sa famille commencèrent à travailler sur larche."}
WAIT
showArrows
END SUB

SUB page4
pageClear
WAIT
img = IMAGE "bible_noa4", (_MIDDLEX, 10), "fade-in", 2000
WAIT
desc = TEXT {"When it was done, God said, \"Take your family and two of every animal into the ark.\" Animals creeped, crawled, hopped, and galloped onto Noah's new boat."|[FR]"Quand tout fut terminé, Dieu dit : \"Prends ta famille et deux de chaque animal dans l'arche.\" Les animaux rampèrent, sautèrent et galopèrent sur le nouveau bateau de Noé."}, (10, 460)
MAX WIDTH desc, 620
VOICE {"When it was done, God said, Take your family and two of every animal into the ark. Animals creeped, crawled, hopped, and galloped onto Noahs new boat."|[FR]"Quand tout fut terminé, Dieu dit : Prends ta famille et deux de chaque animal dans larche. Les animaux rampèrent, sautèrent et galopèrent sur le nouveau bateau de Noé."}
WAIT
showArrows
END SUB

SUB page5
pageClear
WAIT
img = IMAGE "bible_noa5", (_MIDDLEX, 10), "fade-in", 2000
WAIT
desc = TEXT {"After everyone was inside, the rain began to fall. And fall. And fall. The ark rocked this way and that way on the rising water."|[FR]"Une fois que tout le monde fut à l'intérieur, la pluie commença à tomber. Et à tomber. Et à tomber. L'arche oscilla dans tous les sens au gré des eaux montantes."}, (10, 440)
MAX WIDTH desc, 620
VOICE {"After everyone was inside, the rain began to fall. And fall. And fall. The ark rocked this way and that way on the rising water."|[FR]"Une fois que tout le monde fut à lintérieur, la pluie commença à tomber. Et à tomber. Et à tomber. Larche oscilla dans tous les sens au gré des eaux montantes."}
WAIT
showArrows
END SUB

SUB page6
pageClear
WAIT
img = IMAGE "bible_noa6", (_MIDDLEX, 10), "fade-in", 2000
WAIT
desc = TEXT {"Finally, the rain stopped. Water covered everything! Everyone inside the ark was safe. Noah and his family were very happy."|[FR]"Finalement, la pluie s'est arrêtée. L'eau a tout recouvert ! Tout le monde à l'intérieur de l'arche était sain et sauf. Noé et sa famille étaient très heureux."}, (10, 480)
MAX WIDTH desc, 620
VOICE {"Finally, the rain stopped. Water covered everything! Everyone inside the ark was safe. Noah and his family were very happy."|[FR]"Finalement, la pluie ses arrêtée. Lo a tout recouvert ! Tout le monde à lintérieur de larche était sain et sauf. Noé et sa famille étaient très heureux."}
WAIT
showArrows
END SUB

SUB page7
pageClear
WAIT
img = IMAGE "bible_noa7", (_MIDDLEX, 10), "fade-in", 2000
WAIT
desc = TEXT {"One day, Noah sent a dove to find land. It flew and flew but never found any. So it came back. One week later, Noah sent the dove out again. This time it brought him an olive leaf. Noah cheered, \"It must have found land!\""|[FR]"Un jour, Noé envoya une colombe à la recherche d'une terre. Elle vola, vola, mais ne trouva rien. Elle revint donc. Une semaine plus tard, Noé renvoya la colombe. Cette fois, elle lui rapporta une feuille d'olivier. Noé s'exclama : \"Elle a dû trouver une terre !\""}, (10, 385)
MAX WIDTH desc, 620
VOICE {"One day, Noah sent a dove to find land. It flew and flew but never found any. So it came back. One week later, Noah sent the dove out again. This time it brought him an olive leaf. Noah cheered, It must have found land!"|[FR]"Un jour, Noé envoya une colombe à la recherche dune terre. Elle vola, vola, mais ne trouva rien. Elle revint donc. Une semaine plus tard, Noé renvoya la colombe. Cette fois, elle lui rapporta une feuille dolivier. Noé sexclama : Elle a dû trouver une terre !"}
WAIT
showArrows
END SUB

SUB page8
pageClear
WAIT
img = IMAGE "bible_noa8", (_MIDDLEX, 10), "fade-in", 2000
WAIT
desc = TEXT {"The ark finally came to rest on the top of a mountain. God told Noah to leave the ark. Noah and his family praised God. God put a beautiful rainbow in the sky. It was a sign of his promise to never flood the whole earth again."|[FR]"L'arche finit par s'arrêter au sommet d'une montagne. Dieu dit à Noé de quitter l'arche. Noé et sa famille louèrent Dieu. Dieu fit apparaître un magnifique arc-en-ciel dans le ciel. C'était un signe de sa promesse de ne plus jamais inonder la terre entière."}, (10, 400)
MAX WIDTH desc, 620
VOICE {"The ark finally came to rest on the top of a mountain. God told Noah to leave the ark. Noah and his family praised God. God put a beautiful rainbow in the sky. It was a sign of his promise to never flood the whole earth again."|[FR]"Larche finit par sarrêter au sommet dune montagne. Dieu dit à Noé de quitter larche. Noé et sa famille louèrent Dieu. Dieu fit apparaître un magnifique arc-en-ciel dans le ciel. Cétait un signe de sa promesse de ne plus jamais inonder la terre entière."}
WAIT
showArrows
END SUB

SUB showArrows
SOUND "flip"
IF page < maxPages THEN
TOP right
SHOW right
ANIM right, "scale", 100, 90, 1000
END IF
IF page > 1 THEN
TOP left
SHOW left
ANIM left, "scale", 100, 90, 1000
END IF
END SUB

SUB pageEnd
pageClear
WAIT
title = TEXT {"The End"|[FR]"Fin"}, (_MIDDLEX, 10), "font1", 70, #000000, "fade-in", 1000
VOICE {"This is the end of the story!"|[FR]"Ces la fin de cette histoire !"}
WAIT
SLEEP 2000
STOP MUSIC
line1 = LINE (30, 100)-(610, 100), #000000, 2, "fade-in", 1000
WAIT
MUSIC "ending"
SET VOICE {"brandon"|[FR]"claude"}
cover = IMAGE "bible_book", (_MIDDLEX, 260), "fade-in", 2000
desc = TEXT {"Thank you for trying this interactive book created with the D2Soft Engine. To read more great stories, purchase the full version of The Beginner's Bible today!"|[FR]"Merci d'avoir essayé ce livre interactif créé avec le D2Soft Engine. Pour lire d'autres histoires passionnantes, achetez dès aujourd'hui la version complète de La Bible du débutant !"}, (10, 120), "default", 25, #000000, "fade-in", 2000
MAX WIDTH desc, 620
VOICE {"Thank you for trying this interactive book created with the D2Soft Engine. To read more great stories, purchase the full version of The Beginners Bible today!"|[FR]"Merci davoir essayé ce livre interactif créé avec le D2Soft Engine. Pour lire dautres histoires passionnantes, achetez dès aujourdui la version complète de La Bible du débutant !"}
END SUB

SUB pageClear
HIDE left
HIDE right
HIDE img, "fade-out", 1000
HIDE desc, "fade-out", 1000
END SUB






Go back to list of Tutorials.