python 战舰_python - 还有没有更好的方法来优化此战舰的“射击”功能? - SO中文参考 - www.soinside.com...

这篇博客探讨了在Python中创建战舰游戏时遇到的问题,即如何确保射击功能不会重复已射击过的坐标。作者分享了他们的代码实现,包括`my_shots`二维数组用于记录射击状态,以及`letter_to_column`和`find_value`函数来处理坐标转换和检查。目前的问题在于`shot`函数中,虽然尝试通过随机选择避免重复,但逻辑存在缺陷。博客寻求帮助完善这个功能,以确保射击的唯一性。
摘要由CSDN通过智能技术生成

我正在尝试使用python创建一种战舰机器人的简单方法,但是我的“射击”功能重复相同的坐标时遇到了一些问题。这是我的一些代码:import numpy as np

import random as rnd

numberlist = [1,3,5,7,9]

numberlist2 = [0,2,4,6,8]

my_shots = np.array([

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],

])def letter_to_column(letter):

"""Takes in lettervalue, and returns what column it corresponds to,

zero-indexed.

Example:

letter_to_column('A') # => 0

"""

return "ABCDEFGHIJ".index(letter.upper())def find_value(coordinatestring):

"""Takes in a coordinatestring in the form "letternumber" and returns wheter it is a boat

in the coordinate or not

"""

letter = coordinatestring[0]

row = int(coordinatestring[1])

col = letter_to_column(bokstav)

value = my_shots[row][col]

return value

这是重复拍摄地点的功能,如果有人对如何使该功能不重复已给出的“字母值”有任何解决方案,我将不胜感激。def shot(letter = "A", number = "0"):

# Chekcs if I already have shot there

while find_value(letter + number) == 1:

letter = rnd.choice("ABCDEFGHIJ")

# Uses the "chess method" by only shooting on every other route

if letter_to_column(letter) % 2 == 0:

number = str(rnd.choice(numberlist2))

else:

number = str(rnd.choice(numberlist))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值