Forum Liberty Basic France
• Index
Salut du matin,j'ai regardé dans la doc.Il y a bien un item "séquentiel" mais c'est assez brumeux. La question est: Peut on appeller,ouvrir,lire,de façon séquentielle (dans l'ordre de rangement de windows) les fichiers d'un dossier. Si quelqu'un a déja fait ça, je serais preneur pour un bout de code. Si cette opportunité n'existe pas encore,il est temps de la créer.J'en ai besoin !
<---La gueule du smiley!


____________________
Roro
Roro
Ta requète est tout aussi brumeuse
"L'ordre de rangement de windows" comme tu dis peut être la date, le nom, l'extension, etc...
Tout ça est parfaitement possible avec JB/LB.
Voici par exemple ce qu'a écrit Mark Parkinson en 2002, très court car il utilise la récursivité pour lire dans les sous-répertoires potentiels, et commenté en anglais bien sûr : ( mais ne le lance pas car il va tout de suite te lancer la recherche de tous les fichier *.bak sur ton disque C: )
Code VB :
Edité par cassiope01 Le 07/03/2012 à 16h35

"L'ordre de rangement de windows" comme tu dis peut être la date, le nom, l'extension, etc...
Tout ça est parfaitement possible avec JB/LB.
Voici par exemple ce qu'a écrit Mark Parkinson en 2002, très court car il utilise la récursivité pour lire dans les sous-répertoires potentiels, et commenté en anglais bien sûr : ( mais ne le lance pas car il va tout de suite te lancer la recherche de tous les fichier *.bak sur ton disque C: )
Code VB :
' Mark Parkinson ' 08/10/02 ' This program will list all the files in the whole directory structure ' which match the given file spec. A process called recursion is used. ' Feel free to use and adapt the program eg to sum the filespace used or ' delete files or rename files or move them. ' It is also easy to adapt the program to delete empty subdirectories. dim info$(10, 10) 'Ready for the files command. 'Note no backslash - added later on. placetohunt$="c:" thingtohuntfor$="*.bak" print "now listing all files in ";placetohunt$;" which match ";thingtohuntfor$ print call recurse placetohunt$, thingtohuntfor$ print print "finished" end sub recurse pathspec$,mask$ 'Put in the backslash separator. pathspec$=pathspec$+"\" files pathspec$, mask$, info$( filecount=val(info$(0, 0)) subdircount=val(info$(0, 1)) for i=1 to filecount filename$= pathspec$+info$(i, 0) filesize$= info$(i, 1) datestamp$=info$(i, 2) print filename$;" ";filesize$ next i 'Arrays cannot be local to subs so the subdirs 'are all put in a string separated by *'s which 'can't occur in filenames. list$="" for i=1 to subdircount list$=list$+pathspec$+info$(f + i, 1)+"*" next i 'The subdirs are now pulled out of the (local) 'string one at a time and the sub is called again. 'This process where a sub calls itself 'is called recursion. while list$<>"" p=instr(list$,"*") p$=left$(list$,p-1) call recurse p$,mask$ list$=mid$(list$,p+1) wend end sub
Edité par cassiope01 Le 07/03/2012 à 16h35
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Web
Bonjour Cassiope.Dis,tu en as d'autres des textes comme celui de Mark Parkinson ?Si oui,cela vaudrait le coup d'en faire faire un pack et de le mettre à la disposition des pataugeurs comme moi.Tu me parle de 'Tetris'.Je regrette de faire controverse,mais tetris est un jeux de hazard et adresse.Ton jeux de billes en est de hazard et observation.Celui que je décris est de hazard et stratégie.Tout est dans la nuance! .J'essaye d'intégrer au texte de Parkinson une sub de copie, je me casse les dents sur le nom de chemin (synthaxe).S'il te plait, encore une réponse: comment on 'ouvre' un fichier (pas dans une fenetre"Liberty",mais comme 's'execute' le: help.chm avec ton éditeur?) Gros merci pour ton temps et ta patience.
Edité par Roland Le 08/03/2012 à 18h44
Edité par Roland Le 08/03/2012 à 18h44
____________________
Roro
Roro
Vois la commande 'RUN' dans l'aide de JB.
Mais RUN en lui-même n'execute rien tout seul.
Il lance le logiciel externe à JB que tu lui indiques, qui utilisera le fichier que tu lui donnes en paramètre...
Désolé Roland mais sache que je ne comprend que très peu ce que tu veux faire, tant tes explications dans tous tes posts sont tarabiscotées, compliquées, et partent dans tous les sens...
On trouve énormément de sources sur le forum officiel de JB : ICI
C'est de là que vient le bout de code de Mark par exemple.
Bien sûr il faut un peu comprendre l'anglais, mais je m'en sort le plus souvent avec le traducteur de google...
Le forum de JB dispose aussi d'une énorme base de codes en tout genre : leurs archives.
Edité par cassiope01 Le 08/03/2012 à 21h11
Mais RUN en lui-même n'execute rien tout seul.
Il lance le logiciel externe à JB que tu lui indiques, qui utilisera le fichier que tu lui donnes en paramètre...
Désolé Roland mais sache que je ne comprend que très peu ce que tu veux faire, tant tes explications dans tous tes posts sont tarabiscotées, compliquées, et partent dans tous les sens...
On trouve énormément de sources sur le forum officiel de JB : ICI
C'est de là que vient le bout de code de Mark par exemple.
Bien sûr il faut un peu comprendre l'anglais, mais je m'en sort le plus souvent avec le traducteur de google...
Le forum de JB dispose aussi d'une énorme base de codes en tout genre : leurs archives.
Edité par cassiope01 Le 08/03/2012 à 21h11
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Web
Ca y est, j'ai compris. Si je veux ouvrir un fichier texte il faut executer "bloc note".Et pour les htm un navigateur. Et ben heureusement que tu donne des réponses claires à des questions obscures.Je vois que ce qui me parraissait simple, ne l'est pas.Mais cela ne m'empechera pas d'avancer.Je te remercie de ta patience.
____________________
Roro
Roro
Salut Cassiope.Merci pour les deux liens.J'ai trouvé un tétris bien commenté, j'attaque mon jeux en confiance. La traduction de Liberty avance bien.Par contre pour celle de Just Basic: "Maccache houalou".C'est un putain de fichier compilé.Ce qui justifie ton éditeur, dont je ne comprennais pas le besoin. Peut tu me dire pourquoi tu utilise 'Just B' plutot que 'Liberty' qui a la complétion, et une aide trés facile à modifier. Quel avantage ? A la prochaine.
____________________
Roro
Roro
Je suis beaucoup sur le forum JB dont je t'ai donné le lien. Son grand frère, le forum LB me dépasse.
Si les programmes écrits en JB fonctionne à coup sûr avec LB, l'inverse n'est pas forcément vrai.
Donc je reste sur JB et à par quelques trucs comme l'accès direct aux blocks de code dans l'éditeur LB (qui est très pratique j'en conviens), ou des commandes comme eval$() qui n'existent pas avec JB, je n'ai certainement pas atteind ses limites...
C'est pas un dictionnaire que je voulais faire mais plutôt un aide mémoire des syntaxes des commandes JB en français, et quelques exemples éventuellement.
Tu verras que les programmeurs français en JB/LB qui viennent sur ce forum francophone peuvent se compter sur les doigts d'une main.
J'ai laissé tombé.
Et si tu décrivais ton jeu de manière simple mais complète ?
Existe-t-il déjà sur le net ?
@+
Edité par cassiope01 Le 09/03/2012 à 19h31
Si les programmes écrits en JB fonctionne à coup sûr avec LB, l'inverse n'est pas forcément vrai.
Donc je reste sur JB et à par quelques trucs comme l'accès direct aux blocks de code dans l'éditeur LB (qui est très pratique j'en conviens), ou des commandes comme eval$() qui n'existent pas avec JB, je n'ai certainement pas atteind ses limites...
C'est pas un dictionnaire que je voulais faire mais plutôt un aide mémoire des syntaxes des commandes JB en français, et quelques exemples éventuellement.
Tu verras que les programmeurs français en JB/LB qui viennent sur ce forum francophone peuvent se compter sur les doigts d'une main.
J'ai laissé tombé.
Et si tu décrivais ton jeu de manière simple mais complète ?
Existe-t-il déjà sur le net ?
@+
Edité par cassiope01 Le 09/03/2012 à 19h31
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Web
Voici un autre Tétris qui ne fait que 11.2 Ko, 380 lignes dont beaucoup de commentaires !
Code VB :
Edité par cassiope01 Le 09/03/2012 à 18h49
Code VB :
'We have a 250x500 pixel playing area, tets are made up of four 'sprites each of 25x25 pixels. Tetdata() holds the position of 'each of those sprites for each tet in each particular orientation 'as an offset from the top left corner. Rotation simply means 'redrawing the four sprites at their new offsets. 'The state of play is held in board(col,row) There is an extra 'row that defines the floor. 'The board is drawn with a combination of sprite 'drawing and bmp manipulation. Sprites are used while the 'tet falls. When it has reached it's resting place the 'board is grabbed as bmp slices, redrawn without full slices 'then grabbed as a single large bmp which becomes the background 'for the next tet to fall down. nomainwin WindowWidth = 400 WindowHeight = 600 UpperLeftX = Int((DisplayWidth - WindowWidth) / 2) UpperLeftY = Int((DisplayHeight - WindowHeight) / 2) button #main.play, "New", [play], UL, 270,100,100,20 button #main.pause, "Pause", [pause], UL, 270,200,100,20 button #main.help, "Help", [help], UL, 270,300,100,20 graphicbox #main.g, 10, 20, 252, 502 textbox #main.score, 270, 40, 100,20 statictext #main.t, "Score",270,20, 100,20 Open "Tetris" for Window as #main #main, "Trapclose [exit]" dim tetdata(360) dim board(10,21) gosub [setup] wait [play] 'set up board redim board(10,21) for n= 1 to 10 board(n,21)=1 next 'set current tet off if tet>0 then for n= 1 to 4 #main.g "spritevisible s";str$(tet);str$(n);" off" next end if 'clear the background #main.g "background blue" 'set the variables drop=.01 'drop speed .01 - 1.0 temps = 500 tet=int(rnd(0)*7)+1 'tet shape IJLOSTZ 1-7 teto=1 'tet orientation 1=N 2=E 3=S 4=W tetx=int(rnd(0)*4)*25+50 'tet starting x 10x25 pixel columns tety=-25 'tet starting y score=0 #main.score score 'add the x and y offsets for the tet to tetx and tety gosub [addoffsets] 'make it visible for n= 1 to 4 #main.g "spritevisible s";str$(tet);str$(n);" on" next 'set up an event to look for key presses #main.g "when characterInput [changemovement]" #main.g "setfocus" [move] 'add the x and y offsets for each tet in it's current orientation gosub [addoffsets] 'position the four sprites at their offsets from tetx,tety #main.g "spritexy s";str$(tet);"1 ";x1;" ";y1 #main.g "spritexy s";str$(tet);"2 ";x2;" ";y2 #main.g "spritexy s";str$(tet);"3 ";x3;" ";y3 #main.g "spritexy s";str$(tet);"4 ";x4;" ";y4 'get the columns and rows the tets occupy bx1=int(x1/25)+1 bx2=int(x2/25)+1 bx3=int(x3/25)+1 bx4=int(x4/25)+1 by1=int(y1/25)+1 by2=int(y2/25)+1 by3=int(y3/25)+1 by4=int(y4/25)+1 'check if any tet is on the floor, if so stop falling if board(bx1,by1+1)=1 or board(bx2,by2+1)=1 or board(bx3,by3+1)=1 or board(bx4,by4+1)=1 then 'check if any tet is on the top row if by1=1 or by2=1 or by3=1 or by4=1 then [gameover] 'fill in the board array with new positions board(bx1,by1)=1 board(bx2,by2)=1 board(bx3,by3)=1 board(bx4,by4)=1 'draw the tets so we can capture them #main.g "drawsprites" 'grab the board in 20 bmp slices for by=1 to 20 #main.g "getbmp bak";str$(by);" 0 ";by*25-25;" 250 25" next 'now redraw the board in slices 'remove slices that are full bypos=20 bmpslice=20 while bypos>0 'sum the tets in the row tot=0 for bx= 1 to 10 tot=tot+board(bx,bypos) next 'draw incomplete rows if tot<>0 and tot<10 then #main.g "drawbmp bak";str$(bmpslice);" 0 ";bypos*25-25 bypos=bypos-1 bmpslice=bmpslice-1 end if 'remove completed rows if tot=10 then 'score it score=score+100*(21-bypos) #main.score score 'compress the board array for z=bypos to 1 step -1 for f=1 to 10 board(f,z)=board(f,z-1) next next bmpslice=bmpslice-1 end if 'blank out empty rows if tot=0 then #main.g "drawbmp bak";str$(1);" 0 ";bypos*25-25 bypos=bypos-1 end if wend 'grab the new background #main.g "getbmp bak 0 0 250 500" #main.g "background bak" 'make the old sprite invisible for n= 1 to 4 #main.g "spritevisible s";str$(tet);str$(n);" off" next 'choose next tet at random tet = int(rnd(0)*7+1) 'return drop to old speed if olddrop<>0 then drop = olddrop : olddrop=0 'make the new sprite visible for n= 1 to 4 #main.g "spritevisible s";str$(tet);str$(n);" on" next tety=-25 tetx=int(rnd(0)*4)*25+50 end if 'no tet is on the floor so keep falling tety=tety+drop #main.g "drawsprites" 'check for keyboard input diverting us to [changemovement] scan ' call paus temps goto [move] [pause] if pause then pause=0 #main.g "when characterInput [changemovement]" #main.g "setfocus" goto [move] else pause=1 ' #main.g "when characterInput " wait end if [help] h$="Game Controls";chr$(13);"Use left and right to change column,";chr$(13) h$=h$+"up to rotate and Spc for a fast drop";chr$(13) h$=h$+"+ and - reduces or increases speed";chr$(13) notice h$ wait [gameover] notice "Game Over ";score wait [changemovement] w$=Inkey$ key = asc(right$(w$,1)) 'allow left and right movement 'if no tets are on the same rows if key = _VK_LEFT or key = _VK_RIGHT then tot=0 for bx= 1 to 10 tot=tot+board(bx,by1+1) tot=tot+board(bx,by2+1) tot=tot+board(bx,by3+1) tot=tot+board(bx,by4+1) next if key = _VK_RIGHT and tetx+w<250 and tot=0 then tetx=tetx+25 if key = _VK_LEFT and tetx>=25 and tot=0 then tetx=tetx-25 end if ' rotate the tet through its four orientations if key = _VK_UP then teto=teto+1 if teto>4 then teto=1 'reposition tety if height increases oldh=h gosub [addoffsets] ' tety=tety-abs(oldh-h) if tety<0 then tety =0 'reposition tetx if width beyond wall if tetx+w>250 then tetx=250-w end if end if 'drop fast if key = _VK_DOWN then olddrop=drop drop=1 end if if lower$(w$) = "p" then [pause] 'speed up or slow the drop if w$ = "1" then drop=drop+.01 if w$ = "0" then drop=drop-.01 if drop<.01 then drop =.01 if drop>1 then drop = 1 goto [move] sub paus temp t=time$("ms") t2=t while t2<t+temp t2=time$("ms") wend end sub [addoffsets] pos=tet*40+teto*10 x1=tetx+tetdata(pos+0) x2=tetx+tetdata(pos+2) x3=tetx+tetdata(pos+4) x4=tetx+tetdata(pos+6) y1=tety+tetdata(pos+1) y2=tety+tetdata(pos+3) y3=tety+tetdata(pos+5) y4=tety+tetdata(pos+7) w=tetdata(pos+8) h=tetdata(pos+9) return [setup] 'read tet data for t=1 to 7 'tet IJLOSTZ for o=1 to 4 'teto 1=N 2=E 3=S 4=W read x1 read y1 read x2 read y2 read x3 read y3 read x4 read y4 read w read h pos=t*40+o*10 tetdata(pos+0)=x1 tetdata(pos+1)=y1 tetdata(pos+2)=x2 tetdata(pos+3)=y2 tetdata(pos+4)=x3 tetdata(pos+5)=y3 tetdata(pos+6)=x4 tetdata(pos+7)=y4 tetdata(pos+8)=w tetdata(pos+9)=h next o next t 'draw the sprite bmps #main.g "down ; fill black" #main.g "place 0 25" for n= 1 to 25 #main.g "color ";n*10;" 255 255" #main.g "box ";n;" ";n+25 #main.g "color darkgray ; box 25 50" next #main.g "getbmp s1 0 0 25 50" for n= 1 to 25 #main.g "color 255 ";n*10;" 255" #main.g "box ";n;" ";n+25 #main.g "color darkgray ; box 25 50" next #main.g "getbmp s2 0 0 25 50" for n= 1 to 25 #main.g "color 255 255 ";n*10 #main.g "box ";n;" ";n+25 #main.g "color darkgray ; box 25 50" next #main.g "getbmp s3 0 0 25 50" for n= 1 to 25 #main.g "color ";n*10;" ";n*10;" 255" #main.g "box ";n;" ";n+25 #main.g "color darkgray ; box 25 50" next #main.g "getbmp s4 0 0 25 50" for n= 1 to 25 #main.g "color 255 ";n*10;" ";n*10 #main.g "box ";n;" ";n+25 #main.g "color darkgray ; box 25 50" next #main.g "getbmp s5 0 0 25 50" for n= 1 to 25 #main.g "color ";n*10;" 255 ";n*10 #main.g "box ";n;" ";n+25 #main.g "color darkgray ; box 25 50" next #main.g "getbmp s6 0 0 25 50" for n= 1 to 25 #main.g "color ";n*10;" ";n*10;" ";n*10 #main.g "box ";n;" ";n+25 #main.g "color darkgray ; box 25 50" next #main.g "getbmp s7 0 0 25 50" 'add the sprites for t = 1 to 7 for o = 1 to 4 #main.g "addsprite s";str$(t);str$(o);" s";str$(t) #main.g "spritevisible s";str$(t);str$(o);" off" next o next t 'add background #main.g "fill blue" #main.g "getbmp blue 0 0 250 500" #main.g "background blue" return 'I data 0,0,25,0,50,0,75,0,100,25 data 0,0,0,25,0,50,0,75,25,100 data 0,0,25,0,50,0,75,0,100,25 data 0,0,0,25,0,50,0,75,25,100 'J data 0,0,25,0,50,0,50,25,75,50 data 25,0,25,25,25,50,0,50,50,75 data 0,0,0,25,25,25,50,25,75,50 data 0,0,25,0,0,25,0,50,50,75 'L data 0,0,25,0,50,0,0,25,75,50 data 0,0,25,0,25,25,25,50,50,75 data 0,25,25,25,50,25,50,0,75,50 data 0,0,0,25,0,50,25,50,50,75 'O data 0,0,25,0,0,25,25,25,50,50 data 0,0,25,0,0,25,25,25,50,50 data 0,0,25,0,0,25,25,25,50,50 data 0,0,25,0,0,25,25,25,50,50 'S data 0,25,25,0,25,25,50,0,75,50 data 0,0,0,25,25,25,25,50,50,75 data 0,25,25,0,25,25,50,0,75,50 data 0,0,0,25,25,25,25,50,50,75 'T data 0,0,25,0,50,0,25,25,75,50 data 0,25,25,0,25,25,25,50,50,75 data 0,25,25,25,25,0,50,25,75,50 data 0,0,0,25,0,50,25,25,50,75 'Z data 0,0,25,0,25,25,50,25,75,50 data 25,0,0,25,25,25,0,50,50,75 data 0,0,25,0,25,25,50,25,75,50 data 25,0,0,25,25,25,0,50,50,75 [exit] Close #main end
Edité par cassiope01 Le 09/03/2012 à 18h49
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Web
Resalut,j'ai fait plusieurs organigrames .Mais j'ai du mal.Je viens de la programation séqentielle ou les choses se déroule de façon linéaire,Je ne comprend pas encore trés bien comment fonctionnent vos programmes.j'écris des trucs qui réagissent de façon totalement imprévue pour moi. Je ne lacherai pas prise, mais c'est sur que que je vais raler.Le jeu était sur PS2. Si il n'y a pas grand monde ici c'est à cause de l'aide en anglais,pondue par par des gens que je qualifierai de pas trés charitables.Regarde donc l'exemple donné pour eval$ sur LB. Il y a de quoi décourager le plus hardi. Et le reste est à l'avenant.Tu ne va pas tarder à me voir chez les anglais.Bon W.E.
____________________
Roro
Roro
• Index
1 Utilisateur en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne : Aucun membre connecté
Utilisateur en ligne : Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie