Játék AI ellenfélhez
Hali!
Csinálok egy elég egyszerű játékot, de az ellenfél programozása problémás számomra. Igazság szerint Delphi-ben írom, de nem is a programnyelv a lényeg, hanem az elv. Az lenne a gondom, hogy a "CPU" játékos ütőjének mozgása "emberszerűen" játszon velünk.
Erre remek példa a következő linken lévő játék:
http://www.jatekcsarnok.hu/35593-galaktikus_tenisz-jatek.html
Ebben az ellenfélnek a pillanatnyi helyzetére lennék kíváncsi, hogy mi alapján határozható meg. Ha valakinek valamilyen ötlete, leírása, példakódja, elképzelése van kérem segítsen:)
■ Csinálok egy elég egyszerű játékot, de az ellenfél programozása problémás számomra. Igazság szerint Delphi-ben írom, de nem is a programnyelv a lényeg, hanem az elv. Az lenne a gondom, hogy a "CPU" játékos ütőjének mozgása "emberszerűen" játszon velünk.
Erre remek példa a következő linken lévő játék:
http://www.jatekcsarnok.hu/35593-galaktikus_tenisz-jatek.html
Ebben az ellenfélnek a pillanatnyi helyzetére lennék kíváncsi, hogy mi alapján határozható meg. Ha valakinek valamilyen ötlete, leírása, példakódja, elképzelése van kérem segítsen:)
Szerintem nem kell
Mikor a játékos elüti a labdát már lehet tudni hova érkezik meg, vagyis a gépi játékos tudhatja egyből hogy hova kell pozicionálnia magát. Persze ha egyből elindul a max sebességgel a labda érkezési pozíciójához, akkor az nem lesz túl emberi.
Én annyit csinálnék hogy az indulását késleltetném egy véletlen számmal, és mondjuk tizedmásodpercenként is néznék egy véletlen számot, ha ez a szám elér egy bizonyos értéket akkor egy pillanatra megállítanám, ha egy másik értéket ér el, akkor pedig a célpozíciót tolnám el egy kicsit. Vagyis néha lassan reagálna, néha gyorsan, néha nyomkodná az irányt, néha túl haladna a labdán, stb...
Szerintem egy ilyen játéknál ez a módszer megfelelő, persze a paraméterek beállításával kell szórakozni egy kicsit.
Esetleg könnyű fokozaton a gépi játékosnak nem a labda érkezési pozícióját adnád meg, hanem az x pozícióját és arra törekedne hogy épp a labdával szemben legyen mindig, de így elég buta lenne.
Remélem tudtam segíteni.
Üdv
Gábor