' ***************************** ' * CREATION des FILMS (TOUT) * -----> C:\ACLOCLO\!19CFT.BAS ' ***************************** ' Ecrit par Michel OPTION BASE 1: DEFSTR A-Z: CLOSE SCREEN 12: WINDOW SCREEN (1, 1)-(640, 480): CLS BVR& = 65536 * 5 + 256 * 1 + 11 PALETTE 0, BVR& Cfd% = 0 ' COULEUR DE FOND ECRAN Ccv% = 11 ' COULEUR CADRE VIDE Cct% = 11: Cte% = 15 ' COULEUR CADRE/TITRE Cdd% = 11 ' COULEUR DESIGNATIONS DONNEES Cdav% = 13 ' COULEUR DONNEES AVT SAISIE Cdas% = 14 ' COULEUR DONNEES … SAISIR Cds% = 15 ' COULEUR DONNEES APRES SAISIE DIM Acteur.Film(10) AS STRING * 25, Acteur.pr(10) AS STRING * 25 ' *** Ouverture des Fichiers GOSUB GS21.OPEN ' ***** Réalisateurs Nf1.TOT& = LOF(1) / 32 GOSUB GS22.OPEN ' ***** Metteurs en Scène Nf2.TOT& = LOF(2) / 32 GOSUB GS23.OPEN ' ***** Dialoguistes Nf3.TOT& = LOF(3) / 32 GOSUB GS24.OPEN ' ***** Acteurs Nf4.TOT& = LOF(4) / 32 GOSUB GS25.OPEN ' ***** Films Nf5.Libre& = LOF(5) / 400 + 1 Nf5& = 1: GOSUB GS25.LECTURE IF Titre.Film = STRING$(50, CHR$(0)) THEN ' Le fichier n'a jamais ‚t‚ cr‚‚ Annee = STRING$(4, CHR$(254)) Realisateur.Film = STRING$(5, CHR$(254)) Met.en.Scene.Film = STRING$(5, CHR$(254)) Dialoguiste.Film = STRING$(5, CHR$(254)) Titre.Film = STRING$(5, CHR$(254)) + " FIN" FOR I% = 1 TO 10: Acteur(I%) = STRING$(5, CHR$(254)): NEXT I% Sup5 = " ": GOSUB GS25.ECRITURE END IF ' ***** Format ECRAN Titre = " * * * C I N E M A * * * " L% = 3: GOSUB GS08.GAUCHE: Cr% = 1: GOSUB GS08.REMPLI Titre = " * * * PAR CLAUDIE * * * " L% = 3: GOSUB GS08.DROIT: Cr% = 1: GOSUB GS08.REMPLI Titre = " * * * CREATION DES FILMS * * * " L% = 6: GOSUB GS08.GAUCHE: Cr% = 4: GOSUB GS08.REMPLI Titre = " " L% = 6: GOSUB GS08.DROIT Lchg% = 8: Cchg% = 4: Lcbd% = 10: Ccbd% = 77: GOSUB GS09.CV Lchg% = 11: Cchg% = 4: Lcbd% = 15: Ccbd% = 39: GOSUB GS09.CV Lchg% = 16: Cchg% = 4: Lcbd% = 28: Ccbd% = 39: GOSUB GS09.CV Lchg% = 11: Cchg% = 41: Lcbd% = 22: Ccbd% = 77: GOSUB GS09.CV Lchg% = 23: Cchg% = 41: Lcbd% = 28: Ccbd% = 77: GOSUB GS09.CV GOSUB GS25.TRI.du.FICHIER Dalle = CHR$(1) + CHR$(2) + CHR$(4) + CHR$(8) + CHR$(16) Dalle = Dalle + CHR$(32) + CHR$(64) + CHR$(128) PAINT (40, 240), Dalle, 11 K% = 10: GOSUB GS00.CADRE A01A.NOUVEAU.FILM: ' *** Création Nouveau Film LOCATE 9, 5: COLOR 10: PRINT "TITRE : "; SPACE$(50) + " Ann‚e :" LOCATE 12, 5: COLOR 10: PRINT "R‚al :" LOCATE 13, 5: PRINT "M/Sc :" LOCATE 14, 5: PRINT "Dial :" FOR L% = 12 TO 14: LOCATE L%, 12: PRINT SPACE$(25): NEXT L% FOR L% = 24 TO 27: LOCATE L%, 42: PRINT SPACE$(35): NEXT L% LOCATE 17, 8: COLOR 14: PRINT "ACTEURS : ": COLOR 10 FOR L% = 18 TO 27 LOCATE L%, 7: PRINT USING "## : "; L% - 17 NEXT L% LOCATE 23, 52: COLOR 14: PRINT " EXPLICATIONS : " Film.Pr = SPACE$(50): Annee.Pr = " " Real.Pr = SPACE$(25): M.Sc.Pr = SPACE$(25): Dial.Pr = SPACE$(25) FOR I% = 1 TO 10 Act.pr(I%) = SPACE$(25): Acteur.Film(I%) = SPACE$(25) NEXT I% A02A.REPRISE.FILM: FOR L% = 12 TO 21: LOCATE L%, 42: PRINT SPACE$(35): NEXT L% FOR L% = 24 TO 27: LOCATE L%, 42: PRINT SPACE$(35): NEXT L% LOCATE 24, 43: COLOR 15: PRINT "* pour RETOUR au MENU GENERAL" LOCATE 25, 43: COLOR 11: PRINT "Saisie normale SEULE POSSIBLE" LOCATE 26, 43: COLOR 14: PRINT "OU rechercher (!initiales)" LOCATE 27, 43: PRINT "les Films Existants" ' *** Saisie L% = 9: C% = 13: Nbc% = 50: S.Pr = Film.Pr: GOSUB GS07.ALPHA IF S = SPACE$(50) THEN RUN "C:\ACLOCLO\!00MENU.BAS" Inst% = INSTR(S, "!"): IF Inst% = 0 THEN Inst% = INSTR(S, "§") Saisie = UCASE$(Saisie) IF Inst% = 0 THEN Film.Pr = Saisie: Titre.Film = Saisie LOCATE L%, C%: PRINT Titre.Film: GOTO A03.ANNEE END IF ' *** Consultation de films existants A.Chercher = RTRIM$(MID$(Saisie, 2, 10)) IF LEN(A.Chercher) < 10 THEN A.Chercher = A.Chercher + STRING$(10 - LEN(A.Chercher), "?") END IF FOR L% = 12 TO 21: LOCATE L%, 42: PRINT SPACE$(35): NEXT L% LOCATE 12, 45: COLOR 14: PRINT "Films Existants : "; COLOR 10: PRINT LEFT$(A.Chercher, 10): Fini = "NON" Nf5& = 0 DO Nf5& = Nf5& + 1: GOSUB GS25.LECTURE IF Titre.Film >= A.Chercher THEN Nf5h& = Nf5&: EXIT DO LOOP GOSUB A02C.AFFICHAGE FOR L% = 24 TO 27: LOCATE L%, 42: PRINT SPACE$(35): NEXT L% LOCATE 24, 42: COLOR 15: PRINT "* pour RETOUR au MENU" LOCATE 25, 42: COLOR 11: PRINT "TOUTES Flêches Verticales" LOCATE 26, 42: PRINT "pour naviguer'" LOCATE 27, 42: COLOR 14: PRINT "Flèche à gauche pour saisir Titre" A02B.CONSULTATION: Ink = INKEY$: IF Ink = "" GOTO A02B.CONSULTATION SELECT CASE Ink CASE CHR$(27): COLOR 15: END CASE "*": RUN "C:\ACLOCLO\!00MENU.BAS" CASE CHR$(0) + "H": Nf5h& = Nf5h& - 1 CASE CHR$(0) + "P": Nf5h& = Nf5h& + 1 CASE CHR$(0) + "I": Nf5h& = Nf5h& - 8 CASE CHR$(0) + "Q": Nf5h& = Nf5h& + 8 CASE CHR$(0) + "K": GOTO A02A.REPRISE.FILM CASE ELSE: BEEP: GOTO A02B.CONSULTATION END SELECT IF Nf5h& <= 0 THEN GOSUB GS11.SIRENE: Nf5h& = 1 IF Nf5h& >= Nf5.Libre& - 1 THEN Nf5h& = Nf5.Libre& - 2: GOSUB GS11.SIRENE END IF GOSUB A02C.AFFICHAGE: GOTO A02B.CONSULTATION A02C.AFFICHAGE: Nf5& = Nf5h& FOR Ligne% = 13 TO 21 IF Ligne% = 13 THEN COLOR 10 ELSE COLOR 15 GOSUB GS25.LECTURE LOCATE Ligne%, 43: PRINT USING "##### &"; Nf5&; LEFT$(Titre.Film, 27) Nf5& = Nf5& + 1 NEXT Ligne% RETURN ' *************************************************************************** A03.ANNEE: FOR L% = 24 TO 27: LOCATE L%, 42: PRINT SPACE$(35): NEXT L% LOCATE 24, 42: COLOR 15: PRINT "De 1890 à 2050, SVP ..." L% = 9: C% = 72: Nbc% = 4: S.Pr = Annee.Pr: GOSUB GS07.ALPHA Annee% = VAL(S) IF Annee% < 1890 OR Annee% > 2050 THEN GOSUB GS11.SIRENE: GOTO A03.ANNEE Annee = Saisie: Annee.Pr = Saisie ' *************************************************************************** A06.REALISATEUR: FOR L% = 12 TO 21: LOCATE L%, 42: PRINT SPACE$(35): NEXT L% LOCATE 24, 42: COLOR 15: PRINT "* (OU Entrée) si INCONNU" LOCATE 25, 42: COLOR 11: PRINT "Saisie normale (FORT Déconseillée)" LOCATE 26, 42: COLOR 12: PRINT "Rechercher avec !(§)Initiales" L% = 12: C% = 12: Nbc% = 25: S.Pr = Real.Pr: GOSUB GS07.ALPHA Inst% = INSTR(S, "!"): IF Inst% = 0 THEN Inst% = INSTR(S, "§") Saisie = UCASE$(Saisie): IF Saisie = SPACE$(25) GOTO A07.METTEUR.EN.SCENE IF Inst% = 0 THEN Realisateur = Saisie: Real.Pr = Saisie LOCATE L%, C%: PRINT Realisateur: GOTO A07.METTEUR.EN.SCENE END IF FOR L% = 24 TO 27: LOCATE L%, 42: PRINT SPACE$(35): NEXT L% LOCATE 24, 42: COLOR 15: PRINT "* pour RETOUR au MENU" LOCATE 25, 42: COLOR 14: PRINT "TOUTES Flèches pour positionnement " LOCATE 26, 42: COLOR 13: PRINT "'Entrée' si Correct" LOCATE 27, 42: COLOR 12: PRINT "'Inser' pour une Création" LOCATE 12, 43: COLOR 14: PRINT "Réalisateurs Existants : "; A.Chercher = UCASE$(RTRIM$(MID$(S, Inst% + 1, 9))): Lg% = LEN(A.Chercher) IF Lg% < 9 THEN A.Ch = A.Chercher + STRING$(9 - Lg%, "?") COLOR 10: PRINT A.Ch Nf1& = 0 DO Nf1& = Nf1& + 1: GOSUB GS21.LECTURE IF Realisateur >= A.Chercher THEN Nf1h& = Nf1&: EXIT DO LOOP GOSUB A06A A06.CHOIX: Ink = INKEY$: IF Ink = "" GOTO A06.CHOIX SELECT CASE Ink CASE CHR$(27): COLOR 15: END CASE "*": RUN "C:\ACLOCLO\!00MENU.BAS" CASE CHR$(0) + "H": Nf1h& = Nf1h& - 1 CASE CHR$(0) + "P": Nf1h& = Nf1h& + 1 CASE CHR$(0) + "I": Nf1h& = Nf1h& - 8 CASE CHR$(0) + "Q": Nf1h& = Nf1h& + 8 CASE CHR$(0) + "R": GOTO A06.CREATION CASE CHR$(13): GOTO A06.TROUVE CASE ELSE: BEEP: GOTO A06.CHOIX END SELECT IF Nf1h& < 1 THEN GOSUB GS11.SIRENE: Nf1h& = 1 IF Nf1h& > Nf1.TOT& - 1 THEN Nf1h& = Nf1.TOT& - 1: GOSUB GS11.SIRENE END IF A06.AFFICHAGE: GOSUB A06A: GOTO A06.CHOIX A06A: Nf1& = Nf1h& FOR Ligne% = 13 TO 21 IF Ligne% = 13 THEN Col% = 11 ELSE Col% = 10 GOSUB GS21.LECTURE IF Ligne% = 13 THEN Realisateur.Film = Realisateur LOCATE Ligne%, 43: COLOR Col% PRINT USING "##### &"; Nf1&; Realisateur Nf1& = Nf1& + 1 NEXT Ligne% RETURN A06.TROUVE: LOCATE 12, 12: PRINT Realisateur.Film Real.Pr = Realisateur.Film: GOTO A07.METTEUR.EN.SCENE A06.CREATION: FOR L% = 12 TO 21: LOCATE L%, 42: PRINT SPACE$(35): NEXT L% LOCATE 12, 44: COLOR 13: PRINT "CREATION d'un REALISATEUR :" LOCATE 14, 44: COLOR 15: PRINT "SANS Vérification des DOUBLONS" A06.COMPOSITION: L% = 16: C% = 48: Nbc% = 25 S.Pr = "?" + SPACE$(24): GOSUB GS07.ALPHA: S = UCASE$(S) LOCATE 16, 48: PRINT S: Realisateur = S A06.ACCORD: LOCATE 18, 42: COLOR 14: PRINT "CORRECT (0 si OK, 1 si Erreur) " L% = 18: C% = 75: Nbc% = 1: S.Pr = "?": GOSUB GS07.ALPHA SELECT CASE S CASE "0": GOTO A06.OK CASE "1": GOTO A06.COMPOSITION CASE ELSE: BEEP: GOTO A06.ACCORD END SELECT A06.OK: Real.Pr = Realisateur: LOCATE 12, 12: PRINT Realisateur Realisateur.Film = Realisateur ' ***** Mise à jour et tri du fichier des réalisateurs Nf1.TOT& = Nf1.TOT& + 1: Nf1& = Nf1.TOT&: Sup1 = " " GOSUB GS21.ECRITURE: GOSUB G321.TRI.du.FICHIER ' *************************************************************************** A07.METTEUR.EN.SCENE: FOR L% = 12 TO 21: LOCATE L%, 42: PRINT SPACE$(35): NEXT L% FOR L% = 24 TO 27: LOCATE L%, 42: PRINT SPACE$(35): NEXT L% LOCATE 24, 42: COLOR 15: PRINT "* (ou Entrée) si INCONNU" LOCATE 25, 42: COLOR 11: PRINT "Saisie normale (FORT Déconseillée)" LOCATE 26, 42: COLOR 12: PRINT "Rechercher avec !(§)Initiales" L% = 13: C% = 12: Nbc% = 25: S.Pr = M.Sc.Pr: GOSUB GS07.ALPHA Saisie = UCASE$(Saisie): IF Saisie = SPACE$(25) GOTO A08.DIALOGUISTE Inst% = INSTR(S, "!"): IF Inst% = 0 THEN Inst% = INSTR(S, "§") IF Inst% = 0 THEN Met.en.Scene.Film = Saisie: M.Sc.Pr = Saisie LOCATE L%, C%: PRINT Met.en.Scene.Film: GOTO A08.DIALOGUISTE END IF FOR L% = 24 TO 27: LOCATE L%, 42: PRINT SPACE$(35): NEXT L% LOCATE 24, 42: COLOR 15: PRINT "* pour RETOUR au MENU" LOCATE 25, 42: COLOR 14: PRINT "TOUTES Flèches pour positionnement" LOCATE 26, 42: COLOR 13: PRINT "'Entrée' si Correct" LOCATE 27, 42: COLOR 12: PRINT "'Inser' pour une Création" LOCATE 12, 43: COLOR 14: PRINT "Met/en/Scene Existants : "; A.Chercher = UCASE$(RTRIM$(MID$(S, Inst% + 1, 9))): Lg% = LEN(A.Chercher) IF Lg% < 9 THEN A.Ch = A.Chercher + STRING$(9 - Lg%, "?") COLOR 10: PRINT A.Ch Nf2& = 0 DO Nf2& = Nf2& + 1: GOSUB GS22.LECTURE IF Met.en.Scene >= A.Chercher THEN Nf2h& = Nf2&: EXIT DO LOOP GOSUB A07A A07.CHOIX: Ink = INKEY$: IF Ink = "" GOTO A07.CHOIX SELECT CASE Ink CASE CHR$(27): COLOR 15: END CASE "*": RUN "C:\ACLOCLO\!00MENU.BAS" CASE CHR$(0) + "H": Nf2h& = Nf2h& - 1 CASE CHR$(0) + "P": Nf2h& = Nf2h& + 1 CASE CHR$(0) + "I": Nf2h& = Nf2h& - 8 CASE CHR$(0) + "Q": Nf2h& = Nf2h& + 8 CASE CHR$(0) + "R": GOTO A07.CREATION CASE CHR$(13): GOTO A07.TROUVE CASE ELSE: GOTO A07.CHOIX END SELECT IF Nf2h& < 1 THEN GOSUB GS11.SIRENE: Nf2h& = 1 IF Nf2h& > Nf2.TOT& - 1 THEN Nf2h& = Nf2.TOT& - 1: GOSUB GS11.SIRENE END IF A07.AFFICHAGE: GOSUB A07A: GOTO A07.CHOIX A07A: Nf2& = Nf2h& FOR Ligne% = 13 TO 21 IF Ligne% = 13 THEN Col% = 11 ELSE Col% = 10 GOSUB GS22.LECTURE IF Ligne% = 13 THEN Met.en.Scene.Film = Metteur.en.Scene LOCATE Ligne%, 43: COLOR Col% PRINT USING "##### &"; Nf2&; Metteur.en.Scene Nf2& = Nf2& + 1 NEXT Ligne% RETURN A07.TROUVE: LOCATE 13, 12: PRINT Met.en.Scene.Film M.Sc.Pr = Met.en.Scene.Film: GOTO A08.DIALOGUISTE A07.CREATION: FOR L% = 12 TO 21: LOCATE L%, 42: PRINT SPACE$(35): NEXT L% LOCATE 12, 44: COLOR 13: PRINT "CREATION d'un Met/en/Scène :" LOCATE 14, 44: COLOR 15: PRINT "SANS Vérification des DOUBLONS" A07.COMPOSITION: L% = 16: C% = 48: Nbc% = 25 S.Pr = "?" + SPACE$(24): GOSUB GS07.ALPHA: S = UCASE$(S) LOCATE 16, 48: PRINT S: Metteur.en.Scene = S A07.ACCORD: LOCATE 18, 42: COLOR 14: PRINT "CORRECT (0 si OK, 1 si Erreur) " L% = 18: C% = 75: Nbc% = 1: S.Pr = "?": GOSUB GS07.ALPHA SELECT CASE S CASE "0": GOTO A07.OK CASE "1": GOTO A07.COMPOSITION CASE ELSE: BEEP: GOTO A07.ACCORD END SELECT A07.OK: M.Sc.Pr = Metteur.en.Scene: LOCATE 13, 12: PRINT Metteur.en.Scene Met.en.Scene.Film = Metteur.en.Scene ' ***** Mise à jour et tri du fichier des Metteurs en Scène Nf2.TOT& = Nf2.TOT& + 1: Nf2& = Nf2.TOT&: Sup2 = " " GOSUB GS22.ECRITURE: GOSUB GS22.TRI.du.FICHIER ' *************************************************************************** A08.DIALOGUISTE: FOR L% = 12 TO 21: LOCATE L%, 42: PRINT SPACE$(35): NEXT L% FOR L% = 24 TO 27: LOCATE L%, 42: PRINT SPACE$(35): NEXT L% LOCATE 24, 42: COLOR 15: PRINT "* (ou Entrée) si INCONNU" LOCATE 25, 42: COLOR 11: PRINT "Saisie normale (FORT Déconseillée)" LOCATE 26, 42: COLOR 12: PRINT "Rechercher avec !(õ)Initiales" L% = 14: C% = 12: Nbc% = 25: S.Pr = Dial.Pr: GOSUB GS07.ALPHA Saisie = UCASE$(Saisie): IF Saisie = SPACE$(25) GOTO A09.ACTEURS Inst% = INSTR(S, "!"): IF Inst% = 0 THEN Inst% = INSTR(S, "õ") IF Inst% = 0 THEN Dialoguiste.Film = Saisie: Dial.Pr = Saisie LOCATE L%, C%: PRINT Dialoguiste.Film: GOTO A09.ACTEURS END IF FOR L% = 24 TO 27: LOCATE L%, 42: PRINT SPACE$(35): NEXT L% LOCATE 24, 42: COLOR 15: PRINT "* pour RETOUR au MENU" LOCATE 25, 42: COLOR 14: PRINT "TOUTES Flèches positionnement " LOCATE 26, 42: COLOR 13: PRINT "'Entrée' si Correct" LOCATE 27, 42: COLOR 12: PRINT "'Inser' pour une Création" LOCATE 12, 43: COLOR 14: PRINT "Dialoguistes Existants : "; A.Chercher = UCASE$(RTRIM$(MID$(S, Inst% + 1, 9))): Lg% = LEN(A.Chercher) IF Lg% < 9 THEN A.Ch = A.Chercher + STRING$(9 - Lg%, "?") COLOR 10: PRINT A.Ch Nf3& = 0 DO Nf3& = Nf3& + 1: GOSUB GS23.LECTURE IF Dialoguiste >= A.Chercher THEN Nf3h& = Nf3&: EXIT DO LOOP GOSUB A08A A08.CHOIX: Ink = INKEY$: IF Ink = "" GOTO A08.CHOIX SELECT CASE Ink CASE CHR$(27): COLOR 15: END CASE "*": RUN "C:\ACLOCLO\!00MENU.BAS" CASE CHR$(0) + "H": Nf3h& = Nf3h& - 1 CASE CHR$(0) + "P": Nf3h& = Nf3h& + 1 CASE CHR$(0) + "I": Nf3h& = Nf3h& - 8 CASE CHR$(0) + "Q": Nf3h& = Nf3h& + 8 CASE CHR$(0) + "R": GOTO A08.CREATION CASE CHR$(13): GOTO A08.TROUVE CASE ELSE: GOTO A08.CHOIX END SELECT IF Nf3h& < 1 THEN GOSUB GS11.SIRENE: Nf3h& = 1 IF Nf3h& > Nf3.TOT& - 1 THEN Nf3h& = Nf3.TOT& - 1: GOSUB GS11.SIRENE END IF A08.AFFICHAGE: GOSUB A08A: GOTO A08.CHOIX A08A: Nf3& = Nf3h& FOR Ligne% = 13 TO 21 IF Ligne% = 13 THEN Col% = 11 ELSE Col% = 10 GOSUB GS23.LECTURE IF Ligne% = 13 THEN Dialoguiste.Film = Dialoguiste LOCATE Ligne%, 43: COLOR Col% PRINT USING "##### &"; Nf3&; Dialoguiste Nf3& = Nf3& + 1 NEXT Ligne% RETURN A08.TROUVE: LOCATE 14, 12: PRINT Dialoguiste.Film Dial.Pr = Dialoguiste.Film: GOTO A09.ACTEURS A08.CREATION: FOR L% = 12 TO 21: LOCATE L%, 42: PRINT SPACE$(35): NEXT L% LOCATE 12, 44: COLOR 13: PRINT "CREATION d'un Dialoguiste :" LOCATE 14, 44: COLOR 15: PRINT "SANS Vérification des DOUBLONS" A08.COMPOSITION: L% = 16: C% = 48: Nbc% = 25 S.Pr = "?" + SPACE$(24): GOSUB GS07.ALPHA: S = UCASE$(S) LOCATE 16, 48: PRINT S: Dialoguiste = S A08.ACCORD: LOCATE 18, 42: COLOR 14: PRINT "CORRECT (0 si OK, 1 si Erreur) " L% = 18: C% = 75: Nbc% = 1: S.Pr = "?": GOSUB GS07.ALPHA SELECT CASE S CASE "0": GOTO A08.OK CASE "1": GOTO A08.COMPOSITION CASE ELSE: BEEP: GOTO A08.ACCORD END SELECT A08.OK: Dial.Pr = Dialoguiste: LOCATE 14, 12: PRINT Dialoguiste Dialoguiste.Film = Dialoguiste ' ***** Mise à jour et tri du fichier des Dialoguistes Nf3.TOT& = Nf3.TOT& + 1: Nf3& = Nf3.TOT&: Sup3 = " " GOSUB GS23.ECRITURE: GOSUB GS23.TRI.du.FICHIER ' ************************************************************************** A09.ACTEURS: ' ***** 10 au Maximum La% = 17 FOR Act% = 1 TO 10 ' ***** BOUCLETTE POUR LES 10 ACTEURS FOR L% = 12 TO 21: LOCATE L%, 42: PRINT SPACE$(35): NEXT L% FOR L% = 24 TO 27: LOCATE L%, 42: PRINT SPACE$(35): NEXT L% LOCATE 24, 42: COLOR 15: PRINT "* si TERMINE" LOCATE 25, 42: COLOR 11: PRINT "Saisie normale (FORT Déconseillée)" LOCATE 26, 42: COLOR 12: PRINT "Rechercher avec !(§)Initiales" L% = La% + Act%: C% = 12: Nbc% = 25: S.Pr = Act.pr(Act%): GOSUB GS07.ALPHA Saisie = UCASE$(S): IF Saisie = SPACE$(25) THEN EXIT FOR Inst% = INSTR(S, "!"): IF Inst% = 0 THEN Inst% = INSTR(S, "õ") IF Inst% = 0 THEN Acteur.Film(Act%) = Saisie: Act.pr(Act%) = Saisie LOCATE L%, C%: PRINT Acteur.Film(Act%): GOTO A09.SUIVANT END IF FOR L% = 24 TO 27: LOCATE L%, 42: PRINT SPACE$(35): NEXT L% LOCATE 24, 42: COLOR 15: PRINT "* pour RETOUR au MENU" LOCATE 25, 42: COLOR 14: PRINT "TOUTES Flèches positionnement " LOCATE 26, 42: COLOR 13: PRINT "'Entrée' si Correct" LOCATE 27, 42: COLOR 12: PRINT "'Inser' pour une Création" LOCATE 12, 43: COLOR 14: PRINT "Artistes Existants : "; A.Chercher = UCASE$(RTRIM$(MID$(S, Inst% + 1, 9))): Lg% = LEN(A.Chercher) IF Lg% < 9 THEN A.Ch = A.Chercher + STRING$(9 - Lg%, "?") COLOR 10: PRINT A.Ch Nf4& = 0 DO Nf4& = Nf4& + 1: GOSUB GS24.LECTURE IF Acteur >= A.Chercher THEN Nf4h& = Nf4&: EXIT DO LOOP GOSUB A09A A09.CHOIX: Ink = INKEY$: IF Ink = "" GOTO A09.CHOIX SELECT CASE Ink CASE CHR$(27): COLOR 15: END CASE "*", "µ": RUN "C:\ACLOCLO\!00MENU.BAS" CASE CHR$(0) + "H": Nf4h& = Nf4h& - 1 CASE CHR$(0) + "P": Nf4h& = Nf4h& + 1 CASE CHR$(0) + "I": Nf4h& = Nf4h& - 8 CASE CHR$(0) + "Q": Nf4h& = Nf4h& + 8 CASE CHR$(0) + "R": GOTO A09.CREATION CASE CHR$(13): GOTO A09.TROUVE CASE ELSE: GOTO A09.CHOIX END SELECT IF Nf4h& < 1 THEN GOSUB GS11.SIRENE: Nf4h& = 1 IF Nf4h& > Nf4.TOT& - 1 THEN Nf4h& = Nf4.TOT& - 1: GOSUB GS11.SIRENE END IF A09.AFFICHAGE: GOSUB A09A: GOTO A09.CHOIX A09A: Nf4& = Nf4h& FOR Ligne% = 13 TO 21 IF Ligne% = 13 THEN Col% = 11 ELSE Col% = 10 GOSUB GS24.LECTURE IF Ligne% = 13 THEN Acteur.Film(Act%) = Acteur '************************ LOCATE Ligne%, 43: COLOR Col%: PRINT USING "##### &"; Nf4&; Acteur '************************ Nf4& = Nf4& + 1 NEXT Ligne% RETURN A09.TROUVE: LOCATE 17 + Act%, 12: PRINT Acteur.Film(Act%); Act.pr(Act%) = Acteur.Film(Act%) GOTO A09.SUIVANT A09.CREATION: FOR L% = 12 TO 21: LOCATE L%, 42: PRINT SPACE$(35): NEXT L% LOCATE 12, 44: COLOR 13: PRINT "CREATION d'un Acteur :" LOCATE 14, 44: COLOR 15: PRINT "SANS Vérification des DOUBLONS" A09.COMPOSITION: L% = 16: C% = 48: Nbc% = 25 S.Pr = "?" + SPACE$(24): GOSUB GS07.ALPHA: S = UCASE$(S) LOCATE 16, 48: PRINT S: Acteur.Film(Act%) = S A09.ACCORD: LOCATE 18, 42: COLOR 14: PRINT "CORRECT (0 si OK, 1 si Erreur) " L% = 18: C% = 75: Nbc% = 1: S.Pr = "?": GOSUB GS07.ALPHA SELECT CASE S CASE "0": GOTO A09.OK CASE "1": GOTO A09.COMPOSITION CASE ELSE: BEEP: GOTO A09.ACCORD END SELECT A09.OK: LOCATE 17 + Act%, 12: PRINT Acteur.Film(Act%) Act.pr(Act%) = Acteur.Film(Act%) ' ***** Mise à jour et tri du fichier des Acteurs Nf4.TOT& = Nf4.TOT& + 1: Nf4& = Nf4.TOT& Acteur = Acteur.Film(Act%): Sup4 = " " GOSUB GS24.ECRITURE: GOSUB GS24.TRI.du.FICHIER A09.SUIVANT: NEXT Act% ' ***** FIN DE BOUCLETTE ACTEURS FOR I% = Act% TO 10 ' Suppression des acteurs suivants Acteur.Film(I%) = SPACE$(25) LOCATE 17 + Act%, 12: PRINT SPACE$(25) NEXT I% A10.ACCORD: FOR L% = 24 TO 27: LOCATE L%, 42: PRINT SPACE$(35): NEXT L% LOCATE 24, 52: COLOR 14: PRINT "ACCORD FINAL ?" LOCATE 25, 42: COLOR 15: PRINT "---> 0 si Correct)" LOCATE 26, 42: PRINT "---> 1 si Erreur ) ---> " L% = 26: C% = 68: Nbc% = 1: S.Pr = "?": GOSUB GS07.ALPHA SELECT CASE S CASE "0": GOTO A10.OK CASE "1": GOTO A02A.REPRISE.FILM CASE ELSE: GOSUB GS04.SIRENE: GOTO A10.ACCORD END SELECT A10.OK: Nf5& = Nf5.Libre&: Nf5.Libre& = Nf5.Libre& + 1 GOSUB GS25.ECRITURE: GOSUB GS25.TRI.du.FICHIER GOTO A01A.NOUVEAU.FILM ' ************************************************************************** GS00.CADRE: DIM G&(73) FOR I% = 1 TO 16: LINE (I%, I%)-(I%, 232), K%, , 32752: NEXT I% Y% = 234 FOR X% = 1 TO 16: Y% = Y% - 1: LINE (X%, Y%)-(X%, 464), K%, , 4095: NEXT X% FOR I% = 1 TO 16: LINE (I%, I%)-(320, I%), K%, , 32752: NEXT I% X% = 322 FOR Y% = 1 TO 16: X% = X% - 1: LINE (X%, Y%)-(640, Y%), K%, , 4095: NEXT Y% Y% = 465 FOR X% = 1 TO 16: Y% = Y% - 1: LINE (X%, Y%)-(320, Y%), K%, , 32752: NEXT X% X% = 322: Y% = 465 FOR I% = 1 TO 16: X% = X% - 1: Y% = Y% - 1 LINE (X%, Y%)-(640, Y%), K%, , 4095 NEXT I% X% = 641 FOR Y% = 1 TO 16: X% = X% - 1: LINE (X%, Y%)-(X%, 232), K%, , 32752: NEXT Y% X% = 641: Y% = 234 FOR I% = 1 TO 16: X% = X% - 1: Y% = Y% - 1 LINE (X%, Y%)-(X%, 464), K%, , 4095 NEXT I% 'dalle = CHR$(1) + CHR$(2) + CHR$(4) + CHR$(8) + CHR$(16) 'dalle = dalle + CHR$(32) + CHR$(64) + CHR$(128) 'PAINT (25, 33), dalle, 10 K% = 12 LINE (1, 1)-(24, 24), K%, B: LINE (1, 1)-(24, 24), K% LINE (1, 24)-(24, 1), K%: PAINT (6, 12), K%, K% PAINT (12, 6), K%, K%: PAINT (18, 12), K% - 8, K% PAINT (12, 18), K% - 8, K%: LINE (1, 1)-(12, 12), 15 GET (1, 1)-(24, 24), G&: PUT (1, 220), G&, PSET PUT (1, 441), G&, PSET: PUT (308, 1), G&, PSET PUT (308, 441), G&, PSET: PUT (617, 1), G&, PSET PUT (617, 220), G&, PSET: PUT (617, 441), G&, PSET RETURN GS02.ESPACE: M = "Appuyez sur la TOUCHE ESPACE pour POURSUIVRE": GOTO GS05.ERREUR GS03.BIP: FOR B% = 1 TO 2: PLAY "O2 L32 CC+DD+EFF+": NEXT B%: RETURN GS04.SIRENE: FOR Z% = 500 TO 100 STEP -5: SOUND Z%, Z% / 5000: NEXT Z%: RETURN ' ***** AFFICHAGE MESSAGE en Ligne 30 GS05.ERREUR: Col.Er% = 41 - LEN(M) / 2: GOSUB GS04.SIRENE LOCATE 30, Col.Er%: COLOR 14: PRINT M; : GOSUB GS06.ATTENTE LOCATE 30, 1: PRINT SPACE$(80); : RETURN GS06.ATTENTE: K = INKEY$: IF K = "" GOTO GS06.ATTENTE IF K = CHR$(27) THEN COLOR 15: END IF K <> " " GOTO GS06.ATTENTE RETURN GS07.ALPHA: ' ***** SAISIE ALPHANUMERIQUE Lsp% = LEN(S.Pr): IF Lsp% < Nbc% THEN S.Pr = S.Pr + SPACE$(Nbc% - Lsp%) P% = 0: S = S.Pr Xhg% = (C% - 1) * 8 - 1: Yhg% = (L% - 1) * 16 - 1 Xbd% = Xhg% + Nbc% * 8 + 2: Ybd% = Yhg% + 18 LINE (Xhg%, Yhg%)-(Xbd%, Ybd%), 12, B GS07A: COLOR 15: LOCATE L%, C%: PRINT S COLOR 12: LOCATE L%, C% + P%: PRINT MID$(S, P% + 1, 1); IF MID$(S, P% + 1, 1) = " " THEN LOCATE L%, C% + P%: PRINT CHR$(14); GS07B: ' ***** Clignottement SELECT CASE INT(TIMER * 10) MOD 4 CASE 0: LINE (Xhg%, Yhg%)-(Xbd%, Ybd%), 12, B, &HF0F0 CASE 1: LINE (Xhg%, Yhg%)-(Xbd%, Ybd%), 13, B, &H7878 CASE 2: LINE (Xhg%, Yhg%)-(Xbd%, Ybd%), 14, B, &H3636 CASE 3: LINE (Xhg%, Yhg%)-(Xbd%, Ybd%), 15, B, &HF0F0 END SELECT K = INKEY$: IF K = "" GOTO GS07B SELECT CASE K CASE CHR$(3), CHR$(27): CLS : COLOR 15: END 'CTRL + C ou ECHAP CASE CHR$(0) + "K" 'à Gauche IF P% = 0 THEN GOSUB GS11.SIRENE: GOTO GS07B P% = P% - 1: GOTO GS07A CASE CHR$(0) + "M" 'à Droite IF P% = Nbc% THEN GOSUB GS11.SIRENE: GOTO GS07B P% = P% + 1: GOTO GS07A CASE CHR$(13) 'Entrée IF P% = 0 THEN S = S.Pr: GOTO GS07D ELSE GOTO GS07C CASE CHR$(0) + "R" ' Insertion case blanche IF RIGHT$(S, 1) <> " " THEN GOSUB GS11.SIRENE S = LEFT$(S, P%) + " " + RIGHT$(S, Nbc% - P%) S = LEFT$(S, Nbc%): GOTO GS07A CASE CHR$(0) + "S" ' Suppression S = LEFT$(S, P%) + RIGHT$(S, Nbc% - P% - 1) + " ": GOTO GS07A CASE CHR$(0) + "G" ' Retour au Début P% = 0: GOTO GS07A CASE CHR$(0) + "O" 'à la fin P% = LEN(RTRIM$(S)): GOTO GS07A CASE CHR$(8) ' Effacement caractère précédent IF P% = 0 THEN GOSUB GS11.SIRENE: GOTO GS07B IF P% = 1 THEN S = RIGHT$(S, Nbc% - 1) + " " ELSE S = LEFT$(S, P% - 1) + RIGHT$(S, Nbc% - P%) + " " END IF P% = P% - 1: GOTO GS07A CASE CHR$(9), CHR$(29) GOSUB GS10.BIP: GOTO GS07A CASE ELSE P% = P% + 1 IF P% > Nbc% THEN GOSUB GS11.SIRENE: P% = Nbc%: GOTO GS07A MID$(S, P%, 1) = K: GOTO GS07A END SELECT GS07C: IF P% = Nbc% GOTO GS07D Pk% = INSTR(S, "µ"): IF Pk% = 0 THEN Pk% = INSTR(S, "*") IF Pk% > 0 THEN S = LEFT$(S, Pk% - 1) Ls% = LEN(S): IF Ls% < Nbc% THEN S = S + SPACE$(Nbc% - Ls%) GS07D: LOCATE L%, C%: COLOR Cds%: PRINT S Saisie = S: LINE (Xhg%, Yhg%)-(Xbd%, Ybd%), Cfd%, B RETURN ' ***** TITRE ENTOURE d'un CADRE ***** GS08.GAUCHE: L% = L% - 1: C% = 4: GOTO GS08.TITRE GS08.CENTRE: L% = L% - 1: C% = 39 - LEN(Titre) / 2: GOTO GS08.TITRE GS08.DROIT: L% = L% - 1: C% = 76 - LEN(Titre) GS08.TITRE: Lg% = LEN(Titre): COLOR Cct% LOCATE L%, C%: PRINT "É"; STRING$((Lg%), "Í"); "»" LOCATE L% + 1, C%: PRINT "º": LOCATE L% + 1, C% + Lg% + 1: PRINT "º" LOCATE L% + 2, C%: PRINT "È"; STRING$((Lg%), "Í"); "¼" LOCATE L% + 1, C% + 1: COLOR Cte%: PRINT Titre; : RETURN GS08.REMPLI: Xg% = C% * 8: Xd% = (C% + Lg%) * 8 + 1 Yh% = (L%) * 16 - 6: Yb% = Yh% + 26 FOR X% = Xg% TO Xd%: FOR Y% = Yh% TO Yb% IF POINT(X%, Y%) = 0 THEN PSET (X%, Y%), Cr% NEXT Y%, X% RETURN GS08.ENCADRE: Xchg% = (Cc% - 1) * 8 + 1: Ychg% = (Lc% - 1) * 16 + 1 Xcbd% = (Cc% + Nc% - 1) * 8: Ycbd% = Ychg% + 14: Kc% = 15 LINE (Xchg%, Ychg%)-(Xcbd%, Ycbd%), Kc%, B, &H3333 LINE (Xchg%, Ychg%)-(Xcbd%, Ycbd%), 12, B, &HCCCC RETURN ' ***** AFFICHAGE CADRE VIDE ***** GS09.CV: COLOR Ccv% LOCATE Lchg%, Cchg%: PRINT "É"; STRING$((Ccbd% - Cchg% - 1), "Í"); "»" LOCATE Lcbd%, Cchg%: PRINT "È"; STRING$((Ccbd% - Cchg% - 1), "Í"); "¼" FOR L% = Lchg% + 1 TO Lcbd% - 1 LOCATE L%, Cchg%: PRINT "º": LOCATE L%, Ccbd%: PRINT "º": NEXT L% RETURN ' ***** BIP et SIRENE GS10.BIP: FOR Bip% = 1 TO 5: BEEP: NEXT Bip%: RETURN GS11.SIRENE: FOR Z% = 500 TO 100 STEP -5: SOUND Z%, Z% / 5000: NEXT Z%: RETURN ' ***** FICHIERS et TRI **************************************************** ' ***** FICHIER des REALISATEURS GS21.OPEN: OPEN "C:\ACLOCLO\REALISAT.EUR" FOR RANDOM AS #1 LEN = 32' (Nf1&) FIELD #1, 32 AS F1.TOUT RETURN GS21.LECTURE: GET #1, Nf1&: M1 = F1.TOUT Realisateur = MID$(M1, 2, 25): Sup1 = MID$(M1, 28, 1) RETURN GS21.ECRITURE: M1 = "º" + SPACE$(25) + "º º º" MID$(M1, 2) = Realisateur: MID$(M1, 28) = Sup1 LSET F1.TOUT = M1 GS21.ECRITURE.A: PUT #1, Nf1&: RETURN G321.TRI.du.FICHIER: ' ***** TRI FICHIER Indic% = 0: I& = 0: 'Debut! = TIMER GS21A: IF Indic% = 1 THEN I& = B&: Indic% = 0 I& = I& + 1: IF I& > Nf1.TOT& GOTO GS21C IF I& = 1 GOTO GS21A GS21B: Pr& = I& - 1 Nf1& = I&: GOSUB GS21.LECTURE: M1.ACT = M1 Nf1& = Pr&: GOSUB GS21.LECTURE: M1.Pr = M1 IF M1.Pr <= M1.ACT GOTO GS21A ' ***** Echange des enregistrements Nf1& = I&: LSET F1.TOUT = M1.Pr: GOSUB GS21.ECRITURE.A Nf1& = Pr&: LSET F1.TOUT = M1.ACT: GOSUB GS21.ECRITURE.A IF Pr& = 1 GOTO GS21A ELSE IF Indic% = 0 THEN B& = I&: Indic% = 1 I& = I& - 1: GOTO GS21B GS21C: LOCATE 6, 50: COLOR 14 'PRINT USING "Fichier tri‚ en ##.### sec(s)"; TIMER - Debut!; RETURN ' ***** FICHIER des Metteurs en Scene GS22.OPEN: OPEN "C:\ACLOCLO\METENSCE.NE" FOR RANDOM AS #2 LEN = 32' (Nf2&) FIELD #2, 32 AS F2.TOUT RETURN GS22.LECTURE: GET #2, Nf2&: M2 = F2.TOUT Metteur.en.Scene = MID$(M2, 2, 25): Sup2 = MID$(M2, 28, 1) RETURN GS22.ECRITURE: M2 = "º" + SPACE$(25) + "º º º" MID$(M2, 2) = Metteur.en.Scene: MID$(M2, 28) = Sup2 LSET F2.TOUT = M2 GS22.ECRITURE.A: PUT #2, Nf2&: RETURN GS22.TRI.du.FICHIER: ' ***** TRI FICHIER Indic% = 0: I& = 0: Debut! = TIMER GS22A: IF Indic% = 1 THEN I& = B&: Indic% = 0 I& = I& + 1: IF I& > Nf2.TOT& GOTO GS22C IF I& = 1 GOTO GS22A GS22B: Pr& = I& - 1 Nf2& = I&: GOSUB GS22.LECTURE: M1.ACT = M2 Nf2& = Pr&: GOSUB GS22.LECTURE: M1.Pr = M2 IF M1.Pr <= M1.ACT GOTO GS22A ' ***** Echange des enregistrements Nf2& = I&: LSET F2.TOUT = M1.Pr: GOSUB GS22.ECRITURE.A Nf2& = Pr&: LSET F2.TOUT = M1.ACT: GOSUB GS22.ECRITURE.A IF Pr& = 1 GOTO GS22A ELSE IF Indic% = 0 THEN B& = I&: Indic% = 1 I& = I& - 1: GOTO GS22B GS22C: LOCATE 6, 50: COLOR 14 'PRINT USING "Fichier tri‚ en ##.### sec(s)"; TIMER - Debut!; RETURN ' ***** FICHIER des DIALOGUISTES GS23.OPEN: OPEN "C:\ACLOCLO\DIALOGUI.STE" FOR RANDOM AS #3 LEN = 32' (Nf3&) FIELD #3, 32 AS F3.TOUT RETURN GS23.LECTURE: GET #3, Nf3&: M3 = F3.TOUT Dialoguiste = MID$(M3, 2, 25): Sup3 = MID$(M3, 28, 1) RETURN GS23.ECRITURE: M3 = "º" + SPACE$(25) + "º º º" MID$(M3, 2) = Dialoguiste: MID$(M3, 28) = Sup3 LSET F3.TOUT = M3 GS23.ECRITURE.A: PUT #3, Nf3&: RETURN GS23.TRI.du.FICHIER: ' ***** TRI FICHIER Indic% = 0: I& = 0: Debut! = TIMER GS23A: IF Indic% = 1 THEN I& = B&: Indic% = 0 I& = I& + 1: IF I& > Nf3.TOT& GOTO GS23C IF I& = 1 GOTO GS23A GS23B: Pr& = I& - 1 Nf3& = I&: GOSUB GS23.LECTURE: M3.ACT = M3 Nf3& = Pr&: GOSUB GS23.LECTURE: M3.Pr = M3 IF M3.Pr <= M3.ACT GOTO GS23A ' ***** Echange des enregistrements Nf3& = I&: LSET F3.TOUT = M3.Pr: GOSUB GS23.ECRITURE.A Nf3& = Pr&: LSET F3.TOUT = M3.ACT: GOSUB GS23.ECRITURE.A IF Pr& = 1 GOTO GS23A ELSE IF Indic% = 0 THEN B& = I&: Indic% = 1 I& = I& - 1: GOTO GS23B GS23C: LOCATE 6, 48: COLOR 14 'PRINT USING "Fichier tri‚ en ##.### sec(s)"; TIMER - Debut!; RETURN ' ***** FICHIER des ACTEURS GS24.OPEN: OPEN "C:\ACLOCLO\ACTEURS.ACT" FOR RANDOM AS #4 LEN = 32' (Nf4&) FIELD #4, 32 AS F4.TOUT RETURN GS24.LECTURE: GET #4, Nf4&: M4 = F4.TOUT Acteur = MID$(M4, 2, 25): Sup4 = MID$(M4, 28, 1) RETURN GS24.ECRITURE: M4 = "º" + SPACE$(25) + "º º º" MID$(M4, 2) = Acteur: MID$(M4, 28) = Sup4 LSET F4.TOUT = M4 GS24.ECRITURE.A: PUT #4, Nf4&: RETURN GS24.TRI.du.FICHIER: ' ***** TRI FICHIER Indic% = 0: I& = 0: Debut! = TIMER GS24A: IF Indic% = 1 THEN I& = B&: Indic% = 0 I& = I& + 1: IF I& > Nf4.TOT& GOTO GS24C IF I& = 1 GOTO GS24A GS24B: Pr& = I& - 1 Nf4& = I&: GOSUB GS24.LECTURE: M4.Act = M4 Nf4& = Pr&: GOSUB GS24.LECTURE: M4.Pr = M4 IF M4.Pr <= M4.Act GOTO GS24A ' ***** Echange des enregistrements Nf4& = I&: LSET F4.TOUT = M4.Pr: GOSUB GS24.ECRITURE.A Nf4& = Pr&: LSET F4.TOUT = M4.Act: GOSUB GS24.ECRITURE.A IF Pr& = 1 GOTO GS24A ELSE IF Indic% = 0 THEN B& = I&: Indic% = 1 I& = I& - 1: GOTO GS24B GS24C: 'LOCATE 6, 55: PRINT USING "Tri en ##.### Sec(s)"; TIMER - Debut!; RETURN '***** Fichier des FILMS GS25.OPEN: OPEN "C:\ACLOCLO\FILMS" FOR RANDOM AS #5 LEN = 400 FIELD #5, 400 AS F5.M5 RETURN GS25.LECTURE: GET #5, Nf5&: M5 = F5.M5 Annee = MID$(M5, 2, 4): Realisateur.Film = MID$(M5, 7, 25) Met.en.Scene.Film = MID$(M5, 33, 25): Dialoguiste.Film = MID$(M5, 59, 25) Titre.Film = MID$(M5, 85, 50): I% = 0 FOR P% = 136 TO 369 STEP 26 I% = I% + 1: Acteur.Film(I%) = MID$(M5, P%, 25) NEXT P% Sup5 = MID$(M5, 396, 1) RETURN GS25.ECRITURE: M5 = "º º" + SPACE$(25) + "º" + SPACE$(25) + "º" '58 M5 = M5 + SPACE$(25) + "º" + SPACE$(50) + "º" '135 FOR I% = 1 TO 10: M5 = M5 + SPACE$(25) + "º": NEXT I% '395 M5 = M5 + " º " '400 MID$(M5, 2) = Annee: MID$(M5, 7) = Realisateur.Film MID$(M5, 33) = Met.en.Scene.Film: MID$(M5, 59) = Dialoguiste.Film MID$(M5, 85) = Titre.Film: I% = 0 FOR P% = 136 TO 395 STEP 26: I% = I% + 1 MID$(M5, P%) = Acteur.Film(I%) NEXT P% MID$(M5, 396) = Sup5 LSET F5.M5 = M5 GS25.ECRITURE.A: PUT #5, Nf5&: RETURN GS25.TRI.du.FICHIER: ' ***** TRI FICHIER Indic% = 0: I& = 0: Debut! = TIMER GS25A: IF Indic% = 1 THEN I& = B&: Indic% = 0 I& = I& + 1: IF I& > Nf5.Libre& - 1 GOTO GS25C IF I& = 1 GOTO GS25A GS25B: Pr& = I& - 1 Nf5& = I&: GOSUB GS25.LECTURE: M5.Act = M5: Titre.Act = Titre.Film Nf5& = Pr&: GOSUB GS25.LECTURE: M5.Pr = M5: Titre.Pr = Titre.Film IF Titre.Pr <= Titre.Act GOTO GS25A ' ***** Echange des enregistrements 'BEEP: LOCATE 28, 10: COLOR 15: PRINT USING "I = ####, Pr = ####"; I&; Pr&; Nf5& = I&: LSET F5.M5 = M5.Pr: GOSUB GS25.ECRITURE.A Nf5& = Pr&: LSET F5.M5 = M5.Act: GOSUB GS25.ECRITURE.A IF Pr& = 1 GOTO GS25A ELSE IF Indic% = 0 THEN B& = I&: Indic% = 1 I& = I& - 1: GOTO GS25B GS25C: LOCATE 6, 50: COLOR 11 PRINT USING "TRI Fichier en : #.### s"; TIMER - Debut!; RETURN