合肥生活安徽新聞合肥交通合肥房產(chǎn)生活服務(wù)合肥教育合肥招聘合肥旅游文化藝術(shù)合肥美食合肥地圖合肥社保合肥醫(yī)院企業(yè)服務(wù)合肥法律

        CS4386代寫、代做Java語(yǔ)言程序
        CS4386代寫、代做Java語(yǔ)言程序

        時(shí)間:2025-02-19  來(lái)源:合肥網(wǎng)hfw.cc  作者:hfw.cc 我要糾錯(cuò)



        CS4386 AI Game Programming (Semester B, 2024-2025)
        Assignment 1:
        Trap Gomoku
        Set by CS4386 TA Team
        Tournament1 Deadline:
        Friday 28 February 2025 23:59
        Tournament2 Deadline:
        Wednesday 12 March 2025 23:59
        This assignment is worth
        15 % (fifteen percent)
        of the overall course mark
        Overview
        1 Introduction
        2 Marking Scheme
        3 The Trap Gomoku Game
        4 Online Judgment Platform
        5 Requirements
        6 Q&A
        7 Academic Honesty
        Appendix: Sample submission code
        1 Introduction
        Your task is to develop an AI program capable of playing the Trap Gomoku game.
        You may implement your AI using algorithms covered in class or explore other
        strategies. The implementation can be done in Python, Java, C, or C++.
        To test and evaluate your AI, you will submit your code to an online AI game
        judgment platform. The platform provides three preset AI opponents of varying
        difficulty, allowing you to test your AI an unlimited number of times by
        competing against them. Testing and refining your AI strategy against the three
        preset AIs on the platform will help you improve your AI before competing in the
        tournaments, where each participant will compete against every other
        participant.
        2 Marking Scheme
        Item Due Mark
        Tournament1 (students vs. students)
        Tournament2 (students vs. students)
        Students vs. Preset AIs
        Report
        28th Feb 23:59
        12th Mar 23:59
        12th Mar 23:59
        12th Mar 23:59
        20
        20
        30
        30
         Total 100
        Your final grade will be based on the following aspects:
        ● Whether you beat our three preset AIs. If you beat all three preset AIs, you
        will get 30 points (10 points for each AI). The battle against each preset AI
        is divided into two games: first player and second player. If you win only
        one game, you will get 5 points.
        ● Your ranking in tournaments. We will schedule two tournaments, where
        each participant will compete against every other participant once. After
        the tournament, you will see where your AI stands in the rankings. These
        rankings are an integral part of your overall assessment.
        ● In addition to the score from your AI performance, the quality of your
        report will also affect the final score. Your report should explain your
        1
        approach, justify algorithmic choices, and analyze the strengths and
        weaknesses of your AI.
        3 The Trap Gomoku Game
        The Trap Gomoku Game is a strategic board game where two artificial
        intelligence (AI) players compete by aligning five of their pieces consecutively in
        a straight line (horizontally, vertically, or diagonally) on a 15x15 grid. In addition,
        at the beginning of the game, the system will randomly generate 10-15 trap
        pieces and make them public to players. If the chess piece you place lands on a
        trap, it will devour the piece, and the trap will remain.
        Each player takes turns placing their pieces, aiming to align five consecutively in
        a straight line. The "X" represents the trap, and the black and gray circles
        represent Player 1 and Player 2's pieces, respectively (shown in Figure 1). The
        game ends when the grid is filled (no more than 225 moves) and the player who
        creates five of their pieces consecutively in a straight line on the grid will be the
        winner. Special Case: If the board is full and there is still no line of 5 pieces. Then
        the side with the longest connection is judged to be the winner (for example, if
        the white chess piece has the longest 4 pieces in a line, and the black chess piece
        has the longest 3 pieces in a line, then the white piece wins), otherwise, it is a
        draw. You are encouraged to come up with your own strategies to make your AI
        make better decisions at each turn. We are excited to see your brilliant ideas and
        how they challenge each other!
        2
        Figure 1. Two instances of the game board
        4 Online Judgment Platform
        Website URL: http://cs4386.cs.cityu.edu.hk/user/login/
        This URL can only be accessed within the CityU campus network. If you want to
        use this website outside the campus, please use CityU VPN first.
        Register and log in
        ● You should register using your CityU email.
        ● You should register using your real name.
        ● Upon registration, you will be assigned a user ID. Only your ID will be
        shown in the ranking.
        Submit your code: play against preset AI
        Click "Game" in the left column, and then you will see the Trap Gomoku game. In
        the game description, there are time and memory constraints for each step.
        Please note that exceeding the time or memory limit will result in an automatic
        loss. Click "Submit Here" to go to the submission page. The platform provides a
        sample algorithm: a random decision AI. You can use this as a reference to
        understand the input-output format and game mechanics before implementing
        your own strategy. The system will only retain your latest submission, so please
        ensure that your last submitted code runs correctly. If you have iterated through
        3
        multiple versions, it is recommended that you save them locally to avoid losing
        previous work.
        We have set up three predetermined AI opponents for you to challenge:
        "Offensive," "Defensive," and "Random," designated by user IDs 1, 2, and 3,
        respectively. You can select the AI you want to compete against by choosing its
        ID.
        After submitting your code, you will not receive the result immediately. You
        need to click refresh to view your game results. To ensure fairness and account
        for any advantages or disadvantages of moving first, each AI pairing will consist
        of two matches:
        ● One match where your own AI moves first.
        ● One match where your opponent moves first.
        The results of these matches, along with time and memory usage, will be
        updated after each submission.
        Check log
        You can download the log to view the state of the chessboard at each step after
        getting the results. We also provide a visual interface that displays the placement
        of each move step by step, making it easier for you to analyze and review your
        games.
        Tournament and Ranking
        The tournament itself takes place the day following the deadline. On this
        "competition day," the server will be offline. Your AI's performance will be
        evaluated based on its win rate across the matches (If there is a draw, it will not
        count as a win). When two participants' AIs have identical win rates, the AI that
        used less time to achieve its wins will receive a higher ranking. After the
        tournament, each participant can view the match logs of all their games against
        other players. Once everyone has reviewed the logs and confirmed no issues, we
        will announce the tournament rankings through the ranking page.
        4
        5 Requirements
        Format of the code:
        ● The answer must include the play_games function as the interface for
        online judgment, which is defined as,
        C/C++: void play_games(int step, int rival_decision1,int rival_decision2);
        Python: play_games(step:int,rival_decision_x:int,rival_decision_y:int)->None
        Java: public static void play_games(int step, int rival_decision_x, int
        rival_decision_y)->None
        ● Step indicates the move number in the current game. It starts from
        Player A, step=1, then turns to player B, step=2, and then turns to
        player A, step=3, …, end of the game.
        ● That is, player A's step is always odd, and player B's step is even.
        Step=0 represents an empty checkerboard for initialization.
        ● rival_decision_x,y are the opponent’s decisions made in the
        previous step, which can help you make better responses.
        ● You can read the board and save the decision through the read_ckbd and
        save_decision functions. MAX_M and MAX_N are the size of the board
        (equal to 15 in this game). They are defined in battle_base.
        ● C/C++: void read_ckbd(int step, int array[MAX_M][MAX_N]);
        void save_decision(int x, int y);
        ● Python: read_ckbd(step:int)->List[List[int]]
        save_decision(x:int, y:int)->None
        ● Java: battle_base.read_ckbd(int step) -> int [MAX_M][MAX_N];
        battle_base.save_decision(int x, int y);
        ● In the array/list returned by read_ckbd, 0 represents the unplayed
        area and you can make a decision here. 1 represents player A’s
        decisions, 2 represents player B’s decisions, and 3 represents the
        traps.
        ● Note that you must save your decision by calling save_decision in
        the play_games function, don’t return anything. Do not try to
        rewrite those functions, you just call them. You can read the
        previous step of chess before the current step.
        ● The main function is not allowed in the answer.
        ● You can use print/printf/cout to print logs to help you debug. They will
        be printed in the battle_log.txt.
        5
        ● If you use Java, JVM will occupy memory, resulting in higher memory
        usage.
        Submission requirements:
        ● For Python users: python base modules (in sys.modules.keys()): functools,
        random, sorted, heapq, collections, etc. are allowed. You are not allowed
        to use other packages like numpy, sklearn, etc.
        ● For C/C++ users: most header files are allowed, even including
        <bits/stdc++.h>, <iostream> and <algorithm>.
        ● For Java users: You cannot use external third-party libraries or other
        non-standard Java packages that are not included in the JDK.
        ● You cannot use some system calls such as change directory, list file,
        create file, remove file, etc.
        ● For all AI programs, we limit the running time and the total memory
        usage, which you can find on the website.
        ● Violation of any of the above will raise an error and cause the game to be
        lost.
        Requirement for the report:
        You should write a report to explain your AI. Describe your algorithm as clearly
        as possible. Feel free to use examples and add screenshots or other figures if
        they can help better illustrate your method. If you adopt some part of your code
        from somewhere, you must fully acknowledge this and provide a reference to
        where you obtained the code. You must declare how much of your submitted
        code is obtained from someone/somewhere else and how much is indeed
        written by you. At the end of your report, include the related references from
        where you have gathered useful information in working on your assignment.
        You need to submit your source code to the online judgment system and submit
        your report to Canvas.
        Name your files according to the following format, where XXXXXXXX is the 8
        digits of your student ID number:
        CS4386-2425B-A1-XXXXXXXX-Report.pdf (should be in PDF format)
        6 Q&A
        We will also create a discussion on Canvas. You can ask questions there; the TAs
        will check it daily and answer your questions as soon as possible.
        6
        7 Academic Honesty
        We have repeatedly emphasized the importance of academic honesty. Review
        the website https://www.cityu.edu.hk/pvdp/ah/index.htm on academic
        honesty if needed.
        This is an individual assignment so each of you should write your own code. You
        should never send any part of your code to your classmate “for his/her
        reference” or copy any part of the code from your classmate. You should
        obviously understand the code that you submit, and be able to explain your code
        when asked.
        Make sure that you do not commit any academic dishonest behaviors while
        working on this assignment!
        7
        Appendix: Sample submission code
        Python:
        import random
        from battle_base import read_ckbd, save_decision,MAX_M,MAX_N
        def play_games(step:int,rival_decision_x:int,rival_decision_y:int)->None:
         states = read_ckbd(step-1)
         legal_decision = []
         for m in range(MAX_M):
         for n in range(MAX_N):
         if states[m][n]==0: # 0 is unplayed area
         legal_decision.append((m, n))
         # make your decision here
         decision = random.choice(legal_decision)
         save_decision(decision[0], decision[1])
        C:
        #include <stdio.h>
        #include <stdlib.h>
        #include "battle_base.h"
        #define max(a,b) ((a) >= (b) ? (a) : (b))
        void play_games(int step, int rival_decision_x,int rival_decision_y) {
         int states[MAX_M][MAX_N]; // Assuming MAX_M and MAX_N are defined board
        size
         read_ckbd(step-1, states);
         int legal_decision[MAX_M*MAX_N][2];
         int legal_count = 0;
         for (int m = 0; m < MAX_M; m++) {
         for (int n = 0; n < MAX_N; n++) {
         if (states[m][n] == 0) // 0 is unplayed area
         {
         {
         legal_decision[legal_count][0] = m;
         legal_decision[legal_count][1] = n;
         legal_count++;
         }
         }
         }
         }
         // Make your decision here
         int random_index = rand() % legal_count;
         int* decision = legal_decision[random_index]; // Example of random
        strategy
         save_decision(decision[0], decision[1]);
        }
        8
        C++:
        #include <stdio.h>
        #include <stdlib.h>
        #include <iostream>
        #include "battle_base.h"
        void play_games(int step, int rival_decision1,int rival_decision2) {
         int states[MAX_M][MAX_N]; // Assuming MAX_M and MAX_N are defined board
        size
         int states_count = 0;
         read_ckbd(step-1, states);
         int legal_decision[MAX_M*MAX_N][2];
         int legal_count = 0;
         for (int m = 0; m < MAX_M; m++) {
         for (int n = 0; n < MAX_N; n++) {
         if (states[m][n] == 0) // 0 is unplayed area
         {
         {
         legal_decision[legal_count][0] = m;
         legal_decision[legal_count][1] = n;
         legal_count++;
         }
         }
         }
         }
         // Make your decision here
         int random_index = rand() % legal_count;
         int* decision = legal_decision[random_index]; // Example of random
        strategy
         save_decision(decision[0], decision[1]);
        }
        Java:
        import java.util.ArrayList;
        import java.util.List;
        import java.util.Random;
        public class play_fun {// Do not change the class name
         static final int MAX_M = battle_base.MAX_M;
         static final int MAX_N = battle_base.MAX_N;
         public static void play_games(int step, int rival_decision_x, int
        rival_decision_y) {
         int[][] states = battle_base.read_ckbd(step-1);
         List<int[]> legalDecision = new ArrayList<>();
         for (int m = 0; m < battle_base.MAX_M; m++) {
         for (int n = 0; n < battle_base.MAX_N; n++) {
         if (states[m][n] == 0) { // 0 is unplayed area
         legalDecision.add(new int[]{m, n});
        9
         }
         }
         }
         // Make your decision here
         Random random = new Random();
         int[] decision =
        legalDecision.get(random.nextInt(legalDecision.size()));
         battle_base.save_decision(decision[0], decision[1]);
         }
        }





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

        掃一掃在手機(jī)打開當(dāng)前頁(yè)
      1. 上一篇:小花分期客戶投訴客服電話-小花分期24小時(shí)人工服務(wù)熱線電話
      2. 下一篇:橙多多全國(guó)客服電話-橙多多人工客服服務(wù)電話熱線
      3. 無(wú)相關(guān)信息
        合肥生活資訊

        合肥圖文信息
        急尋熱仿真分析?代做熱仿真服務(wù)+熱設(shè)計(jì)優(yōu)化
        急尋熱仿真分析?代做熱仿真服務(wù)+熱設(shè)計(jì)優(yōu)化
        出評(píng) 開團(tuán)工具
        出評(píng) 開團(tuán)工具
        挖掘機(jī)濾芯提升發(fā)動(dòng)機(jī)性能
        挖掘機(jī)濾芯提升發(fā)動(dòng)機(jī)性能
        海信羅馬假日洗衣機(jī)亮相AWE  復(fù)古美學(xué)與現(xiàn)代科技完美結(jié)合
        海信羅馬假日洗衣機(jī)亮相AWE 復(fù)古美學(xué)與現(xiàn)代
        合肥機(jī)場(chǎng)巴士4號(hào)線
        合肥機(jī)場(chǎng)巴士4號(hào)線
        合肥機(jī)場(chǎng)巴士3號(hào)線
        合肥機(jī)場(chǎng)巴士3號(hào)線
        合肥機(jī)場(chǎng)巴士2號(hào)線
        合肥機(jī)場(chǎng)巴士2號(hào)線
        合肥機(jī)場(chǎng)巴士1號(hào)線
        合肥機(jī)場(chǎng)巴士1號(hào)線
      4. 短信驗(yàn)證碼 酒店vi設(shè)計(jì) NBA直播 幣安下載

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

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

        午夜精品久久久久久| 狼色精品人妻在线视频| 免费在线精品视频| 97精品国产手机| 91精品国产综合久久青草| 国产精品99精品无码视亚| 正在播放酒店精品少妇约| 国产成人无码精品久久久免费| 欧美日韩精品乱国产| 热99精品只有里视频最新 | 久久精品国产99精品国产亚洲性色| 国产国拍亚洲精品福利| 免费精品国产自产拍在线观看| 日韩av在线播放| 亚洲?V无码成人精品区日韩| 成人精品国产亚洲欧洲 | 亚洲国产精品99久久久久久| 免费视频精品一区二区| 国产九九久久99精品影院| 最新69国产成人精品免费视频动漫| 麻豆精品人妻一区二区三区蜜桃| 久久福利资源国产精品999| 国产精品揄拍一区二区久久 | 亚洲日韩精品无码一区二区三区 | 国产在线91区精品| 情侣视频精品免费的国产| 国产精品无码2021在线观看| 无码日韩精品一区二区免费| 亚洲av无码成人精品区一本二本| 国产精品一国产AV麻豆| 国产精品玖玖玖在线观看| 亚洲av永久无码精品秋霞电影秋| 亚洲精品永久在线观看| 午夜精品久久久久成人| 国产精品1000夫妇激情啪发布| 精品无码国产污污污免费| 日韩人妻精品一区二区三区视频 | 国产视频精品免费| 国产视频精品视频| 国产主播精品福利19禁vip| 嫩草影院在线观看精品视频|