From 749f87a428e1f69ce97abbf8b2ac822c7ce6ca86 Mon Sep 17 00:00:00 2001 From: Volodymyr Kyiashko Date: Fri, 16 Jun 2023 00:51:54 +0200 Subject: [PATCH] printy sa zakomentowane i system oceniania jest bardziej szczegolowy --- main.py | 152 +++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 129 insertions(+), 23 deletions(-) diff --git a/main.py b/main.py index 99fd42b..9b4a188 100644 --- a/main.py +++ b/main.py @@ -70,8 +70,10 @@ class Game: self.allpositionsSet.add(tuple(self.positions)) AllPositionsSetA=len(self.allpositionsSet) if(AllPositionsSetA>AllPositionsSetB): - self.positions.append([1000]) + self.positions.append((1000)) self.allpositions.append(self.positions) + #print("TO SA KOLEJNE po randomowaniu") + #print(self.allpositions) def sprawdz_powtorzenia(tablica): wystapienia = set() for element in tablica[:-1]: @@ -81,6 +83,7 @@ class Game: return False # Brak powtórzeń def ocena_tablicy(dane): for x in range(100): + grade=0 if(sprawdz_powtorzenia(dane[x])): dane[x][-1]=10000000 else: @@ -88,19 +91,60 @@ class Game: x2,y2=dane[x][1] x3,y3=dane[x][2] x4,y4=dane[x][3] - r1=math.sqrt((x1 - x2)**2 + (y1 - y2)**2) - r2=math.sqrt((x2 - x3)**2 + (y2 - y3)**2) - r3=math.sqrt((x3 - x4)**2 + (y3 - y4)**2) + x5,y5=dane[x][4] + + + + r1=math.sqrt((x1 - x4)**2 + (y1 - y4)**2) + r2=math.sqrt((x4 - x2)**2 + (y4 - y2)**2) + r3=math.sqrt((x2 - x3)**2 + (y2 - y3)**2) + r4=math.sqrt((x3 - x5)**2 + (y3 - y5)**2) + r5=math.sqrt((x5 - x4)**2 + (y5 - y4)**2) r12=math.sqrt((x1 - x3)**2 + (y1 - y3)**2) r13=math.sqrt((x1 - x2)**2 + (y1 - y2)**2) - avg=(r1+r2+r3)/3 - grade=abs(r1-avg)+abs(r2-avg)+abs(r3-avg) - if(r1<4): - grade=grade+5 - if(r12<4): - grade=grade+5 - if(r13<4): + r14=math.sqrt((x1 - x5)**2 + (y1 - y5)**2) + spr=math.sqrt((x2 - x3)**2 + (y2 - y3)**2) + spr1=math.sqrt((x2 - x4)**2 + (y2 - y4)**2) + spr2=math.sqrt((x2 - x5)**2 + (y2 - y5)**2) + spr3=math.sqrt((x3 - x4)**2 + (y3 - y4)**2) + spr4=math.sqrt((x3 - x5)**2 + (y3 - y5)**2) + spr5=math.sqrt((x4 - x5)**2 + (y4 - y5)**2) + avg=(r1+r2+r3+r4+r5)/5 + grade=abs(r1-avg)+abs(r2-avg)+abs(r3-avg)+abs(r4-avg)+abs(r5-avg) + if(r1<5): + grade=grade+2 + if(r12<5): + grade=grade+2 + if(r13<5): + grade=grade+2 + if(r14<5): + grade=grade+2 + if(spr<5 or spr1<5 or spr2<5 or spr3<5 or spr4<5 or spr5<5): grade=grade+5 + + + x6,y6=dane[x][-2] + x7,y7=dane[x][-3] + x8,y8=dane[x][-4] + x9,y9=dane[x][-5] + x0,y0=dane[x][-6] + rock1=math.sqrt((x6 - x7)**2 + (y6 - y7)**2) + rock2=math.sqrt((x6 - x8)**2 + (y6 - y8)**2) + rock3=math.sqrt((x6 - x9)**2 + (y6 - y9)**2) + rock4=math.sqrt((x6 - x0)**2 + (y6 - y0)**2) + + rock5=math.sqrt((x7 - x8)**2 + (y7 - y8)**2) + rock6=math.sqrt((x7 - x9)**2 + (y7 - y9)**2) + rock7=math.sqrt((x7 - x0)**2 + (y7 - y0)**2) + + rock8=math.sqrt((x8 - x9)**2 + (y8 - y9)**2) + rock9=math.sqrt((x8 - x0)**2 + (y8 - y0)**2) + + rock0=math.sqrt((x9 - x0)**2 + (y9 - y0)**2) + if(rock1<2 or rock2<2 or rock3<2 or rock4<2 or rock5<2 or rock6<2 or rock7<2 or rock8<2 or rock9<2 or rock0<2): + grade=grade+3 + + grade=round(grade,2)*100 dane[x][-1]=grade return dane @@ -114,38 +158,100 @@ class Game: pary.append([i, j]) return pary self.WszystkiePary=generuj_pary(7) + #print("") + #print("") + #print("WszystkiePary") + #print(self.WszystkiePary) + def polacz_tablice(tablica1, tablica2,n): nowa_tablica = tablica1[:n] + tablica2[n:] return nowa_tablica self.positionsAfterGrade=ocena_tablicy(self.allpositions) + #print("") + #print("") + #print("") + #print("Po ocenie ") + #print(self.positionsAfterGrade) self.sortedAfterGrade=sort_tablicy(self.positionsAfterGrade) - n=10 + #print("") + #print("") + #print("") + #print("Po sortowaniu ") + #print(self.sortedAfterGrade) + n=100 self.licznik=0 - while(self.sortedAfterGrade[0][16]!=0 or self.licznik 50): + self.WynikKombinacji.append(polacz_tablice(gen1,gen2,KombInt)) + else: + self.WynikKombinacji.append(polacz_tablice(gen2,gen1,KombInt)) + #print("Po append") + #print(self.WynikKombinacji) + rollMutacja=random.randint(0,100)# chance 10% + #print("rollMutacja:"+str(rollMutacja)) + if(rollMutacja<90): + #print("rolowanie mutacji") + MutacjaInt=random.randint(0,4) + #print(MutacjaInt) xPoMutacji=random.randint(0,12) #x yPoMutacji=random.randint(0,11) #y + #print("rolowanie x y") + #print(xPoMutacji,yPoMutacji) self.WynikKombinacji[pomWynikInt][MutacjaInt]=[xPoMutacji,yPoMutacji] - pomWynikInt=pomWynikInt+1 + pomWynikInt=pomWynikInt+1 pomWszystkieParyInt=pomWszystkieParyInt+1 laczenieGeneracji=self.sortedAfterGrade[:(100-len(self.WynikKombinacji))]+self.WynikKombinacji + #print("pewna czesc ") + #print(self.sortedAfterGrade[:(100-len(self.WynikKombinacji))]) + #print("reszta ") + #print("") + #print(self.WynikKombinacji) + OcenaWszystkich=ocena_tablicy(laczenieGeneracji) + #print("Przed DODANIEM GENERACJI") + #print(self.sortedAfterGrade) + #print("") + #print("") self.sortedAfterGrade=sort_tablicy(OcenaWszystkich) + #print("Po DODANIU GENERACJI") + #print(self.sortedAfterGrade) self.licznik=self.licznik+1 #self.sortedAfterGrade[0] najlepszy + #print("") + #print("") + print(self.sortedAfterGrade) self.najlepszaGeneracja=self.sortedAfterGrade[0] #Agent,Archer_ork,infantry_ork,sauron,flower,grass x6, rocks x5 tablica 16 elementowa y=0-11 x=0-12 random.randint(x, y) = od x do y downolny int @@ -292,16 +398,16 @@ class Game: elif y < self.agent.rect.y: self.agent.direction = 3 if self.agent.direction==0: - #print("DIRECTION: "+self.agent.AGENT_IMAGES[self.agent.direction]) + ##print("DIRECTION: "+self.agent.AGENT_IMAGES[self.agent.direction]) self.agent.x_change += TILE_SIZE elif self.agent.direction==1: - #print("DIRECTION: "+self.agent.AGENT_IMAGES[self.agent.direction]) + ##print("DIRECTION: "+self.agent.AGENT_IMAGES[self.agent.direction]) self.agent.y_change += TILE_SIZE elif self.agent.direction==2: - #print("DIRECTION: "+self.agent.AGENT_IMAGES[self.agent.direction]) + ##print("DIRECTION: "+self.agent.AGENT_IMAGES[self.agent.direction]) self.agent.x_change -= TILE_SIZE elif self.agent.direction==3: - #print("DIRECTION: "+self.agent.AGENT_IMAGES[self.agent.direction]) + ##print("DIRECTION: "+self.agent.AGENT_IMAGES[self.agent.direction]) self.agent.y_change -= TILE_SIZE self.agent.rotate()