CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

ces satanées boucles

raiku
raiku
Niveau 8
18 septembre 2004 à 18:55:51

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

dnob700
dnob700
Niveau 10
18 septembre 2004 à 19:23:59

dim T as string
dim I as integer

do while T=""
for I=-50 to 50 step 2
. ..
next I
T=inkey$
loop

dnob700
dnob700
Niveau 10
18 septembre 2004 à 19:25:12

c´est pas très bon, rajoutte au millieu de la boucle :

if inkey$<>"" then exit do

raiku
raiku
Niveau 8
18 septembre 2004 à 20:41:01

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)

raiku
raiku
Niveau 8
18 septembre 2004 à 20:52:35

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.

raiku
raiku
Niveau 8
18 septembre 2004 à 20:54:28

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.

gollumkawder
gollumkawder
Niveau 10
18 septembre 2004 à 20:59:30

ça roule le qBASIC Raiku ? :ok:

dnob700
dnob700
Niveau 10
18 septembre 2004 à 22:47:39

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.

raiku
raiku
Niveau 8
20 septembre 2004 à 18:06:44

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

raiku
raiku
Niveau 8
20 septembre 2004 à 18:08:34

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.

dnob700
dnob700
Niveau 10
20 septembre 2004 à 18:26:10

leprogramme continue à quoi ?

a faire bouger le cercle ? ça m´étonnerai...

raiku
raiku
Niveau 8
23 septembre 2004 à 19:05:29

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.

DasHuhn
DasHuhn
Niveau 10
23 septembre 2004 à 19:09:52

Allez dnob a fait la même chose :

C´est du QB ? Hou, c´est moche !

dnob700
dnob700
Niveau 10
23 septembre 2004 à 21:57:13

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.

DasHuhn
DasHuhn
Niveau 10
23 septembre 2004 à 21:59:04

Sjuste ça

t$ = INKEY$

dnob700
dnob700
Niveau 10
23 septembre 2004 à 21:59:47

t=getch()

c´est plus joli ?

dnob700
dnob700
Niveau 10
23 septembre 2004 à 22:10:37

ou alors, c´est les petit $ que t´aime pas ?

DasHuhn
DasHuhn
Niveau 10
23 septembre 2004 à 22:15:21

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().

dnob700
dnob700
Niveau 10
23 septembre 2004 à 22:19:52

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...).

DasHuhn
DasHuhn
Niveau 10
23 septembre 2004 à 22:22:54

" 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´)

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment