Toujours en qb
je cherche à faire une boucle qui va de -50 à 50 par pas de 2 ( ça je sais faire) mais je voudrais que quand celle ci arrive à 50 elle reparte à -50 et qu´on puisse l´arrêter en appuyant sur une touche.
Je pense que je dois pas etre loin mais j´y arrive pas alors bon si quelqu´un pouvait m´aider je saurais d´ou vient mon blem
Merci
dim T as string
dim I as integer
do while T=""
for I=-50 to 50 step 2
. ..
next I
T=inkey$
loop
c´est pas très bon, rajoutte au millieu de la boucle :
if inkey$<>"" then exit do
ha oui j´était pas pres de trouver.
Je n´avais jamais utilisé la commande exit.
Peut tu me dire à quoi elle peux servire d´autre et si tu as le courage me donner un exemle.
Je n´utilisais pas while mais until et c t à la fin de la boucle.
Je connais inkey$ ( bien que j´ai beaucoup de mal à l´utilisé meme si ça vient) mais que signifie les guillemets < >.
maintenat je t´écris ce que j´écrivais et j´aime
que tu me dise pourquoi ça ne marchait pas.
do
for i=-50 to 50 step 2
next
loop until len(inkey$) ( ct pour n´importe quelle touche que je voulais faire au debut)
ha j´ai essayé ce que tu as fais mais c pareil y´a un blem je vais te mettre le bout du code.
Le programme continu et il marque 0 dans le cercle.
Mais je peut aussi le stoper avant qu´il n´aille au bout mais c pareil il escris 0 dans le cercle.
Ce que je voudrais faire c que la boucle comme tu là deviner aille de -50 à 50 en pas de 2 et que quand elle arrive à 50 elle recommence et que quand je la stop en appuyant sur une touche supposons je la stop à 38, qu´il y´est ecris 38 dans le cercle.
Mais je veux également que le programme attende que j´appuis sur une touche avant de continuer.
En résumer: boucle
quand moi arrete appuyer sur touche
programme arreter boucle et continuer de lire la suite du programme
et écrire le nombre arreter dans la boucle dans le cercle.
COLOR 0
SOUND 131, 2
CIRCLE ( x, y), a
PAINT ( x, y)
SOUND 264, 2
SOUND 330, 2
SOUND 392, 2
COLOR 9
CIRCLE ( 311, 408), 25
PAINT ( 311, 409)
SLEEP 1
SOUND 392, 2
PAINT ( 311, 408), 0
CIRCLE ( 311, 408), 25
SLEEP 1
PRINT " le d‚compte des points invisible vient de commencer, appuyez sur 5 l´arreter"
DO WHILE t = " "
FOR i = -50 TO 50 STEP 2
IF INKEY$ < > " " THEN EXIT DO
NEXT i
t = INKEY$
LOOP
SOUND 440, 2
PAINT ( 311, 408)
SLEEP 1
SOUND 494, 2
PAINT ( 311, 408), 0
CIRCLE ( 311, 408), 25
SLEEP 1
SOUND 523, 2
SOUND 659, 2
SOUND 784, 2
LOCATE 26, 39
PRINT i
si tu veux on peux mettre ça à la suite de mon ptit prog , tu sais celuis avec les cercles.
ça roule le qBASIC Raiku ? ![]()
j´ai pas compris comment tu veux qu´il agisse...
le while c´est exactement le contraire de until :
until il faut qqch jusqu´a ce que la condition soit vrai, alors que while il l´a fait tant que la condition est vrai.
< > ce n´estpas des guillemets, c´est des signe plus petit ( <) et plus grand ( >) et quand tu les mets ensemble < > ca veut dire différend de.
mettre le while après le do plutot que après le loop ne change quasiment rien, ne t´en préocupe pas ( en gros, c´est que dans ton cas la boucle est exécuté au moins une fois, alors que dan le mien non).
pour le exit, il existe exit for et exit do ( plus exit function et sub mais oublie poyur l´instant)
en gros, quand tu es dans une boucle for, et qu´il croise exit for, il sort de la boucle.
Idem pour exit do, il sort d´une boucle do loop.
S´il y a plusieur boucle imbriqué, il sors de la plus imbriqué, mais il continue les autre.
Essaye de me décrire clairement ( ca veut dire que tu écrit ton essage doucement et QUE TU LE RELIS) ce que ton programme fait et ce que tu voudrais qu´il fasse, car là, je ne comprend pas du tout quel est ton problème.
CLS
SCREEN 12
PRINT " haut = 8"
PRINT " bas = 2"
PRINT " gauche = 4"
PRINT " droite = 6"
PRINT " action = 5"
PRINT " F1 = quitter"
COLOR 2
PRINT " appuyez sur une touche pour continuer"
DO
LOOP UNTIL LEN(INKEY$)
CLS
COLOR 9
DIM t AS STRING
DIM x AS LONG
DIM y AS LONG
DIM a AS LONG
DIM i AS LONG
x = 40
y = 60
a = 25
FOR cercleX = 40 TO 580 STEP 60
FOR cercleY = 60 TO 360 STEP 55
CIRCLE ( cercleX, cercleY), 25
SOUND cercleX + cercleY, 1
PAINT ( cercleX, cercleY)
NEXT
NEXT
LINE ( 15, 370)-(605, 372), 4, BF
COLOR 5
CIRCLE ( 40, 60), 25
DO
t$ = INKEY$
SELECT CASE t$
CASE " 8"
GOSUB haut:
CASE " 2"
GOSUB bas:
CASE " 4"
GOSUB gauche:
CASE " 6"
GOSUB droite:
CASE " 5"
GOSUB action:
END SELECT
LOOP UNTIL INKEY$ = CHR$(27)
END
haut:
CIRCLE ( x, y), a, 9
y = y - 55
IF y < 60 THEN y = y + 55
CIRCLE ( x, y), a
RETURN
bas:
CIRCLE ( x, y), a, 9
y = y + 55
IF y > 360 THEN y = y - 55
CIRCLE ( x, y), a
RETURN
gauche:
CIRCLE ( x, y), a, 9
x = x - 60
IF x < 40 THEN x = x + 60
CIRCLE ( x, y), a
RETURN
droite:
CIRCLE ( x, y), a, 9
x = x + 60
IF x > 580 THEN x = x - 60
CIRCLE ( x, y), a
RETURN
action:
COLOR 0
SOUND 131, 2
CIRCLE ( x, y), a
PAINT ( x, y)
SOUND 264, 2
SOUND 330, 2
SOUND 392, 2
COLOR 9
CIRCLE ( 311, 408), 25
PAINT ( 311, 409)
SLEEP 1
SOUND 392, 2
PAINT ( 311, 408), 0
CIRCLE ( 311, 408), 25
SLEEP 1
PRINT " le d‚compte des points invisible vient de commencer, appuyez sur 5 l´arreter"
DO WHILE t = " "
FOR i = -50 TO 50 STEP 2
IF INKEY$ < > " " THEN EXIT DO
NEXT i
t = INKEY$
LOOP
SOUND 440, 2
PAINT ( 311, 408)
SLEEP 1
SOUND 494, 2
PAINT ( 311, 408), 0
CIRCLE ( 311, 408), 25
SLEEP 1
SOUND 523, 2
SOUND 659, 2
SOUND 784, 2
LOCATE 26, 39
PRINT i
Et si tu le teste tu vas te rendre compte qu´au moment ou le cercle clignote en bas on peut en effet areter la boucle en appyant sur une touche mais si onppuie sur aucune touche le programme continue quand meme , et c ce que je veux pas.
Si tu ne comprend toujours pas dis le moi.
leprogramme continue à quoi ?
a faire bouger le cercle ? ça m´étonnerai...
excuse moi je n´ai pas eu le temps de toucher à l´odi cette semaine.
Donc oui le cercle continue à bouger.
Essaie si tu as le courage et tu verras.
C´est ça qui me gene parce que je ne comprend pas.
Allez dnob a fait la même chose :
C´est du QB ? Hou, c´est moche !
DO
t$ = INKEY$
SELECT CASE t$
CASE " 8"
GOSUB haut:
CASE " 2"
GOSUB bas:
CASE " 4"
GOSUB gauche:
CASE " 6"
GOSUB droite:
CASE " 5"
GOSUB action:
case chr$(27)
exit do
END SELECT
LOOP
tu en peut pas utiliser 2 inkey$ dans le même boucle sinon la moitié des appuie sur les touche passeront inapercu.
Il n´y a pas du tout le bug dont tu m´a parlé,
mais peut-être que tu devrai rendre le cercle du surlignage plus visible, la c´est vraiment dur de le voir.
Bon, je comprend pas du totu le but de ton programme, mais il n´a pas le bug que tu lui disait avoir.
Dashuhn : sans être désagréable avec raiku, c´est vrai que ce code est extremement moche, mais c´est pas que la faute au QB.
Raiku, ne te formalise pas de ce que je dit, c´est vrai que ce code n´est pas beau au sens qu´il pourrait être bien mieu écrit, mais pour un débutant, ce n´est pas évident et en progressant tu apprendra à mieu structuré tes programmes et à les rendre plus beau.
Sjuste ça
t$ = INKEY$
t=getch()
c´est plus joli ?
ou alors, c´est les petit $ que t´aime pas ?
La façon de faire avec getch() me semble plus compréhensible, question d´habitude.
Mais j´ai fait du QB, je sais pourquoi y´a ce dollar, je le comprends aussi pour avoir affiché une chaîne en ASM avec l´appel DOS qui justemment limite les chaînes par $, je sais que c´est une facilité de programmation MAINTENANT CA VA ARRETE DE TENERVER !
Hem, non sérieusement je trouve pas ça plus moche que le getch().
franchement...
entre getch() et inkey$ je trouve que c´estblanc bonnet et bonnet blanc...
( mais je crois que c´est ce que tu dit à la fin de ton message, mais j´était tellement énerver à ce moment là que j´ai plus trop compris ce que tu as écrit ( et puis, j´aime bien avoir le dernier mot...)
si tu veux dire que quelquechose est moche en QB, attaque toi plutot à circle
circle ( 50,50),50,1
C´est stupide comme syntaxe, ça répond à aucune règle, c´est horrible à analyser...
Ou pire encore qqch comme line ( 50,50)-(100,100),1,bf
on mélange des parenthèse, des arguments sans parenthèse, des signes bizarre des constante qui n´en sont pas ( BF n´a pas de valeurs)
sans compter les open etc...
Oui oui, QB c´est pas beau comme langage ( mais quand même...).
" mais j´était tellement énerver à ce moment là que j´ai plus trop compris ce que tu as écrit "
=> Putain si tu t´enerves pour ça...
Pis tout le reste ça me dit tellement peu de choses que je laisse tomber ( il est bien loin mon bonhome fait à coup de data qui bougeait en ´screen 12´)