0

This is a fragment of the code where I generate levels for my game. It's just a list (self.Enemies) with Enemy objects with defined position and type. Someone told me that I should try to store levels in a file and make a class that is gonna read it. I'm not sure what this file should look like, just a code in a file or maybe some parameters?

if self.level == 1:
    enemy_style = 1
    for y in range(1, 3):
        for x in range(6):
            a = x * 100 - 5
            enemy = Enemy(x*100 + self.border, y*75, enemy_style)
            self.enemies.append(enemy)
elif self.level == 2:
    enemy_style = 1
    for y in range(3):
        for x in range(8):
            enemy = Enemy(x*100 + self.border, y*75, enemy_style)
            self.enemies.append(enemy)
elif self.level == 3:
    enemy_style = 2
    for y in range(2):
        for x in range(3):
            enemy = Enemy(x*100 + self.border, y*75, enemy_style)
            self.enemies.append(enemy)
elif self.level == 4:
    enemy_style = 1
    for y in range(3):
        if y == 2:
            enemy_style = 2
        for x in range(8):
            enemy = Enemy(x*100 + self.border, y*75, enemy_style)
            self.enemies.append(enemy)
elif self.level == 5:
    enemy_style = 3
    for y in range(2):
        for x in range(1, 5):
            enemy = Enemy(x*100 + self.border, y*75, enemy_style)
            self.enemies.append(enemy)
elif self.level == 6:
    enemy_style = 3
    for y in range(4):
        if y >= 2:
            enemy_style = 2
        for x in range(6):
            enemy = Enemy(x*100 + self.border, y*75 + 40, enemy_style)
            self.enemies.append(enemy)
elif self.level == 7:
    for y in range(4):
        for x in range(8):
            if y <= 2:
                enemy_style = 3
            elif y > 2 and x in range(3, 5):
                enemy_style = 3
            else:
                enemy_style = 2
            enemy = Enemy(x*100 + self.border, y*75 + 40, enemy_style)
            self.enemies.append(enemy)
elif self.level == 8:
    enemy_style = 4
    self.border = 10
    enemy = Enemy(DRAW_SCREEN_SIZE[0]/2, 170, enemy_style)
    enemy.shoot_ratio = 50
    self.enemies.append(enemy)

Neuron
  • 5,141
  • 5
  • 38
  • 59
Miłosz
  • 69
  • 4
  • 1
    Read about the [`pickle`](https://docs.python.org/3/library/pickle.html) module. – Selcuk Oct 12 '21 at 05:51
  • 1
    Welcome to Stack Overflow. Please read [ask]; what you are looking for here is too broad and too subjective. There are any number of ways to design the contents of a file - generally speaking, we don't deal in *design* questions, for exactly that reason. That said, you might find [this very old question](https://stackoverflow.com/questions/3321592/how-do-you-create-a-file-format) helpful. – Karl Knechtel Oct 12 '21 at 06:16

2 Answers2

2

You should read about the pickle moudule. This will allow you to serialize data in python.

Neuron
  • 5,141
  • 5
  • 38
  • 59
Guilherme Féria
  • 110
  • 1
  • 12
0

There are hundreds of solutions. But if you want to stick to well established file types which are easily editable by everyone and well support in all programming languages, I'd suggest one of these:

Neuron
  • 5,141
  • 5
  • 38
  • 59