160 lines
2.6 KiB
Plaintext
160 lines
2.6 KiB
Plaintext
col[] = [ 802 990 171 229 950 808 ]
|
|
len code[] 4
|
|
len guess[] 4
|
|
#
|
|
subr init_vars
|
|
row = 0
|
|
.
|
|
proc draw_rate r black white . .
|
|
for j range0 2
|
|
for c range0 2
|
|
move c * 3.5 + 71.5 r * 11.5 + 9.4 - j * 3.5
|
|
if black > 0
|
|
color 000
|
|
circle 1.4
|
|
black -= 1
|
|
elif white > 0
|
|
color 999
|
|
circle 1.4
|
|
white -= 1
|
|
else
|
|
color 310
|
|
circle 0.7
|
|
.
|
|
.
|
|
.
|
|
.
|
|
proc show_code . .
|
|
color 531
|
|
move 22 92
|
|
rect 46 8
|
|
for i to 4
|
|
move i * 8 + 20 97
|
|
color col[code[i]]
|
|
circle 2
|
|
.
|
|
.
|
|
proc draw_guess . .
|
|
for c to 4
|
|
move c * 12 + 8 row * 11.5 + 7.5
|
|
color col[guess[c]]
|
|
circle 3.8
|
|
.
|
|
.
|
|
proc next_row . .
|
|
color 420
|
|
linewidth 11
|
|
move 17 row * 11.5 + 7.5
|
|
line 60 row * 11.5 + 7.5
|
|
draw_guess
|
|
move 73.5 row * 11.5 + 7.5
|
|
color 310
|
|
circle 5.0
|
|
color 753
|
|
move 71.5 row * 11.5 + 5
|
|
textsize 7
|
|
text "✓"
|
|
.
|
|
proc rate . .
|
|
move 73.5 row * 11.5 + 7.5
|
|
color 531
|
|
circle 5.2
|
|
c[] = code[]
|
|
g[] = guess[]
|
|
for i to 4
|
|
if c[i] = g[i]
|
|
black += 1
|
|
c[i] = -1
|
|
g[i] = -2
|
|
.
|
|
.
|
|
for i to 4
|
|
for j to 4
|
|
if c[i] = g[j]
|
|
white += 1
|
|
c[i] = -1
|
|
g[j] = -2
|
|
.
|
|
.
|
|
.
|
|
draw_rate row black white
|
|
color 531
|
|
linewidth 12
|
|
move 17 row * 11.5 + 7.5
|
|
line 60 row * 11.5 + 7.5
|
|
draw_guess
|
|
row += 1
|
|
if black = 4
|
|
row = 8
|
|
.
|
|
if row = 8
|
|
show_code
|
|
timer 2
|
|
else
|
|
next_row
|
|
.
|
|
.
|
|
on timer
|
|
row = -2
|
|
.
|
|
proc new . .
|
|
init_vars
|
|
for i to 4
|
|
code[i] = randint 6
|
|
.
|
|
color 531
|
|
move 10 10
|
|
rect 70 80
|
|
linewidth 10
|
|
move 5 95
|
|
line 5 5
|
|
line 85 5
|
|
line 85 95
|
|
line 5 95
|
|
color 310
|
|
linewidth 7
|
|
move 28 96.5
|
|
line 58 96.5
|
|
move 30 95
|
|
color 864
|
|
textsize 4
|
|
text "Mastermind"
|
|
color 310
|
|
linewidth 0.5
|
|
move 10 90
|
|
line 10 4
|
|
move 67 90
|
|
line 67 4
|
|
move 80 90
|
|
line 80 4
|
|
for r range0 8
|
|
for c range0 4
|
|
move c * 12 + 20 r * 11.5 + 7.5
|
|
circle 2
|
|
.
|
|
draw_rate r 0 0
|
|
.
|
|
guess[1] = 1
|
|
guess[2] = 1
|
|
guess[3] = 2
|
|
guess[4] = 2
|
|
next_row
|
|
.
|
|
proc do_move . .
|
|
c = (mouse_x - 15) div 12
|
|
guess[c + 1] = guess[c + 1] mod 6 + 1
|
|
draw_guess
|
|
.
|
|
on mouse_down
|
|
if row = -2
|
|
new
|
|
elif mouse_y > row * 11.5 + 0.5 and mouse_y < row * 11.5 + 10.5 and row < 8
|
|
if mouse_x > 15 and mouse_x < 61
|
|
do_move
|
|
elif mouse_x > 67 and mouse_x < 80
|
|
rate
|
|
.
|
|
.
|
|
.
|
|
new
|