2D Drawing Contest
2D Drawing Contest
The 2D Contest
Goal, Target :
Draw a Image with pure 2D-Drawing Commands
Rules:
- Only Commands from the 2D-Commandset
(Box,Circle,DrawText,DrawingFont,DrawingMode,Ellipse,FillArea,FrontColor,Line,LineXY,Plot,Point) No dependecys
- Size of Picture is 800 x 600 pixels
- no use of external files
- Don't draw a picture completly with Plot's
- Don't publish your Code/picture in the public before the contest ends
(This is only to save you private creation and nobody copy it for his own needs)
- your filing is only valid with Sourcecode & generated picture.
- The Pictures will be presented later on the web, with your name.
The jury is:
RSBasic, almgaudi & PMTheQuick
(they do not participate this contest)
Send your creation until may, 11th. 2008
(Sourcecode and picture) to:
"pmthequick @ gmail.com"
 
For this time, there are 3 prices:
2 year free webspace with subdomains,email,msql, php
, no traffic-limit and no advertising.
First price:
1 gb space
5 Subdomans
20 emails
2 MySQL databases
3 FTP-Accounts
Second one:
0.5 gb space
2 Subdomans
10 emails
2 MySQL databases
2 FTP-Accounts
Third:
0.25 gb space
1 Subdomans
5 emails
1 MySQL databases
1 FTP-Accounts
If you have more questions, ask here:
(quickly translated by Rings)
			
			
													Goal, Target :
Draw a Image with pure 2D-Drawing Commands
Rules:
- Only Commands from the 2D-Commandset
(Box,Circle,DrawText,DrawingFont,DrawingMode,Ellipse,FillArea,FrontColor,Line,LineXY,Plot,Point) No dependecys
- Size of Picture is 800 x 600 pixels
- no use of external files
- Don't draw a picture completly with Plot's
- Don't publish your Code/picture in the public before the contest ends
(This is only to save you private creation and nobody copy it for his own needs)
- your filing is only valid with Sourcecode & generated picture.
- The Pictures will be presented later on the web, with your name.
The jury is:
RSBasic, almgaudi & PMTheQuick
(they do not participate this contest)
Send your creation until may, 11th. 2008
(Sourcecode and picture) to:
"pmthequick @ gmail.com"
For this time, there are 3 prices:
2 year free webspace with subdomains,email,msql, php
, no traffic-limit and no advertising.
First price:
1 gb space
5 Subdomans
20 emails
2 MySQL databases
3 FTP-Accounts
Second one:
0.5 gb space
2 Subdomans
10 emails
2 MySQL databases
2 FTP-Accounts
Third:
0.25 gb space
1 Subdomans
5 emails
1 MySQL databases
1 FTP-Accounts
If you have more questions, ask here:
(quickly translated by Rings)
					Last edited by Rings on Mon Jul 28, 2008 1:34 pm, edited 1 time in total.
									
			
									SPAMINATOR NR.1
						just a template :
			
			
									
									Code: Select all
Procedure Make2DGFX(ImageNR)
    StartDrawing(ImageOutput(ImageNR))
   
    ;- go on here:
   
   
    ;this is just an example
    For k=0 To 255
      FrontColor(RGB(100,50, k))
      Line(0, k, 800, 0)
    Next
    For k=0 To 255
      Line(0, 600 - k, 800, 0,RGB(100,k, 100))
    Next
   
    DrawingMode(1)
    FrontColor(RGB(255,255,255)) ; print the text to white !
    DrawText(280, 300, "2D Drawing Contest Image")
   
   
    ;-until here
    StopDrawing()
EndProcedure
#win=0
#ImageGadget=0
#Image=0
If OpenWindow(#win, 0, 0, 800, 600, "PureBasic - 2D Image Contest")
    If CreateGadgetList(WindowID(#win))
     id=CreateImage(#Image, 800, 600)
     Make2DGFX(#Image)
     ImageGadget(#ImageGadget, 0, 0, 800, 600, ImageID(#Image))
     Repeat
      EventID = WaitWindowEvent()
     Until EventID = #PB_Event_CloseWindow  ;
     Programname.s=GetFilePart(ProgramFilename())
     SaveImage(#Image,Left(Programname,Len(Programname)-3) + "bmp") ;we save our image as bitmap
    EndIf
EndIf
End   
SPAMINATOR NR.1
						just a few questions...
is there a particular object you'd like the image to be of, or are we free to produce an image of anything?
you say only 2DDrawing commands... what about DrawImage() and DrawingBuffer(), or are we limited to the basic commands?
what asthetic properties are the images to be judged on?
			
			
									
									is there a particular object you'd like the image to be of, or are we free to produce an image of anything?
you say only 2DDrawing commands... what about DrawImage() and DrawingBuffer(), or are we limited to the basic commands?
what asthetic properties are the images to be judged on?
there is no sig, only zuul (and the following disclaimer)
WARNING: may be talking out of his hat
						WARNING: may be talking out of his hat
- Kaeru Gaman
 - Addict

 - Posts: 4826
 - Joined: Sun Mar 19, 2006 1:57 pm
 - Location: Germany
 
DrawImage is allowed to reproduce on-the-fly created parts.
Data import is forbidden, neither as a file, nor as a DataSection.
DrawingBuffer...
to make your internal formulas faster? no problem.
@Rings
did PMtQ not provide an updated version of the rules for you to translate?
DOH...
he couldn't update it... the original thread is locked...
my fault... but RSB could also have reopened it...
			
			
									
									Data import is forbidden, neither as a file, nor as a DataSection.
DrawingBuffer...
to make your internal formulas faster? no problem.
@Rings
did PMtQ not provide an updated version of the rules for you to translate?
DOH...
he couldn't update it... the original thread is locked...
my fault... but RSB could also have reopened it...
oh... and have a nice day.
						- Psychophanta
 - Always Here

 - Posts: 5153
 - Joined: Wed Jun 11, 2003 9:33 pm
 - Location: Anare
 - Contact:
 
- 
				PMTheQuick
 - New User

 - Posts: 3
 - Joined: Thu Apr 17, 2008 1:22 pm
 
- 
				PMTheQuick
 - New User

 - Posts: 3
 - Joined: Thu Apr 17, 2008 1:22 pm
 
- 
				PMTheQuick
 - New User

 - Posts: 3
 - Joined: Thu Apr 17, 2008 1:22 pm
 
Hi dear community,
the jury has voted in a draw. Again many thanks to the jury (RSBasic, almgaudi & I) In addition, thank you, to all who have joined, even if they are worse off, hauptsache you are!
Here are the winning side: http://q-soft.ch/?site=2dcontest
Congratulations to all winners!
 You can now also discuss to what you want to say Contest etc ^ ^ still be beautiful day,
Greetings
PMTheQuick
			
			
									
									
						the jury has voted in a draw. Again many thanks to the jury (RSBasic, almgaudi & I) In addition, thank you, to all who have joined, even if they are worse off, hauptsache you are!
Here are the winning side: http://q-soft.ch/?site=2dcontest
Congratulations to all winners!
Greetings
PMTheQuick
Here's mine. Unfortunately I couldn't send it in, because they stopped accepting submissions 12 hours before what I thought was the deadline. :roll: 
			
			
									
									
						Code: Select all
#TS = 48 ; Tile size
Procedure Mix(Col1, Col2, Alpha)
    R = Red(Col1)
    B = Blue(Col1)
    G = Green(Col1)
    
    R2 = Red(Col2)
    B2 = Blue(Col2)
    G2 = Green(Col2)
    
    R = ((R*Alpha)/255) + ((R2*(255-Alpha)) / 255)
    G = ((G*Alpha)/255) + ((G2*(255-Alpha)) / 255)
    B = ((B*Alpha)/255) + ((B2*(255-Alpha)) / 255)
    
  ProcedureReturn RGB(R, G, B)
EndProcedure
Procedure PlotA(X, Y, Col, Alpha)
  If X >= 0 And Y >= 0
    Plot(X, Y, Mix(Col, Point(X, Y), Alpha))
  EndIf
EndProcedure
Procedure LineXA(X, Y, Width, Col, Alpha)
  Width + X
  For X = X To Width-1
    PlotA(X, Y, Col, Alpha)
  Next
EndProcedure
Procedure LineYA(X, Y, Height, Col, Alpha)
  Height + Y
  For Y = Y To Height-1
    PlotA(X, Y, Col, Alpha)
  Next
EndProcedure
Procedure DrawSky()
  For I = 0 To 600
    C = 255-(i*0.2)
    C = RGB(C-20, C-40, C)
    Line(0, I, 800, 0, C)
  Next
EndProcedure
Procedure DrawCloud(BX, BY, Width, Height, ClumpSize, Seed, Color=#White)
  RandomSeed(Seed)
  For I = 0 To Width*0.6
    YO = Random(Height*2)
    If YO > Height
      YO - (YO-Height)
    EndIf
    Circle(BX+Random(Width), BY+YO, Random(ClumpSize), Color)
  Next
EndProcedure
Procedure DrawClouds()
  DrawCloud(-60, 80,  200,  60, 20, 2345678)
  DrawCloud(100, 280, 50,   10, 8, 17698, RGB(220, 200, 255))
  DrawCloud(300, 80,  50,   10, 8, 17611, RGB(245, 245, 255))
  DrawCloud(400, 100, 200,  60, 20, 176695)
  DrawCloud(750, 180, 200,  30, 10, 176695)
  DrawCloud(150, 180, 200,  30, 10, 176704, RGB(220, 200, 255))
EndProcedure
Procedure MRGB(R, G, B)
  If R > 255
    R = 255
  EndIf
  If G > 255
    G = 255
  EndIf
  If B > 255
    B = 255
  EndIf
  ProcedureReturn RGB(R, G, B)
EndProcedure
Procedure Algo1FillArea(X, Y, CX, CY, Col, Stretch)
  RandomSeed(12349)
  X*#TS
  Y*#TS
  CX*#TS
  CY*#TS
  R = Red(Col)
  B = Blue(Col)
  G = Green(Col)
  For I = 0 To CX-1
    Rnd = Random(Stretch)+1
    For J = 0 To CY-1
      Col = MRGB(R+(I+J)%Rnd, G+(I+J)%Rnd, B+(I+J)%Rnd)
      Plot(X+I, Y+J, Col)
    Next
  Next
EndProcedure
Procedure Algo2FillArea(X, Y, CX, CY, Col)
  RandomSeed(1235)
  X*#TS
  Y*#TS
  CX*#TS
  CY*#TS
  R = Red(Col)
  B = Blue(Col)
  G = Green(Col)
  Box(X, Y, CX, CY, Col)
  C1 = #White
  C2 = #Black
  For I = 1 To CX-1
    For J = 1 To CY-1
      If Random(1) = 0
        PlotA(X+I, Y+J, C1, 32)
        PlotA(X+I-1, Y+J-1, C2, 32)
        Swap C1, C2
      EndIf
    Next
  Next
EndProcedure
Procedure Border(X, Y, CX, CY)
  X*#TS
  Y*#TS
  CX*#TS
  CY*#TS
  LineXA(X, Y, CX, #White, 100)
  LineXA(X, Y+CY-1, CX, #Black, 100)
  
  LineYA(X, Y, CY, #White, 100)
  LineYA(X+CX-1, Y, CY, #Black, 100)
EndProcedure
Procedure Block(X, Y, CX, CY, Col)
  Algo2FillArea(X, Y, CX, CY, Col)
  Border(X, Y, CX, CY)
EndProcedure
Procedure Tube(X, Y, CY)
  X * #TS
  Y * #TS
  CY * #TS
  CX = #TS*2
  TopH = #TS/1.5
  IX = 6
  G1 = RGB(120, 220, 50)
  G2 = RGB(50, 125, 30)
  Box(X+IX, Y, CX-IX*2, CY, G2)
  LineYA(X+IX, Y, CY, 0, 192)
  LineYA(X+CX-IX, Y, CY, 0, 192)
  Box(X, Y, CX, TopH, Mix(0, G1, 192))
  Box(X+1, Y+1, CX-2, TopH-2, G2)
  Line(X+1, Y+1, CX-2, 0, G1)
  
  ; Gloss
  I = 6
  Box(X+I-3, Y+2, 1, TopH-2, G1)
  Box(X+I, Y+2, 2, TopH-2, G1)
  Box(X+I+5, Y+2, 5, TopH-2, G1)
  Box(X+I+15, Y+2, 2, TopH-2, G1)
  
  I + IX
  Box(X+I-3, Y+TopH, 1, CY-TopH, G1)
  Box(X+I, Y+TopH, 2, CY-TopH, G1)
  Box(X+I+5, Y+TopH, 5, CY-TopH, G1)
  Box(X+I+15, Y+TopH, 2, CY-TopH, G1)
  
  I = #TS+9
  Box(X+I, Y+2, 2, TopH-2, G1)
  I - 2
  Box(X+I, Y+TopH, 2, CY-TopH, G1)
  
  ; Inverse gloss
  S = Mix(0, G1, 192)
  I + 14
  Box(X+I, Y+2, 1, TopH-2, S)
  Box(X+I+6, Y+2, 2, TopH-2, S)
  Box(X+I+11, Y+2, 7, TopH-2, S)
  Box(X+CX-7, Y+2, 5, TopH-2, S)
  
  I - IX
  Box(X+I+1, Y+TopH, 1, CY-TopH, S)
  Box(X+I+6, Y+TopH, 2, CY-TopH, S)
  Box(X+I+11, Y+TopH, 7, CY-TopH, S)
  Box(X+I+20, Y+TopH, 6, CY-TopH, S)
  
  ; Top shadow
  Box(X, Y+TopH-5, CX, 5, 0)
EndProcedure
Procedure DrawTubes()
  Tube(14, 7, 2)
  Tube(8, 4, 1)
EndProcedure
Procedure DrawBlocks()
  Stone = RGB(130, 140, 150)
  Wood = RGB(170, 120, 60)
  Block(-1, 9, 5, 1, Stone)
  Block(8, 5, 3, 1, Wood)
  Block(7, 9, 2, 1, Stone)
  Block(14, 9, 3, 1, Wood)
EndProcedure
Procedure DrawWater()
  Water = RGB(50, 180, 255)
  Algo1FillArea(9, 9, 5, 4, Water, 70)
  For I = 0 To 25
    LineXA(9*#TS, 9*#TS+I, 5*#TS, #White, Pow((25-I)/1.7, 2))
  Next
EndProcedure
Procedure DoDraw()
  CreateImage(0, 800, 600, 32)
  StartDrawing(ImageOutput(0))
    DrawSky()
    DrawClouds()
    DrawWater()
    DrawBlocks()
    DrawTubes()
  StopDrawing()
EndProcedure
OpenWindow(0, 0, 0, 816, 616, "", #PB_Window_ScreenCentered | #PB_Window_BorderLess)
CreateGadgetList(WindowID(0))
SetWindowColor(0, #Black)
DoDraw()
ImageGadget(0, 8, 8, 0, 0, ImageID(0))
Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow, #WM_CHAR
      Break
  EndSelect
ForEver
- Psychophanta
 - Always Here

 - Posts: 5153
 - Joined: Wed Jun 11, 2003 9:33 pm
 - Location: Anare
 - Contact:
 
- 
				SofT MANiAC
 - Enthusiast

 - Posts: 142
 - Joined: Mon Sep 17, 2007 10:28 am
 - Location: P.O.P
 - Contact:
 
