Я создаю игрового бота для линкора для сервера Discord. Я еще не реализовал часть Discord, и я все еще делаю логику игры.
Это код:
import numpy as np
import re
waters = np.zeros((10,10),'U2')
headers = ['A','B','C','D','E','F','G','H','I','J']
#PRINTS THE BOARD
for i,header in enumerate(headers):
if i == 0:
print(' ',end='')
print(header + ' ',end='')
if i == len(headers)-1: print()
for x,line in enumerate(waters):
print('%2d'%(x),end='')
for pos in line:
if pos == '':
print(' ##',end='')
else:
print(' '+pos,end='')
print()
board_x_coord = {
"A":0,
"B":1,
"C":2,
"D":3,
"E":4,
"F":5,
"G":6,
"H":7,
"I":8,
"J":9
}
ship_type = [
["CV","Carrier",5],
["BB","Battleship",4],
["CA","Cruiser",3],
["SS","Submarine",3],
["DD","Destroyer",2],
]
def board_coord_to_npcoord(ship,coord):
result = re.findall(r'([a-zA-Z0-9])',coord)
try:
if result[0] in headers:
if int(result[1]) in range(0,9):
if result[2] in headers:
if int(result[3]) in range(0,9):
x_crd_a = board_x_coord.get(result[0])
y_crd_a = int(result[1])
x_crd_b = board_x_coord.get(result[2])
y_crd_b = int(result[3])
print('X: %s , Y: %s , X: %s , Y: %s' %(x_crd_a,y_crd_a,x_crd_b,y_crd_b))
return True
print('Error. Try again.')
except ValueError:
print('Error. Try again.')
return False
for ship in ship_type:
while True:
print('Coordinates for %s (%s): ' %(ship[1],ship[2]),end='')
if board_coord_to_npcoord(ship[0],input()): break
Доска выглядит так:
A B C D E F G H I J
0 ## ## ## ## ## ## ## ## ## ##
1 ## ## ## ## ## ## ## ## ## ##
2 ## ## ## ## ## ## ## ## ## ##
3 ## ## ## ## ## ## ## ## ## ##
4 ## ## ## ## ## ## ## ## ## ##
5 ## ## ## ## ## ## ## ## ## ##
6 ## ## ## ## ## ## ## ## ## ##
7 ## ## ## ## ## ## ## ## ## ##
8 ## ## ## ## ## ## ## ## ## ##
9 ## ## ## ## ## ## ## ## ## ##
Скрипт запросит координаты. Ex. Перевозчик: A0E0, Линкор: A2A5
A B C D E F G H I J
0 CV CV CV CV CV ## ## ## ## ##
1 ## ## ## ## ## ## ## ## ## ##
2 BB ## ## ## ## ## ## ## ## ##
3 BB ## ## ## ## ## ## ## ## ##
4 BB ## ## ## ## ## ## ## ## ##
5 BB ## ## ## ## ## ## ## ## ##
6 ## ## ## ## ## ## ## ## ## ##
7 ## ## ## ## ## ## ## ## ## ##
8 ## ## ## ## ## ## ## ## ## ##
9 ## ## ## ## ## ## ## ## ## ##
Как заполнить выбранные элементы соответствующим типом корабля, а также как обнаружить столкновение?