class Player:
'''create a player who owns a map and a ship list'''
def __init__(self):
self.map=Map()
self.shipList=[]
def addShip(self, ship):
self.shipList.append(ship)
def setMap(self):
for i in self.shipList:
j=0
while j<i.length:
print(i.length)
if i.dir==0:
self.map.surface[i.posx+j][i.posy]="X"
elif i.dir==1:
self.map.surface[i.posx][i.posy+j]="X"
else:
self.map.surface[i.posx][i.posy]="X"
j+=1
class Map:
def __init__(self):
self.surface=[[0]*25]*25
def displayMap(self):
for i in self.surface:
print(i)
class Ship:
'''a ship has a position on x and y axis, and a length (in case number) and a direction
(0 =vertical, 1 horizontal, if direction isnt defined or if its something else than 0 or 1,
ship will be only 1 case long'''
def __init__(self, x, y, length=1, direction=-1):
self.length=length
self.posx=x
self.posy=y
self.dir=direction
# Main
j1=Player()
b1=Ship(10, 10, 2, 1)
b2=Ship(18, 1, 2, 0)
b3=Ship(20, 20)
j1.addShip(b1)
j1.addShip(b2)
j1.addShip(b3)
j1.setMap()
j1.map.displayMap()
J'ai voulu faire une bataille navale mais j'ai un problème, lors de la mise en place des bateaux sur la map les bateaux apparaissent sur toute la ligne au lieu de prendre que la place dont ils ont besoin (soit une ou deux cases)
Je pense que le problème vient de la création de la map mais je suis pas sûr et je vois vraiment pas comment résoudre le problème
Il n'y a pas de message d'erreurs mais la liste retournée ressemble à ça :
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Découverte Python Doc Tkinter Les chaînes de caractères
Découverte Python Doc Tkinter Les chaînes de caractères