from pokemon import Pokemon from random import randint class PokeBox: def __init__(self, erTom): self._antKolonner = 6 self._antRader = 5 self._allePkm = self._lesPokemonFil("pokedex.csv") if erTom: self._boks = self.lagTomBoks(self._antKolonner, self._antRader) else: self._boks = self.genererBoks() def finnNaboPokemon(self, rad, kol): naboer = self.finnNaboer(rad, kol) for i in range(len(naboer) - 1, -1, -1): if naboer[i] == None: naboer.pop(i) i -= 1 return naboer def finnNaboer(self, rad, kol): naboer = [] for i in range(rad - 1, rad + 2): for j in range(kol - 1, kol + 2): if i != rad or j != kol: # not (i < 0 or j < 0 or i >= self._antRader or j >= self._antKolonner) if i >= 0 and j >= 0 and i < self._antRader and j < self._antKolonner: naboer.append(self._boks[i][j]) return naboer def genererTilfeldigPkm(self): tilfeldigTall = randint(0, len(self._allePkm) - 1) return self._allePkm[tilfeldigTall] def genererBoks(self): boks = self.lagTomBoks(self._antKolonner, self._antRader) for i in range(self._antRader): for j in range(self._antKolonner): settesInn = randint(0, 2) == 1 if settesInn: boks[i][j] = self.genererTilfeldigPkm() return boks def lagTomBoks(self, antKol, antRad): liste = [] for radIndex in range(antRad): liste.append([]) for kolIndex in range(antKol): liste[radIndex].append(None) return liste def printBoks(self): self._prettyPrintMatrix(self._boks) def _prettyPrintMatrix(self, matrix): s = [[str(e) if not e is None else " - " for e in row] for row in matrix] lens = [max(map(len, col)) for col in zip(*s)] fmt = '\t'.join('{{:{}}}'.format(x) for x in lens) table = [fmt.format(*row) for row in s] print('\n'.join(table)) def _lesPokemonFil(self, filnavn): pokemonListe = [] fil = open(filnavn) for linje in fil: linje = linje.strip() data = linje.split(",") if data[0] == "#": continue nr = int(data[0]) navn = data[1] type1 = data[2] type2 = data[3] pokemon = None if type2 == '': pokemon = Pokemon(nr, navn, type1) else: pokemon = Pokemon(nr, navn, type1, type2) pokemonListe.append(pokemon) return pokemonListe boksen = PokeBox(False) #print(boksen.genererTilfeldigPkm()) boksen.printBoks() for nabo in boksen.finnNaboPokemon(4,5): print(nabo, end=" ")