RosettaCodeData/Task/Mastermind/EasyLang/mastermind.easy

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