Forum Liberty Basic France
• Index
Un ancien jeu,..remanié entre la poire et le fromage.susceptible de modifications ou "updates" LoL
Chutes.zip
Cassiope, il faudra que tu dise si tu veux que ton nom figure dans le code...Pour si Bill Gates veux acheter les droits
Chutes.zip
Cassiope, il faudra que tu dise si tu veux que ton nom figure dans le code...Pour si Bill Gates veux acheter les droits

____________________
Roro
Roro
Tant que tu mets le lien vers ton post d'origine.
Deux trois trucs qui ne vont pas dans ton prog si tu permets :
1) Ne jamais recharger le fichier BMP du disque à chaque fois que tu veux l'utiliser.
LOADBMP "name", "filename.bmp" charge une copie locale du fichier filename.bmp dans un espace mémoire que JB se réserve, et lui affecte "name".
Tu dois le faire une seule fois, en général en début de code.
Ensuite, dans le code, c'est "name" que tu dois utiliser, et autant de fois que tu veux, tu peux même en remplir l'écran si tu veux, ça ne charge pas plus la mémoire.
D'ailleurs, dans [quit], ne pas oublier de vider cette mémoire avec tous les unloadbmp "name" qui vont bien...!
2) A chaque fois que tu changes les murs ou les billes, tu relances [new] : c'est pourtant pas le but de ces boutons : il y en a déjà un qui fait ça !
Pourquoi ne pas simplement reparcourir la grille et réafficher la bonne image au bon endroit, sans toucher au jeu en cours ?
La sub drawRow r dessine une ligne entière avec les images correspondantes aux contenus de cell(x,y).
Il te suffit de l'utiliser dans une petite boucle de 8 lignes, et ça redessinera tout en fonction des images courantes sélectionnées avec les boutons.
3) si je puis me permettre, les traits blancs aux bords droit et bas de certaines billes ne font pas très joli
4) pour la version rnd tu n'as pas pris la bonne version...
voilà m'sieur.
@+
Edité par cassiope01 Le 12/07/2012 à 14h16
Deux trois trucs qui ne vont pas dans ton prog si tu permets :
1) Ne jamais recharger le fichier BMP du disque à chaque fois que tu veux l'utiliser.
LOADBMP "name", "filename.bmp" charge une copie locale du fichier filename.bmp dans un espace mémoire que JB se réserve, et lui affecte "name".
Tu dois le faire une seule fois, en général en début de code.
Ensuite, dans le code, c'est "name" que tu dois utiliser, et autant de fois que tu veux, tu peux même en remplir l'écran si tu veux, ça ne charge pas plus la mémoire.
D'ailleurs, dans [quit], ne pas oublier de vider cette mémoire avec tous les unloadbmp "name" qui vont bien...!
2) A chaque fois que tu changes les murs ou les billes, tu relances [new] : c'est pourtant pas le but de ces boutons : il y en a déjà un qui fait ça !
Pourquoi ne pas simplement reparcourir la grille et réafficher la bonne image au bon endroit, sans toucher au jeu en cours ?
La sub drawRow r dessine une ligne entière avec les images correspondantes aux contenus de cell(x,y).
Il te suffit de l'utiliser dans une petite boucle de 8 lignes, et ça redessinera tout en fonction des images courantes sélectionnées avec les boutons.
3) si je puis me permettre, les traits blancs aux bords droit et bas de certaines billes ne font pas très joli

4) pour la version rnd tu n'as pas pris la bonne version...
voilà m'sieur.
@+
Edité par cassiope01 Le 12/07/2012 à 14h16
____________________
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
Ton code multi murs & billes :
Code VB :
Edité par cassiope01 Le 12/07/2012 à 13h03
Code VB :
'http://libertybasic.fr/forum/topic-162-1+code-en-cours-de-defrichage.php 'http://libertybasic.fr/forum/topic-163+chutes.php nomainwin GLOBAL ncx, ncy, dc, mm, bb global ro, di, oldro, oldi, coup ncx = 16 ' nbr of cells X ncy = 9 ' nbr of cells Y dc = 42 ' size of a cell in pixels MapWidth = (ncx+2)*dc+int(dc/ncx) MapHeight = 378 ' (ncy)*dc+int(dc/ncy) '378 WindowWidth = MapWidth + 65 WindowHeight = MapHeight + 75 ' 498 ' 75 UpperLeftX = (DisplayWidth-WindowWidth) / 3 UpperLeftY = (DisplayHeight-WindowHeight) / 2 ' mois$ = "January February March April May June July August September October November December" mois$ = "Janvier Février Mars Avril Mai Juin Juillet Août Septembre Octobre Novembre Décembre" ' french today$ = date$("mm/dd/yyyy") j = date$(today$) ' jsem$ = word$("Tuesday Wednesday Thursday x Friday Saturday x Sunday Monday",int((j/7-int(j/7))*10)+1) jsem$ = word$("Mardi Mercredi Jeudi x Vendredi Samedi x Dimanche Lundi",int((j/7-int(j/7))*10)+1) ' french date$ = jsem$+" "+mid$(today$,4,2)+" "+word$(mois$, val(today$))+" "+right$(today$,4)+" "+left$(time$(),5) DIM cell(ncx,ncy) button #w.bi "Bille", [bi], UL, 40, 5, 60, 25 button #w.mu "Mur", [mu], UL, 120, 5, 60, 25 statictext #w.txt "Jeu",230,10,60,30 button #w.ni "Niveau: 1", [niv], UL, 330, 5, 60, 25 statictext #w.tt "Triche", 40+17*dc, 40+(8*dc)+7,50,20 graphicbox #w.map, 5+dc, 40, MapWidth-2*dc, MapHeight button #w.bt11 "", boutons, UL, 775, 44+(1*dc), dc, dc-10 ' à droite button #w.bt21 "", boutons, UL, 775, 44+(2*dc)+1, dc, dc-10 button #w.bt31 "", boutons, UL, 775, 44+(3*dc)+2, dc, dc-10 button #w.bt41 "", boutons, UL, 775, 44+(4*dc)+3, dc, dc-10 button #w.bt51 "", boutons, UL, 775, 43+(5*dc)+4, dc, dc-10 button #w.bt61 "", boutons, UL, 775, 43+(6*dc)+5, dc, dc-10 button #w.bt71 "", boutons, UL, 775, 41+(7*dc)+6, dc, dc-10 button #w.bt81 "", boutons, UL, 775, 54+(8*dc)+7, dc, 20 ' 775, 46+(8*dc)+7, dc, dc-10 button #w.bt12 "", boutons, UL, 9+17*dc, 44+(1*dc), dc, dc-10 ' à gauche button #w.bt22 "", boutons, UL, 9+17*dc, 44+(2*dc)+1, dc, dc-10 button #w.bt32 "", boutons, UL, 9+17*dc, 44+(3*dc)+2, dc, dc-10 button #w.bt42 "", boutons, UL, 9+17*dc, 44+(4*dc)+3, dc, dc-10 button #w.bt52 "", boutons, UL, 9+17*dc, 43+(5*dc)+4, dc, dc-10 button #w.bt62 "", boutons, UL, 9+17*dc, 43+(6*dc)+5, dc, dc-10 button #w.bt72 "", boutons, UL, 9+17*dc, 41+(7*dc)+6, dc, dc-10 button #w.bt82 "", boutons, UL, 9+17*dc, 54+(8*dc)+7, dc, 20 ' 9+17*dc, 46+(8*dc)+7, dc, dc-10 button #w.new "New",[new],UL,MapWidth-20,6,60,27 OPEN " TEST Chute(s)... "+space$(15)+date$ for window_nf as #w 'graphics_nf_nsb #w.map "trapclose [quit]" #w.map, "setfocus" #w.map "down; backcolor black; fill black" #w.map "getbmp p0 0 0 ";dc;" ";dc ' empty cell for deleting #w.new "!font Arial 12 bold" for bt = 1 to 16 btn$ = "#w.bt"+word$("11 21 31 41 51 61 71 81 12 22 32 42 52 62 72 82",bt) #btn$ "!font Arial 16 bold" if bt<9 then #btn$ ">" else #btn$ "<" next for im = 1 to 6 ' chargement en mémoire des fichiers BMP qui pourront ensuite être utilisés. loadbmp "mur";im, "Mur";im;".bmp" loadbmp "bille";im, "Bille";im;".bmp" next bb=4: mm=5: niv=1 [niv] niv=niv+1 if niv=3 then niv=1 #w.ni, "Niveau: ";niv goto [new] [new] print #w.txt, "Jeu N°:0": coup=0 print #w.bi, "Bille: ";bb print #w.mu, "Mur: ";mm if niv=1 then RESTORE [niveau1] if niv=2 then RESTORE [niveau2] for y=1 to ncy for x=1 to ncx read val ' read ne peut pas affecter directement une var. tableau. cell(x,y) = val next call drawRow y next call fall ' première chute dès la mise en place WAIT sub fall ' gère toutes les chutes potentielles dans toute la grille for cy = ncy-1 to 1 step -1 ' en partant du bas bien sûr ! for cx = 1 to ncx by = cy while by+1 <= ncy if cell(cx,by) = 2 and cell(cx,by+1) = 0 then cell(cx,by) = 0 #w.map "drawbmp p0 ";(cx-1)*dc;" ";(by-1)*dc cell(cx,by+1) = 2 #w.map "drawbmp bille";bb;" ";(cx-1)*dc;" ";by*dc end if by = by + 1 wend next next #w.map "flush; discard" end sub [bi] ' change bille bb=bb+1 if bb =6 then bb=1 #w.bi, "Bille: ";bb for y = 1 to ncy :call drawRow y :next wait [mu] ' change mur mm=mm+1 if mm =6 then mm=1 #w.mu, "Mur: ";mm for y = 1 to ncy :call drawRow y :next wait sub boutons handle$ ' décalage d'une ligne en fonction du bouton pressé ' les extrémités reviennent de l'autre côté... row = val(mid$(handle$,6,1))+1 'extraction de la ligne grace aux noms des boutons (judicieusement nommés ;) ) dir = val(mid$(handle$,7,1)) 'et extraction du sens ro=row-1: di=dir if olro<>0 or oldi<>0 then ' secur premier coup han$ = "#w.bt" + STR$(oldro)+STR$(oldi) #han$, "!enable" 'réactive bouton end if if dir = 1 then ' vers la droite temp = cell(ncx,row) for x=ncx to 2 step -1 cell(x,row) = cell(x-1,row) next cell(1,row) = temp else ' vers la gauche temp = cell(1,row) for x=1 to ncx-1 cell(x,row) = cell(x+1,row) next cell(ncx,row) = temp end if call drawRow row call fall hand$ = "#w.bt" + STR$(ro)+STR$(di) print #hand$, "!disable" ' désactive bouton oldro=ro: oldi=di 'memorise ligne direction coup=coup+1 print #w.txt, "Jeu N°:";coup end sub ' c'est ici que le prog attend le coup suivant sub drawRow r ' dessine le contenu d'une ligne for x=1 to ncx select case cell(x,r) case 0 :#w.map "drawbmp p0 ";(x-1)*dc;" ";(r-1)*dc case 1 :#w.map "drawbmp mur";mm;" ";(x-1)*dc;" ";(r-1)*dc case 2 :#w.map "drawbmp bille";bb;" ";(x-1)*dc;" ";(r-1)*dc end select next end sub [niveau1] data 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 ' 2 = boule, 1 = mur, 0 = trou data 0,1,1,1,0,1,1,1,1,0,1,1,1,0,1,1 data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1 data 0,1,1,1,0,1,0,1,0,1,0,1,0,1,1,1 data 1,1,0,1,1,1,1,0,1,0,1,1,1,0,1,1 data 0,1,1,1,1,0,1,1,0,1,0,1,1,1,1,1 data 1,0,1,1,0,1,1,0,1,1,1,1,0,1,1,1 data 0,1,1,0,1,1,0,1,1,1,0,1,1,1,0,1 data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 [niveau2] data 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 ' 2 = boule, 1 = mur, 0 = trou data 1,1,0,1,1,0,1,1,0,1,1,0,1,1,1,1 data 1,1,1,0,1,1,1,0,1,1,1,1,1,0,1,1 data 1,0,1,1,1,0,1,1,1,1,1,0,1,1,1,1 data 1,1,0,0,1,1,1,0,1,0,1,1,1,1,0,1 data 1,1,0,1,1,0,1,1,1,1,0,1,1,1,1,1 data 1,0,1,1,0,1,1,0,1,1,1,1,0,1,1,1 data 1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1 data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 [quit] for im = 1 to 6 unloadbmp "mur";im unloadbmp "bille";im next close #w end wait
Edité par cassiope01 Le 12/07/2012 à 13h03
____________________
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
Moi qui était si content d'avoir fait ça en trois lignes, aprés avoir taté du flag et du select.
J'étudie tes remarques et je corrige. La sub drawrow faisant partie des entrailles de la machine, il va falloir y aller mollo, jusqu'a présent je me casse les dents sur tes sub's, avec un bel entrain....Mais crogneugneu, il n'en sera pas toujours ainsi.
Pour la version rnd, je n'en ai vu qu'une, la première que tu a posté, je n'y ai pas touché car il y avait beaucoup de trous.
Je ne sais pas mettre le liens vers le post antérieur.
Pour les traits blancs, je n'ai pas la moindre idée de comment les éliminer.
Serais-ce la dimension de la case ?...Non, puisque le fond est noir...D'où peut venir ce blanc ?
Mystère et boule de gomme...
Tu me mets mon code ? ? ?...Mais je l'ai pardine !..Tu aurais du mettre la bonne version rnd, si tu ne l'a pas jetée.
J'étudie tes remarques et je corrige. La sub drawrow faisant partie des entrailles de la machine, il va falloir y aller mollo, jusqu'a présent je me casse les dents sur tes sub's, avec un bel entrain....Mais crogneugneu, il n'en sera pas toujours ainsi.

Pour la version rnd, je n'en ai vu qu'une, la première que tu a posté, je n'y ai pas touché car il y avait beaucoup de trous.
Je ne sais pas mettre le liens vers le post antérieur.
Pour les traits blancs, je n'ai pas la moindre idée de comment les éliminer.
Serais-ce la dimension de la case ?...Non, puisque le fond est noir...D'où peut venir ce blanc ?
Mystère et boule de gomme...

Tu me mets mon code ? ? ?...Mais je l'ai pardine !..Tu aurais du mettre la bonne version rnd, si tu ne l'a pas jetée.

____________________
Roro
Roro
Roland:
Ben avec Paint tout simplement !!! Oouuh ça va pu bien toi en ce moment !!!
Pour le rnd y a qu'à faire un niv 3 qui tire les trous au hasard...
@+
Edité par cassiope01 Le 12/07/2012 à 13h39
Pour les traits blancs, je n'ai pas la moindre idée de comment les éliminer.
Ben avec Paint tout simplement !!! Oouuh ça va pu bien toi en ce moment !!!

Pour le rnd y a qu'à faire un niv 3 qui tire les trous au hasard...
@+
Edité par cassiope01 Le 12/07/2012 à 13h39
____________________
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
Tu veux dire que le blanc viens des bmp ?!?
J'ai voulu faire:
for bi=1 to 5
loadbmp "boule"; bi;" "," "Bille";bi;".bmp"
next
Je n'ai pas trouvé la bonne syntaxe..Et je me suis dégonflé, à la perspective d'aller trifouiller dans la sub, avec 10 names en bandoulière.
C'est pas trés courageux..je sais....Mais je souffre déjà pas mal avec la cafetière. qui est sur le feu depuis un bon moment, et qui n'y est pas seule.. (qui trop embrasse, mal étreint...)
Je propose ça:
[bi] ' change bille
unloadbmp "boule"
loadbmp "boule", "Bille";bb;".bmp"
bb=bb+1
if bb =6 then bb=1
goto [new]
Qui ne coute que deux balles, et devrait satisfaire la RAM.
Je changerai le zip cette nuit, avec la bonne version "rnd" si je la trouve, ou avec ta dernière propo'.(dans la journée la connexion 3G est une vraie misère...devine le nom de l'opérateur
)
J'ai voulu faire:
for bi=1 to 5
loadbmp "boule"; bi;" "," "Bille";bi;".bmp"
next
Je n'ai pas trouvé la bonne syntaxe..Et je me suis dégonflé, à la perspective d'aller trifouiller dans la sub, avec 10 names en bandoulière.
C'est pas trés courageux..je sais....Mais je souffre déjà pas mal avec la cafetière. qui est sur le feu depuis un bon moment, et qui n'y est pas seule.. (qui trop embrasse, mal étreint...)
Je propose ça:
[bi] ' change bille
unloadbmp "boule"
loadbmp "boule", "Bille";bb;".bmp"
bb=bb+1
if bb =6 then bb=1
goto [new]
Qui ne coute que deux balles, et devrait satisfaire la RAM.
Je changerai le zip cette nuit, avec la bonne version "rnd" si je la trouve, ou avec ta dernière propo'.(dans la journée la connexion 3G est une vraie misère...devine le nom de l'opérateur

____________________
Roro
Roro
Roland:
Ben tu n'as qu'à regarder !
Tu peux parfaitement trifouiller le contenu de la SUB, elle va pas te manger
C'est du code comme le reste !!!
Dommage tu y étais presque
La bonne synthaxe et même tout ton code entièrement corrigé se trouve dans mon dernier code posté plus haut. Je n'ai pas eu à modifier grand chose...
Pour le rnd tu n'as qu'à simplement modifier dans [new] :
Code VB :
et dans [niv] :
Code VB :
Edité par cassiope01 Le 12/07/2012 à 15h57
Tu veux dire que le blanc viens des bmp ?!?
Ben tu n'as qu'à regarder !
Tu peux parfaitement trifouiller le contenu de la SUB, elle va pas te manger


C'est du code comme le reste !!!
Dommage tu y étais presque

La bonne synthaxe et même tout ton code entièrement corrigé se trouve dans mon dernier code posté plus haut. Je n'ai pas eu à modifier grand chose...
Pour le rnd tu n'as qu'à simplement modifier dans [new] :
Code VB :
... for y=1 to ncy for x=1 to ncx read val ' read ne peut pas affecter directement une var. tableau. if niv = 3 then if y=1 then val = 2 else if y=ncy then val = 0 else val = int(rnd(0)*2) ' tirage au hasard end if cell(x,y) = val next call drawRow y next ...
et dans [niv] :
Code VB :
[niv] niv=niv+1 if niv=4 then niv=1 #w.ni, "Niveau: ";niv goto [new]
Edité par cassiope01 Le 12/07/2012 à 15h57
____________________
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
Dans la sub, je finirai bien par y aller, mais tranquillement..pas dans l'urgence..
Parce que là...ça urge...t'imagine...si j'engorge toutes les RAM's de la planete avec mes bmp.
Parce que là...ça urge...t'imagine...si j'engorge toutes les RAM's de la planete avec mes bmp.

____________________
Roro
Roro
Il y a un os dans le paté ...
J'ai fait un copié/collé des deux bouts (for y...for x....et [niv]
Bille et Mur vont bien...Mais
Au lancement, Niveau est sur 2, quand je clique ça provoque une error:" Read past end of data"
je creuse le sujet..mais au cure dent, c'est pas gagné...
J'ai changé le zip aprés avoir corrigé une coquille: à load et unload, c'est: for=1 to 5, pas 6.
J'ai enlevé la version rnd. Noirçi les lignes blanches. . Je remets le lien du zip: ...........à+
Chutes.zip
Edité par Roland Le 12/07/2012 à 20h46
J'ai fait un copié/collé des deux bouts (for y...for x....et [niv]
Bille et Mur vont bien...Mais
Au lancement, Niveau est sur 2, quand je clique ça provoque une error:" Read past end of data"
je creuse le sujet..mais au cure dent, c'est pas gagné...
J'ai changé le zip aprés avoir corrigé une coquille: à load et unload, c'est: for=1 to 5, pas 6.

J'ai enlevé la version rnd. Noirçi les lignes blanches. . Je remets le lien du zip: ...........à+
Chutes.zip
Edité par Roland Le 12/07/2012 à 20h46
____________________
Roro
Roro
J'ai résolu le pb en ajoutant:
if niv=1 or niv=2 then avant "read val" et "end if" aprés. ça marche
Mais c'est pas terrible beaucoup trop de trous.
if niv=1 or niv=2 then avant "read val" et "end if" aprés. ça marche
Mais c'est pas terrible beaucoup trop de trous.
____________________
Roro
Roro
Comme je voudrais que lorsque toutes billes sont en bas, il se passe quelque chose, j'ai fait ça:
DIM score(ncx+1)
sub boutons handle$
...... .....
..... .....
for xx=1 to ncx
if cell(xx,8)=2 then score(xx)=1
next xx
tscore=0
for xx=1 to ncx
tscore=tscore+score(xx)
next xx
if tscore=16 then exit sub
end sub
goto [new] ' provisoire pour test
Quelle erreur je commets pour pour que ça ne veuille pas marcher ?
DIM score(ncx+1)
sub boutons handle$
...... .....
..... .....
for xx=1 to ncx
if cell(xx,8)=2 then score(xx)=1
next xx
tscore=0
for xx=1 to ncx
tscore=tscore+score(xx)
next xx
if tscore=16 then exit sub
end sub
goto [new] ' provisoire pour test
Quelle erreur je commets pour pour que ça ne veuille pas marcher ?
____________________
Roro
Roro
Ooof, peut-être simplement que comme d'habitude, tu imagines les choses toujours beaucoup plus compliquées qu'elles ne le méritent
for xx=1 to ncx
if cell(xx,ncy)=2 then tscore=tscore+1
next xx
if tscore=16 then FIN = 1 ' FIN étant la variable GLOBALE qui pourra être lue n'importe où pour faire autre chose...
de plus c'est pas dans la sub boutons handle$ qu'il faut mettre ça : celle-ci est appelée à chaque fois que tu appuis sur un bouton... peut-être plutôt dans la SUB fall qui s'occupe exclusivement de gérer toutes les chutes des billes, et donc fait potentiellement arriver des billes dans la dernière ligne en bas !!!
@+
Edité par cassiope01 Le 13/07/2012 à 14h08




for xx=1 to ncx
if cell(xx,ncy)=2 then tscore=tscore+1
next xx
if tscore=16 then FIN = 1 ' FIN étant la variable GLOBALE qui pourra être lue n'importe où pour faire autre chose...
de plus c'est pas dans la sub boutons handle$ qu'il faut mettre ça : celle-ci est appelée à chaque fois que tu appuis sur un bouton... peut-être plutôt dans la SUB fall qui s'occupe exclusivement de gérer toutes les chutes des billes, et donc fait potentiellement arriver des billes dans la dernière ligne en bas !!!
@+
Edité par cassiope01 Le 13/07/2012 à 14h08
____________________
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
Roland:
if niv<3 then ... marche très bien aussi
A toi d'imaginer une formule rnd qui donne moins de trous
@+
Edité par cassiope01 Le 13/07/2012 à 14h14
J'ai résolu le pb en ajoutant:
if niv=1 or niv=2 then avant "read val" et "end if" aprés. ça marche
Mais c'est pas terrible beaucoup trop de trous.
if niv=1 or niv=2 then avant "read val" et "end if" aprés. ça marche
Mais c'est pas terrible beaucoup trop de trous.
if niv<3 then ... marche très bien aussi

A toi d'imaginer une formule rnd qui donne moins de trous

@+
Edité par cassiope01 Le 13/07/2012 à 14h14
____________________
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
Si je fait:
for xx=1 to ncx
if cell(xx,ncy)=2 then tscore=tscore+1
next xx
Ce que j'ai fait, bien naivement,pour commencer.
Que ce soit dans "bouton" ou dans "fall", chaque fois que le prog passe par là il va incrémenter tscore.
Le nombre de chute étant forcement au moins égal au nombre de coup, et supérieur à 16
C'est pourquoi je me suis essoré les méninges à pondre cet emberlificotage..qui devrait fonctionner !
Tu me dis que la variable fin pourra etre lue n'importe où, d'accord. Mais le prog , il n'y va pas à ce n'importe où, puisqu'il tourne d'une sub à l'autre.
Edité par Roland Le 13/07/2012 à 17h00
for xx=1 to ncx
if cell(xx,ncy)=2 then tscore=tscore+1
next xx
Ce que j'ai fait, bien naivement,pour commencer.

Que ce soit dans "bouton" ou dans "fall", chaque fois que le prog passe par là il va incrémenter tscore.
Le nombre de chute étant forcement au moins égal au nombre de coup, et supérieur à 16
C'est pourquoi je me suis essoré les méninges à pondre cet emberlificotage..qui devrait fonctionner !

Tu me dis que la variable fin pourra etre lue n'importe où, d'accord. Mais le prog , il n'y va pas à ce n'importe où, puisqu'il tourne d'une sub à l'autre.
Edité par Roland Le 13/07/2012 à 17h00
____________________
Roro
Roro
Il y a bien un soucis:
dans sub bouton, avant le end sub, j'ai mis:
fin=1
if fin=1 then exit sub
end sub
wait
Et au débuggeur le prog s'arrete sur:" if fin=1 then exit sub ", et ne sort pas de la sub !
Et si je mets ça dans fall, il ne le voit meme pas
Edité par Roland Le 13/07/2012 à 17h06
dans sub bouton, avant le end sub, j'ai mis:
fin=1
if fin=1 then exit sub
end sub
wait
Et au débuggeur le prog s'arrete sur:" if fin=1 then exit sub ", et ne sort pas de la sub !

Et si je mets ça dans fall, il ne le voit meme pas


Edité par Roland Le 13/07/2012 à 17h06
____________________
Roro
Roro
WHAOUH ! le piège ! exit sub n'est pas dans l'aide de JB ! ! !
Et pourtant, il y en a un dans "wykersham", je regarde si il fonctionne......
........Dans Wykersham, il y a une magouille frauduleuse !!!!
Je supprime la ligne du exit sub, et ça marche comme si elle y était encore...faut pas déconner !!!
Edité par Roland Le 13/07/2012 à 18h55
Et pourtant, il y en a un dans "wykersham", je regarde si il fonctionne......
........Dans Wykersham, il y a une magouille frauduleuse !!!!
Je supprime la ligne du exit sub, et ça marche comme si elle y était encore...faut pas déconner !!!
Edité par Roland Le 13/07/2012 à 18h55
____________________
Roro
Roro
____________________
Roro
Roro
Je comprends ton soucis.
Ce n'est pas un pb de SUB.
Tu vois bien avec la sub fall ou drawRow en sort très bien dès qu'il a fini de l'exécuter.
C'est un pb d'affectation d'une SUB à un bouton...!
En fait, quand la SUB boutons est terminée après avoir été appelée par un bouton donc, le contrôle du programme est donné uniquement à l'attente qu'un bouton quelconque soit pressé...!? (en fait à n'importe quel contrôle (qui attend une action de l'utilisateur) déclaré pour #w)
Si Carl avait eu la bonne idée de permettre que tous les [labels] soient vus depuis une SUB, il n'y aurait pas de pb !!!
S'il y avait une autre solution que la SUB boutons handle$ pour lire facilement le n° du bouton qui vient d'être pressé, je ne la connais pas.
Ou bien il faudrait écrire autant de [label] différents qu'il y a de boutons pour en tirer les variables row et dir, et encore, toute la structure du programme serait à revoir...!
Encore une fois, si Carl avait pensé à créer une variable d'environnement dédiée qui contiendrait en permanence le nom du dernier contrôle utilisé, HANDLE$ par exemple, cela aurait aussi solutionné le pb...!
Dans ta sub frac, tu avais oublié de déclarer col$(12) car tu lui affectes plus de 10 éléments...
Je ne vois absolument pas pourquoi tu penses avoir besoin de créer une autre fenêtre ???
Ceci dit j'ai une petite surprise pour toi : je pense avoir contourné tous les obstacles
Code VB :
Sympa ta fractale
@+
Edité par cassiope01 Le 14/07/2012 à 08h01
Ce n'est pas un pb de SUB.
Tu vois bien avec la sub fall ou drawRow en sort très bien dès qu'il a fini de l'exécuter.
C'est un pb d'affectation d'une SUB à un bouton...!
En fait, quand la SUB boutons est terminée après avoir été appelée par un bouton donc, le contrôle du programme est donné uniquement à l'attente qu'un bouton quelconque soit pressé...!? (en fait à n'importe quel contrôle (qui attend une action de l'utilisateur) déclaré pour #w)
Si Carl avait eu la bonne idée de permettre que tous les [labels] soient vus depuis une SUB, il n'y aurait pas de pb !!!
S'il y avait une autre solution que la SUB boutons handle$ pour lire facilement le n° du bouton qui vient d'être pressé, je ne la connais pas.
Ou bien il faudrait écrire autant de [label] différents qu'il y a de boutons pour en tirer les variables row et dir, et encore, toute la structure du programme serait à revoir...!
Encore une fois, si Carl avait pensé à créer une variable d'environnement dédiée qui contiendrait en permanence le nom du dernier contrôle utilisé, HANDLE$ par exemple, cela aurait aussi solutionné le pb...!
Dans ta sub frac, tu avais oublié de déclarer col$(12) car tu lui affectes plus de 10 éléments...
Je ne vois absolument pas pourquoi tu penses avoir besoin de créer une autre fenêtre ???
Ceci dit j'ai une petite surprise pour toi : je pense avoir contourné tous les obstacles


Code VB :
'http://libertybasic.fr/forum/topic-162-1+code-en-cours-de-defrichage.php 'http://libertybasic.fr/forum/topic-163+chutes.php nomainwin GLOBAL ncx, ncy, dc, mm, bb, midx, midy, FIN global ro, di, oldro, oldi, coup, coup, tscore, midx, midy ncx = 16 ' nbr of cells X ncy = 9 ' nbr of cells Y dc = 42 ' size of a cell in pixels MapWidth = (ncx+2)*dc+int(dc/ncx) MapHeight = 378 ' (ncy)*dc+int(dc/ncy) '378 midx=int(MapWidth/2)-80 midy=int(MapHeight/2) WindowWidth = MapWidth + 65 WindowHeight = MapHeight + 75 ' 498 ' 75 UpperLeftX = (DisplayWidth-WindowWidth) / 3 UpperLeftY = (DisplayHeight-WindowHeight) / 2 ' mois$ = "January February March April May June July August September October November December" mois$ = "Janvier Février Mars Avril Mai Juin Juillet Août Septembre Octobre Novembre Décembre" ' french today$ = date$("mm/dd/yyyy") j = date$(today$) ' jsem$ = word$("Tuesday Wednesday Thursday x Friday Saturday x Sunday Monday",int((j/7-int(j/7))*10)+1) jsem$ = word$("Mardi Mercredi Jeudi x Vendredi Samedi x Dimanche Lundi",int((j/7-int(j/7))*10)+1) ' french date$ = jsem$+" "+mid$(today$,4,2)+" "+word$(mois$, val(today$))+" "+right$(today$,4)+" "+left$(time$(),5) DIM cell(ncx,ncy) button #w.bi "Bille", [bi], UL, 40, 5, 60, 25 button #w.mu "Mur", [mu], UL, 120, 5, 60, 25 statictext #w.txt "Jeu",460,10,160,30 button #w.ni "Niveau: 1", [niv], UL, 310, 5, 80, 25 statictext #w.tt "Triche", 40+17*dc, 40+(8*dc)+7,50,20 graphicbox #w.map, 5+dc, 40, MapWidth-2*dc, MapHeight button #w.bt11 "", boutons, UL, 775, 44+(1*dc), dc, dc-10 ' à droite button #w.bt21 "", boutons, UL, 775, 44+(2*dc)+1, dc, dc-10 button #w.bt31 "", boutons, UL, 775, 44+(3*dc)+2, dc, dc-10 button #w.bt41 "", boutons, UL, 775, 44+(4*dc)+3, dc, dc-10 button #w.bt51 "", boutons, UL, 775, 43+(5*dc)+4, dc, dc-10 button #w.bt61 "", boutons, UL, 775, 43+(6*dc)+5, dc, dc-10 button #w.bt71 "", boutons, UL, 775, 41+(7*dc)+6, dc, dc-10 button #w.bt81 "", boutons, UL, 775, 54+(8*dc)+7, dc, 20 ' 775, 46+(8*dc)+7, dc, dc-10 button #w.bt12 "", boutons, UL, 9+17*dc, 44+(1*dc), dc, dc-10 ' à gauche button #w.bt22 "", boutons, UL, 9+17*dc, 44+(2*dc)+1, dc, dc-10 button #w.bt32 "", boutons, UL, 9+17*dc, 44+(3*dc)+2, dc, dc-10 button #w.bt42 "", boutons, UL, 9+17*dc, 44+(4*dc)+3, dc, dc-10 button #w.bt52 "", boutons, UL, 9+17*dc, 43+(5*dc)+4, dc, dc-10 button #w.bt62 "", boutons, UL, 9+17*dc, 43+(6*dc)+5, dc, dc-10 button #w.bt72 "", boutons, UL, 9+17*dc, 41+(7*dc)+6, dc, dc-10 button #w.bt82 "", boutons, UL, 9+17*dc, 54+(8*dc)+7, dc, 20 ' 9+17*dc, 46+(8*dc)+7, dc, dc-10 button #w.new "New",[new],UL,MapWidth-20,6,60,27 OPEN " TEST Chute(s)... "+space$(15)+date$ for window_nf as #w 'graphics_nf_nsb #w.map "trapclose [quit]" #w.map, "setfocus" #w.map "down; backcolor black; fill black" #w.map "getbmp p0 0 0 ";dc;" ";dc ' empty cell for deleting #w.new "!font Arial 12 bold" #w.txt "!font Arial 11 bold" for bt = 1 to 16 btn$ = "#w.bt"+word$("11 21 31 41 51 61 71 81 12 22 32 42 52 62 72 82",bt) #btn$ "!font Arial 16 bold" if bt<9 then #btn$ ">" else #btn$ "<" next for im = 1 to 5 ' chargement en mémoire des fichiers BMP qui pourront ensuite être utilisés. loadbmp "mur";im, "Mur";im;".bmp" loadbmp "bille";im, "Bille";im;".bmp" next bb=4: mm=5: niv=1 [niv] niv=niv+1 if niv=4 then niv=1 #w.ni, "Niveau: ";word$("1 2 RND",niv) 'goto [new] [new] FIN = 0 coup=0 print #w.txt, "Jeu N° ";coup print #w.bi, "Bille: ";bb print #w.mu, "Mur: ";mm if niv=1 then RESTORE [niveau1] if niv=2 then RESTORE [niveau2] for y=1 to ncy for x=1 to ncx if niv<3 then read val ' read ne peut pas affecter directement une var. tableau. else if y=1 then val = 2 else if y=ncy then val = 0 else val = int(rnd(0)*2) ' tirage au hasard end if cell(x,y) = val next call drawRow y next call fall ' première chute dès la mise en place WAIT sub fall ' gère toutes les chutes potentielles dans toute la grille for cy = ncy-1 to 1 step -1 ' en partant du bas bien sûr ! for cx = 1 to ncx by = cy while by+1 <= ncy if cell(cx,by) = 2 and cell(cx,by+1) = 0 then cell(cx,by) = 0 #w.map "drawbmp p0 ";(cx-1)*dc;" ";(by-1)*dc cell(cx,by+1) = 2 #w.map "drawbmp bille";bb;" ";(cx-1)*dc;" ";by*dc end if by = by + 1 wend next next #w.map "flush; discard" end sub [bi] ' change bille bb=bb+1 if bb =6 then bb=1 #w.bi, "Bille: ";bb for y = 1 to ncy :call drawRow y :next wait [mu] ' change mur mm=mm+1 if mm =6 then mm=1 #w.mu, "Mur: ";mm for y = 1 to ncy :call drawRow y :next wait sub boutons handle$ ' décalage d'une ligne en fonction du bouton pressé ' les extrémités reviennent de l'autre côté... row = val(mid$(handle$,6,1))+1 'extraction de la ligne grace aux noms des boutons (judicieusement nommés ;) ) dir = val(mid$(handle$,7,1)) 'et extraction du sens ro=row-1: di=dir if olro<>0 or oldi<>0 then ' secur premier coup han$ = "#w.bt" + STR$(oldro)+STR$(oldi) #han$, "!enable" 'réactive bouton end if if dir = 1 then ' vers la droite temp = cell(ncx,row) for x=ncx to 2 step -1 cell(x,row) = cell(x-1,row) next cell(1,row) = temp else ' vers la gauche temp = cell(1,row) for x=1 to ncx-1 cell(x,row) = cell(x+1,row) next cell(ncx,row) = temp end if call drawRow row call fall hand$ = "#w.bt" + STR$(ro)+STR$(di) #hand$, "!disable" ' désactive bouton oldro=ro: oldi=di 'memorise ligne direction coup=coup+1 print #w.txt, "Jeu N° ";coup tscore=0 for xx=1 to ncx if cell(xx,ncy)=2 then tscore=tscore+1 next xx if tscore=16 then FIN = 1 :call frac end sub ' c'est ici que le prog attend le coup suivant sub frac #w.new "!disable" ' désactiver TOUS les boutons pour éviter une erreur... #w.ni "!disable" #w.mu "!disable" #w.bi "!disable" for bt = 1 to 16 btn$ = "#w.bt"+word$("11 21 31 41 51 61 71 81 12 22 32 42 52 62 72 82",bt) #btn$ "!disable" next #w.map, "down ; fill black" #w.txt "Cliquer sur la fractale" #w.map "when leftButtonDown [out]" ' pour sortir de la SUB frac quand clic dans #w.map [draw] 'set up some random colors redim col$(12) for c=0 to 12 col$(c)=str$(int(rnd(0)*256))+" "+str$(int(rnd(0)*256))+" "+str$(int(rnd(0)*256)) next c 'set up some random starting positions a=rnd(0) b=0.9998 c=2-2*a dots=12000 x=j=0 y=rnd(0)*12+0.1 'calculate and draw the points for i=0 to dots scan z=x x=b*y+j j=a*x+c*(x^2)/(1+x^2) y=j-z xp=(x*20)+midx yp=(y*20)+midy #w.map, "color ";col$(i/1000) #w.map, "set ";xp;" ";yp next i goto [draw] [out] #w.new "!enable" ' réactiver TOUS les boutons avant de sortir... #w.ni "!enable" #w.mu "!enable" #w.bi "!enable" for bt = 1 to 16 btn$ = "#w.bt"+word$("11 21 31 41 51 61 71 81 12 22 32 42 52 62 72 82",bt) #btn$ "!enable" next end sub sub drawRow r ' dessine le contenu d'une ligne for x=1 to ncx select case cell(x,r) case 0 :#w.map "drawbmp p0 ";(x-1)*dc;" ";(r-1)*dc case 1 :#w.map "drawbmp mur";mm;" ";(x-1)*dc;" ";(r-1)*dc case 2 :#w.map "drawbmp bille";bb;" ";(x-1)*dc;" ";(r-1)*dc end select next end sub [niveau1] data 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 ' 2 = boule, 1 = mur, 0 = trou data 0,1,1,1,0,1,1,1,1,0,1,1,1,0,1,1 data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1 data 0,1,1,1,0,1,0,1,0,1,0,1,0,1,1,1 data 1,1,0,1,1,1,1,0,1,0,1,1,1,0,1,1 data 0,1,1,1,1,0,1,1,0,1,0,1,1,1,1,1 data 1,0,1,1,0,1,1,0,1,1,1,1,0,1,1,1 data 0,1,1,0,1,1,0,1,1,1,0,1,1,1,0,1 data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 [niveau2] data 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 ' 2 = boule, 1 = mur, 0 = trou data 1,1,0,1,1,0,1,1,0,1,1,0,1,1,1,1 data 1,1,1,0,1,1,1,0,1,1,1,1,1,0,1,1 data 1,0,1,1,1,0,1,1,1,1,1,0,1,1,1,1 data 1,1,0,0,1,1,1,0,1,0,1,1,1,1,0,1 data 1,1,0,1,1,0,1,1,1,1,0,1,1,1,1,1 data 1,0,1,1,0,1,1,0,1,1,1,1,0,1,1,1 data 1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1 data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 [quit] for im = 1 to 5 unloadbmp "mur";im unloadbmp "bille";im next close #w end wait
Sympa ta fractale

@+
Edité par cassiope01 Le 14/07/2012 à 08h01
____________________
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
Je n'ai pas encore regardé ta dernière sorcellerie, que je brule de voir.
Mais tout d'abord, rendons à César, et à Rod ce qui leur appartient j'ai mis dans l'entete du code les référence de la fractale, car j'ai constaté que les anglophones étaient particulièrement soucieux que leur soi
" givé crédits ".
Ceci dit, je suis bien d'accord avec toit pour appeller ce léger défaut que présente les sub's :
une CarlGundelerie...... Je lui descerne donc un navet d'or....
Celui-là, quand il répondra aux mails, les poules auront des mamelles....
Et maintenant..voyons voir.
Mais tout d'abord, rendons à César, et à Rod ce qui leur appartient j'ai mis dans l'entete du code les référence de la fractale, car j'ai constaté que les anglophones étaient particulièrement soucieux que leur soi
" givé crédits ".
Ceci dit, je suis bien d'accord avec toit pour appeller ce léger défaut que présente les sub's :
une CarlGundelerie...... Je lui descerne donc un navet d'or....
Celui-là, quand il répondra aux mails, les poules auront des mamelles....
Et maintenant..voyons voir.



____________________
Roro
Roro
Roland:
Ce défaut n'a absolument rien à voir avec les SUB.
C'est un pb de contrôle des évènements par JB et je ne sais pas si c'est mieux fait ou différent avec LB ?
@+
Ceci dit, je suis bien d'accord avec toit pour appeller ce léger défaut que présente les sub's :
une CarlGundelerie...... Je lui descerne donc un navet d'or....
une CarlGundelerie...... Je lui descerne donc un navet d'or....
Ce défaut n'a absolument rien à voir avec les SUB.
C'est un pb de contrôle des évènements par JB et je ne sais pas si c'est mieux fait ou différent avec LB ?
@+
____________________
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
• 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