Go Fish/Aime: Difference between revisions
Content added Content deleted
No edit summary |
No edit summary |
||
Line 4: | Line 4: | ||
shuffle(list l) |
shuffle(list l) |
||
{ |
{ |
||
integer |
integer c, e; |
||
for (, c in b_draft("SHDC")) { |
|||
⚫ | |||
for (, e in b_draft("A23456789TJQK")) { |
|||
⚫ | |||
l.p_text(drand(~l), data().append(e).append(c)); |
|||
i -= 1; |
|||
⚫ | |||
j = 13; |
|||
while (j) { |
|||
⚫ | |||
l_p_text(l, drand(l_length(l)), |
|||
insert(cut("SHDC", i, 1), 0, |
|||
"A23456789TJQK"[j])); |
|||
} |
|||
} |
} |
||
} |
} |
||
Line 29: | Line 23: | ||
i = 0; |
i = 0; |
||
s = pick; |
s = pick; |
||
while ( |
while (rsk_greater(p, s, s)) { |
||
if (s[0] == pick[0]) { |
|||
i += 1; |
|||
} else { |
|||
break; |
|||
⚫ | |||
} |
|||
} |
} |
||
if (i == 4) { |
if (i == 4) { |
||
books += 1; |
|||
while (i) { |
|||
i -= 1; |
|||
rsk_greater(p, pick, s); |
|||
p.delete(s); |
|||
⚫ | |||
} |
|||
if (!~p) { |
|||
deal(deck, name, p, books); |
|||
} |
|||
} |
|||
} |
} |
||
} |
} |
||
Line 54: | Line 48: | ||
deal(list deck, text name, record p, integer &p_books) |
deal(list deck, text name, record p, integer &p_books) |
||
{ |
{ |
||
if ( |
if (~deck) { |
||
text s; |
|||
lf_e_text(s, deck); |
|||
o_form("dealing /w8/", name); |
|||
⚫ | |||
o_space(8 - length(name)); |
|||
⚫ | |||
o_text(name); |
|||
} |
|||
⚫ | |||
o_text("\n"); |
|||
p[s] = 0; |
|||
⚫ | |||
} |
|||
o_text("\n"); |
|||
r_p_integer(p, s, 0); |
|||
⚫ | |||
} |
} |
||
} |
} |
||
Line 76: | Line 67: | ||
text s; |
text s; |
||
o_form("~: /w2/ books", player, books); |
|||
⚫ | |||
o_winteger(2, books); |
|||
⚫ | |||
if (!compare(player, "P")) { |
if (!compare(player, "P")) { |
||
⚫ | |||
r_first(p, s); |
|||
o_(" ", s); |
|||
do { |
|||
} |
|||
o_text(s); |
|||
} while (r_greater(p, s, s)); |
|||
} else { |
} else { |
||
call_n(~p, o_text, " **"); |
|||
integer i; |
|||
i = r_size(p); |
|||
while (i) { |
|||
⚫ | |||
o_text(" **"); |
|||
} |
|||
} |
} |
||
Line 105: | Line 85: | ||
integer h; |
integer h; |
||
h = |
h = rsk_greater(p, s, d); |
||
if (h) { |
if (h) { |
||
if (s[0] != d[0]) { |
|||
h = 0; |
|||
} else { |
|||
p.delete(d); |
|||
} |
|||
} |
|||
} |
} |
||
Line 125: | Line 105: | ||
while (1) { |
while (1) { |
||
o_text("your pick?\n"); |
|||
f_line(input, pick); |
|||
if (~pick != 1 || place("A23456789TJQK", pick[0]) == -1) { |
|||
⚫ | |||
|| index("A23456789TJQK", pick[0]) == -1) { |
|||
⚫ | |||
o_text("bad choice\n"); |
|||
⚫ | |||
⚫ | |||
if (s[0] != pick[0]) { |
|||
⚫ | |||
o_("you don't have any ", pick, "s\n"); |
|||
} else { |
|||
o_plan("you don't have any ", pick, "s\n"); |
|||
break; |
|||
} |
|||
break; |
|||
} |
|||
} |
|||
} |
} |
||
asked.a_integer(pick, 0); |
|||
t = draw(e, pick, s); |
t = draw(e, pick, s); |
||
if (!t) { |
if (!t) { |
||
o_("computer has no ", pick, "s\n"); |
|||
deal(deck, "player", u, u_books); |
|||
} else { |
} else { |
||
do { |
|||
u[s] = 0; |
|||
} while (draw(e, pick, s)); |
|||
if (!~e) { |
|||
deal(deck, "computer", e, c_books); |
|||
} |
|||
} |
|||
check_book(deck, "player", u, pick, u_books); |
|||
} |
} |
||
Line 166: | Line 145: | ||
text s; |
text s; |
||
for (s in asked) { |
|||
⚫ | |||
do { |
|||
⚫ | |||
if (rsk_greater(c, s, t)) { |
|||
if (s[0] == t[0]) { |
|||
l.append(s); |
|||
lb_p_text(l, s); |
|||
} |
|||
} |
|||
} |
|||
} while (r_greater(asked, s, s)); |
|||
} |
} |
||
if ( |
if (~l) { |
||
pick = l[drand(~l - 1)]; |
|||
} |
} |
||
} |
} |
||
Line 190: | Line 167: | ||
text pick, s; |
text pick, s; |
||
e.first(pick); |
|||
# seemingly dumb choice: ask the first book |
# seemingly dumb choice: ask the first book |
||
pick = delete(pick, 1); |
pick = delete(pick, 1); |
||
# refine choice to something the user has asked for |
# refine choice to something the user has asked for |
||
mull(e, asked, pick); |
mull(e, asked, pick); |
||
o_("computer asks ", pick, "s\n"); |
|||
t = !draw(u, pick, s); |
t = !draw(u, pick, s); |
||
asked.resign(pick); |
|||
if (t) { |
if (t) { |
||
deal(deck, "computer", e, c_books); |
|||
} else { |
} else { |
||
do { |
|||
e[s] = 0; |
|||
} while (draw(u, pick, s)); |
|||
if (!~u) { |
|||
deal(deck, "player", u, u_books); |
|||
} |
|||
} |
|||
check_book(deck, "computer", e, pick, c_books); |
|||
} |
} |
||
Line 226: | Line 203: | ||
u_turn = 1; |
u_turn = 1; |
||
in.stdin; |
|||
deck.shuffle; |
|||
i = 9; |
i = 9; |
||
while (i) { |
while (i) { |
||
deal(deck, "player", u, u_books); |
|||
deal(deck, "computer", e, c_books); |
|||
i -= 1; |
|||
} |
} |
||
while (c_books + u_books != 13) { |
while (c_books + u_books != 13) { |
||
show("C", c_books, e); |
|||
show("P", u_books, u); |
|||
if (u_turn) { |
|||
u_turn = user(deck, e, c_books, u, u_books, ai, in); |
|||
} else { |
|||
u_turn = fnet(deck, e, c_books, u, u_books, ai); |
|||
} |
|||
} |
|||
} |
} |
||
o_("Computer has ", c_books, " books.\n"); |
|||
o_("Player has ", u_books, " books.\n"); |
|||
o_(c_books < u_books ? "Player" : "Computer", " wins.\n"); |
|||
return 0; |
return 0; |