133 lines
2.3 KiB
Plaintext
133 lines
2.3 KiB
Plaintext
col[] = [ 802 990 171 229 950 808 ]
|
|
len code[] 4
|
|
len guess[] 4
|
|
row = 0
|
|
#
|
|
proc draw_rate r black white .
|
|
for j range0 2 : for c range0 2
|
|
x = c * 3.5 + 71.5
|
|
y = r * 11.5 + 9.4 - j * 3.5
|
|
if black > 0
|
|
gcolor 000
|
|
gcircle x y 1.4
|
|
black -= 1
|
|
elif white > 0
|
|
gcolor 999
|
|
gcircle x y 1.4
|
|
white -= 1
|
|
else
|
|
gcolor 310
|
|
gcircle x y 0.7
|
|
.
|
|
.
|
|
.
|
|
proc show_code .
|
|
gcolor 531
|
|
grect 22 92 46 8
|
|
for i to 4
|
|
gcolor col[code[i]]
|
|
gcircle i * 8 + 20 97 2
|
|
.
|
|
.
|
|
proc draw_guess .
|
|
for c to 4
|
|
gcolor col[guess[c]]
|
|
gcircle c * 12 + 8 row * 11.5 + 7.5 3.8
|
|
.
|
|
.
|
|
proc next_row .
|
|
gcolor 420
|
|
glinewidth 11
|
|
gline 17 row * 11.5 + 7.5 60 row * 11.5 + 7.5
|
|
draw_guess
|
|
gcolor 310
|
|
gcircle 73.5 row * 11.5 + 7.5 5.0
|
|
gcolor 753
|
|
gtextsize 7
|
|
gtext 71.5 row * 11.5 + 5 "✓"
|
|
.
|
|
proc rate .
|
|
gcolor 531
|
|
gcircle 73.5 row * 11.5 + 7.5 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
|
|
gcolor 531
|
|
glinewidth 12
|
|
gline 17 row * 11.5 + 7.5 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 = -1
|
|
.
|
|
proc new .
|
|
row = 0
|
|
for i to 4 : code[i] = random 6
|
|
gcolor 531
|
|
grect 10 10 70 80
|
|
glinewidth 10
|
|
gline 5 95 5 5
|
|
gline 5 5 85 5
|
|
gline 85 5 85 95
|
|
gline 85 95 5 95
|
|
gcolor 310
|
|
glinewidth 7
|
|
gline 28 96.5 58 96.5
|
|
gcolor 864
|
|
gtextsize 4
|
|
gtext 30 95 "Mastermind"
|
|
gcolor 310
|
|
glinewidth 0.5
|
|
gline 10 90 10 4
|
|
gline 67 90 67 4
|
|
gline 80 90 80 4
|
|
for r range0 8
|
|
for c range0 4
|
|
gcircle c * 12 + 20 r * 11.5 + 7.5 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 = -1
|
|
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
|