I know there are a lot of these but i've been searching for an hour and nothing is working.
ship2X=eg.passwordbox("Player " + str(playerNumber) + " input the x co-ordinate for your SECOND ship ")
ship2Y=eg.passwordbox("Player " + str(playerNumber) + " input the y co-ordinate for your SECOND ship ")
return[ship2X, ship2Y]
The above code is in a function.
def haveShot(playerNumber, ship, ship2, board):
global ship2
eg.msgbox("Player " + str(playerNumber) + " your shot")
hit=False
shotX=eg.enterbox("Enter the x-coordinate for your shot: ")
shotY=eg.enterbox("Enter the y-coordinate for your shot: ")
.... error checking here....
if int(shotX) == int(ship[0]) and int(shotY) == int(ship[1]):
board[5 - int(shotY)][int(shotX) - 1] = "X"
eg.msgbox("Nice shot! You hit ship 1")
hit = True
elif int(shotX) == int(ship2[0]) and int(shotY) == int(ship2[1]):
board[5 - int(shotY)][int(shotX) - 1] = "X"
eg.msgbox("Nice shot! You hit ship 2")
hit = True
elif board[5 - int(shotY)][int(shotX) - 1] == "o":
eg.msgbox("You already tried that shot! D'oh!")
else:
board[5 - int(shotY)][int(shotX) - 1] = "o"
eg.msgbox("Unlucky - you missed!")
Ye, I have an if before that.
Then I have this near the end:
hit = False
winner = "0"
p1 = 0
p2 = 0
while hit == False:
hit = haveShot("1", player2Ship, player2Ship, player1Board)
if hit:
p1 = p1+1
hit = haveShot("2", player1Ship, player1Ship, player2Board)
if hit:
p2 = p2+2
I copied it from the first enter ship thing so I'm super confused as to why that's happening...
Any ideas?
If you want to see the full code you can see it at: http://pastebin.com/TAyHtnTs
The error I have is if I do enter the correct co-ordinate for the second ship it says I missed it, however if I enter the correct co-ordinates for the first ship it says I hit it like it shoul.
Thanks for the help you can provide :)
Couple of things:
You can't have two subsequent return statements. The first one will exit the function. If you want to return two sets of coordinates return a nested list:
return [[x1, y1], [x2, y2]]
Then use unpacking to get these:
p1ship1, p1ship2 = inputCoords("1")
p2ship1, p2ship2 = inputCoords("2")
Make sure the two ships you're passing in are different (currently they're the same):
hit = haveShot("1", player2Ship, player2Ship, player1Board)
to
hit = haveShot("1", p2ship1, p2ship2, player1Board)
The while hit == False
condition means that the game will exit as soon as player 1's ship is hit. Use another variable to check if the game is over, such as:
while player1ShipCount > 0 and player2ShipCount > 0:
#play game
And keep track of each players' available ships.