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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 430 fois - Téléchargée 35 fois

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

Ajouter un commentaire Commentaires
Messages postés
6
Date d'inscription
vendredi 20 décembre 2002
Statut
Membre
Dernière intervention
21 juillet 2008

C'est vraiment bien!
Il faut plus de codes comme ça dans Fox ;-)
Messages postés
2
Date d'inscription
lundi 25 juillet 2005
Statut
Membre
Dernière intervention
17 octobre 2009

C'est bien et mérite encouragement.
Amicalement H.D.
Messages postés
153
Date d'inscription
vendredi 2 mai 2003
Statut
Modérateur
Dernière intervention
2 avril 2010

c'est gentil
;-)
Messages postés
41
Date d'inscription
mercredi 6 octobre 2004
Statut
Membre
Dernière intervention
18 octobre 2011

C'est Sympa !

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.