炸弹离开战列舰

时间:2014-11-23 10:02:21

标签: java python google-maps

print("----BATTLESHIPS 3.0 By NAME----")
print("")
print("")

size = input("Map size: ")
size = size.replace(" ", "")
print("------")

keys = {1:'A',2:'B',3:'C',4:'D',5:'E',6:'F',7:'G',8:'H',9:'I',10:'J',11:'K',12:'L',13:'M',14:'N',15:'O',16:'P',17:'Q',18:'R',19:'S',20:'T',21:'U',22:'V',23:'W',24:'X',25:'Y',26:'Z'}

#COORDINATES
for h in "ABCDEFGHIJKLMNOPQRSTUVWXYZ":
  for b in range(1, int(size) + 1): 
    num = [h, b]
    #print(num, end=' ')
#COORDINATES

dict = {}
guess = input("Guess: ")
guess = guess.lower()
guess = guess.replace(" ", "")
print("---")

while guess:

  if guess in dict:
    print("Whoops! You've already hit that coordinate") 

  elif guess not in num:
    print("Woah! That isn't a square!")

  #elif int(guess[1:]) > 10 and int(guess[1:]) >= 1:
    #print("Woah! That isn't a square!")

  else:
    dict[guess]=guess
    print("Hit", guess.upper())

  guess = input("Guess: ")
  guess = guess.lower()
  guess = guess.replace(" ", "")
  print("---")

yn = input("List your guesses? (yes or no)")
yn = yn.lower()

if yn == "yes":

  print("------")
  print("GUESSES:")

  print("---")
  for i in dict:
    print("-", i.upper()) 

elif yn == "no":
  print("Ok, bye!")
else:
  print("---")
  print("Please don't try and trick me. No scores for you!")

我遇到很多麻烦。我应该创建一个程序来扩展一个名为Bomb's Away的简单程序。我试图限制地图的大小,但没有做得很好。我输入的所有内容都表明它不是正方形。

我的问题图片: http://i.imgur.com/iWZDxoH.png

要求:

Bombs Away基于战舰游戏,两名玩家在地图上猜测位置。地图上的每个位置都由字母编号位置标识。在原始问题中,程序记录了玩家输入的每个位置。如果已经记录了坐标,程序就这么说了。

  • 允许用户设置地图的大小。地图总是正方形的。地图不能超过我们的字母表中找到的字符数(即26个字符)。地图的最小尺寸为5列。程序会提示用户提供地图的大小。

  • 输入地图大小时,程序会确保输入了有效数字。如果不是,则向用户显示输入有效号码的消息。在输入可接受的数字之前,用户无法继续。

  • 如果用户键入有效坐标,程序将存储该信息。设计一种创造性的方法,向用户展示已记录坐标。

  • 如果用户键入不存在的坐标,请创建性地向用户显示此消息。不得存储这些坐标。仅存储有效坐标。

1 个答案:

答案 0 :(得分:0)

您继续将num重新绑定到新的列表对象,该列表对象仅包含当前hb值:

for h in "ABCDEFGHIJKLMNOPQRSTUVWXYZ":
    for b in range(1, int(size) + 1): 
        num = [h, b]

最后,如果您输入10作为尺码,则会获得num = ['Z', 10]。用户输入的坐标不会成为该列表的一部分。

您需要将num设置为空列表并追加新坐标,您已将hb值连接到新字符串中:

num = []
for h in "ABCDEFGHIJKLMNOPQRSTUVWXYZ":
    for b in range(1, int(size) + 1): 
        num.append(h + str(b))

您可以使用更紧凑的Python代码来生成相同的结果;使用列表理解和字符串格式:

num = ['{}{}'.format(h, b + 1) 
       for h in "ABCDEFGHIJKLMNOPQRSTUVWXYZ" for b in range(int(size))]

您可能希望限制地图的高度和宽度,因此您需要限制使用的字母数量;你可以按尺寸切片:

num = []
size = int(size)
for h in "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[:size]:
    for b in range(1, size + 1):
        num.append(h + str(b))

请注意size应始终输入为的数字!