Jump to content

Honeycombs: Difference between revisions

2,802 bytes added ,  25 days ago
Add FutureBasic solution
m (→‎{{header|Wren}}: Changed to Wren S/H)
(Add FutureBasic solution)
Line 1,641:
 
</pre>
 
=={{header|FutureBasic}}==
<syntaxhighlight lang="futurebasic">
void local fn BuildWindow
long tag, index
CFStringRef title
CFMutableStringRef letters = fn MutableStringWithString( @"ABCDEFGHIJKLMNOPQRSTUVWXYZ" )
window 1, @"Honeycombs", (0,0,419,411), NSWindowStyleMaskTitled
CGrect r = {20,307,95,85}
for tag = 1 to 20
subclass button tag,,, @"", r,, NSBezelStyleSmallSquare
index = rnd(len(letters)-1)
title = mid(letters,index,1)
ButtonSetTitle( tag, title )
MutableStringDeleteCharacters( letters, fn RangeMake( index, 1 ) )
ButtonSetBordered( tag, NO )
ButtonSetTransparent( tag, YES )
r = fn CGRectOffset( r, 0, -82 )
if ( tag mod 4 == 0 )
r.origin.x += 71
if ( r.origin.y < -21.0 )
r.origin.y = 307
else
r.origin.y = 266
end if
end if
next
end fn
 
void local fn ViewDrawRect( tag as long )
CGRect r = fn ViewBounds( tag )
ColorRef titleColor, fillColor
if ( fn ControlIsEnabled( tag ) )
titleColor = fn ColorRed
fillColor = fn ColorYellow
else
titleColor = fn ColorBlack
fillColor = fn ColorMagenta
end if
BezierPathRef path = fn BezierPathInit
BezierPathSetLineWidth( path, 5.0 )
BezierpathSetLineCapStyle( path, NSRoundLineCapStyle )
CGPoint pt = {0,41}
BezierPathMoveToPoint( path, pt )
pt.x += 23.67 : pt.y += 41
BezierPathLineToPoint( path, pt )
pt.x += 47.34
BezierPathLineToPoint( path, pt )
pt.x += 23.67 : pt.y -= 41
BezierPathLineToPoint( path, pt )
pt.x -= 23.67 : pt.y -= 41
BezierPathLineToPoint( path, pt )
pt.x -= 47.34
BezierPathLineToPoint( path, pt )
pt.x -= 23.67 : pt.y += 41
BezierPathLineToPoint( path, pt )
ColorSet( fillColor )
BezierPathFill( path )
ColorSet( fn ColorBlack )
BezierPathStroke( path )
CFStringRef title = fn ButtonTitle( tag )
CFDictionaryRef attrs = @{
NSFontAttributeName:fn FontWithName( @"Helvetica-Bold", 52),
NSForegroundColorAttributeName:titleColor}
CFMutableAttributedStringRef aString = fn MutableAttributedStringWithAttributes( title, attrs )
MutableAttributedStringSetAlignment( aString, NSTextAlignmentCenter )
r.origin.y += 10
AttributedStringDrawInRect( aString, r )
end fn
 
void local fn Finished
long tag
for tag = 1 to 20
if ( fn ControlIsEnabled( tag ) ) then exit fn
next
end
end fn
 
void local fn ButtonAction( tag as long )
ControlSetEnabled( tag, NO )
fn Finished
end fn
 
void local fn DoDialog( ev as long, tag as long )
select ( ev )
case _btnClick : fn ButtonAction( tag )
case _viewDrawRect : fn ViewDrawRect( tag )
end select
end fn
 
random
fn BuildWindow
 
on Dialog fn DoDialog
 
HandleEvents
</syntaxhighlight>
[[file:FutureBasic Honeycombs.png]]
 
=={{header|Go}}==
416

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.