def hyokkays_toiminto(self): # katsotaan ensin, mahdolliset hyökkäyksen kohteet ja kyvyt ja tallennetaan ne sanakirjaan paras_kohde = Tekoaly.hyokkays_toiminto(self) if paras_kohde is None: pass elif paras_kohde == "KYKY1": self.kyky1() elif paras_kohde == "KYKY2": self.kyky2() self.liiku_ruutuun(self.__kyky2_ruutu) QtTest.QTest.qWait(self.kayttoliittyma.pelinohjain.viive) kohde = Tekoaly.hyokkays_toiminto(self, True) if kohde is not None: kohde.hyokkayksen_kohde(self) else: paras_kohde.hyokkayksen_kohde(self)
class KPSTekoaly(KiviPaperiSakset): def __init__(self): self._tekoaly = Tekoaly() def _toisen_pelaajan_siirto(self, ensimmainen_siirto): siirto = self._tekoaly.anna_siirto() print(f"Tietokone valitsi: {siirto}") return siirto
class KPSTekoaly(KPS): def __init__(self): self._tekoaly = Tekoaly() def _toisen_siirto(self, ensimmaisen_siirto): tokan_siirto = self._tekoaly.anna_siirto() print(f"Tietokone valitsi: {tokan_siirto}") return tokan_siirto
class KPSTekoaly(KPS): def __init__(self): super().__init__() self.tekoaly = Tekoaly() def _toisen_siirto(self, siirto): return self.tekoaly.anna_siirto()
def pisteyta_ruutu(self, ruutu, kohderuutu): # pisteytys vihollisten perusteella pisteet = Tekoaly.pisteyta_kantamalla_olevat_viholliset(ruutu, self) # maaston puolustus ja hyökkäys maastokerroin_oma = Tekoaly.pisteyta_liikuttava_maasto(self, ruutu) pisteet *= maastokerroin_oma # kohteen lähestyminen kerroin = Tekoaly.pisteyta_kohteen_lahestyminen(self, ruutu, kohderuutu) pisteet *= kerroin # läheinen oma yksikkö etaisyyskerroin = Tekoaly.pisteyta_oman_yksikon_laheisyys(self, ruutu) pisteet *= etaisyyskerroin return pisteet
class KPSTekoaly(KPS): def __init__(self): self._tekoaly = Tekoaly() # toteutetaan metodi pelityypin mukaisesti def _toisen_siirto(self, ensimmaisen_siirto): tokan_siirto = self._tekoaly.anna_siirto() print("Tietokoneen siirto: " + tokan_siirto) return tokan_siirto
def hyokkays_toiminto(self): # katsotaan ensin, mahdolliset hyökkäyksen kohteet ja tallennetaan ne sanakirjaan paras_kohde = Tekoaly.hyokkays_toiminto(self) if paras_kohde is None: pass elif paras_kohde == "KYKY1": self.kyky1_lisaa_kohde(self.__kyky1_kohde, True) elif paras_kohde == "KYKY2": self.kayta_kyky2(self.__kyky2_kohde) else: paras_kohde.hyokkayksen_kohde(self)
def pelaa(self): tuomari = Tuomari() tekoaly = Tekoaly() ekan_siirto = input("Ensimmäisen pelaajan siirto: ") tokan_siirto = tekoaly.anna_siirto() print(f"Tietokone valitsi: {tokan_siirto}") while self._onko_ok_siirto(ekan_siirto) and self._onko_ok_siirto( tokan_siirto): tuomari.kirjaa_siirto(ekan_siirto, tokan_siirto) print(tuomari) ekan_siirto = input("Ensimmäisen pelaajan siirto: ") tokan_siirto = tekoaly.anna_siirto() print(f"Tietokone valitsi: {tokan_siirto}") print("Kiitos!") print(tuomari)
def __pisteyta_ruutu_kyky1(self, ruutu): pisteet = 0 if ruutu.yksikko is not None and ruutu.yksikko.omistaja == "PLR": pisteet += Tekoaly.pisteyta_pelkka_kohde(self, ruutu.yksikko) naapurit = {} for naapuri in ruutu.naapurit: if naapuri.yksikko is not None and naapuri.yksikko.omistaja == "PLR" and naapuri in self.ruudut_kantamalla: naapurit[naapuri] = Tekoaly.pisteyta_pelkka_kohde( self, naapuri.yksikko) else: naapurit[naapuri] = 0 # lajitellaan naapurit lajiteltu = sorted(naapurit.items(), key=lambda x: x[1], reverse=True) kohteet = [ruutu] # lisätään parhaat naapurit kohteisiin ja lisätään niiden pisteet kokonaispisteisiin for kohde in lajiteltu: if len(kohteet) < self.kyky1_kohteiden_maara: kohteet.append(kohde[0]) pisteet += kohde[1] return kohteet, pisteet
def __init__(self): self._tekoaly = Tekoaly()
def liike(self, kohderuutu): Tekoaly.liike(self, kohderuutu)
def luo_pelaaja_vs_tekoaly_peli(): return kps.KPSTekoaly(Tekoaly())
def __init__(self): super().__init__() self.tekoaly = Tekoaly()
def liike(self, kohderuutu): # arvioidaan paras kohde liikkumiselle self.__kohderuutu = kohderuutu Tekoaly.liike(self, kohderuutu)