Coding untuk Hunt pada Game Wumpus
Artificial intelligence agent untuk Hunt Wumpus.
AI Agent
Penerapan logic agent pada AI
untuk membuat Implementasi Custom Class pada kelas interface wumpus.Agent.
Coding:
public class CustomAgent implements Agent {
/**
* Do
something before take the action, probably debug...
*/
public void
beforeAction(Player player) {
System.out.println(player.render());
System.out.println(player.debug());
}
/**
* Do
something with the player
*/
public Action
getAction(Player player) {
// Mengetahui Percept
boolean bump = player.hasBump();
boolean breeze = player.hasBreeze();
boolean stench = player.hasStench();
boolean scream = player.hasScream();
boolean glitter = player.hasGlitter();
if (bump || breeze || stench || scream || glitter) {
// TODO: Do some action based on the players perception...
}
return Action.NO_OP;
}
/**
* Do
something after taking the action, probably debug...
*/
public void
afterAction(Player player) {
// Players Last action
System.out.println(player.getLastAction());
// Show a very happy message
if (player.isDead()) {
System.out.println("GAME OVER!");
}
}
}
Untuk melanjutkan interface
pada method getAction untuk mengimplementasikan player untuk melanjutkan
jalannya game. Pada method ini kita dapat mengakses perception dari semua
player untuk mendapatkan segala informasi.
Untuk menjalankan custom Agent,
kita harus memanggil Main Class pada Main method dari World class childern
tersebut.
// Membuat inisialisasi Agent AI
Agent agent = new CustomAgent();
// Membuat wordls dan deklarasi
pada agent
World world = new World(4, 4);
world.execute(agent);
// Print the results
System.out.println(world.renderScore());
Output
Results for *CustomAgent*:
OutCome
|
Score
|
Steps
|
---
|
---
|
---
|
WIN
|
943
|
50
|
Debug
Berikut adalah method untuk
debug pada agents strategy (jangan lupa codingan System.out.println):
// Merenders perspective board
pada players
player.render();
// Membuat Informasi Playes
sebelumnya
player.debug();
// Melanjutkan kelas aksi
player.getLastAction();
// Step-by-step debug
Environment.trace();
Output
|
|
|
|
|
|
|
|
|
|
|
|
|
→
|
|
|
// player.debug()
Position: (1,3,E)
Score: -1
Perceptions: [BREEZE]
GO_FORWARD
Press ENTER to continue...
Deterministic board
Pada akses default, semua
bahaya dan gold berada pada pengaturan random/acak. Kita bisa mengubah akses
pada board dalam method ini:
// Membuat determinan wilayah
pada game
World world = new World(4, 4);
world.setWumpus(0, 1);
world.setPit(2, 2);
world.setPit(3, 0);
world.setGold(1, 1);
// Menampilkan Board Game
System.out.println(world.renderAll());
Output
~
|
|
≈
|
P
|
W
|
$
*
|
≈
|
≈
|
~
|
≈
|
P
|
≈
|
→
|
|
≈
|
|
Simulasi pada Wumpus:
To build simulator: ~> java
WorldApplication.java
To run simulator: ~> java
WorldApplication [options]
Command-line options available:
-d <dimension>
: menerapkan dimensi pada
Wumpus World, dimension x dimension. Default: 4 (a 4x4 world)
-s <steps>
: penerapan angka maksimum pada
step. Default:50
-t <trials>
: penerapan angka untuk
percobaan pada game. Default: 1
-a <randAgent>
: penerapan lokasi agent dan
random generate (penempatan acak) Default: true
-r <seed>
: penerapan pada makanan acak
pada board. Default: (random integer)
-n <nonDeterm>
: penerapan pada agent untuk
terus melanjutkan jalan (GO_FORWARD) pada aksi ketika sudah mati, selagi board
itu masih dalam non-deterministic. Default: false
NOTE: modifikasi pada
AgentFunction.java untuk mengimplementasi agent yang berbeda.
P - Pit
W - live Wumpus
* - Wumpus Mati
G - Gold
A - agent menghadap ke atas
> - agent menghadap ke kanan
V - agent menghadap ke bawah
< - agent menghadap ke kiri
Untuk mencoba game wumpus, dapat didownload melalui link dibawah!!
Wumpus Lite Games
Tidak ada komentar:
Posting Komentar