日本欧洲视频一区_国模极品一区二区三区_国产熟女一区二区三区五月婷_亚洲AV成人精品日韩一区18p

代寫 CPT204 Intelligent Rogue Chars

時間:2024-05-30  來源:  作者: 我要糾錯



Coursework 3 – Intelligent Rogue Chars 
Intelligent game-playing characters have been used in the game industry to harness 
the power of graph algorithms to navigate complex virtual environments, strategically 
analyzing interconnected nodes and edges to optimize their movements and decisionmaking
 processes. By leveraging graph traversal techniques such as breadth-first 
search (BFS) and depth-first search (DFS), these characters can efficiently explore vast 
game worlds, identify optimal paths, and anticipate opponent movements. 
 
In this coursework, you will use graph algorithms you have learned in Lecture 10 to 
develop an effective approach to track and intercept a moving opponent in a 
(simplified version of the) 2D Game called Rogue. You will also create a viable plan to 
evade interception from said opponent. 
 
Rogue 
The game Rogue was created by Michael Toy and Glen Wichman, who, while 
experimenting with Ken Arnold's C library named curses in the late 1970s, designed a 
graphical adventure game shown below. 
 
In 1984, CMU graduate students developed Rog-o-matic, an automated Rogue player, 
which became the highest-rated player. Rog-o-matic's algorithm prioritized avoiding 
monster encounters to facilitate health regeneration, posing an intriguing graph 
search challenge, which inspired this coursework. 
 3 
 
Rules of the Game 
The game of Rogue is played on an N-by-N grid that represents the dungeon. The two 
players are a rogue and a monster. The rogue is represented with the character @. 
The monster is represented by an uppercase letter A through Z. 
The monster and rogue take turns making moves, with the monster going first. If the 
monster intercepts the rogue (i.e., occupies the same site), then the monster kills the 
rogue, and the game ends. In each turn, a player either remains stationary or moves 
to an adjacent site. 
 
There are three types of sites: 
1. Rooms represented by . 
2. Corridors represented by + 
3. Walls represented by (a space) 
 
The movement rules are: 
 If a player is in a room site, then they can move to an adjacent room site in one 
of the 8 compass directions (N, E, S, W, NW, NE, SW, SE) or a corridor site in 
one of the 4 directions (N, E, S, W). 
 If a player is in a corridor site, then they can move to an adjacent room or 
corridor site in one of the 4 directions (N, E, S, W). 
 The walls are impenetrable. 
 
Consider the following two dungeons. 
 
In the first dungeon above, the rogue can avoid the monster I indefinitely by moving 
N and running around the corridor. 
 
In the second dungeon, the monster A can use the diagonal moves to trap the rogue 
in a corner. 4 
 
Monster's Strategy 
The monster is tenacious and its sole mission is to chase and intercept the rogue. A 
natural strategy for the monster is to always take one step toward the rogue. In terms 
of the underlying graph, this means that the monster should compute a shortest path 
between itself and the rogue, and take one step along such a path. This strategy is not 
necessarily optimal, since there may be ties, and taking a step along one shortest path 
may be better than taking a step along another shortest path. 
 
Consider the following two dungeons. 
 
In the first dungeon above, monster B's only optimal strategy is to take a step in the 
NE direction. Moving N or E would enable the rogue to make a mad dash for the 
opposite corridor entrance. 
 
In the second dungeon, the monster C can guarantee to intercept the rogue by first 
moving E. 
 
Your first task is to implement an effective strategy for the monster. To implement 
the monster's strategy, you may want to consider using BFS. 
 
Rogue's Strategy 
The rogue's goal is to avoid the monster for as long as possible. A naive strategy is to 
move to an adjacent site that is as far as possible from the monster's current location. 
That strategy is not necessarily optimal. 
 
Consider the following two dungeons. 
 
It is easy to see that that strategy may lead to a quick and unnecessary death, as in 
the second dungeon above where the rogue can avoid the monster J by moving SE. 
 
Another potentially deadly strategy would be to go to the nearest corridor. To avoid 
the monster F in the first dungeon, the rogue must move towards a northern corridor 
instead. 
 
A more effective strategy is to identify a sequence of adjacent corridor and room sites 
which the rogue can run around in circles forever, thereby avoiding the monster 
indefinitely. This involves identifying and following certain cycles in the underlying 
graph. Of course, such cycles may not always exist, in which case your goal is to survive 
for as long as possible. To implement the rogue's strategy, you may want to use both 
BFS and DFS. 
 
Implementation and Specification 
In this section, you will discover the expected details regarding the implementation 
and specifications of the Rogue game, which you are required to adhere to. 
 
Dungeon File Input Format 
The input dungeon consists of an integer N, followed by N rows of 2N characters 
each. For example: 
 
A room is a contiguous rectangular block of room sites. Rooms may not connect 
directly with each other. That is, any path from one room to another will use at least 
one corridor site. 
There will be exactly one monster and one rogue, and each will start in some room 
site. 
 
You will be given 18 dungeon files to test your code with. 
You may create your own dungeon files (explain the novelty in your report/video!). 
In the rubric subsection below, you are required to show the correctness and the 
performance of your rogue and monster on at least 5 non-trivial dungeons in total. 
 
Game of Rogue Specification 
We will provide some files that are already completed as the game infrastructure. 
There are two files to complete: Monster.java and Rogue.java, for which some 
skeleton code is provided. 
The given files are only for a quick start: you should modify the files so your program 
exhibits more object-oriented programming principles! 7 
 
The following is the interface of Monster.java : 
public Monster(Game g) // create a new monster playing game g 
public Site move() // return adjacent site to which it moves 
 
And the analogous program Rogue.java: 
public Rogue(Game g) // create a new rogue playing a game g 
public Site move() // return adjacent site to which it moves 
 
The move() method should implement the move of the monster/rogue as specified 
by the strategy that you have created. 
 
Game.java reads in the dungeon from standard input and does the game playing and 
refereeing. It has three primary interface functions that will be needed by 
Rogue.java and Monster.java. 
public Site getMonsterSite() // return site occupied by monster 
public Site getRogueSite() // return site occupied by rogue 
public Dungeon getDungeon() // return the dungeon 
 
Dungeon.java represents an N-by-N dungeon. 
public boolean isLegalMove(Site v, Site w) // is moving from site v 
 to w legal? 
public boolean isCorridor(Site v) // is site v a corridor site? 
public boolean isRoom(Site v) // is site v a room site? 
public int size() // return N = dim of dungeon 
 
In.java is a library from Algorithms optional textbook to read in data from various 
sources. You will have to create your own input library for your CW3 program. 
 
Site.java is a data type that represents a location site in the N-by-N dungeon. 
public Site(int i, int j) // create new Site for location (i, j) 
public int i() // get i coordinate 
public int j() // get j coordinate 
public int manhattan(Site w) // return Manhattan distance 
 from invoking site to w 
public boolean equals(Site w) // is invoking site equal to w? 
 
If you have two sites located at coordinates (i1, j1) and (i2, j2), then the Manhattan 
distance between the two sites is |i1 - i2| + |j1 - j2|. This represents the length you 
have to travel, assuming you can only move horizontally and vertically. 
 
You should modify the files or create other Java files, so your final program exhibits 
more object-oriented programming principles. Finally, you must only use libraries 
that are covered in CPT204 (including in Liang textbook). Violating this by using 
libraries that are not covered in CPT204 will result in an automatic total mark of 0. 

請加QQ:99515681  郵箱:99515681@qq.com   WX:codinghelp
















 

標簽:

掃一掃在手機打開當前頁
  • 上一篇:INFS 2042代做、代寫 Java 編程設計
  • 下一篇:代做UIC's finance office.、代寫java編程語言
  • 無相關信息
    昆明生活資訊

    昆明圖文信息
    蝴蝶泉(4A)-大理旅游
    蝴蝶泉(4A)-大理旅游
    油炸竹蟲
    油炸竹蟲
    酸筍煮魚(雞)
    酸筍煮魚(雞)
    竹筒飯
    竹筒飯
    香茅草烤魚
    香茅草烤魚
    檸檬烤魚
    檸檬烤魚
    昆明西山國家級風景名勝區
    昆明西山國家級風景名勝區
    昆明旅游索道攻略
    昆明旅游索道攻略
  • NBA直播 短信驗證碼平臺 幣安官網下載 歐冠直播 WPS下載

    關于我們 | 打賞支持 | 廣告服務 | 聯系我們 | 網站地圖 | 免責聲明 | 幫助中心 | 友情鏈接 |

    Copyright © 2025 kmw.cc Inc. All Rights Reserved. 昆明網 版權所有
    ICP備06013414號-3 公安備 42010502001045

    日本欧洲视频一区_国模极品一区二区三区_国产熟女一区二区三区五月婷_亚洲AV成人精品日韩一区18p

              国产精品午夜av在线| 欧美成人精精品一区二区频| 亚洲第一在线视频| 国产精品白丝jk黑袜喷水| 久久国产高清| 正在播放亚洲| 亚洲精品综合| 亚洲国产精品一区二区久| 国产视频自拍一区| 欧美四级伦理在线| 欧美日韩国产精品一卡| 毛片一区二区三区| 亚洲欧洲精品成人久久奇米网 | 亚洲国产精品久久久久| 国产精品亚洲精品| 欧美日韩亚洲一区二区三区在线| 久久婷婷av| 久久九九热re6这里有精品| 亚洲在线免费| 亚洲在线免费观看| 亚洲一区二区三区在线观看视频 | 国产综合色一区二区三区 | 欧美日韩ab| 欧美a级片网站| 免费在线观看一区二区| 久久一区欧美| 欧美xxxx在线观看| 欧美激情一区二区三区全黄| 欧美国产日韩亚洲一区| 欧美精品观看| 欧美日韩无遮挡| 欧美日韩综合久久| 国产精品福利在线| 国产精品视频精品视频| 国产区在线观看成人精品| 国产欧美另类| 国内精品久久久久久久影视麻豆| 国产一区二区三区在线观看精品| 国产亚洲二区| 91久久国产综合久久| 在线观看成人av电影| 亚洲国产日韩美| 一区二区三区四区五区精品视频| 在线亚洲国产精品网站| 亚洲网站在线观看| 久久国产福利国产秒拍| 免费看亚洲片| 欧美午夜精品久久久久久人妖| 国产精品日韩欧美一区二区三区| 国产无一区二区| 亚洲人永久免费| 亚洲一区二区三区在线视频| 久久久999成人| 欧美精品少妇一区二区三区| 国产精品视区| 亚洲国产一区二区三区高清| 亚洲一区二区三区国产| 久久午夜精品一区二区| 欧美日韩一区自拍| 一色屋精品视频免费看| 这里是久久伊人| 久久综合中文| 国产伦精品一区二区三区照片91| 禁断一区二区三区在线| 亚洲乱码国产乱码精品精天堂 | 国产麻豆9l精品三级站| 亚洲国产视频直播| 亚洲欧美一级二级三级| 免费中文日韩| 国产精品久久久久久久9999| 91久久黄色| 久久久久久久成人| 国产精品久线观看视频| 亚洲第一级黄色片| 午夜视频久久久久久| 欧美激情第二页| 一区二区三区中文在线观看| 亚洲在线视频一区| 欧美激情欧美狂野欧美精品| 精品动漫3d一区二区三区免费版 | 亚洲一区二区三区四区在线观看| 久久综合久久88| 欧美成人综合一区| 韩国久久久久| 欧美一级成年大片在线观看| 欧美日韩午夜剧场| 91久久久久久| 久久久www成人免费无遮挡大片 | 欧美一站二站| 国产精品亚洲人在线观看| 99一区二区| 欧美日韩亚洲国产精品| 亚洲国产一区二区a毛片| 免费欧美网站| 最新成人在线| 欧美另类人妖| 一本色道久久综合狠狠躁篇怎么玩| 免费精品99久久国产综合精品| 韩国三级电影久久久久久| 久久久久91| 激情一区二区| 欧美不卡在线视频| 亚洲日本va在线观看| 欧美另类69精品久久久久9999| 亚洲国产欧洲综合997久久| 欧美精品偷拍| 亚洲天堂激情| 国产精品久久午夜| 亚洲免费在线视频| 国产一区二区精品| 美女精品一区| 一本一本a久久| 国产精品每日更新在线播放网址| 亚洲免费网站| 极品尤物久久久av免费看| 欧美大片在线影院| 中文亚洲欧美| 一区在线视频观看| 欧美经典一区二区| 性18欧美另类| 亚洲国产精品视频一区| 欧美三级韩国三级日本三斤| 亚洲女ⅴideoshd黑人| 国产日韩欧美a| 欧美成人自拍视频| 亚洲欧美不卡| 亚洲电影在线播放| 欧美视频在线观看一区二区| 久久激情一区| 夜夜嗨av一区二区三区| 国产一区二区三区高清在线观看 | 亚洲美女黄网| 国产一区二区三区网站| 欧美日韩美女在线| 久久久久国产精品午夜一区| 一区二区久久| 在线看不卡av| 国产偷久久久精品专区| 欧美绝品在线观看成人午夜影视| 久久gogo国模啪啪人体图| 亚洲剧情一区二区| 激情视频一区二区三区| 欧美色偷偷大香| 免费视频亚洲| 久久久www| 欧美一区二区三区四区在线| 亚洲精品视频免费| 亚洲福利视频网| 国产亚洲精品久久久久婷婷瑜伽 | 99精品视频免费观看视频| 在线观看91久久久久久| 国产综合视频在线观看| 国产精品亚洲网站| 欧美午夜视频| 欧美午夜精品电影| 欧美日韩高清在线一区| 欧美经典一区二区三区| 欧美aaa级| 免费久久精品视频| 久久免费99精品久久久久久| 亚洲愉拍自拍另类高清精品| 日韩特黄影片| av成人激情| 一本色道久久综合狠狠躁篇怎么玩| 亚洲电影专区| 亚洲国产日本| 日韩亚洲视频在线| 一区二区欧美视频| 亚洲图片在线| 欧美一区二区视频97| 欧美在线播放| 久久蜜桃av一区精品变态类天堂| 久久久久久久综合| 蜜桃久久精品乱码一区二区| 蜜桃视频一区| 欧美日韩在线第一页| 国产精品第十页| 国产嫩草一区二区三区在线观看| 国产欧美一区二区三区沐欲| 国产视频自拍一区| 在线日韩av片| a91a精品视频在线观看| 中国成人黄色视屏| 亚洲在线网站| 玖玖综合伊人| 欧美日韩三级一区二区| 国产精品草莓在线免费观看| 国产精品一区视频| 国产女主播一区二区三区| 国产乱码精品一区二区三区五月婷| 国产日韩一区| 亚洲国产欧美一区二区三区同亚洲 | 亚洲成人自拍视频| 亚洲三级免费电影| 销魂美女一区二区三区视频在线| 蜜臀av性久久久久蜜臀aⅴ| 欧美三级乱码| 在线国产欧美| 亚洲欧美综合国产精品一区| 裸体一区二区三区|