Création et gestion d’un livre
Page 1 sur 1
Création et gestion d’un livre
- Code:
rem ============================================================================
rem Création et gestion d’un livre
rem Par Papydall
rem ============================================================================
rem Le programme affiche un livre et gère son ouverture et le feuilletage de
rem ses pages.
rem Avant de lancer le programme :
rem Indiquez dans procédure SUB Init() le titre du livre, le nom de l’auteur et
rem le nombre de pages du livre (lignes 33 à 35).
rem Les pages du livre créé sont numérotées, mais elles sont encore vierges
rem (des pages blanches).
rem ============================================================================
rem Pour rédiger les contenus des différentes pages : ajoutez votre code dans
rem la procédure SUB Rediger_Pages() et les procédures suivantes
rem ============================================================================
rem Voici un exemple de livre de 6 pages toutes vierges
rem ============================================================================
Init()
GUI()
Livre(titre$,auteur$,nb_page)
end
rem ============================================================================
SUB Init()
label Gestion_Clic
dim xc,yc,x,y,nb_page,i
dim titre$,auteur$
width 0,screen_x -100 : height 0,screen_y-100
top 0,(screen_y - height(0))/2 : left 0, (screen_x - width(0))/2
xc = width(0)/2 : yc = height(0)/2
titre$ = "Exemple de livre" : ' Titre du livre (à adapter)
auteur$ = "Papydall" : ' Nom de l'auteur (à adapter)
nb_page = 6 : ' Nombre des pages du live (à adapter)
END_SUB
rem ============================================================================
SUB GUI()
color 0,0,0,128
alpha 10 : top 10,20 : left 10, xc-150 : font_bold 10 : font_size 10,24 : hide 10
font_name 10,"arial" : font_color 10,255,255,255 : caption 10,titre$
picture 100 : width 100,xc-100 : height 100,2*yc-150
top 100,80 : left 100,xc-width(100)/2 : on_click 100,Gestion_Clic : hide 100
cursor_point 100 : font_name 100,"arial" : font_bold 100 : font_size 100,34
font_color 100,255,255,255
END_SUB
rem ============================================================================
SUB Livre(titre$,auteur$,nb_page)
dim_local i, t$
caption 0,"Cliquer sur le livre pour l'ouvrir"
for i = 101 to 100+nb_page
picture i : width i,width(100) : height i,height(100) : top i,80
if even(i) = 0 then left i,80 : else : left i,xc+30
on_click i,Gestion_Clic : hide i : cursor_point i
font_bold i : font_name i,"comic sans ms" : font_size i,18
Afficher_Page(i)
next i
Rediger_Pages()
t$ = "Cliquer sur le livre pour l'ouvrir ...."
t$ = t$ + " ou sur la croix rouge pour quitter ..."
2d_target_is 100 : print_target_is 100
2d_fill_color 150,100,50 : 2d_rectangle 0,0,width(100),height(100)
2d_pen_width 5 : 2d_pen_color 250,150,25 : 2d_line 20,0,20,height(100)
print_locate 150,050 : print titre$
font_size 100,24 : print_locate 150,height(100)-100 : print "Auteur : " + auteur$
show 100
END_SUB
rem ============================================================================
SUB Afficher_Page(p)
print_target_is p : font_color p,0,0,0 : 2d_fill_color 255,255,255
font_size p,10 : font_name p,"comic sans ms"
2d_target_is p : 2d_pen_color 0,0,0
if odd(p) > 0
if p > 101 : ' Si on est dans une page impaire autre que la 1ere
2d_line 1,1,1,height(p) : ' On trace 3 traits verticaux...
2d_line 3,1,3,height(p) : ' ... pour donner l'impression ...
2d_line 5,1,5,height(p) : ' ... qu'on a déjà feuilleté quelques pages
end_if
print_locate 010,height(p)-50
else
if p < 100 + nb_page : ' Si on est dans une page paire autre que la dernière
2d_line width(p)-7,1,width(p)-7,height(p) : ' On trace 3 traits verticaux ...
2d_line width(p)-5,1,width(p)-5,height(p) : ' ... pour donner l'impression ...
2d_line width(p)-3,1,width(p)-3,height(p) : ' qu'il reste encore d'autres pages
end_if
print_locate width(p)-70,height(p)-50
end_if
print "Page " + str$(p-100)
END_SUB
rem ============================================================================
SUB Ouvrir_Livre()
dim_local i,j,t$
t$ = "Cliquer sur les pages pour feuilleter le livre ..."
t$ = t$ + " ou sur la croix rouge pour quitter ..."
for i = 100 to 100 + nb_page : off_click i : next i
caption 0,t$
hide 100 : 2d_target_is 0 : print_target_is 0
2d_fill_color 150,50,20 : 2d_pen_color 10,0,0 : 2d_pen_width 5
if even(number_click) > 0
for i = 2*xc-50 to 30 step -5
2d_rectangle i,60,2*xc-50,2*yc-50 : pause 1
next i
else
for i = 30 to 2*xc-50 step 5
2d_rectangle 30,60,i,2*yc-50 : pause 1
next i
end_if
for i = xc-10 to xc+10
2d_pen_color 12.5*abs(xc-i),12.5*abs(xc-i),12.5*abs(xc-i)
2d_line i,top(100),i,top(100) + height(100)
next i
2d_fill_color 255,255,255 : show 10
for i = 101 to 100 + nb_page : Afficher_Page(i) : on_click i,Gestion_Clic : next i
END_SUB
rem ============================================================================
Gestion_Clic:
Ouvrir_Livre()
i = number_click
if i = 100 : ' On a cliqué sur le livre ?
show 101 : show 102 : ' alors afficher la page 1 et la page 2
return
end_if
if i = 101 : ' On a cliqué sur la page 1, alors on ferme le livre
hide 10 : hide 101 : hide 102 : show 100
2d_target_is 0 : cls : on_click 100,Gestion_Clic
caption 0,"Cliquer sur le livre pour l'ouvrir .... ou sur la croix rouge pour quitter ..."
return
end_if
if i > 101 and i < 100 + nb_page : ' On a cliqué sur les pages entre la 2ème et l'avant dernière
if even(i) = 1 : ' On a cliqué sur une page dont le N° est pair ?
show i+1 : show i+2 : ' alors, on affiche les 2 pages suivantes
else : ' On a cliqué sur une page dont le N° est impair ?
hide i : hide i+1 : show i-2 : show i-1 : ' alors, on affiche les 2 pages précédentes
end_if
end_if
if i = 100 + nb_page : ' On a cliqué sur la dernière page ?
for i = 101 to 100 + nb_page : hide i : next i : ' Alors on cache tout
hide 10 : show 100 : 2d_target_is 0 : cls : ' et on ferme le livre
caption 0,"Cliquer sur le livre pour l'ouvrir .... ou sur la croix rouge pour quitter ..."
on_click 100,Gestion_Clic
end_if
return
rem ============================================================================
' Adaptez cette procédure selon votre projet
SUB Rediger_Pages()
Page_1() : ' 1ère page
Page_2() : ' 2eme page
' ... : ' etc.
' Page_N() : ' dernière page
END_SUB
rem ============================================================================
SUB Page_1()
2d_target_is 101 : print_target_is 101
' coder ici le contenu de la page
' Affichage de texte, graphique ou chargement d'images à partir de fichiers
' externes
END_SUB
rem ============================================================================
SUB Page_2()
2d_target_is 102 : print_target_is 102
' Comme la Page_1
END_SUB
rem ============================================================================
' Les pages suivantes
' ...
' La dernière page
rem ============================================================================
- Fichiers joints
Dernière édition par Papydall-Admin le Sam 10 Mar - 12:50, édité 1 fois
Re: Création et gestion d’un livre
Voici un programme exemple pour créer un livre de 4 pages.
Cliquez sur le livre pour l'ouvrir.
Cliquez dans les pages pour feuilleter le livre (en avant ou en arrière)
Cliquez sur le livre pour l'ouvrir.
Cliquez dans les pages pour feuilleter le livre (en avant ou en arrière)
- Code:
rem ============================================================================
rem Test de Création et gestion d’un livre
rem Par Papydall
rem ============================================================================
rem Voici un exemple de livre de 4 pages affichant une fable oubliée de Lafontaine
rem ============================================================================
Init()
GUI()
Livre(titre$,auteur$,nb_page)
end
rem ============================================================================
SUB Init()
label Gestion_Clic
dim xc,yc,x,y,nb_page,i
dim titre$,auteur$
width 0,screen_x -100 : height 0,screen_y-100
top 0,(screen_y - height(0))/2 : left 0, (screen_x - width(0))/2
xc = width(0)/2 : yc = height(0)/2
titre$ = "La fable oubliée" : ' Titre du livre (à adapter)
auteur$ = "Papydall" : ' Nom de l'auteur (à adapter)
nb_page = 4 : ' Nombre des pages du live (à adapter)
END_SUB
rem ============================================================================
SUB GUI()
color 0,0,0,128
alpha 10 : top 10,20 : left 10, xc-150 : font_bold 10 : font_size 10,24 : hide 10
font_name 10,"arial" : font_color 10,255,255,255 : caption 10,titre$
picture 100 : width 100,xc-100 : height 100,2*yc-150
top 100,80 : left 100,xc-width(100)/2 : on_click 100,Gestion_Clic : hide 100
cursor_point 100 : font_name 100,"arial" : font_bold 100 : font_size 100,34
font_color 100,255,255,255
END_SUB
rem ============================================================================
SUB Livre(titre$,auteur$,nb_page)
dim_local i, t$
caption 0,"Cliquer sur le livre pour l'ouvrir"
for i = 101 to 100+nb_page
picture i : width i,width(100) : height i,height(100) : top i,80
if even(i) = 0 then left i,80 : else : left i,xc+30
on_click i,Gestion_Clic : hide i : cursor_point i
font_bold i : font_name i,"comic sans ms" : font_size i,18
Afficher_Page(i)
next i
Rediger_Pages()
t$ = "Cliquer sur le livre pour l'ouvrir ...."
t$ = t$ + " ou sur la croix rouge pour quitter ..."
2d_target_is 100 : print_target_is 100
2d_fill_color 150,100,50 : 2d_rectangle 0,0,width(100),height(100)
2d_pen_width 5 : 2d_pen_color 250,150,25 : 2d_line 20,0,20,height(100)
print_locate 150,050 : print titre$
font_size 100,24 : print_locate 150,height(100)-100 : print "Auteur : " + auteur$
show 100
END_SUB
rem ============================================================================
SUB Afficher_Page(p)
print_target_is p : font_color p,0,0,0 : 2d_fill_color 255,255,255
font_size p,10 : font_name p,"comic sans ms"
2d_target_is p : 2d_pen_color 0,0,0
if odd(p) > 0
if p > 101 : ' Si on est dans une page impaire autre que la 1ere
2d_line 1,1,1,height(p) : ' On trace 3 traits verticaux...
2d_line 3,1,3,height(p) : ' ... pour donner l'impression ...
2d_line 5,1,5,height(p) : ' ... qu'on a déjà feuilleté quelques pages
end_if
print_locate 010,height(p)-50
else
if p < 100 + nb_page : ' Si on est dans une page paire autre que la dernière
2d_line width(p)-7,1,width(p)-7,height(p) : ' On trace 3 traits verticaux ...
2d_line width(p)-5,1,width(p)-5,height(p) : ' ... pour donner l'impression ...
2d_line width(p)-3,1,width(p)-3,height(p) : ' qu'il reste encore d'autres pages
end_if
print_locate width(p)-70,height(p)-50
end_if
print "Page " + str$(p-100)
END_SUB
rem ============================================================================
SUB Ouvrir_Livre()
dim_local i,j,t$
t$ = "Cliquer sur les pages pour feuilleter le livre ..."
t$ = t$ + " ou sur la croix rouge pour quitter ..."
for i = 100 to 100 + nb_page : off_click i : next i
caption 0,t$
hide 100 : 2d_target_is 0 : print_target_is 0
2d_fill_color 150,50,20 : 2d_pen_color 10,0,0 : 2d_pen_width 5
if even(number_click) > 0
for i = 2*xc-50 to 30 step -5
2d_rectangle i,60,2*xc-50,2*yc-50 : pause 1
next i
else
for i = 30 to 2*xc-50 step 5
2d_rectangle 30,60,i,2*yc-50 : pause 1
next i
end_if
for i = xc-10 to xc+10
2d_pen_color 12.5*abs(xc-i),12.5*abs(xc-i),12.5*abs(xc-i)
2d_line i,top(100),i,top(100) + height(100)
next i
2d_fill_color 255,255,255 : show 10
for i = 101 to 100 + nb_page : Afficher_Page(i) : on_click i,Gestion_Clic : next i
END_SUB
rem ============================================================================
Gestion_Clic:
Ouvrir_Livre()
i = number_click
if i = 100 : ' On a cliqué sur le livre ?
show 101 : show 102 : ' alors afficher la page 1 et la page 2
return
end_if
if i = 101 : ' On a cliqué sur la page 1, alors on ferme le livre
hide 10 : hide 101 : hide 102 : show 100
2d_target_is 0 : cls : on_click 100,Gestion_Clic
caption 0,"Cliquer sur le livre pour l'ouvrir .... ou sur la croix rouge pour quitter ..."
return
end_if
if i > 101 and i < 100 + nb_page : ' On a cliqué sur les pages entre la 2ème et l'avant dernière
if even(i) = 1 : ' On a cliqué sur une page dont le N° est pair ?
show i+1 : show i+2 : ' alors, on affiche les 2 pages suivantes
else : ' On a cliqué sur une page dont le N° est impair ?
hide i : hide i+1 : show i-2 : show i-1 : ' alors, on affiche les 2 pages précédentes
end_if
end_if
if i = 100 + nb_page : ' On a cliqué sur la dernière page ?
for i = 101 to 100 + nb_page : hide i : next i : ' Alors on cache tout
hide 10 : show 100 : 2d_target_is 0 : cls : ' et on ferme le livre
caption 0,"Cliquer sur le livre pour l'ouvrir .... ou sur la croix rouge pour quitter ..."
on_click 100,Gestion_Clic
end_if
return
rem ============================================================================
SUB Rediger_Pages()
Page_1()
Page_2()
Page_3()
Page_4()
END_SUB
rem ============================================================================
SUB Page_1()
print_target_is 101
font_size 101,22 : font_color 101,200,50,20
print_locate 100,100 : print "Jean de la Fontaine"
print_locate 100,150 : print "avait oublié une fable ..."
print_locate 100,200 : print "... l'oubli est réparé ..."
END_SUB
rem ============================================================================
SUB Page_2()
font_size 102,14 : font_color 102,200,50,20
print_target_is 102
print_locate 100,020 : print "Le Corbeau et le Lapin"
print_locate 100,070 : print "Le Corbeau sur un arbre perché"
print_locate 100,100 : print "Ne foutait rien de la journée"
print_locate 100,130 : print "Le Lapin voyant le corbeau"
print_locate 100,160 : print "L'interpella et lui dit aussitôt :"
print_locate 100,190 : print "Moi aussi, comme toi, puis-je m'asseoir"
print_locate 100,220 : print "Et ne rien foutre du matin jusqu'au soir ?"
print_locate 100,250 : print "Le Corbeau lui répondit de sa branche :"
print_locate 100,280 : print "Bien sûr, ami à la queue blanche,"
print_locate 100,310 : print "Dans l'herbe verte tu peux te coucher,"
print_locate 100,340 : print "Et ainsi de la vie profiter."
print_locate 100,370 : print "Blanc Lapin, s'assit alors par terre,"
print_locate 100,400 : print "Et sous l'arbre resta à ne rien faire,"
print_locate 100,430 : print "Tant et si bien qu'un renard affamé"
print_locate 100,460 : print "Voyant ainsi le Lapin somnoler,"
print_locate 100,490 : print "S'approcha du rongeur en silence,"
print_locate 100,520 : print "et d'une bouchée en fit sa pitance"
END_SUB
rem ============================================================================
SUB Page_3()
font_size 103,20 : font_color 103,200,50,20
print_target_is 103
print_locate 100,200 : print "Moralité"
print_locate 100,250 : print "Pour rester assis à ne rien branler"
print_locate 100,300 : print "Il vaut mieux être très haut placé"
END_SUB
rem ============================================================================
SUB Page_4()
font_size 104,40 : font_color 104,200,50,20
print_target_is 104
print_locate 200,300 : print "F I N"
END_SUB
rem ============================================================================
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
Lun 1 Jan - 0:25 par Papydall-Admin
» A ceux qui célèbre Noël, bonnes fêtes
Dim 24 Déc - 10:49 par Papydall-Admin
» Joyeux Noël et Bonne Année
Ven 8 Déc - 1:34 par Papydall-Admin
» Planets of the Solar System : Tilts and Spins
Lun 20 Mar - 15:43 par Papydall-Admin
» Bonne Année 2023
Sam 31 Déc - 1:39 par Papydall-Admin
» Fractals - Mandelbrot
Ven 21 Aoû - 22:51 par Papydall-Admin
» Convertisseur Décimal ---> Binaire, Octal, Hexadécimal, ...
Mer 21 Nov - 1:08 par Papydall-Admin
» Balises {USER...}
Lun 19 Nov - 22:12 par Papydall-Admin
» Useful Dog
Ven 6 Avr - 14:25 par Papydall-Admin