Allez, pour s'amuser... une classe formulaire d'attente style matrix

Contenu du snippet

Bah, rien d'important...
juste comment utiliser les anciennes fonctions du foxBase à des fins ludiques

Source / Exemple :



  • Basé sur un code de Olaf Doschke
  • et transformé en classe formulaire
  • à reserver aux traitements
  • qui ne souffriront pas d'un peu de CPU
  • en moins ...
matrix = CREATEOBJECT("oMatrix", "INKEY(.01)=27") matrix.show() #DEFINE screenwidth 80 #DEFINE screenheight 30 DEFINE CLASS oMatrix as Form backcolor=RGB(0,0,0) fontname="Courier New" Caption="Reloadding..." FUNCTION init PARAMETERS cBreakCondition SET TALK off this.Width=screenwidth * FONTMETRIC(7, this.FontName, this.FontSize) this.Height=screenheight * FONTMETRIC(1, this.FontName, this.FontSize)+SYSMETRIC(9) this.AddProperty("BreakCondition", cBreakCondition) ENDFUNC FUNCTION activate DIMENSION protectedpositions[screenwidth,screenheight] DIMENSION trails[screenwidth,2] LOCAL cBreakCondition cBreakCondition = this.BreakCondition FOR x = 1 TO screenwidth FOR Y = 1 TO screenheight protectedpositions[x,y] = CHR(0) ENDFOR Y ENDFOR x DO WHILE .T. FOR ii = 1 TO 42 x=INT(RAND()*screenwidth) Y=INT(RAND()*screenheight) IF protectedpositions[x+1,y+1] = CHR(0) this.FORECOLOR = RGB(0,RAND()*208,0) @Y,x SAY CHR(RAND()*224+32) ENDIF ENDFOR ii lntrail = RAND()*screenwidth+1 IF EMPTY(trails[lntrail,1]) trails[lntrail,1] = 1.0 trails[lntrail,2] = RAND()*2.0+0.5 ENDIF FOR lntrail = 1 TO screenwidth IF !EMPTY(trails[lntrail,1]) lngreen = 255 lcchar = CHR(RAND()*224+32) this.FORECOLOR = RGB(0,lngreen,0) Y = INT(trails[lntrail,1]) IF Y<screenheight @ Y,lntrail-1 SAY lcchar protectedpositions[lntrail,y+1] = lcchar ENDIF FOR Y = Y-1 TO 0 STEP -1 lngreen = MAX(lngreen - 7,0) IF lngreen >0 this.FORECOLOR = RGB(0,lngreen,0) IF Y<screenheight @ Y,lntrail -1 SAY protectedpositions[lntrail,y+1] ENDIF ELSE IF Y<screenheight protectedpositions[lntrail,y+1] = CHR(0) ENDIF ENDIF ENDFOR Y trails[lntrail,1] = trails[lntrail,1] + trails[lntrail,2] IF trails[lntrail,1] > 1.5 * screenheight trails[lntrail,1] = 0 FOR Y = 1 TO screenheight protectedpositions[lntrail,y] = CHR(0) this.FORECOLOR = RGB(0,0,0) @ Y,lntrail-1 SAY ' ' ENDFOR Y ENDIF ENDIF ENDFOR lntrail cBreakCondition = this.BreakCondition DOEVENTS && FORCE IF &cBreakCondition EXIT ENDIF ENDDO RELEASE protectedpositions RELEASE trails this.release() ENDFUNC ENDDEFINE

Conclusion :


merci à Olaf Doschke pour la base de fonctionnement.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.