Mai 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | Calendrier |
|
| | Présentation | |
| | Auteur | Message |
---|
angelin666
Nombre de messages : 5 Date d'inscription : 03/06/2008
| Sujet: Présentation Mar 3 Juin 2008 - 10:03 | |
| Bonjour,et félicitation pour votre programme . Cela fait bien longtemps que je recherche un programme "simplifié" . Juste une question: peut-on mettre à jour un vieux programme en basiq,avec panoramic? Merci | |
| | | Jack Admin
Nombre de messages : 2386 Date d'inscription : 28/05/2007
| Sujet: Re: Présentation Jeu 5 Juin 2008 - 20:38 | |
| Adapter à PANORAMIC un programme écrit en Basic ne doit pas être très compliqué. Ce qui demanderait une étude, c'est la transcription en PANORAMIC , de spécificités, par exemple pour Qbasic: - le son avec PLAY, SOUND, - l'accès direct à la mémoire PEEK et POKE, - ERASE d'un tableau, etc
Le problème que tu soulèves est intéressant. N'hésites pas à faire part de tes difficultés dans la conversion, nous verrons ensemble comment il est possible de les surmonter. Cela vaut le coup, la logithèque écrite en BASIC dans le monde est encore importante aujourd'hui, et cela permettrait de faire revivre des vieux programmes, par exemple des vieux jeux. Je suis partant dans cette aventure. | |
| | | angelin666
Nombre de messages : 5 Date d'inscription : 03/06/2008
| Sujet: Re: Présentation Ven 6 Juin 2008 - 17:23 | |
| et bien,avant tout,il faut savoir que je faisait ces programmes avec un ordinateur portable canon X07 en 1984.Depuis plus rien. Je suis carrément largué. je pense surtout qu'un bon exemple m'aiderais plus à comprendre. Voici un code assez simple . - Code:
-
20 PRINT "*BONJOUR "A$ 30 PRINT DATE$ 40 PRINT TIME$ 120 DIM S(30),N$(30),Z(400) 190 PRINT TAB(25);"** PRONOSTICS QUINTE **" 191 PRINT TAB(25);"***********************" 200 IF INKEY$="" THEN 200 210 CLS 220 PRINT "ce programme va " 230 PRINT "vous faire gagner " 240 PRINT "au quinte !!" 245 GOSUB 30000 250 PRINT "prenez votre " 260 PRINT "journal de " 270 PRINT "pronostics prefere," 280 GOSUB 30000 290 PRINT "ou un journal du " 300 PRINT "soir et entrez les chevaux " 320 PRINT "données par les......"; 330 GOSUB 30000 340 PRINT "spécialistes. Entrez " 350 PRINT "en un maximum !!" 370 PRINT " Entrez ensuite une " 380 PRINT"note de 1 à 10,"; 385 GOSUB 30000 390 PRINT "selon la confiance " 400 PRINT "que vous accordez " 410 PRINT " au pronostiqueur. " 420 PRINT "Je ferai le reste !"; 430 GOSUB 30000 440 PRINT "COMBIEN DE CHEVAUX" 450 INPUT "(30 MAXIMUM) ";C 460 IF C<1 OR C>30 THEN CLS:GOTO 440 470 CLS 480 PRINT "COMBIEN DE" 490 INPUT "PRONOSTCS ";P 491 IF P=0 THEN 470 500 CLS 540 FOR I=1 TO P 541 PRINT"pronostic numero ";I 543 PRINT "enregistrement" 545 FOR J=1 TO 8 550 PRINT "cheval donne en ";J 560 INPUT C(J) 565 IF C(J)<0 OR C(J)>C THEN 550 570 NEXT J 590 CLS 600 PRINT "quelle confiance" 610 PRINT "accordez-vous a ce pronostiqueur" 630 INPUT "NOTE de 1 a 10 ";CF 640 IF CF<0 OR CF >10 THEN 590 650 CLS 660 PRINT " ENTREES = " 670 PRINT C(1);C(2);C(3);C(4);C(5);C(6);C(7);C(8) 680 PRINT " NOTE = ";CF 690 INPUT "CORRECT ";XX$ 700 IF LEFT$(XX$,1)="o" THEN 770 710 CLS 720 PRINT " d'accord ,nous corrigeons" 740 PRINT "TAPEZ <ENTREE>" 750 GOSUB 30000 760 GOTO 545 770 S(C(1))=S(C(1))+CF*4 780 S(C(2))=S(C(2))+CF*4 790 S(C(3))=S(C(3))+CF*4 800 S(C(4))=S(C(5))+CF*4 810 S(C(5))=S(C(5))+CF*2 820 S(C(6))=S(C(6))+CF*2 821 S(C(7))=S(C(7))+CF*1 822 S(C(8))=S(C(8))+CF*1 830 NEXT I 900 CLS 910 PRINT "UN INSTANT ,SVP........." 920 FOR I=1 TO C 930 P=1 940 P=P*I 950 FOR J=1 TO C 960 IF S(I)<=S(J) THEN 980 970 P=P+10 980 NEXT J 990 Z(P)=I 1000 NEXT I 1010 CLS 1020 PRINT "VOICI MON PRONOSTIC" 1021 PRINT 1022 PRINT "<ENTREE>" 1023 GOSUB 30000 1025 RESTORE 1026 1026 DATA 1,2,3,4,5,6,7,8,9,10 1027 DATA 11,12,13,14,15,16,17,18,19,20 1030 FOR I=1 TO C 1040 READ N$(I) 1050 NEXT I 1060 CLS 1070 PRINT "tapez sur n`importe quelle touche pour faire defiler mes pronostics.";
1110 GOSUB 30000 1140 PRINT "CHEVAL NOTE" 1150 FOR I=350 TO 1 STEP-1 1160 IF Z(I)=0 THEN 1240 1161 IF S(Z(I))=0 THEN 1240 1170 PRINT (N$(Z(I)));
1230 PRINT TAB(15);:PRINT ( S(Z(I))) 1231 GOSUB 30000 1240 NEXT I 1250 CLS 1251 PRINT" R=RELIRE" 1252 PRINT" F=FINIR" 1253 IF INKEY$="f" THEN 1260 1254 IF INKEY$="r" THEN 1060 1255 GOTO 1253 1260 COLOR 10:PRINT TAB(25);"§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§" 1261 COLOR 10:PRINT TAB(25);"§§§§§§§§§§§ AU REVOIR §§§§§§§§§§§§§§§§§" 1262 COLOR 10:PRINT TAB(25);"§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§" 1263 COLOR 10:PRINT TAB(25);"¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤" 30000 IF INKEY$=""THEN 30000 30010 CLS:RETURN 30040 END
Voila,si vous savez...... pouvoir convertir les vieux .bas avec Panomaric,serait surement très apprécié ,je pense. Et encore merci à vous pour votre disponibilité ,et votre programme surtout!! | |
| | | Jack Admin
Nombre de messages : 2386 Date d'inscription : 28/05/2007
| Sujet: Re: Présentation Ven 6 Juin 2008 - 21:59 | |
| Voici la méthode que je propose pour transformer un ancien source écrit en Basic: 1 - Faire apparaitre les LABELSLe source donné en exemple possède un numéro pour chaque ligne, A l'époque, c'était obligatoire. Aujourd'hui, on a besoin uniquement de repérer deux types de lignes: - celles qui sont le début d'un sous-programme, et qui sont appelées par GOSUB, - celles auxquelles on accède par un GOTO. Pour cela, à chaque fois qu'on trouve GOTO n ou GOSUB n, on fait deux choses: - on replace n par Ln dans GOTO n et GOSUB n qui deviennent respectivement GOTO Ln et GOSUB Ln, - on remplace le numéro de ligne n par Ln: A chaque fois qu'on rencontre un THEN n on le remplace par THEN GOTO Ln 2 - Eliminer les numéros de ligneEnsuite, on élimine tous les numéros de lignes, devenus inutiles. On obtient: - Code:
-
PRINT "*BONJOUR "A$ PRINT DATE$ PRINT TIME$ DIM S(30),N$(30),Z(400) PRINT TAB(25);"** PRONOSTICS QUINTE **" PRINT TAB(25);"***********************"
L200: IF INKEY$="" THEN GOTO L200
CLS PRINT "ce programme va " PRINT "vous faire gagner " PRINT "au quinte !!" GOSUB L30000
PRINT "prenez votre " PRINT "journal de " PRINT "pronostics prefere," GOSUB L30000
PRINT "ou un journal du " PRINT "soir et entrez les chevaux " PRINT "données par les......"; GOSUB L30000
PRINT "spécialistes. Entrez " PRINT "en un maximum !!" PRINT " Entrez ensuite une " PRINT"note de 1 à 10,"; GOSUB L30000
PRINT "selon la confiance " PRINT "que vous accordez " PRINT " au pronostiqueur. " PRINT "Je ferai le reste !"; GOSUB L30000
L440: PRINT "COMBIEN DE CHEVAUX" INPUT "(30 MAXIMUM) ";C IF C<1 OR C>30 THEN CLS:GOTO L440
L470: CLS PRINT "COMBIEN DE" INPUT "PRONOSTCS ";P IF P=0 THEN GOTO L470 CLS FOR I=1 TO P PRINT"pronostic numero ";I PRINT "enregistrement"
L545: FOR J=1 TO 8
L550: PRINT "cheval donne en ";J INPUT C(J) IF C(J)<0 OR C(J)>C THEN GOTO L550 NEXT J
L590: CLS PRINT "quelle confiance" PRINT "accordez-vous a ce pronostiqueur" INPUT "NOTE de 1 a 10 ";CF IF CF<0 OR CF >10 THEN GOTO L590 CLS PRINT " ENTREES = " PRINT C(1);C(2);C(3);C(4);C(5);C(6);C(7);C(8) PRINT " NOTE = ";CF INPUT "CORRECT ";XX$ IF LEFT$(XX$,1)="o" THEN GOTO L770 CLS PRINT " d'accord ,nous corrigeons" PRINT "TAPEZ <ENTREE>" GOSUB L30000 GOTO L545
L770: S(C(1))=S(C(1))+CF*4 S(C(2))=S(C(2))+CF*4 S(C(3))=S(C(3))+CF*4 S(C(4))=S(C(5))+CF*4 S(C(5))=S(C(5))+CF*2 S(C(6))=S(C(6))+CF*2 S(C(7))=S(C(7))+CF*1 S(C(8))=S(C(8))+CF*1 NEXT I CLS PRINT "UN INSTANT ,SVP........." FOR I=1 TO C P=1 P=P*I FOR J=1 TO C IF S(I)<=S(J) THEN GOTO L980 P=P+10
L980: NEXT J Z(P)=I NEXT I CLS PRINT "VOICI MON PRONOSTIC" PRINT PRINT "<ENTREE>" GOSUB L30000 RESTORE 1026 DATA 1,2,3,4,5,6,7,8,9,10 DATA 11,12,13,14,15,16,17,18,19,20 FOR I=1 TO C READ N$(I) NEXT I
L1060: CLS PRINT "tapez sur n`importe quelle touche pour faire defiler mes pronostics."; GOSUB L30000 PRINT "CHEVAL NOTE" FOR I=350 TO 1 STEP-1 IF Z(I)=0 THEN GOTO L1240 IF S(Z(I))=0 THEN GOTO L1240 PRINT (N$(Z(I))); PRINT TAB(15);:PRINT ( S(Z(I))) GOSUB L30000
L1240: NEXT I CLS PRINT" R=RELIRE" PRINT" F=FINIR"
L1253: IF INKEY$="f" THEN GOTO L1260 IF INKEY$="r" THEN GOTO L1060 GOTO L1253
L1260: COLOR 10:PRINT TAB(25);"§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§" COLOR 10:PRINT TAB(25);"§§§§§§§§§§§ AU REVOIR §§§§§§§§§§§§§§§§§" COLOR 10:PRINT TAB(25);"§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§" COLOR 10:PRINT TAB(25);"¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤"
L30000: IF INKEY$=""THEN GOTO L30000 CLS:RETURN END 3 - Déclarer les LABELSOn déclare alors les labels par les deux premières lignes: - Code:
-
LABEL L200,L440,L470,L545,L550,L590,L770 LABEL L980,L1060,L1240,L1253,L1260,L30000 4 - Adapter à la syntaxe de PANORAMICPuis on adapte le source obtenu à PANORAMIC: - On supprime la variable A$ qui n'a rien à faire dans la ligne PRINT "*BONJOUR "A$ - On retire PRINT TAB(25); dans PRINT TAB(25);"** PRONOSTICS QUINTE **" - Les lignes du type INPUT "TEXTE";C sont remplacées par des lignes du type PRINT "TEXTE": INPUT C - Les lignes du type PRINT "TEXTE";I sont remplacées par des lignes du type PRINT "TEXTE "+STR$(I) - PRINT (N$(Z(I)));:PRINT ( S(Z(I))) est changée en PRINT N$(Z(I)) + STR$(S(Z(I))) - RESTORE 1026 est changé en RESTORE - COLOR 10 est retiré (je ne sais pas quelle couleur le texte prenait après cette commande) - la ligne PRINT C(1);C(2);C(3);C(4);C(5);C(6);C(7);C( est remplacée par V$=" "+STR$(C(1)) : FOR U=2 TO 8: V$=V$+" "+STR$(C(U)) : NEXT U : PRINT V$ 5 - Déclarer les variablesOn déclare les variables utilisées: - Code:
-
DIM C,P,I,J,CF,XX$
DIM U,V$ 6 - Essayer d'exécuter puis corriger de façon itérative, jusqu'à obtenir une exécution parfaiteOn le lance et ça ne marche pas ! Car il y a encore quelques adaptations à faire, qu'on ne voit qu'à l'exécution. INPUT C(J) utilise un tableau qui n'a pas été déclaré, or, si on déclare le tableau par DIM C(10), comme la variable C est déjà déclarée, ça ne va pas. La variable C est alors renommée en CC. On change partout C en CC La version de PANORAMIC mise à disposition étant une version limitée, le tableau Z(400) est réduit à Z(140) et la ligne FOR I=350 TO 1 STEP-1 est changée en FOR I=140 TO 1 STEP-1 Un END pour le programme principal doit être ajouté AVANT le sous programme, sinon celui-ci s'exécute puis il y aura l'erreur "RETURN SANS GOSUB" à la tentative de l'exécution du RETURN. On le lance et cette fois, ça marche ! Voici le code final: - Code:
-
LABEL L200,L440,L470,L545,L550,L590,L770 LABEL L980,L1060,L1240,L1253,L1260,L30000
DIM CC,P,I,J,CF,XX$,C(10) DIM U,V$
PRINT "*BONJOUR " PRINT DATE$ PRINT TIME$ DIM S(30),N$(30),Z(140) PRINT "** PRONOSTICS QUINTE **" PRINT "***********************"
L200: IF INKEY$="" THEN GOTO L200
CLS PRINT "ce programme va " PRINT "vous faire gagner " PRINT "au quinte !!" GOSUB L30000
PRINT "prenez votre " PRINT "journal de " PRINT "pronostics prefere," GOSUB L30000
PRINT "ou un journal du " PRINT "soir et entrez les chevaux " PRINT "données par les......" GOSUB L30000
PRINT "spécialistes. Entrez " PRINT "en un maximum !!" PRINT " Entrez ensuite une " PRINT "note de 1 à 10," GOSUB L30000
PRINT "selon la confiance " PRINT "que vous accordez " PRINT " au pronostiqueur. " PRINT "Je ferai le reste !" GOSUB L30000
L440: PRINT "COMBIEN DE CHEVAUX" PRINT "(30 MAXIMUM) ":INPUT CC IF CC<1 OR CC>30 THEN CLS:GOTO L440
L470: CLS PRINT "COMBIEN DE" PRINT "PRONOSTCS ":INPUT P IF P=0 THEN GOTO L470 CLS FOR I=1 TO P PRINT "pronostic numero "+STR$(I) PRINT "enregistrement"
L545: FOR J=1 TO 8
L550: PRINT "cheval donne en "+STR$(J) INPUT C(J) IF C(J)<0 OR C(J)>CC THEN GOTO L550 NEXT J
L590: CLS PRINT "quelle confiance" PRINT "accordez-vous a ce pronostiqueur" PRINT "NOTE de 1 a 10 ":INPUT CF IF CF<0 OR CF >10 THEN GOTO L590 CLS PRINT " ENTREES = " V$=" "+STR$(C(1)) FOR U=2 TO 8: V$=V$+" "+STR$(C(U)):NEXT U PRINT V$ PRINT " NOTE = ":INPUT CF PRINT "CORRECT ":INPUT XX$ IF LEFT$(XX$,1)="o" THEN GOTO L770 CLS PRINT " d'accord ,nous corrigeons" PRINT "TAPEZ <ENTREE>" GOSUB L30000 GOTO L545
L770: S(C(1))=S(C(1))+CF*4 S(C(2))=S(C(2))+CF*4 S(C(3))=S(C(3))+CF*4 S(C(4))=S(C(5))+CF*4 S(C(5))=S(C(5))+CF*2 S(C(6))=S(C(6))+CF*2 S(C(7))=S(C(7))+CF*1 S(C(8))=S(C(8))+CF*1 NEXT I CLS PRINT "UN INSTANT ,SVP........." FOR I=1 TO CC P=1 P=P*I FOR J=1 TO CC IF S(I)<=S(J) THEN GOTO L980 P=P+10
L980: NEXT J Z(P)=I NEXT I CLS PRINT "VOICI MON PRONOSTIC" PRINT PRINT "<ENTREE>" GOSUB L30000 RESTORE DATA 1,2,3,4,5,6,7,8,9,10 DATA 11,12,13,14,15,16,17,18,19,20 FOR I=1 TO CC READ N$(I) NEXT I
L1060: CLS PRINT "tapez sur n`importe quelle touche pour faire defiler mes pronostics." GOSUB L30000 PRINT "CHEVAL NOTE" FOR I=140 TO 1 STEP-1 IF Z(I)=0 THEN GOTO L1240 IF S(Z(I))=0 THEN GOTO L1240 PRINT N$(Z(I)) + " " + STR$(S(Z(I))) GOSUB L30000
L1240: NEXT I CLS PRINT " R=RELIRE" PRINT " F=FINIR"
L1253: IF INKEY$="f" THEN GOTO L1260 IF INKEY$="r" THEN GOTO L1060 GOTO L1253
L1260: PRINT "§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§" PRINT "§§§§§§§§§§§ AU REVOIR §§§§§§§§§§§§§§§§§" PRINT "§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§" PRINT "¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤"
END
L30000: IF INKEY$="" THEN GOTO L30000 CLS:RETURN END
Dernière édition par panoramic le Sam 7 Juin 2008 - 11:17, édité 5 fois (Raison : corrections d'erreurs de frappe) | |
| | | Jack Admin
Nombre de messages : 2386 Date d'inscription : 28/05/2007
| Sujet: Re: Présentation Ven 6 Juin 2008 - 22:12 | |
| Cette méthode manuelle pourrait s'automatiser en écrivant un programme en PANORAMIC qui lit un source en Basic, effectue les étapes 1 à 3, puis l'enregistre.
Les étapes consistent à trouver les numéros de lignes qui deviendront des LABELS et à générer la déclaration de ces labels en tête du source: a - transformer les GOTO X en GOTO LX, les GOSUB X en GOSUB LX, les THEN X en THEN GOTO X b - mémoriser ces numéros de ligne X c - transformer ces numéros de lignes X en labels LX: d - éliminer les numéros de ligne qui ne deviennent pas des labels e - générer la déclaration des labels en insérant des lignes LABEL en début de code
Avis aux courageux! | |
| | | angelin666
Nombre de messages : 5 Date d'inscription : 03/06/2008
| Sujet: Re: Présentation Ven 6 Juin 2008 - 23:57 | |
| - Citation :
- - On supprime la variable A$ qui n'a rien à faire dans la ligne PRINT "*BONJOUR "A$
J'ai loupé mon copié/collé : - Code:
-
1 CLS 2 INPUT"VOTRE NOM ?";A$ - Citation :
- COLOR 10 est retiré (je ne sais pas quelle couleur le texte prenait après cette commande)
Un très jolie vert sur un pauvre écran noir^^ En tout cas un très bon tuto,qui me permet de comprendre un peu mieux! Une autre question,d'un autre ordre. J'utilise Windows millénium,et j'ai toujours cette réponse quand je veux exécuter :Cannot create file C:\windows \temp\panoramic.exe. Est-ce du à la version de Windows? Edit:Si j'ai bien suivi l'autre post,cela devrait ressembler à : - Code:
-
CLS DIM A$ PRINT "Votre nom ?": INPUT A$ | |
| | | Jack Admin
Nombre de messages : 2386 Date d'inscription : 28/05/2007
| Sujet: Re: Présentation Sam 7 Juin 2008 - 11:25 | |
| Tout à fait. Pour le moment, INPUT "texte";V est transformé en print "texte":input v
De même pour les PRINT, la syntaxe standard du Basic n'est pas encore respectée par PANORAMIC.
PRINT a;b qui imprime a et b côte à côte se traduit "pour le moment" en l'impression du string obtenu en concaténant les strings correspondant à a et b. Les strings correspondant à a et b sont str$(a) et str$(b) PRINT a;b est donc remplacé par print str$(a) + str$(b)
PRINT a,b qui imprime a et b en laissant un espace entre a et b peut se remplacer par print str$(a) + " " + str$(b)
Par contre PANORAMIC peut imprimer directement le contenu de la variable a par print a | |
| | | angelin666
Nombre de messages : 5 Date d'inscription : 03/06/2008
| Sujet: Re: Présentation Sam 7 Juin 2008 - 15:59 | |
| Par contre,je vient de me rendre compte de quelques bugs sur mon programme: - Code:
-
PRINT " NOTE = ":INPUT CF PRINT "CORRECT ":INPUT XX$ IF LEFT$(XX$,1)="o" THEN GOTO L770 il n'affiche pas la note donné par le joueur. 2éme bug: - Code:
-
L1060: CLS PRINT "tapez sur n`importe quelle touche pour faire defiler mes pronostics." GOSUB L30000 PRINT "CHEVAL NOTE" FOR I=140 TO 1 STEP-1 IF Z(I)=0 THEN GOTO L1240 IF S(Z(I))=0 THEN GOTO L1240 PRINT N$(Z(I)) + " " + STR$(S(Z(I))) GOSUB L30000
L1240: NEXT I CLS Là,le programme marque bien: - Citation :
- "tapez sur n`importe quelle touche pour faire defiler mes pronostics."
mais passe directement à la fin sans citer les chevaux et leurs notes. | |
| | | Contenu sponsorisé
| Sujet: Re: Présentation | |
| |
| | | | Présentation | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |