Guess the number/With feedback (player): Difference between revisions
Content added Content deleted
(Added solution for Action!) |
m (→{{header|Phix}}: replaced with gui version) |
||
Line 2,419: | Line 2,419: | ||
=={{header|Phix}}== |
=={{header|Phix}}== |
||
<lang Phix> |
<!--<lang Phix>(phixonline)--> |
||
<span style="color: #000080;font-style:italic;">-- |
|||
printf(1,"Think of a number between %d and %d.\n",{Min,Max}) |
|||
-- demo\rosetta\Guess_the_number2.exw |
|||
while 1 do |
|||
--</span> |
|||
Guess = floor((Max+Min)/2) |
|||
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span> <span style="color: #000080;font-style:italic;">-- (spacing not (yet) great...)</span> |
|||
printf(1,"My guess is %d, is this too high, too low, or correct? (H/L/C)", Guess) |
|||
<span style="color: #008080;">include</span> <span style="color: #000000;">pGUI</span><span style="color: #0000FF;">.</span><span style="color: #000000;">e</span> |
|||
Response = lower(wait_key()) |
|||
<span style="color: #004080;">Ihandle</span> <span style="color: #000000;">lbl</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">guess</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">toohigh</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">too_low</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">correct</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">newgame</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">dlg</span> |
|||
puts(1,"\n") |
|||
if Response='h' then |
|||
<span style="color: #004080;">integer</span> <span style="color: #000000;">Min</span><span style="color: #0000FF;">=</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">Max</span><span style="color: #0000FF;">=</span><span style="color: #000000;">100</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">Guess</span> |
|||
Max = Guess-1 |
|||
<span style="color: #008080;">constant</span> <span style="color: #000000;">LTHINK</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">sprintf</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"Think of a number between %d and %d."</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">Min</span><span style="color: #0000FF;">,</span><span style="color: #000000;">Max</span><span style="color: #0000FF;">})</span> |
|||
elsif Response='l' then |
|||
Min = Guess+1 |
|||
<span style="color: #008080;">procedure</span> <span style="color: #000000;">set_active</span><span style="color: #0000FF;">(</span><span style="color: #004080;">bool</span> <span style="color: #000000;">bActive</span><span style="color: #0000FF;">)</span> |
|||
elsif Response='c' then |
|||
<span style="color: #7060A8;">IupSetInt</span><span style="color: #0000FF;">({</span><span style="color: #000000;">toohigh</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">too_low</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">correct</span><span style="color: #0000FF;">},</span><span style="color: #008000;">"ACTIVE"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">bActive</span><span style="color: #0000FF;">)</span> |
|||
puts(1,"I did it!\n") |
|||
<span style="color: #7060A8;">IupSetInt</span><span style="color: #0000FF;">(</span><span style="color: #000000;">newgame</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"ACTIVE"</span><span style="color: #0000FF;">,</span><span style="color: #008080;">not</span> <span style="color: #000000;">bActive</span><span style="color: #0000FF;">)</span> |
|||
exit |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span> |
|||
else |
|||
puts(1,"I do not understand that...\n") |
|||
<span style="color: #008080;">procedure</span> <span style="color: #000000;">set_guess</span><span style="color: #0000FF;">()</span> |
|||
end if |
|||
<span style="color: #000000;">Guess</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">floor</span><span style="color: #0000FF;">((</span><span style="color: #000000;">Max</span><span style="color: #0000FF;">+</span><span style="color: #000000;">Min</span><span style="color: #0000FF;">)/</span><span style="color: #000000;">2</span><span style="color: #0000FF;">)</span> |
|||
if Max<Min then |
|||
<span style="color: #004080;">string</span> <span style="color: #000000;">title</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">sprintf</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"My guess is %d, is this too high, too low, or correct?"</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">Guess</span><span style="color: #0000FF;">)</span> |
|||
puts(1,"I think something is strange here...\n") |
|||
<span style="color: #008080;">if</span> <span style="color: #000000;">Max</span><span style="color: #0000FF;"><</span><span style="color: #000000;">Min</span> <span style="color: #008080;">then</span> |
|||
exit |
|||
<span style="color: #000000;">set_active</span><span style="color: #0000FF;">(</span><span style="color: #004600;">false</span><span style="color: #0000FF;">)</span> |
|||
end if |
|||
<span style="color: #000000;">title</span> <span style="color: #0000FF;">=</span> <span style="color: #008000;">"I think something is strange here..."</span> |
|||
end while</lang> |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span> |
|||
<span style="color: #7060A8;">IupSetStrAttribute</span><span style="color: #0000FF;">(</span><span style="color: #000000;">guess</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"TITLE"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">title</span><span style="color: #0000FF;">)</span> |
|||
<span style="color: #7060A8;">IupRefresh</span><span style="color: #0000FF;">(</span><span style="color: #000000;">guess</span><span style="color: #0000FF;">)</span> |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span> |
|||
<span style="color: #008080;">function</span> <span style="color: #000000;">click_cb</span><span style="color: #0000FF;">(</span><span style="color: #004080;">Ihandle</span> <span style="color: #000000;">ih</span><span style="color: #0000FF;">)</span> |
|||
<span style="color: #008080;">switch</span> <span style="color: #7060A8;">substitute</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">IupGetAttribute</span><span style="color: #0000FF;">(</span><span style="color: #000000;">ih</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"TITLE"</span><span style="color: #0000FF;">),</span><span style="color: #008000;">"Too "</span><span style="color: #0000FF;">,</span><span style="color: #008000;">""</span><span style="color: #0000FF;">)[</span><span style="color: #000000;">1</span><span style="color: #0000FF;">]</span> <span style="color: #008080;">do</span> |
|||
<span style="color: #008080;">case</span> <span style="color: #008000;">'H'</span><span style="color: #0000FF;">:</span> <span style="color: #000000;">Max</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">Guess</span><span style="color: #0000FF;">-</span><span style="color: #000000;">1</span> <span style="color: #000000;">set_guess</span><span style="color: #0000FF;">()</span> |
|||
<span style="color: #008080;">case</span> <span style="color: #008000;">'L'</span><span style="color: #0000FF;">:</span> <span style="color: #000000;">Min</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">Guess</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span> <span style="color: #000000;">set_guess</span><span style="color: #0000FF;">()</span> |
|||
<span style="color: #008080;">case</span> <span style="color: #008000;">'C'</span><span style="color: #0000FF;">:</span> <span style="color: #7060A8;">IupSetStrAttribute</span><span style="color: #0000FF;">(</span><span style="color: #000000;">guess</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"TITLE"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"I did it!"</span><span style="color: #0000FF;">)</span> |
|||
<span style="color: #000000;">set_active</span><span style="color: #0000FF;">(</span><span style="color: #004600;">false</span><span style="color: #0000FF;">)</span> |
|||
<span style="color: #008080;">case</span> <span style="color: #008000;">'N'</span><span style="color: #0000FF;">:</span> <span style="color: #000000;">Min</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span> <span style="color: #000000;">Max</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">100</span> <span style="color: #000000;">set_guess</span><span style="color: #0000FF;">()</span> |
|||
<span style="color: #000000;">set_active</span><span style="color: #0000FF;">(</span><span style="color: #004600;">true</span><span style="color: #0000FF;">)</span> |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">switch</span> |
|||
<span style="color: #008080;">return</span> <span style="color: #004600;">IUP_DEFAULT</span> |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span> |
|||
<span style="color: #008080;">procedure</span> <span style="color: #000000;">main</span><span style="color: #0000FF;">()</span> |
|||
<span style="color: #7060A8;">IupOpen</span><span style="color: #0000FF;">()</span> |
|||
<span style="color: #000000;">lbl</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">IupLabel</span><span style="color: #0000FF;">(</span><span style="color: #000000;">LTHINK</span><span style="color: #0000FF;">)</span> |
|||
<span style="color: #000000;">guess</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">IupLabel</span><span style="color: #0000FF;">(</span><span style="color: #008000;">""</span><span style="color: #0000FF;">)</span> |
|||
<span style="color: #000000;">toohigh</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">IupButton</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"Too High"</span><span style="color: #0000FF;">,</span> <span style="color: #7060A8;">Icallback</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"click_cb"</span><span style="color: #0000FF;">))</span> |
|||
<span style="color: #000000;">too_low</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">IupButton</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"Too Low"</span><span style="color: #0000FF;">,</span> <span style="color: #7060A8;">Icallback</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"click_cb"</span><span style="color: #0000FF;">))</span> |
|||
<span style="color: #000000;">correct</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">IupButton</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"Correct"</span><span style="color: #0000FF;">,</span> <span style="color: #7060A8;">Icallback</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"click_cb"</span><span style="color: #0000FF;">))</span> |
|||
<span style="color: #000000;">newgame</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">IupButton</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"New Game"</span><span style="color: #0000FF;">,</span> <span style="color: #7060A8;">Icallback</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"click_cb"</span><span style="color: #0000FF;">),</span> <span style="color: #008000;">"ACTIVE=NO"</span><span style="color: #0000FF;">)</span> |
|||
<span style="color: #000000;">dlg</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">IupDialog</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">IupVbox</span><span style="color: #0000FF;">({</span><span style="color: #000000;">lbl</span><span style="color: #0000FF;">,</span> |
|||
<span style="color: #000000;">guess</span><span style="color: #0000FF;">,</span> |
|||
<span style="color: #7060A8;">IupHbox</span><span style="color: #0000FF;">({</span><span style="color: #000000;">toohigh</span><span style="color: #0000FF;">,</span><span style="color: #000000;">too_low</span><span style="color: #0000FF;">,</span><span style="color: #000000;">correct</span><span style="color: #0000FF;">,</span><span style="color: #000000;">newgame</span><span style="color: #0000FF;">},</span> |
|||
<span style="color: #008000;">"GAP=10"</span><span style="color: #0000FF;">)},</span> |
|||
<span style="color: #008000;">`NMARGIN=15x15,GAP=10`</span><span style="color: #0000FF;">),</span> |
|||
<span style="color: #008000;">`MINSIZE=300x100,TITLE="Guess the number2"`</span><span style="color: #0000FF;">)</span> |
|||
<span style="color: #000000;">set_guess</span><span style="color: #0000FF;">()</span> |
|||
<span style="color: #7060A8;">IupShow</span><span style="color: #0000FF;">(</span><span style="color: #000000;">dlg</span><span style="color: #0000FF;">)</span> |
|||
<span style="color: #008080;">if</span> <span style="color: #7060A8;">platform</span><span style="color: #0000FF;">()!=</span><span style="color: #004600;">JS</span> <span style="color: #008080;">then</span> |
|||
<span style="color: #7060A8;">IupMainLoop</span><span style="color: #0000FF;">()</span> |
|||
<span style="color: #7060A8;">IupClose</span><span style="color: #0000FF;">()</span> |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span> |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span> |
|||
<span style="color: #000000;">main</span><span style="color: #0000FF;">()</span> |
|||
<!--</lang>--> |
|||
=={{header|PicoLisp}}== |
=={{header|PicoLisp}}== |