
@++
Code : Tout sélectionner
VariableTemp = #False
If Condition
If Condition
If Condition
Etc...
VariableTemp = #True
Etc...
EndIf
EndIf
EndIf
If VariableTemp
VariableTemp = #False
If Condition
If Condition
Etc...
VariableTemp = #True
Etc...
EndIf
EndIf
EndIf
If VariableTemp
; Ensemble des conditions vraies
EndIf
Code : Tout sélectionner
max=100
CreateFile(0,"imb.pb")
WriteStringN(0,"max="+Str(max))
For i=0 To max
WriteStringN(0,"If 1")
Next i
WriteStringN(0,"Debug max")
For i=0 To max
WriteStringN(0,"EndIf")
Next i
Ca vaut quand même le coup non ? Surtout qu'il existe des logiciels qui font la simplification automatiquement, ce n'est peut être pas la peine de mettre les mains dans le cambouisUtilisation des tables de Karnaugh
Les tables/tableaux de Karnaugh sont surtout utilisé(e)s en électronique. En effet, la simplification de l'expression algébrique booléenne permet d'économiser des opérateurs logiques (portes logiques) et donc des circuits. Elle engendre aussi une économie de temps de conception et de fonds, tout en augmentant la fiabilité de l'ensemble.
En programmation, l'utilisation des tables de Karnaugh permet de réduire les séquences de conditions de test complexes en les regroupant en des conditions non intuitives au premier abord, mais qui réduisent la complexité effective du code (volume du source), ainsi que son temps d'exécution en réduisant le nombre des évaluations nécessaires.
Code : Tout sélectionner
IF test1 THEN
IF test2 THEN
(...)
ENDIF
ENDIF
Code : Tout sélectionner
IF test1 THEN
ENDIF
IF test2 THEN
ENDIF
ha ?djes a écrit :<MODE sarcasme ON>
Vous êtes tous des idiots. Ca fait des heures que ce pauvre Beauregard essaye de vous dire que son problème n'est pas l'imbrication de tests de conditions, mais le nombre de ceux-ci dans un code. Autrement dit, pas des
mais de simplesCode : Tout sélectionner
IF test1 THEN IF test2 THEN (...) ENDIF ENDIF
<MODE sarcasme OFF>Code : Tout sélectionner
IF test1 THEN ENDIF IF test2 THEN ENDIF
C'est moi...........Dobro a écrit :ha ?djes a écrit :<MODE sarcasme ON>
Vous êtes tous des idiots. Ca fait des heures que ce pauvre Beauregard essaye de vous dire que son problème n'est pas l'imbrication de tests de conditions, mais le nombre de ceux-ci dans un code. Autrement dit, pas des
mais de simplesCode : Tout sélectionner
IF test1 THEN IF test2 THEN (...) ENDIF ENDIF
<MODE sarcasme OFF>Code : Tout sélectionner
IF test1 THEN ENDIF IF test2 THEN ENDIF
et pourquoi crois tu qu'on ne le sait pas ?![]()
on a lu ce qu'il a ecrit , mais rien n'empeche de rebondir sur autre chose , d'autan
que Fred lui a répondu !
que seul la limite est pour les if imbriqués , nous on le sait parceque nous on a tout lu
alors que toi tu tire des conclusion a la hate, sans avoir compris qu'on ne c'est pas arreté pour autant, dans la discussion soulevé, on l'a meme fait évoluer
je poserai alors une question
c'est qui l'idiot ?
je partage ce stress. J'ai mis quand même du temps à cerner le problème. Je pensais dans un premier temps que le problème venait du côté du nombre de commandes en général, puis du nombre de caractère, je me suis même méfié de clipsprite...Dobro a écrit :mais la simple idée de savoir qu'on est limité par le nombre de IF, moi ça me stress
Salut Huitbit, n'hésite pas à laissé sur ce forum une photo du paradis, ici le ciel est de nouveau gris. Toute la difficulté avec une théorie, c'est la mise en pratique.Je n'ai jamais utilisé Karnaugh (si un jour j'en ai besoin, je pense que je m'en servirai) mais juste avec l'algèbre de Boole (qui ne demande pas de gros efforts), on peut réduire nettement le nombre de tests !
Code : Tout sélectionner
If ishipintro<5:ClipSprite(#shipb, ishipintro*64, 64, 64, 48):EndIf
If ishipintro>4 And ishipintro<10:ClipSprite(#shipb, (ishipintro-5)*64, 112, 64, 48):EndIf
If ishipintro>9 And ishipintro<15:ClipSprite(#shipb, (ishipintro-10)*64, 160, 64, 48):EndIf
If ishipintro=15:ClipSprite(#shipb, 0, 208, 64, 48):EndIf
DisplayTransparentSprite( #shipb , 400-32, 410)
ben tu peux l'écrire de deux façons différentes :beauregard a écrit :Un exemple, avec l'animation du vaisseau de l'intro du jeu Vers l'infini(16 images sur 4 rangées) :4 conditions toute simple donc...Code : Tout sélectionner
If ishipintro<5:ClipSprite(#shipb, ishipintro*64, 64, 64, 48):EndIf If ishipintro>4 And ishipintro<10:ClipSprite(#shipb, (ishipintro-5)*64, 112, 64, 48):EndIf If ishipintro>9 And ishipintro<15:ClipSprite(#shipb, (ishipintro-10)*64, 160, 64, 48):EndIf If ishipintro=15:ClipSprite(#shipb, 0, 208, 64, 48):EndIf DisplayTransparentSprite( #shipb , 400-32, 410)
En sachant que pour un jeu les images n'ont pas toutes la même taille, ni le même nombre d'étape d'animation, je ne vois pas comment ce brave Karnaugh pourra m'aider, hum
Code : Tout sélectionner
If ishipintro<5
ClipSprite(#shipb, ishipintro*64, 64, 64, 48)
ElseIf ishipintro>4 And ishipintro<10
ClipSprite(#shipb, (ishipintro-5)*64, 112, 64, 48)
ElseIf ishipintro>9 And ishipintro<15
ClipSprite(#shipb, (ishipintro-10)*64, 160, 64, 48)
ElseIf ishipintro=15
ClipSprite(#shipb, 0, 208, 64, 48)
EndIf
Select ishipintro
Case 0 To 4
ClipSprite(#shipb, ishipintro*64, 64, 64, 48)
Case 5 To 9
ClipSprite(#shipb, (ishipintro-5)*64, 112, 64, 48)
Case 10 To 14
ClipSprite(#shipb, (ishipintro-10)*64, 160, 64, 48)
Case 15
ClipSprite(#shipb, 0, 208, 64, 48)
EndSelect