精品深夜AV无码一区二区_伊人久久无码中文字幕_午夜无码伦费影视在线观看_伊人久久无码精品中文字幕

代寫 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)-大理旅游
    油炸竹蟲
    油炸竹蟲
    酸筍煮魚(雞)
    酸筍煮魚(雞)
    竹筒飯
    竹筒飯
    香茅草烤魚
    香茅草烤魚
    檸檬烤魚
    檸檬烤魚
    昆明西山國家級風景名勝區(qū)
    昆明西山國家級風景名勝區(qū)
    昆明旅游索道攻略
    昆明旅游索道攻略
  • 短信驗證碼平臺 理財 WPS下載

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

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

    精品深夜AV无码一区二区_伊人久久无码中文字幕_午夜无码伦费影视在线观看_伊人久久无码精品中文字幕
    <samp id="e4iaa"><tbody id="e4iaa"></tbody></samp>
    <ul id="e4iaa"></ul>
    <blockquote id="e4iaa"><tfoot id="e4iaa"></tfoot></blockquote>
    • <samp id="e4iaa"><tbody id="e4iaa"></tbody></samp>
      <ul id="e4iaa"></ul>
      <samp id="e4iaa"><tbody id="e4iaa"></tbody></samp><ul id="e4iaa"></ul>
      <ul id="e4iaa"></ul>
      <th id="e4iaa"><menu id="e4iaa"></menu></th>
      国产熟妇一区二区三区四区| 精品少妇一二三区| 亚洲综合免费视频| 美女视频黄免费| www.激情五月.com| 天天操天天干天天爽| 精品国产一区在线| 一级特黄aaa大片在线观看| 无码免费一区二区三区| 欧美日韩国产精品一区二区三区| 国产精品第9页| 99精品欧美一区二区| 亚洲三区在线观看无套内射| 五月婷婷丁香在线| 天堂网中文字幕| 少妇高潮av久久久久久 | 国产精品自在自线| 亚洲一区二区三区综合| 在线中文字幕网站| 一区二区三区免费在线观看视频 | 国产免费看av| 国产主播在线播放| 国产又大又黄又粗的视频| 国产黄色一区二区三区| 国产成人精品777777| 国产成人久久精品77777综合| 国产精品玖玖玖| 国产一区二区在线观看免费视频 | 97成人免费视频| 成 人 黄 色 小说网站 s色| 国产成人精品网| 国产伦精品一区二区三区免.费 | 国产无套内射又大又猛又粗又爽| 91精品国产乱码久久| www.狠狠干| 国产美女精品久久| 久久黄色片网站| 日韩黄色中文字幕| 亚洲精品免费在线观看视频| 91午夜精品亚洲一区二区三区| 丰满少妇一区二区三区专区| 九九热精品国产| 欧美性猛交 xxxx| 在线观看国产一区二区三区| 91视频久久久| 久久久久久福利| 中文字幕人妻无码系列第三区| www.四虎在线| 日本a√在线观看| 91丝袜一区二区三区| 精品中文字幕在线播放| 日韩一区二区视频在线| 99久久99久久精品免费| 激情图片中文字幕| 一区二区免费在线观看视频 | 日韩精品无码一区二区| 一区视频免费观看| 国产精品午夜福利| 性做久久久久久久久久| 国产伦精品一区二区三区视频女| 日韩毛片一区二区三区| 国产99对白在线播放| 少妇高潮一区二区三区69| 岛国毛片在线观看| 秋霞视频一区二区| wwwav在线播放| 天天操天天干天天舔| 国产精品伦理一区| 亚洲精品国产片| 人人妻人人澡人人爽人人精品| 91福利视频免费观看| 免费a v网站| 99er热精品视频| 日韩人妻精品中文字幕| 国产欧美久久久| 亚洲黄色片免费| 欧美精品久久久久久久久46p| 99精品人妻国产毛片| 无码aⅴ精品一区二区三区| 国产精品日日夜夜| 中文字幕二区三区| 少妇高潮av久久久久久| 精品人妻无码一区| 成人久久久精品国产乱码一区二区 | 中文字幕黄色av| 你懂的国产在线| 国产av一区二区三区传媒| 伊人成年综合网| 欧美手机在线观看| 精品乱子伦一区二区| 69视频免费看| 中文人妻一区二区三区| 日本不卡一区在线| 久久一二三四区| 精品国产乱码一区二区三| 国产黄色av片| av在线播放网址| 中文字幕免费视频观看| 欧美日韩中文视频| 久久精品国产亚洲av麻豆色欲| 波多野结衣一本一道| 99精品视频在线播放免费| 中文字幕在线日亚洲9| 午夜久久福利视频| 中文字幕 国产| 亚洲国产欧美日韩在线| 亚洲精品一区二区三区不卡| 在线观看你懂的网站| 在线观看欧美一区二区| 中文av一区二区三区| 亚洲一区二区三区网站| 亚洲三级中文字幕| 91福利免费观看| 国产99视频在线| 国产无遮挡又黄又爽又色| 国产一级视频在线观看| 久久久久99精品成人片试看| 欧美日韩国产一二三区| 欧美成人一区二区三区四区| 免费一级片在线观看| 日韩精品乱码久久久久久| 手机av在线网站| 天天干天天爽天天射| 五月天丁香社区| 一级特黄免费视频| 粉嫩av一区二区夜夜嗨| 国产一区二区在线不卡| 欧美一级免费在线| 亚洲国产一二三区| 国产精品一区二区人妻喷水| 蜜桃福利午夜精品一区| 小泽玛利亚一区二区免费| 97人妻一区二区精品视频| 国产伦一区二区| 黄色av网站免费观看| 欧美另类视频在线观看| 亚洲第一色av| av高清一区二区| 麻豆成人在线视频| 婷婷丁香激情网| avtt中文字幕| 欧美精品一区二区蜜桃| 亚洲精品午夜久久久久久久 | 亚洲一区二区人妻| 国产嫩草在线观看| 日韩av在线中文| 亚洲一区二区三区四区五区 | 国产91免费看| 久久久久久久久久一级| 五月婷婷一区二区三区| 囯产精品久久久久久| 欧美黄色一级大片| 97精品人妻一区二区三区在线| 久久精品一二区| 亚洲欧美偷拍另类| 精品女人久久久| 最新免费av网址| 精品亚洲一区二区三区四区| 香蕉免费毛片视频| 精品人妻无码一区二区色欲产成人| 日韩中文字幕有码| 国产亚洲精品久久久久久豆腐 | www.免费av| 熟妇高潮一区二区高潮| 国产精品九九九九九| 中文在线a天堂| 漂亮人妻被黑人久久精品| 高h视频免费观看| 婷婷五月精品中文字幕| 精品国产九九九| 丁香六月色婷婷| 亚洲精品人妻无码| 日韩在线观看视频一区二区三区 | 亚洲第一香蕉网| 精品人妻人人做人人爽夜夜爽 | 人妻精品久久久久中文字幕69| 99久久人妻无码中文字幕系列| 天天操天天摸天天舔| 精品人妻一区二区三区视频| jizz欧美性20| 综合激情网五月| 天堂成人在线观看| 日本一区二区三区免费视频| 国产一伦一伦一伦| 国产精久久一区二区三区| 亚洲精品成av人片天堂无码| 日本国产在线视频| 欧美成人三级伦在线观看| 国产又粗又猛视频免费| 国产精品久久久久久久久毛片 | 人妻激情偷乱视频一区二区三区| 国产精品视频免费播放| 999这里只有精品| 亚洲人午夜射精精品日韩| 色婷婷在线视频| 手机精品视频在线| 日韩av片专区| 欧美视频国产视频| 久久这里只有精品9| 人妻av无码一区二区三区|