Пример #1
0
class Swiat:
    def __init__(self, n, m, sc):
        self.N = n
        self.tura = 0
        self.M = m
        self.l = Logs(self)
        self.queue = Kolejka()
        self.aktualnygatunek = "Antylopa"
        self.aktualnyobrazek = pygame.image.load(self.aktualnygatunek + ".bmp")
        self.plikdozapisu = "save.txt"
        self.dozabicia = Zabij()
        self.plansza = [[None for i in range(self.M)] for j in range(self.N)]
        self.ekran = sc
        self.tlo = pygame.image.load("panelgry.png")
        self.pustepole = pygame.image.load("pusty.bmp")
        if n >= m:
            self.skalowanie = int(400 / n)
        else:
            self.skalowanie = int(400 / m)

    def zmienaktualnygatunek(self, str):
        self.aktualnygatunek = str
        self.aktualnyobrazek = pygame.image.load(self.aktualnygatunek + ".bmp")
        self.rysujSwiat()
        pygame.display.update()

    def setField(self, x, y, c):
        self.plansza[x][y] = c

    def GetField(self, x, y):
        return self.plansza[x][y]

    def getN(self):
        return self.N

    def getM(self):
        return self.M

    def CheckField(self, x, y):
        if x < self.N and x >= 0 and y < self.M and y >= 0:
            return True
        return False

    def wykonajTure(self):
        i = 0
        while i < self.queue.length():
            if self.queue.at(i).getGatunek() == "Czlowiek":
                self.dozabicia.kill()
                self.rysujSwiat()
                pygame.display.update()
                self.l.clear()
                self.l.add("Ruch czlowieka!")
                self.l.log()
            self.queue.at(i).akcja()
            i += 1
        self.dozabicia.kill()

    def rysujSwiat(self):
        self.ekran.blit(self.tlo, (0, 0))
        self.ekran.blit(self.aktualnyobrazek, (770, 42))
        x = 5
        y = 5
        for i in range(0, self.N):
            for j in range(0, self.M):
                if self.GetField(i, j) != None:
                    self.ekran.blit(
                        self.GetField(i, j).rysujorganizm(), (x, y))
                else:
                    self.ekran.blit(self.pustepole, (x, y))
                x += self.skalowanie
            x = 5
            y += self.skalowanie

    def save(self):
        file = open(self.plikdozapisu, "w")
        file.write(str(self.N))
        file.write("\n")
        file.write(str(self.M))
        file.write("\n")
        file.write(str(self.queue.length()))
        file.write("\n")
        for i in range(0, self.queue.length()):
            file.write(self.queue.at(i).getGatunek())
            file.write("\n")
            if self.queue.at(i).getGatunek() == "Czlowiek":
                file.write(str(self.queue.at(i).czasumiejetnosci))
                file.write("\n")
            file.write(str(self.queue.at(i).getX()))
            file.write("\n")
            file.write(str(self.queue.at(i).getY()))
            file.write("\n")
            file.write(str(self.queue.at(i).getSila()))
            file.write("\n")
            file.write(str(self.queue.at(i).getIni()))
            file.write("\n")
            file.write(str(self.queue.at(i).getDZ()))
            file.write("\n")
        file.close()
        self.l.clear()
        self.l.add("Pomyślnie zapisano w " + self.plikdozapisu)
        self.rysujSwiat()
        self.l.log()

    def load(self):
        self.plikdozapisu = str(self.plikdozapisu)
        self.plikdozapisu = self.plikdozapisu[25:]
        index = self.plikdozapisu.index("'")
        self.plikdozapisu = self.plikdozapisu[0:index]
        file = open(self.plikdozapisu, "r")
        self.N = int(file.readline())
        self.M = int(file.readline())
        if self.N >= self.M:
            self.skalowanie = int(400 / self.N)
        else:
            self.skalowanie = int(400 / self.M)
        i = int(file.readline())
        for k in range(0, i):
            gatunek = str(file.readline())
            gatunek = gatunek[:len(gatunek) - 1]
            if gatunek == "Czlowiek":
                ablity = int(file.readline())
            x = int(file.readline())
            y = int(file.readline())
            sila = int(file.readline())
            inicjatywa = int(file.readline())
            dlugosczycia = int(file.readline())
            if gatunek == "Czlowiek":
                pom = Czlowiek(self, x, y)
                pom.czasumiejetnosci = ablity
            if gatunek == "BSosnowskiego":
                pom = BSosnowskiego(self, x, y)
            if gatunek == "Guarana":
                pom = Guarana(self, x, y)
            if gatunek == "Mlecz":
                pom = Mlecz(self, x, y)
            if gatunek == "Trawa":
                pom = Trawa(self, x, y)
            if gatunek == "WilczeJagody":
                pom = WilczeJagody(self, x, y)
            if gatunek == "Antylopa":
                pom = Antylopa(self, x, y)
            if gatunek == "Lis":
                pom = Lis(self, x, y)
            if gatunek == "Owca":
                pom = Owca(self, x, y)
            if gatunek == "Wilk":
                pom = Wilk(self, x, y)
            if gatunek == "Zolw":
                pom = Zolw(self, x, y)
            if gatunek == "Cyberowca":
                pom = Cyberowca(self, x, y)
            pom.setSila(sila)
            pom.setIni(inicjatywa)
            pom.setDZ(dlugosczycia)
            self.queue.add(pom)
        self.l.add("Poprawnie zaladowano")
        self.l.log()