Win3x.Org

Windows & DOS Community

Postez vos petits programmes en QBasic

Règles du forum

Pour tout sujet impliquant un système d'exploitation daté de 2000 à nos jours, merci de le publier dans la section intitulée « Informatique moderne ».

Répondre   Page 1 sur 5  [ 44 messages ]
Aller sur la page 1 2 3 4 5 »
Auteur Message
Romain
Sujet du message : Postez vos petits programmes en QBasic
Publié : 08 mai 2009 12:55
Membre d'honneur
Hors-ligne
 
Messages : 219
Inscription : 10 juin 2007 11:16
 
Bonjour,
Je vous propose de poster ici, les petits programmes que vous avez conçus pour DOS,en QBasic juste pour "le fun".
Vous décrirez son utilisé, la marche à suivre pour l'utiliser.
Vous posterez son code source, il doit être court.
Je commence :
Voici un programme simple pour calculer le PGCD de deux nombres en affichant les étapes du calcul, il vous suffit simplement d'entrer les valeurs des deux nombres et de valider à l'aide de la touche "Entrée"
CLS
INPUT A
INPUT B

WHILE B <> 0
    C = A MOD B
    PRINT C
    A = B
    B = C
WEND
Je vous l'accorde, il est fait "à la va vite", il n'est donc pas très soigné, je corrigerai cela par la suite.
De plus je débute en QBasic.
A vous de poster !

Dernière modification par Romain le 17 mai 2009 15:43, modifié 3 fois.

Haut
Profil Citer
Dr Frankenstein
Sujet du message : Re: Postez vos petits programmes pour DOS en QBasic
Publié : 09 mai 2009 00:22
Membre d'honneur
Hors-ligne
 
Messages : 418
Inscription : 28 oct. 2004 01:31
 
Les GOTO c'est mal ;)

Faudrait p-ê que je me mette un peu au qbasic... peut-être à l'aide de http://www.projecteuler.net/ ? :p

Dernière modification par Dr Frankenstein le 09 mai 2009 00:30, modifié 1 fois.

_________________

Introducing Windows 95.
It lets you use more than eight characters to name your files. Imagine that. ~Apple.


Haut
Profil Citer
Pierreblinux
Sujet du message : Re: Postez vos petits programmes pour DOS en QBasic
Publié : 09 mai 2009 00:26
 
 
'écris tout les caractère ascii dos dans un fichier c:\1.txt
CLS
DIM voila AS INTEGER
what$ = "c:\1.txt"
OPEN what$ FOR OUTPUT AS #1


FOR k# = 0 TO 255 STEP 1
WRITE #1, CHR$(k#)
PRINT CHR$(k#)
NEXT
CLOSE #1

Dernière modification par Pierreblinux le 09 mai 2009 17:58, modifié 1 fois.

Haut
Citer
Romain
Sujet du message : Re: Postez vos petits programmes pour DOS en QBasic
Publié : 09 mai 2009 13:48
Membre d'honneur
Hors-ligne
 
Messages : 219
Inscription : 10 juin 2007 11:16
 
Merci à Dr Frankenstein pour avoir amélioré le code, je l'ai testé et il fonctionne correctement.
J'ai mis à jour le premier post.

Dernière modification par Romain le 17 mai 2009 15:44, modifié 2 fois.

Haut
Profil Citer
gm86
Sujet du message : Re: Postez vos petits programmes pour DOS en QBasic
Publié : 17 juin 2009 21:36
Membre inscrit
Avatar de l’utilisateur
Hors-ligne
 
Messages : 628
Inscription : 01 sept. 2008 19:07
 
Revoilà du BASIC.
Le programme suivant conseille l'utilisateur dans son choix d'oculaires suivant l'instrument dont il est équipé.
10 '* Déterminer la focale des oculaires conseillés pour un instrument précis *
20 GOSUB 100    '== DEBUT ==
30 GOSUB 1000   '== TRAITEMENT ==
40 GOSUB 10000  '== FIN ==
50 KEY ON : END
60 '
70 '
80 '
90 '
100 '== D E B U T ==
105 CLS : KEY OFF : PRINT "CHOISIR LES OCULAIRES POUR UN TELESCOPE OU UNE LUNETTE ASTRONOMIQUE": PRINT "EN CALCULANT LES GROSSISSEMENTS VALABLES": PRINT
110 PRINT "Demande de données sur l'objectif de l'instrument, en mm.": PRINT "Appuyer sur une touche..."
120 WHILE INKEY$ = "": WEND: PRINT CHR$(30);STRING$(79,32);CHR$(30)            'supprimer la ligne d'avant et s'y positionner
130 INPUT "Quel est son diamètre ? ", DIAM: INPUT "Quelle est sa longueur focale ? ", FOC
140 RETURN
150 '
160 '
170 '
1000 '== T R A I T E M E N T ==
1010 RAP = FOC / DIAM           'rapport F/D (ouverture de l'instrument)
1020 CHAMP2 = 360! * 113 * ATN(25.4 / FOC) / 355        'champ maximum avec un oculaire 2"
1030 CHAMP1 = 360! * 113 * ATN(15.875 / FOC) / 355      'avec un de 1"
1040 OCFAIBLE = 5 * RAP         'plus grande focale d'oculaire utilisable
1050 OCFORT = .3 * RAP          'plus petite focale théorique
1060 OCGRDCH = 3 * RAP          'oc. grand champ
1070 OCMOYEN = 2 * RAP          'oc. moyen
1080 OCUTILE = .9 * RAP         'oc. utile
1090 OCRES = .7 * RAP           'oc. résolvant
1100 OCHRES = .4 * RAP          'oc. de haute résolution
1110 RETURN
1120 '
1130 '
1140 '
10000 '== F I N ==
10010 PRINT USING "Le rapport F/D, qui représente l'ouverture de l'objectif, est ##.##"; RAP
10020 PRINT : PRINT
10030 PRINT "Oculaires utilisables sur cet instrument."
10040 PRINT "-----------------------------------------"
10050 PRINT : PRINT "L'oculaire le plus faible, i.e., celui qui a la plus grande focale,"
10060 PRINT USING "est celui de ##.# mm."; OCFAIBLE
10070 PRINT "Il exploite une pupille d'oeil de 5 mm, ce peut être gênant du fait des défauts"
10080 PRINT "de l'oeil. L'image obtenue est lumineuse mais peu contrastée."
10090 PRINT "L'oculaire le plus fort, i.e., celui qui a la plus petite focale,"
10100 PRINT USING "est celui de #.# mm."; OCFORT
10110 PRINT "Il exploite une pupille d'oeil de 3/10 mm. Il ne sert guère qu'à collimater"
10120 PRINT "l'instrument."
10130 PRINT : PRINT "Pour voir la suite, appuyer sur ESPACE..."
10140 TEST$ = "a"
10150 WHILE TEST$ <> " "
10160  TEST$ = INKEY$
10170 WEND
10180 PRINT : PRINT
10190 PRINT "Oculaires réellement exploitables sur un"; DIAM; "/"; FOC; ":"
10200 PRINT "+-----------------------------------------------------------------------------+"
10210 PRINT "|oculaire |foc.|gross.|champ apparent maxi   |types d'observation             |"
10220 OC = OCGRDCH
10230 OC$ = "grd champ"
10240 OBS$ = "objets diffus étendus,"
10250 GOSUB 20000                'aller à l'AFFICHAGE
10260 CHAMP = CHAMP2 * GROSS
10270 IF CHAMP > 99 THEN CHAMP = 99
10280 PRINT USING "|         |    |      |  ##° si oc. 2 pouces |vastes régions étoilées         |"; CHAMP
10290 OC = OCMOYEN
10300 OC$ = "moyen"
10310 OBS$ = "ciel profond"
10320 GOSUB 20000                'aller à l'AFFICHAGE
10330 OC = OCUTILE
10340 OC$ = "utile"
10350 OBS$ = "planètes, réolutions des amas"
10360 GOSUB 20000                'aller à l'AFFICHAGE
10370 OC = OCRES
10380 OC$ = "résolvant"
10390 OBS$ = "dessin"
10400 GOSUB 20000                'aller à l'AFFICHAGE
10410 OC = OCHRES
10420 OC$ = "optimal"
10430 OBS$ = "planètes, étoiles doubles"
10440 GOSUB 20000                'aller à l'AFFICHAGE
10450 PRINT "+-----------------------------------------------------------------------------+"
10460 PRINT "Les oculaires sont au standard 1"; CHR$(34); "(pouce) sauf mention contraire."
10470 PRINT "L'emploi d'une lentille de Barlow n'est pas pris en compte."
10480 PRINT : PRINT "Le champ maximum que cet instrument peut couvrir avec un oculaire 2"; CHR$(34)
10490 PRINT USING "est de #.#°."; CHAMP2
10500 PRINT USING "Avec un oculaire 1!, il est de #.#°."; CHR$(34); CHAMP1
10510 '
10520 '-- Recommencer ? --
10530 PRINT : INPUT "Déterminer la gamme d'oculaires d'un autre instrument ? (O/N)", REPONSE$
10540 IF REPONSE$ = "o" OR REPONSE$ = "O" THEN RETURN 20
10550 RETURN
10560 '
10570 '
10580 '
10590 '---- FIN DU PROGRAMME ----
10600 '
10610 '
10620 '
20000 '* AFFICHAGE *
20010 'afficher les résultats sous forme de tableau
20020 GROSS = FOC / OC
20030 CHAMP = CHAMP1 * GROSS
20040 IF CHAMP > 99 THEN CHAMP = 99
20050 PRINT "|---------+----+------+----------------------+--------------------------------|"
20060 PRINT USING "|\       \|##.#|#### x|  ##°                 |\                              \|"; OC$; OC; GROSS; CHAMP; OBS$
20070 RETURN
20080 '
20090 '
C'est un programme pour GW-BASIC/BASICA.
L'ajout d'un point d'exclamation, à deux reprises, force les calculs à s'effectuer en simple précision. On peut donc, maintenant, l'utiliser avec QBasic.
J'ai remarqué que, avec GW-BASIC 3.xx et IBM BASICA, le contenu de PRINT "..." ne doit pas faire 80 caractères au maximum mais 79, à moins terminer la ligne de code par un point-virgule. Il se produit sinon un retour à la ligne et il n'est plus possible d'afficher une seule ligne par instruction. Ceci ne concerne ni QBASIC ni les anciennes versions de GW-BASIC. [Vu le 22/06]

Dernière modification par gm86 le 15 juil. 2012 19:39, modifié 23 fois.

_________________

C:\ONGRTLNS.W95


Haut
Profil Citer
0597534
Sujet du message : Re: Postez vos petits programmes pour DOS en QBasic
Publié : 17 juin 2009 23:01
 
 
Voici Lightcycles du film Tron. Il se peut qu'il y ait quelques erreurs parce que j'ai fais plusieurs copie du programme, et je ne suis pas certain si celle-ci est la finale. Je l'ai programmé en utilisant Qbasic 4.5. Faites-moi part de vos impressions et commentaires! :D :wink:
DECLARE SUB intronomusic ()
DECLARE SUB apropos ()
DECLARE SUB crashsound ()
DECLARE SUB keyboard ()
DECLARE SUB howtoplay ()
DECLARE SUB intro ()


'music4$ = "l16 <c> b- g b- g g- f >b-< c e- f l16 g p16 f g b-> l1 c"

intro 'attention cet intro a le theme musical
debut:

CLEAR

DIM quad1(160, 100) AS INTEGER
DIM quad2(160, 100) AS INTEGER
DIM quad3(160, 100) AS INTEGER
DIM quad4(160, 100) AS INTEGER

CLS

SCREEN 7, 0, 0
COLOR 12, 1
jx1 = 80
jy1 = 100

jx2 = 240
jy2 = 100


i = 0
u = 0
t = 0

a = 0
b = 0
c = 0
d = 1

a2 = 0
b2 = 0
c2 = 1
d2 = 0

SOUND 450, 2
LOCATE 11, 20
PRINT "3"
SLEEP 1

SOUND 450, 2
LOCATE 11, 20
PRINT "2"
SLEEP 1

SOUND 450, 2
LOCATE 11, 20
PRINT "1"
SLEEP 1

SOUND 790, 5
CLS

PSET (jx1, jy1), 3
PSET (jx2, jy2), 4


LINE (3, 4)-(315, 4) 'ligne du haut
LINE (3, 194)-(315, 194) 'ligne du bas
LINE (3, 4)-(3, 194) 'ligne de gauche
LINE (315, 4)-(315, 194) 'ligne de droite

quad1(80, 100) = 1
DO

IF jx1 < 4 OR jx1 > 314 OR jy1 < 5 OR jy1 > 193 THEN
LOCATE 10, 10
'PRINT "Boum1 !"
crashsound
GOTO fin
END IF

IF jx2 < 4 OR jx2 > 314 OR jy2 < 5 OR jy2 > 193 THEN
LOCATE 10, 10
'PRINT "Boum2 !"
crashsound
GOTO fin
END IF


i = i + 1
u = u + 1

press$ = INKEY$

IF press$ = "t" AND b = 0 THEN
a = 1
b = 0
c = 0
d = 0
END IF

IF press$ = "g" AND a = 0 THEN
a = 0
b = 1
c = 0
d = 0
END IF

IF press$ = "f" AND d = 0 THEN
a = 0
b = 0
c = 1
d = 0
END IF

IF press$ = "h" AND c = 0 THEN
a = 0
b = 0
c = 0
d = 1
END IF

IF i = 3 THEN
i = 0
IF a = 1 THEN
jy1 = jy1 - 1
END IF
IF b = 1 THEN
jy1 = jy1 + 1
END IF
IF c = 1 THEN
jx1 = jx1 - 1
END IF
IF d = 1 THEN
jx1 = jx1 + 1
END IF


IF jx1 < 161 THEN
IF jy1 < 101 THEN
IF quad1(jx1, jy1) = 1 THEN
LOCATE 10, 10
'PRINT "Boum1 !"
crashsound
GOTO fin
ELSE
quad1(jx1, jy1) = 1
END IF
ELSE
IF quad2(jx1, jy1 - 100) = 1 THEN
LOCATE 10, 10
'PRINT "Boum1 !"
crashsound
GOTO fin
ELSE
quad2(jx1, jy1 - 100) = 1
END IF
END IF
ELSE
IF jy1 < 101 THEN
IF quad3(jx1 - 160, jy1) = 1 THEN
LOCATE 10, 10
'PRINT "Boum1 !"
crashsound
GOTO fin
ELSE
quad3(jx1 - 160, jy1) = 1
END IF
ELSE
IF quad4(jx1 - 160, jy1 - 100) = 1 THEN
LOCATE 10, 10
'PRINT "Boum1 !"
crashsound
GOTO fin
ELSE
quad4(jx1 - 160, jy1 - 100) = 1
END IF
END IF
END IF
PSET (jx1, jy1), 3
END IF


'************joueur 2***************

IF press$ = "8" AND b2 = 0 THEN
a2 = 1
b2 = 0
c2 = 0
d2 = 0
END IF

IF press$ = "5" AND a2 = 0 THEN
a2 = 0
b2 = 1
c2 = 0
d2 = 0
END IF

IF press$ = "4" AND d2 = 0 THEN
a2 = 0
b2 = 0
c2 = 1
d2 = 0
END IF

IF press$ = "6" AND c2 = 0 THEN
a2 = 0
b2 = 0
c2 = 0
d2 = 1
END IF

IF u = 3 THEN
u = 0
IF a2 = 1 THEN
jy2 = jy2 - 1
END IF
IF b2 = 1 THEN
jy2 = jy2 + 1
END IF
IF c2 = 1 THEN
jx2 = jx2 - 1
END IF
IF d2 = 1 THEN
jx2 = jx2 + 1
END IF


IF jx2 < 161 THEN
IF jy2 < 101 THEN
IF quad1(jx2, jy2) = 1 THEN
LOCATE 10, 10
'PRINT "Boum2 !"
crashsound
GOTO fin
ELSE
quad1(jx2, jy2) = 1
END IF
ELSE
IF quad2(jx2, jy2 - 100) = 1 THEN
LOCATE 10, 10
'PRINT "Boum2 !"
crashsound
GOTO fin
ELSE
quad2(jx2, jy2 - 100) = 1
END IF
END IF
ELSE
IF jy2 < 101 THEN
IF quad3(jx2 - 160, jy2) = 1 THEN
LOCATE 10, 10
'PRINT "Boum2 !"
crashsound
GOTO fin
ELSE
quad3(jx2 - 160, jy2) = 1
END IF
ELSE
IF quad4(jx2 - 160, jy2 - 100) = 1 THEN
END
LOCATE 10, 10
'PRINT "Boum2 !"
crashsound
GOTO fin
ELSE
quad4(jx2 - 160, jy2 - 100) = 1
END IF
END IF
END IF
PSET (jx2, jy2), 4

END IF

IF t = 10 THEN
s = INT((109 - 107 + 1) * RND + 107)
t = 0
END IF

SOUND s, .2
'INT ((limite supérieure - limite inférieure + 1)*RND + limite inférieure)

t = t + 1

LOOP


fin:
WHILE z = 0
press$ = INKEY$
IF press$ = "r" THEN GOTO debut
IF press$ = "q" THEN END
WEND

END

SUB apropos
SCREEN 0
COLOR 25
PRINT " A propos du jeu"
PRINT
COLOR 14
PRINT "Ceci est la version complete du jeu "
PRINT "Light Cycles. Il est programme en"
PRINT "Qbasic v. 4.5, et peut vous servir"
PRINT "comme exemple par exemple dans vos"
PRINT "propres programmes. "
PRINT
PRINT "Remerciements a Simon, pour son aide "
PRINT "et sa cooperation pour le programme. "
SLEEP
intronomusic
END SUB

SUB crashsound

x = 400

WHILE z = 0
x = x - 10
SOUND x, .4
IF x = 200 THEN
z = 1
END IF
WEND

x = 320
WHILE z = 1
SOUND x, .4
x = x - 10
IF x = 140 THEN
z = 2
END IF
WEND


x = 220
WHILE z = 2
SOUND x, .4
x = x - 10
IF x = 40 THEN
EXIT SUB
END IF
WEND


END SUB

SUB howtoplay
CLS
SCREEN 0
COLOR 25
PRINT " Instructions"
PRINT
COLOR 14
PRINT "Le but du jeu est de faire rentrer le"
PRINT "joueur adverse dans votre ligne, dans"
PRINT "sa propre ligne ou sur les murs pour "
PRINT "le battre. Si vous entrez en contact"
PRINT "avec votre ligne, vous serai mort. "
PRINT "Aussi, mefiez-vous toutefois des "
PRINT "pieges qui peuvent se former. Il est "
PRINT "facile de s'y faire prendre, juste "
PRINT "par manque d'attention. Le joueur 1 "
PRINT "se trouve a gauche en bleu, le joueur"
PRINT "2 est a droite en bleu. Il est tres "
PRINT "important de bien s'assurer que le "
PRINT "pave numerique soit active pour que "
PRINT "les commandes du joueur 2 puissent "
PRINT "bien fonctionner. "
SLEEP
intronomusic
END SUB

SUB intro
SCREEN 7
CLS

music1$ = "T160 MF O2 l8 c <g b-8 g b-8> c"
music2$ = "MF <b-8> c l2 c.. l4 e-8 "
music3$ = "MF l8 f c e-8 c e-8 f e-8 e l1f "
music4$ = "MF l8 g d l2 f+8 l4 g l2 f+8 p8 f f l16 e-8"
music5$ = "MB l16 >c< b- g b- g g- f <b-> c"
music6$ = "MB e- f g p16 f g b-> l1 c"
'music4$ = "l16 <c> b- g b- g g- f >b-< c e- f l16 g p16 f g b-> l1 c"


DO



press$ = INKEY$

IF m > 90 THEN
LOCATE 7, 12 'valeur 1:hauteur, valeur 2:position gauche droite
PRINT "°°°°°°°°°°°°°°°°°°"
END IF
IF m > 110 THEN
LOCATE 8, 12
PRINT "°±±±±±±±±±±±±±±±±°"
END IF
IF m > 130 THEN
LOCATE 9, 12
PRINT "°±²²²²²²²²²²²²²²±°"
END IF
IF m > 150 THEN
LOCATE 10, 12
PRINT "°±²LIGHT CYCLES²±°"
END IF
IF m > 170 THEN
LOCATE 11, 12
PRINT "°±²²²²²²²²²²²²²²±°"
END IF
IF m > 190 THEN
LOCATE 12, 12
PRINT "°±±±±±±±±±±±±±±±±°"
END IF
IF m > 210 THEN
LOCATE 13, 12
PRINT "°°°°°°°°°°°°°°°°°°"
c = INT((15 - 1 + 1) * RND + 1)
COLOR c
END IF

IF m > 240 THEN
PRINT " Programme par: Karl Leveille"
END IF

IF m > 250 THEN
LOCATE 16
PRINT "P => Faire une partie!"
END IF
IF m > 260 THEN
LOCATE 17
PRINT "C => commandes du clavier"
END IF
IF m > 270 THEN
LOCATE 18
PRINT "I => Instructions"
END IF
IF m > 280 THEN
LOCATE 19
PRINT "A => A propos du jeu"
END IF

IF press$ = "p" THEN
SOUND 400, 2
SOUND 500, 2
SOUND 600, 2
SOUND 790, 5
SLEEP 1
SOUND 500, 0
EXIT SUB
END IF

IF press$ = "c" THEN
CLS
SOUND 400, 2
keyboard
END IF

IF press$ = "i" THEN
CLS
SOUND 400, 2
howtoplay
END IF

IF press$ = "a" THEN
CLS
SOUND 400, 2
apropos
END IF

m = m + 1

IF m = 60 THEN

PLAY music1$
CLS
PLAY music2$

COLOR 1
LOCATE 10, 16
PRINT "KLgames"
PLAY music3$
CLS
LOCATE 10, 16
COLOR 1
PRINT "presents"
PLAY music4$
PLAY music5$
PLAY music6$
END IF

IF m > 300 THEN
m = 400
END IF
LOOP

END SUB

SUB intronomusic
CLS
SCREEN 7

press$ = INKEY$

IF m > 90 THEN
LOCATE 7, 12 'valeur 1:hauteur, valeur 2:position gauche droite
PRINT "°°°°°°°°°°°°°°°°°°"
END IF
IF m > 110 THEN
LOCATE 8, 12
PRINT "°±±±±±±±±±±±±±±±±°"
END IF
IF m > 130 THEN
LOCATE 9, 12
PRINT "°±²²²²²²²²²²²²²²±°"
END IF
IF m > 150 THEN
LOCATE 10, 12
PRINT "°±²LIGHT CYCLES²±°"
END IF
IF m > 170 THEN
LOCATE 11, 12
PRINT "°±²²²²²²²²²²²²²²±°"
END IF
IF m > 190 THEN
LOCATE 12, 12
PRINT "°±±±±±±±±±±±±±±±±°"
END IF
IF m > 210 THEN
LOCATE 13, 12
PRINT "°°°°°°°°°°°°°°°°°°"
c = INT((15 - 1 + 1) * RND + 1)
COLOR c
END IF

IF m > 240 THEN
PRINT " Programme par: Karl Leveille"
END IF

IF m > 250 THEN
LOCATE 16
PRINT "P => Faire une partie!"
END IF
IF m > 260 THEN
LOCATE 17
PRINT "C => commandes du clavier"
END IF
IF m > 270 THEN
LOCATE 18
PRINT "I => Instructions"
END IF
IF m > 280 THEN
LOCATE 19
PRINT "A => A propos du jeu"
END IF

IF press$ = "p" THEN
SOUND 400, 2
SOUND 500, 2
SOUND 600, 2
SOUND 790, 5
SLEEP 1
SOUND 500, 0
EXIT SUB
END IF

IF press$ = "c" THEN
CLS
SOUND 400, 2
keyboard
END IF

IF press$ = "i" THEN
CLS
SOUND 400, 2
howtoplay
END IF

IF press$ = "a" THEN
CLS
SOUND 400, 2
apropos
END IF
END SUB

SUB keyboard
CLS
SCREEN 0
COLOR 25
PRINT " Commandes du clavier"
COLOR 14
PRINT
PRINT " ***Joueur 1*** "
PRINT " haut "
PRINT " ÉÍ» "
PRINT " ºtº "
PRINT " ÉÍ»ÈͼÉÍ» "
PRINT " gaucheºfº ºhºdroite ÉÍ» "
PRINT " ÈͼÉÍ»Èͼ ºrº "
PRINT " ºgº Èͼ "
PRINT " Èͼ recommencer"
PRINT " bas "
PRINT
PRINT " ***Joueur 2*** "
PRINT " haut "
PRINT " ÉÍ» "
PRINT " º8º ÉÍ» "
PRINT " ÉÍ»ÈͼÉÍ» ºqº "
PRINT " gaucheº4º º6ºdroite Èͼ "
PRINT " ÈͼÉÍ»Èͼ quitter "
PRINT " º5º "
PRINT " Èͼ "
PRINT " bas "
SLEEP
intronomusic
END SUB


Haut
Citer
NeuhNeuh
Sujet du message : Re: Postez vos petits programmes pour DOS en QBasic
Publié : 18 juin 2009 10:57
Membre inscrit
Avatar de l’utilisateur
Hors-ligne
 
Messages : 240
Inscription : 04 juin 2009 00:00
 
J'avais une petite question :
Je sais qu'il est possible d'une façon ou d'une autre de récuperer le chemin d'accès de l'application QBASIC depuis une interruptions ou un autre truc.
Mais comment ont fait ? (curdir$ ne donne que le répertoire actif et non pas celle de l'executable)

_________________

[ img ]


Haut
Profil Citer
Pierreblinux
Sujet du message : Re: Postez vos petits programmes pour DOS en QBasic
Publié : 18 juin 2009 17:55
 
 
patch$ ou chems$ non? (c'est de memoire)


Haut
Citer
gm86
Sujet du message : Re: Postez vos petits programmes pour DOS en QBasic
Publié : 18 juin 2009 19:04
Membre inscrit
Avatar de l’utilisateur
Hors-ligne
 
Messages : 628
Inscription : 01 sept. 2008 19:07
 
Voilà l'extrait de la Bible PC :
Citation :
Int 21h, Fct 3Bh Défnir le sous-répertoire en cours DOS (> 1.0)

Cette fonction permet d'activer un sous-répertoire sur le périphérique spécifié.

Entrée :

AH = 3Bh
DS = Adresse de segment du chemin du sous-répertoire
DX = Adresse d'offset du chemin du sous-répertoire

Sortie :

Flag Carry =0 : Sous-répertoire indiqué devient le sous-répertoire en cours
Flag Carry =1 : Erreur, dans ce cas
AX = 3 : Chemin non trouvé

Remarques :

· Le chemin de sous-répertoire transmis est une chaîne ASCII terminée par un caractère de fin (code ASCII 0).
· Si le chemin de sous-répertoire comporte une désignation de périphérique, l'accès se fera sur le périphérique spécifié, sinon le sous-répertoire actuel sera modifié sur le périphérique actuel.
· Une erreur peut se produire si un élément du chemin n'existe pas.
· Le contenu des registres BX, CX, DX, SI, DI, BP, CS, DS, SS et ES n'est pas modifié par cette fonction.
Le problème en QBasic est qu'il faut convertir l'assembleur en code machine.
Ensuite, on utilise CALL ABSOLUTE.

Plus simple :
SHELL"cd > fichier"
Reste à ouvrir le fichier.



A 0597534.
Ce programme est excellent. Le jeu est simple mais amusant, l'introduction bien faite ainsi que les sons.
Il serait en revanche intéressant d'insérer des espaces dans le programme afin que le lecteur ne confonde pas les boucles. Du genre :
IF TANT > 50 THEN
  IF TANT = 100 THEN
    ...
  ELSE
    ...
  ENDIF 
ELSEIF TANT < 25
  IF TANT = 10 THEN
    ...
  ELSE
    ...
  ENDIF
ELSE
  ...
ENDIF 
Autre chose. Pour copier un programme sans transformer les caractères ASCII en ANSI, voici une astuce.
On renomme le programme .BAS en .TXT, lance WordPad, choisit Ouvrir, puis sélectionne Fichiers texte MS-DOS avant d'ouvrir le fichier en question.
Les caractères d'origine sont inchangés, il suffit de faire un copier-coller pour afficher ici.

Dernière modification par gm86 le 15 juil. 2012 19:40, modifié 1 fois.

_________________

C:\ONGRTLNS.W95


Haut
Profil Citer
0597534
Sujet du message : Re: Postez vos petits programmes pour DOS en QBasic
Publié : 18 juin 2009 21:58
 
 
:D Merci gm86 pour ton commentaire! Ça m'a pris quelques soirs et midis à l'école pour faire ce programme. La raison pourquoi j'ai ajouté intronomusic, c'est que lorsque le jeu démarre, bon il y a la musique qui joue, puis on arrive au menu principal mais lorsque j'allais dans les pages d'instructions par exemple commandes du clavier, j'appuie sur une touche pour en sortir, l'intro et la musique recommence. J'ai essayé tout plein de trucs, appliquer des variables, par exemple si tu as fais l'intro, laisse la variable X = 1, puis si une touche est appuyée pour retourner au menu principal ET QUE X=1, alors ne joue pas la musique... Mais en vain, par tous les moyens que j'essayais, ça rejouait toujours la musique :evil: ... C'est pourquoi, n'ayant plus de patience et ayant veillé jusqu'à 2h du mat un soir afin de régler ce problème, j'ai tout simplement créé le sub intronomusic, qui est identique au sub intro, sauf que celui-ci n'a pas de musique :wink: .


Haut
Citer
Afficher : Trier par : Ordre :
Répondre   Page 1 sur 5  [ 44 messages ]
Revenir à « Informatique des vieux systèmes » | Aller sur la page 1 2 3 4 5 »
Aller :