Я пытаюсь сделать линкор (в Германии это называется корабли-утопители). У меня есть проблема, которая описана в названии. Больше нечего сказать, но мне нужно что-то написать, чтобы я мог опубликовать это. Может кто-нибудь, пожалуйста, помогите мне, я не вижу проблемы
from random import randint
class Spiel():
def __init__(self):
self.feld = [[],[],[],[],[],[],[],[],[],[]]
for i in range(0,10):
for e in range(0, 10):
self.feld[i].append(0)
def place(self):
boats = [5,4,4,3,3,3,2,2,2,2]
for e in boats:
while True:
ausrichtung = randint(0,1)
if ausrichtung==0: ##Horizontal
z1 = randint(0, 9-e)
z2=randint(0,9)
abschnitt = self.feld[z2][z1:(z1+e)]
if not(1 in abschnitt) and not(2 in abschnitt) :
schiff=[]
for i in range(0,e-2):
schiff.append(1)
self.feld[z2][z1:(z1+e)]=[2,*schiff,2]
break
elif ausrichtung==1: ##Vertikal
z1 = randint(0, 9)
z2=randint(0,(9-e))
z3 = z2
lp=0
for m in range(0, e):
if self.feld[z2][z1] ==1 or self.feld[z2][z1]==2:
lp +=1
z2 += 1
if lp <1:
schiff=[]
for i in range(0,e-2):
schiff.append(1)
self.feld[z3:(z3+e)][z1]=[2,*schiff,2] # PROBLEM HERE
break
print(self.feld[0:1])
print(self.feld[1:2])
print(self.feld[2:3])
print(self.feld[3:4])
print(self.feld[4:5])
print(self.feld[5:6])
print(self.feld[6:7])
print(self.feld[7:8])
print(self.feld[8:9])
print(self.feld[9:10])
spiel = Spiel()
spiel.place()
Ошибка:
Traceback (most recent call last):
File "test.py", line 56, in <module>
spiel.place()
File "test.py", line 40, in place
self.feld[z3 : (z3 + e)][z1] = [2, *schiff, 2]
IndexError: list assignment index out of range