GFA-PUNCHS
EN VRAC
Page crée le 19/09/2002


Page d'accueil   liens punchs

Cette rubrique est toute nouvelle et j'espère l'alimenter le plus possible, avec vos contributions . Votre e-mail et votre url seront alors en liées par cette page !
le but d'un Gfa-punch est d'en mettre plein les yeux avec maximum 20 lignes !
(Dans le même esprit ST-Magazine pour les connaisseurs)
Avant de m'envoyer vos créations (scalion@free.fr)sachez qu'un GFA-PUNCHS ne doit JAMAIS dépasser 20 lignes ! (c'est là toute la prouesse), alors à vos clavier !
sinon je le mettrais dans une nouvelle partie que j'appellerais sources ou quelque chose comma ca (à voir) .

GRAPHISME :
JEU :

Une petite fractale en noir et blanc
OPENW #1,0,0,_X,_Y,0
DELAY 1
f(20,_Y / 2,_X - 40,PI / 2)
KEYGET rien%
CLOSEW #1
PROCEDURE f(x,y,l,a)
  LOCAL ll,aa,l4 ,s,c
  IF l > 1
    f(x,y,l / 4,a)
    aa = a,l4 = l / 4,s = SIN(a),c = COS(a),x = x + s * l4,y = y + c * l4,a = a - PI / 2
    f(x,y,l4,a )
    x = x + SIN(a ) * l4,y = y + COS(a ) * l4,a = a + PI / 2 + PI / 4,ll = l / 2 * SQR(2)
    f(x,y,ll,a )
    x = x + SIN(a + am) * ll,y = y + COS(a + am) * ll
    f(x,y,l4 ,a - PI / 1.3333333333)
    f(x + SIN(a - PI / 1.3333333333) * l4, y + COS( a - PI / 1.3333333333) * l4,l4,aa)
  ELSE
    PLOT x,y
  ENDIF
RETURN

Encore une fractale (Mandelbrot) mais en couleur cette fois!
INFO : Clic gauche pour zoom avant et Clic droit pour zoom arrière.
scry% =_Y/2,scrx%=scry%,x1=-2,s=2,x2=2,y1=-2,y2=2,np%=scrx%*scry%,imax%=127,px=(x2-x1)/scrx%,py=(y2-y1)/scry%
OPENW #1,_X/2-scrx%/2,_Y/2-scry%/2,scrx%,scry%,0
DO
  i%=0,P%=(P%+31)%np%,xx=0,yy=0,x0=x1+(P%%scrx%)*px,y0=y1+((P%\scrx%)*py)
  DO
    i%++,xxx=xx^2-yy^2+x0,yy=2*xx*yy+y0,xx=xxx
  LOOP UNTIL (xxx^2+yy^2>4) OR i%=imax%
  RGBCOLOR RGB(SHL(i%,1),SHL(i%,3),SHL(i%,2))
  PLOT MOD(P%,scrx%),DIV(P%,scrx%)
  IF MOUSEK
    WHILE MOUSEK
      K%=MAX(K%,MOUSEK),cx=x1+MOUSEX*px,cy=y1+MOUSEY*py
    WEND
    EXIT IF K%=3
    s=(s*2)+(K%=1)*(s*1.5),K%=0,x1=cx-s/2,y1=cy-s/2,x2=cx+s/2,y2=cy+s/2,px=(x2-x1)/scrx%,py=(y2-y1)/scry%
  ENDIF
  IF (MOD(P%,scrx%)=0) THEN PEEKEVENT
LOOP
CLOSEW #1

Animation avec flou en scrolling, je vais pas cacher qu'il faut un bon p3, voir un p4, minimum.
Compatible 8,16,24 et 32 bits couleurs mais c'est mieux en 24 ou 32 (programmé en 32bits couleurs).
OPENW #1,_X / 2 - 100,_Y / 2 - 100,199,199,0
GET 0,0,199,199,Z%
a$=SPACE$(20),n%=GetObject(Z%,20,V:a$),B%=BYTE{V:a$+9},p%=-(B%=32)*4-(B%=16)*2-(B%=8)-(B%=24)*3,p%=MAX(p%,1),sf%=200*200*p%,pl%=p%*200,end%=sf%/80,sfpl%=sf%-pl%
DIM o|(sf% + 4)
deb:
i%++,X%=ADD(4,RND*sfpl%),o|(X%)=SHR(ADD(o|(ADD(X%,pl%)),o|(ADD(X%,p%)),o|(SUB(X%,p%))),2)
IF i%<end% THEN GOTO deb
a=a+0.001/(1-(p%=1 OR p%=2)),k%=MOD(SUCC(k%),10-(p%=1)*20-(p%=2)*10),i%=0,X%=SetBitmapBits(Z%,sf%,V:o|(0)),p$="MA "+STR$(INT(70+SIN(a)*50))+","+STR$(INT(100+COS(a)*50))+" TT"+STR$(INT(270+SIN(a*5)*50))
PUT 0,0,Z%
IF k% <> 0 THEN GOTO deb
FREEBMP Z%
RGBCOLOR RGB(127+SIN(a*3)*127,127+SIN(a*2.2)*127,127+COS(a*4.1)*127)
DRAW "SX "+STR$(1+SIN(a*3.4)/2)+" SY "+STR$(1+SIN(a*3.4)/2)+p$+"FD10"+STRING$(5,"LT45FD10")+"LT135FD10LT157PUFD20PDLT113FD25LT270FD20LT205PUFD22PDLT155FD10LT315PUFD23PDLT120FD29LT212FD30LT180PUFD15PDLT70FD9"
RGBCOLOR RGB(127+SIN(a*2)*127,127+SIN(a*3.2)*127,127+COS(a*1.1)*127)
IF p%>2 THEN DRAW 196,0 TO 196,196 TO 0,196
GET 1,1,199,199,Z%
a=a*-(a<32000),n%=GetBitmapBits(Z%,sf%,V:o|(0))
PEEKEVENT
IF MENU(1)<>4 THEN GOTO deb
CLOSEW #1

Un Micro-TETRIS !
OPENW #1,_X/2-200,_Y/2-240,400,440,&x1110000
DIM f%(500),fx%(500),fy%(500),r%(500),col%(600,600)
fy%(0)=420,c%=1,v1=TIMER
DO ' =rotation, Flèches gauche et droite pour le reste
  PAUSE MAX(1,7-(TIMER-v1)/7000)
  CLS
  FOR xyi% = 0 TO (f%*16)-1
    i%=1+xyi%\16,x%=xyi%%16%4,y%=xyi%%16\4
    RGBCOLOR VAL("&H"+MID$("FF0000FFFF0000FF0000FFFF0000FFFF00FF",1+(i%%6)*6,6))
    afx%=MAX(0,MIN(400,fx%(i%)+(x%*-(r%(i%)=0)+(y%+1)*(r%(i%)=1)+(x%+1)*(r%(i%)=2)-y%*(r%(i%)=3))*20))
    afy%=MAX(0,MIN(420,fy%(i%)+(y%*-(r%(i%)=0)-x%*(r%(i%)=1)+(y%+1)*(r%(i%)=2)+(x%+1)*(r%(i%)=3))*20))
    IF BTST(f%(i%),xyi%%16) THEN PBOX afx%+1,afy%+1,afx%+18,afy%+18
    IF BTST(f%(i%),xyi%%16) THEN col%(afx%,afy%)=(col%(afx%,afy%)|-(i%<f%)),c%=MAX(c%,-((i%=f%)&(afy%>400 OR col%(afx%,afy%)=1)))
  NEXT xyi%
  f$=INKEY$,fy%(f%)=fy%(f%)+20-c%*20,fin%=(fy%(f%)=0 AND c%=1)
  IF c%=0 THEN fx%(f%)=MAX(0,MIN(400,fx%(f%)+(-(ASC(RIGHT$(f$))=77)+(ASC(RIGHT$(f$))=75))*20)),r%(f%)=(r%(f%)-(f$=" "))%4
  IF c%=1 THEN c%=0,fy%(f%)=fy%(f%)-20,f%=f%+1,f%(f%)=VAL("&H"+MID$("0F17333647C6",1+(f%%6)*2,2)),r%(f%)=1,fx%(f%)=200
LOOP UNTIL fin%
ALERT 3,"Arrgh!|MICROTETRIS By Nicolas Rey. GFA-PUNCH 25-04-2003|*** GAME OVER ***|Score : "+STR$(INT((TIMER-v1)/1000))+"!",1,"Ok",rien%
CLOSEW #1