Added MiniScript version of 40_Gomoko.

(An embarrasingly poor Go Moku game.)
This commit is contained in:
JoeStrout
2023-08-08 16:50:33 -07:00
parent 282adb3337
commit e287e311d4
2 changed files with 110 additions and 0 deletions

View File

@@ -0,0 +1,16 @@
Original source downloaded from [Vintage Basic](http://www.vintage-basic.net/games.html).
Conversion to [MiniScript](https://miniscript.org).
Ways to play:
1. Command-Line MiniScript:
Download for your system from https://miniscript.org/cmdline/, install, and then run the program with a command such as:
miniscript gomoko.ms
2. Mini Micro:
Download Mini Micro from https://miniscript.org/MiniMicro/, launch, and then click the top disk slot and chose "Mount Folder..." Select the folder containing the BASIC program. Then, at the Mini Micro command prompt, enter:
load "gomoko"
run

View File

@@ -0,0 +1,94 @@
print " "*33 + "Gomoku"
print " "*15 + "Creative Computing Morristown, New Jersey"
print; print; print
print "Welcome to the Oriental game of Gomoko."
print; print "The game is played on an N by N grid of a size"
print "that you specify During your play, you may cover one grid"
print "intersection with a marker. The object of the game is to get"
print "5 adjacent markers in a row -- horizontally, vertically, or"
print "diagonally. On the board diagram, your moves are marked"
print "with a '1' and the computer moves with a '2'."
print; print "The computer does not keep track of who has won."
print "To end the game, type -1,-1 for your move."; print
inBounds = function(x,y)
return 0 < x <= n and 0 < y <= n
end function
empty = function(x,y)
return A[x][y] == 0
end function
printBoard = function
for y in range(1,n)
print A[y][1:n+1].join
end for
print
end function
doPlayerMove = function
while true
inp = input("Your play (i,j)? ").replace(" ", "").split(",")
print
if inp.len != 2 then continue
x = inp[0].val; y = inp[1].val
if x == -1 then return false
if not inBounds(x,y) then
print "Illegal move. Try again..."
else if not empty(x,y) then
print "Square occupied. Try again..."
else
break
end if
end while
A[x][y] = 1
globals.lastPlayerMove = [x,y]
return true
end function
doComputerMove = function
// Computer tries a move near the player's last move
for e in range(-1,1)
for f in range(-1,1)
if e==0 and f==0 then continue
x = lastPlayerMove[0] + e; y = lastPlayerMove[1] + f
if inBounds(x,y) and empty(x,y) then
A[x][y] = 2
return
end if
end for
end for
// Computer tries a random move
while true
x = floor(n * rnd + 1); y = floor(n * rnd + 1)
if empty(x,y) then break
end while
A[x][y] = 2
end function
playGame = function
while true
globals.n = input("What is your board size (min 7/ max 19)? ").val
if 7 <= n <= 19 then break
print "I said, the minimum is 7, the maximum is 19."
end while
globals.A = []
for i in range(0,19)
A.push [0]*20
end for
print; print "We alternate moves. You go first..."; print
while true
if not doPlayerMove then return
doComputerMove
printBoard
end while
end function
// Main loop
while true
playGame
print; print "Thanks for the game!!"
q = input("Play again (1 for Yes, 0 for No)? ").val
if q != 1 then break
end while