Purepunch-Contest

Hier kann alles mögliche diskutiert werden. Themen zu Purebasic sind hier erwünscht.
Flames und Spam kommen ungefragt in den Mülleimer.
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

Purepunch-Contest

Beitrag von Chimorin »

Da hier noch gar keine News dazu kam, mache ich das mal:
http://purebasic.fr/english/viewtopic.php?f=14&t=59765
Bedingungen können dort nachgelesen werden.
Art des Programmes ist egal, es darf aber max. 50 Zeilen à 80Zeichen beherbergen.
Bild

- formerly known as Bananenfreak -
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Purepunch-Contest

Beitrag von NicTheQuick »

Ich bin bei sowas immer so Ideenlos.
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

Re: Purepunch-Contest

Beitrag von Chimorin »

Mein Programm habe ich auch nur geschrieben, weil ich es selber brauche :D
Bild

- formerly known as Bananenfreak -
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Purepunch-Contest

Beitrag von NicTheQuick »

Hab mal was kleines mit der Superformel gebastelt:

Code: Alles auswählen

;*******************************************************************************
;*
;* July-August 2014 PurePunch contest
;* PureBasic 5.22
;* 50 lines of 80 chars, 2 months delay
;*
;* Name     : Superformula
;* Author   : NicTheQuick
;* Date     : 13.07.2014
;* Notes    : Only tested on PB 5.30 b7 on Linux x64!
;*            You can also resize the window.
;* Used Variables: abcdefghijklmnopqrstuvwxyz
;*                 ^^^^^^^^^^^^^^^^ ^M^^^^^^^
;*******************************************************************************
l=1000:w=600:h=600:Define.d a,b,c,d,e,j,k,n,o,p,r,t,x,y,z:OpenWindow(0,0,0,w,
h,"Superformula",#PB_Window_MaximizeGadget):CanvasGadget(0,0,0,w,h):Macro s(a)
Sin(t*a):EndMacro:Repeat:v=WaitWindowEvent(9):f=WindowWidth(0):g=WindowHeight(0)
t=ElapsedMilliseconds():If f!w|g!h:w=f:h=g:ResizeGadget(0,0,0,w,h):ElseIf t>u+20
StartDrawing(CanvasOutput(0)):u=t:t/5000:m=2+2*Int(t)%20:t/2:d=9+9*s(3):e=9*s(5+
0)+9:c=10+9*s(2):a=Abs(s(7)*0.6)+0.1:b=Abs(s(11)*0.6)+0.1:y=Cos(t*9):x=100*s(1)+
150:GrabDrawingImage(0,0,0,w,h):DrawingMode(#PB_2DDrawing_Gradient):j=w/2*(1+y)
DrawAlphaImage(ImageID(0),w*y/x,h*s(9)/x,150):k=h/2*(1+s(9)):LinearGradient(j,k,
w-j,h-k):BackColor(RGB(127*(1+s(7)),127*(1+s(11)),127*(1+s(13)))):FrontColor(0+
RGB(127*(1+s(2)),127*(1+s(3)),127*(1+s(5)))):For i=0 To l:r=i*2*#PI/l:p+s(1+
0)/30000:z=Pow(Pow(Abs(Cos(m*r/4)/a),d)+Pow(Abs(Sin(m*r/4)/b),e),1/c):x=w/2*(1+
Cos(r+p)/z):y=h/2*(1+Sin(r+p)/z):If i:LineXY(n,o,x,y):EndIf:n=x:o=y:Circle(x,y,
Bool(i%(l/20)=0)*w/50/z):Next:StopDrawing():EndIf:Until v=#PB_Event_CloseWindow
Edit: Hab noch zwei, drei Fehler behoben
Edit2: Effekte verbessert
Edit3: Code auf 19 Zeilen gekürzt
Edit4: Ein paar Verbesserungen im ersten Code
Edit5: Jetzt nur noch 17 Zeilen und verbesserter Code
Edit6: Kleiner Bugfix und ersten Code zeichenmäßig verkürzt
Edit7: Jetzt sind es nur noch 13 Zeilen.
Edit8: 20 Kreise hinzugefügt. l definiert die Genauigkeit und darf nicht kleiner als 20 werden.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Purepunch-Contest

Beitrag von NicTheQuick »

Hab wieder ein bisschen optimiert bzw. Code gekürzt. :D
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: Purepunch-Contest

Beitrag von edel »

Oh, erwarten uns dann ein paar Tutorials mit dem Raspberry? ;)
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Purepunch-Contest

Beitrag von NicTheQuick »

Ich denke da gibt's bessere Einsendungen. :D Andererseits habe ich ja noch 37 Zeilen, die leer sind. :P
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Purepunch-Contest

Beitrag von NicTheQuick »

Ich habe mal den Mastermind-Code von cshw89 geändert und ihm eine schönen Holzoptik spendiert. :D
So werden dann aus 28 Zeilen schnell wieder 41.

Code: Alles auswählen

;*******************************************************************************
;*
;* July-August 2014 PurePunch contest
;* PureBasic 5.22
;* 50 lines of 80 chars, 2 months delay
;*
;* Name     :   Mastermind
;* Author   :   cshw89 & NicTheQuick
;* Date     :   14/07/14
;* Notes    :   You have ten attempts to crack the code. Duplicates are
;*              allowed. Click or drag the colors to the respective positions.
;*
;*******************************************************************************
#s=199:Global Dim n.d(#s,#s):For x=0 To#s:For y=0 To#s:n(x,y)=Random(9999)/9999
Next:Next:Macro p(a=):Procedure#a:EndMacro:p(.d) t(e.d,f.d,s.d):r.d=0:g.d=s:
While(s>=1):t.d=e/s:u.d=f/s:i.d=t-Int(t):j.d=u-Int(u):w=Int(t)%#s:b=Int(u)%#s:
c=(w+#s-1)%#s:d=(b+#s-1)%#s:r+(i*j*n(w,b)+i*(1-j)*n(w, d)+(1-i)*(1-j)*n(c,d)+(1+
0-i)*j*n(c,b))*s:s/2:Wend:p(Return)(128*r/g):EndProcedure:p() m(x,y,_,t):c.d=0+
Pow((Red(t)/255),4):w.d=x*5/#s+y*10/#s+t(x,y,21)/50:v.d=128*Abs(Sin(w*#PI))
c=0.5*(c+1):p(Return) RGB(c*(80+v),c*(30+v),30):EndProcedure:CreateImage(0,250,
480,24,$ff):StartDrawing(ImageOutput(0)):DrawingMode(#PB_2DDrawing_Gradient):
For k=0 To 10:For i=0 To 3:CircularGradient(i*40+26,k*40+26,15):FrontColor($7f)
BackColor($ff):Circle(i*40+20,k*40+20,15):Next:Next:CustomFilterCallback(@m())
DrawingMode(#PB_2DDrawing_CustomFilter):Box(0,0,250,480):StopDrawing():#t="Mas"+
"termind":l=-2:Dim i(3):Dim r(3):Macro m:Macro:EndMacro:m u(w):
Val(Mid("$A0A0A0$0000FF$00D000$FF0000$00D0D0$0070D0$D000D0",(w)*7+1,7)):EndMacro
OpenWindow(0,0,0,250,480,#t,#PB_Window_SystemMenu|#PB_Window_ScreenCentered):
CanvasGadget(0,0,0,250,480):m z(x,y,r,c):DrawingMode(#PB_2DDrawing_Gradient):
FrontColor(u(c)):BackColor($ffffff):CircularGradient(x-3,y-3,r):If r:Circle(x,y,
r):EndIf:EndMacro:m c():If StartDrawing(CanvasOutput(0)):DrawImage(ImageID(0),0,
0):If (IsImage(1)):DrawImage(ImageID(1),0,0):EndIf:For i=0 To 3:z(i*40+20,400+
20,Bool(i(i))*15,i(i)):DrawingMode(#PB_2DDrawing_AlphaBlend):c=255-i*10:Box(170+
i,405+i,70-2*i,30-2*i,RGBA(c,c,c,99)):Next:DrawingMode(1):DrawText(193,412,"OK",
0):For i=0 To 5:z(i*30+15,460,9,i+1):Next:If l>0:z(x,y,15,l):EndIf:StopDrawing()
EndIf:EndMacro:For i=0 To 3:r(i)=Random(5)+1:Next:m q(m):MessageRequester(#t,m)
EndMacro:m g(t):GetGadgetAttribute(0,t):EndMacro:Repeat:m V:EndIf:EndMacro:e=0+
WaitWindowEvent():If e=#PB_Event_Gadget:t=EventType():x=g(#PB_Canvas_MouseX):
y=g(#PB_Canvas_MouseY):b=-1:If y>=400:If x<160 And y<440:b=x/40:ElseIf x<180+
0 And y>=440:b=x/30+4:V:V:Select t:Case #PB_EventType_MouseMove:If f=0 And g(0+
#PB_Canvas_Buttons)&#PB_Canvas_LeftButton:If l=-2 And(Abs(x-lx)>1 Or Abs(y-ly)+
0>1):If b=-1:l=-1:ElseIf b<4:l=i(b):i(b)=0:Else:l=b-3:V:V:V:Case 0+
#PB_EventType_LeftButtonUp:If l>0 And b>=0 And b<4:i(b)=l:V:If l=-2:If b>-1+
0 And f=0:If b<4:i(b)=0:Else:For k=0 To 3:If i(k)=0:i(k)=b-3:Break:V:Next:V
Else:If x>=160 And y>=400 And y<440:If f:For k=0 To 3:r(k)=Random(5)+1:i(k)=0
Next:f=0:a=0:c():Else:h=1:For k=0 To 3:If i(k)=0:h=0:V:Next:If h:r=0:w=0:
For i=0 To 3:If r(i)=i(i):i(i)*-1:r(i)*-1:r+1:V:Next:For i=0 To 3:For k=0 To 3
If i(k)>0 And r(i)=i(k) And i<>k:i(k)*-1:w+1:Break:V:Next:Next:StartDrawing(0+
CanvasOutput(0)):For i=0 To 3:i(i)=Abs(i(i)):r(i)=Abs(r(i)):z(i*40+20,a*40+20,
Bool(i(i))*15,i(i)):i(i)=0:Next:DrawingMode(1):i=170:For k=1 To r:Box(i,a*40+12,
16,16,0):i+20:Next:For k=1 To w:Box(i,a*40+12,16,16,$FFFFFF):i+20:Next:
GrabDrawingImage(1,0,0,250,400):StopDrawing():a+1:If r=4:f=1:q("You Win!")
FreeImage(1):ElseIf a=10:For i=0 To 3:i(i)=r(i):Next:c():q("You Lose!"):f=1:V:V
V:V:V:V:l=-2:Case #PB_EventType_LeftButtonDown:If f=0:lx=x:ly=y:V:EndSelect
If y<415:y=415:V:c():V:Until e=#PB_Event_CloseWindow
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Purepunch-Contest

Beitrag von NicTheQuick »

New Stuff!

Neu: Bessere Übergange, wenn sich die Symmetrie ändert.

Code: Alles auswählen

;*******************************************************************************
;*
;* July-August 2014 PurePunch contest
;* PureBasic 5.22
;* 50 lines of 80 chars, 2 months delay
;*
;* Name     : Superformula
;* Author   : NicTheQuick
;* Date     : 13.07.2014
;* Notes    : Only tested on PB 5.30 b7 on Linux x64!
;*            You can also resize the window.
;*            abcdefghijklmnopqrstuvwxyz
;* Variables: ^^^^^^^^^^ ^^^^^^^ ^^^^^^
;* Macros   :                   ^      ^
;*******************************************************************************
w=600:h=600:Define.d a,b,c,d,e,n,o,p,r,t,x,y,z,q:If OpenWindow(0,0,0,w,h,"Supe"+
"rformel",#PB_Window_MaximizeGadget):CanvasGadget(0,0,0,w,h):Macro s(a):Sin(t*a)
EndMacro:l=999:Repeat:f=WindowWidth(0):g=WindowHeight(0):t=ElapsedMilliseconds()
v=WaitWindowEvent(10):If f!w|g!h:w=f:h=g:ResizeGadget(0,0,0,w,h):ElseIf t>u+20+
0 And StartDrawing(CanvasOutput(0)):If q<0:j=m:m=2+2*Random(20):q=1:EndIf:u=t
t/10000:q-0.005:c=10+9*s(2):d=9+9*s(3):a=Abs(s(7)*0.6)+0.1:b=Abs(s(11)*0.6)+0.1
e=9+9*s(5):GrabDrawingImage(0,0,0,w,h):x=150+100*s(1):y=Cos(t*9):n=w/2*(1+y)
DrawAlphaImage(ImageID(0),w*y/x,h*s(9)/x,99):DrawingMode(#PB_2DDrawing_Gradient)
o=h/2*(1+s(9)):LinearGradient(n,o,w-n,h-o):Macro k(a,b,c,d,e=127):a#Color(RGB(0+
e*(1+s(b)),e*(1+s(c)),e*(1+s(d)))):EndMacro:k(Front,2,3,5):k(Back,7,11,13)
Macro z(m):Pow(Pow(Abs(Cos(m*r/4)/a),d)+Pow(Abs(Sin(m*r/4)/b),e),1/c):EndMacro
For i=0 To l:r=i*2*#PI/l:p+s(1)/30000:z=q*z(j)+(1-q)*z(m):x=w/2*(Cos(r+p)/z+1)
y=h/2*(1+0.8*Sin(r+p)/z):If i:LineXY(n,o,x,y):EndIf:n=x:o=y:Circle(x,y,h*Bool(0+
i%(l/20)=0)/70/z):Next:StopDrawing():EndIf:Until v=#PB_Event_CloseWindow:EndIf
Benutzeravatar
dige
Beiträge: 1239
Registriert: 08.09.2004 08:53

Re: Purepunch-Contest

Beitrag von dige »

NicTheQuick hat geschrieben:Ich bin bei sowas immer so Ideenlos.
:lol:

Mensch Nick, Klasse gemacht! :allright: Leider kann man den Quellcode nicht lesen ... gibts denn dann noch unter Tipps und Tricks? :wink:
"Papa, ich laufe schneller - dann ist es nicht so weit."
Antworten