Data update
This commit is contained in:
parent
796d366b97
commit
35bcdeebf8
504 changed files with 7045 additions and 610 deletions
107
Task/Bulls-and-cows/FutureBasic/bulls-and-cows.basic
Normal file
107
Task/Bulls-and-cows/FutureBasic/bulls-and-cows.basic
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
include "NSLog.incl"
|
||||
str15 guess, goal
|
||||
short x, y
|
||||
cgRect wndrect
|
||||
|
||||
begin enum 1
|
||||
_window
|
||||
_bullLabel
|
||||
_cowLabel
|
||||
_horzLine
|
||||
_vertLine
|
||||
_newGameBtn
|
||||
_alert = 101
|
||||
end enum
|
||||
|
||||
void local fn showStr( string as str15 )
|
||||
short r
|
||||
x = 20
|
||||
for r = 1 to string[0]
|
||||
print %(x,y)chr$( string[r] );
|
||||
x += 39
|
||||
next
|
||||
end fn
|
||||
|
||||
void local fn NewGame
|
||||
str15 ch
|
||||
goal = "" : guess = "" :y = 20
|
||||
window _window,,wndRect
|
||||
text ,,fn colorRed
|
||||
cls
|
||||
fn showStr( "????" )
|
||||
|
||||
do
|
||||
ch = chr$(rnd(9) or _"0")
|
||||
if instr$(0, goal, ch) == 0 then goal += ch
|
||||
until goal[0] == 4
|
||||
|
||||
nslog(@"%u",val&(goal)) //unrem for testing
|
||||
y += 48
|
||||
end fn
|
||||
|
||||
local fn SetWindowFrame
|
||||
CGRect r = fn WindowContentRect( _window )
|
||||
r.size.height += 32
|
||||
r.origin.y -= 32
|
||||
window _window,,r
|
||||
if ( r.origin.y < 150 )
|
||||
alert _alert,, @"Too many guesses!",, @"Give up", YES
|
||||
fn newGame
|
||||
end if
|
||||
end fn
|
||||
|
||||
local fn play( ch as str15 )
|
||||
short r, bulls = 0, cows = 0
|
||||
if instr$(0, guess, ch) then exit fn
|
||||
guess += ch
|
||||
text,,fn colorDarkGray
|
||||
fn showStr( guess )
|
||||
if guess[0] < 4 then exit fn
|
||||
|
||||
for r = 1 to 4
|
||||
if goal[r] == guess[r] then bulls++ : continue
|
||||
if instr$(0, goal, chr$(guess[r]) ) then cows++
|
||||
next
|
||||
|
||||
select
|
||||
case bulls == 4
|
||||
text ,,fn colorRed
|
||||
print %(x + 31, y)("W I N!")
|
||||
y = 20 : fn showStr( goal )
|
||||
case else : print %(x + 35, y)bulls;" "; cows
|
||||
y += 32 : guess = ""
|
||||
end select
|
||||
fn SetWindowFrame
|
||||
end fn
|
||||
|
||||
|
||||
void local fn BuildWindow
|
||||
subclass window _window, @"Bulls and cows", (0,0,311,114), NSWindowStyleMaskTitled + NSWindowStyleMaskClosable
|
||||
wndrect = = fn WindowContentRect( _window )
|
||||
textlabel _bullLabel, @"🐂", (198,59,38,40)
|
||||
textlabel _cowLabel, @"🐄", (255,59,38,40)
|
||||
ControlSetFontWithName( _bullLabel, NULL, 30 )
|
||||
ControlSetFontWithName( _cowLabel, NULL, 30 )
|
||||
box _horzLine,, (12,50,287,5), NSBoxSeparator
|
||||
box _vertLine,, (180,12,5,90), NSBoxSeparator
|
||||
ViewSetAutoresizingMask( _vertLine, NSViewHeightSizable )
|
||||
button _newGameBtn,,, @"New Game", (198,13,100,32)
|
||||
ViewSetAutoresizingMask( _newGameBtn, NSViewMaxYMargin )
|
||||
text @"menlo bold",24,,fn ColorWindowBackground
|
||||
end fn
|
||||
|
||||
void local fn DoDialog( evt as long, tag as long )
|
||||
select ( evt )
|
||||
case _windowKeyDown //: stop
|
||||
short ch = intval( fn EventCharacters )
|
||||
if ch then fn play( chr$( ch or _"0" ) ):DialogEventSetBool(YES)
|
||||
case _btnClick : fn NewGame
|
||||
case _windowWillClose : end
|
||||
end select
|
||||
end fn
|
||||
|
||||
on dialog fn DoDialog
|
||||
fn buildWindow
|
||||
fn newGame
|
||||
|
||||
HandleEvents
|
||||
Loading…
Add table
Add a link
Reference in a new issue