<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>

      代寫 CPT204 Intelligent Rogue Chars

      時(shí)間:2024-05-30  來源:  作者: 我要糾錯(cuò)



      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. 

      請(qǐng)加QQ:99515681  郵箱:99515681@qq.com   WX:codinghelp
















       

      標(biāo)簽:

      掃一掃在手機(jī)打開當(dāng)前頁(yè)
    • 上一篇:INFS 2042代做、代寫 Java 編程設(shè)計(jì)
    • 下一篇:代做UIC's finance office.、代寫java編程語(yǔ)言
    • 無相關(guān)信息
      昆明生活資訊

      昆明圖文信息
      蝴蝶泉(4A)-大理旅游
      蝴蝶泉(4A)-大理旅游
      油炸竹蟲
      油炸竹蟲
      酸筍煮魚(雞)
      酸筍煮魚(雞)
      竹筒飯
      竹筒飯
      香茅草烤魚
      香茅草烤魚
      檸檬烤魚
      檸檬烤魚
      昆明西山國(guó)家級(jí)風(fēng)景名勝區(qū)
      昆明西山國(guó)家級(jí)風(fēng)景名勝區(qū)
      昆明旅游索道攻略
      昆明旅游索道攻略
    • 幣安app官網(wǎng)下載 幣安app官網(wǎng)下載

      關(guān)于我們 | 打賞支持 | 廣告服務(wù) | 聯(lián)系我們 | 網(wǎng)站地圖 | 免責(zé)聲明 | 幫助中心 | 友情鏈接 |

      Copyright © 2023 kmw.cc Inc. All Rights Reserved. 昆明網(wǎng) 版權(quán)所有
      ICP備06013414號(hào)-3 公安備 42010502001045

      主站蜘蛛池模板: 亚洲日韩精品A∨片无码| 中文字幕丰满乱孑伦无码专区| 三上悠亚ssⅰn939无码播放| 在线精品无码字幕无码AV| 亚洲中文无码av永久| 无码免费又爽又高潮喷水的视频 | 国产av永久精品无码| 国产乱人无码伦av在线a| 久久AV无码精品人妻出轨| 无码人妻一区二区三区在线视频 | 亚洲AV无码一区二三区| 中文午夜乱理片无码| 曰韩无码无遮挡A级毛片| 人妻无码αv中文字幕久久| 久久精品无码一区二区app| 亚洲中文字幕无码久久| 国产成人亚洲综合无码精品| 国产精品无码无片在线观看3D| 亚洲精品偷拍无码不卡av| 国产真人无码作爱视频免费 | 国产成人无码区免费A∨视频网站 国产成人无码午夜视频在线观看 国产成人无码精品一区不卡 | 日韩乱码人妻无码系列中文字幕| 无码人妻丰满熟妇啪啪| 亚洲av成本人无码网站| 亚洲成A∨人片在线观看无码| 一本加勒比hezyo无码专区| 超清无码无卡中文字幕| 亚洲AV无码乱码精品国产| 国产精品亚洲а∨无码播放不卡| 曰产无码久久久久久精品| 亚洲精品无码久久久久久| 亚洲熟妇无码八V在线播放| 少妇伦子伦精品无码STYLES| 亚洲Av无码精品色午夜| 国产成人精品一区二区三区无码| 国产精品一级毛片无码视频| 人妻无码久久中文字幕专区| av无码一区二区三区| 免费无码黄网站在线看| 国产av永久无码天堂影院| 日韩国产精品无码一区二区三区|