{"id":21031,"date":"2022-11-16T14:46:57","date_gmt":"2022-11-16T09:16:57","guid":{"rendered":"https:\/\/copyassignment.com\/?p=21031"},"modified":"2022-12-06T14:20:00","modified_gmt":"2022-12-06T08:50:00","slug":"snake-game-in-java","status":"publish","type":"post","link":"https:\/\/copyassignment.com\/snake-game-in-java\/","title":{"rendered":"Snake Game in Java"},"content":{"rendered":"\n<p>In this tutorial, we are going to make a GUI for the classic Snake Game in Java. The player can control the snake with the arrow keys and eat food as it grows on the screen. We&#8217;ll start by creating a new project from scratch, then create and draw our user interface elements. Finally, we&#8217;ll add some event handlers and update the graphics when the player interacts with them.<\/p>\n\n\n\n<script async=\"\" src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\" style=\"display:block; text-align:center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-9886351916045880\" data-ad-slot=\"2002566052\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<h2 class=\"wp-block-heading\">Project overview of Snake Game in Java<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Project Name:<\/strong><\/td><td><strong>Snake Game in Java<\/strong><\/td><\/tr><tr><td><strong>Abstract<\/strong>:<\/td><td>It\u2019s a GUI-based project used with the swing library to organize all the elements that work under the Snake game.<\/td><\/tr><tr><td><strong>Language Used:<\/strong><\/td><td><strong>Java<\/strong><\/td><\/tr><tr><td><strong>IDE<\/strong>:<\/td><td><strong>VS Code<\/strong><\/td><\/tr><tr><td><strong>Java version (Recommended):<\/strong><\/td><td><strong>Java SE 18.0.<\/strong>&nbsp;<strong>2.1<\/strong><\/td><\/tr><tr><td><strong>Database:<\/strong><\/td><td><strong>None<\/strong><\/td><\/tr><tr><td><strong>Type:<\/strong><\/td><td><strong>Desktop Application<\/strong><\/td><\/tr><tr><td><strong>Recommended for:<\/strong><\/td><td>Beginners of Java<\/td><\/tr><tr><td><strong>Time to build:<\/strong><\/td><td>1 &#8211; 2 hours<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"font-size:22px\">What you will learn?<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Handling Classes and Objects creations<\/li>\n\n\n\n<li><a href=\"https:\/\/www.geeksforgeeks.org\/java-util-random-class-java\/\" target=\"_blank\" rel=\"noreferrer noopener\">Random class<\/a> in Java<\/li>\n\n\n\n<li>Java Swing and Java AWT for creating a user-friendly GUI.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"font-size:22px\">Features of Snake Game in Java<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use the up, down, left, and right keys to give directions to the snake<\/li>\n\n\n\n<li>The current score and best score are displayed<\/li>\n\n\n\n<li>If the snake hits the boundary or hits its own tail, it dies.<\/li>\n\n\n\n<li>Food is placed at random positions every time<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Complete Code for Snake game in Java:<\/h2>\n\n\n\n<script async=\"\" src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\" style=\"display:block; text-align:center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-9886351916045880\" data-ad-slot=\"2002566052\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p>First of all, download the image of the food from <a href=\"https:\/\/drive.google.com\/drive\/folders\/1F447kPQ5YqQQbx1Cr2o0oYqI8RMRykJo?usp=share_link\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a>. Now, create a project folder and keep the image in it. Create a file named Game.java and add the below lines of code to it. Comments are provided for better understanding.<\/p>\n\n\n\n<div style=\"height: 250px; position:relative; margin-bottom: 50px;\" class=\"wp-block-simple-code-block-ace\"><div style=\"position:absolute;top:-20px;right:-20px;cursor:pointer\" class=\"copy-simple-code-block\"><span class=\"dashicon dashicons dashicons-admin-page\"><\/span><\/div><pre class=\"wp-block-simple-code-block-ace\" style=\"position:absolute;top:0;right:0;bottom:0;left:0\" data-mode=\"java\" data-theme=\"xcode\" data-fontsize=\"14\" data-lines=\"Infinity\" data-showlines=\"true\" data-copy=\"true\">import java.util.*;\nimport javax.imageio.ImageIO;\nimport java.util.Timer;\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.awt.image.*;\nimport java.io.*;\nimport javax.swing.*;\n\nclass Game extends JPanel {\n    private Timer timer;\n    private Snake snake;\n    private Point cherry;\n    private int points = 0;\n    private int best = 0;\n    private BufferedImage image;\n    private GameStatus status;\n    private boolean didLoadCherryImage = true;\n\n    private static Font FONT_M = new Font(\"MV Boli\", Font.PLAIN, 24);\n    private static Font FONT_M_ITALIC = new Font(\"MV Boli\", Font.ITALIC, 24);\n    private static Font FONT_L = new Font(\"MV Boli\", Font.PLAIN, 84);\n    private static Font FONT_XL = new Font(\"MV Boli\", Font.PLAIN, 150);\n    private static int WIDTH = 760;\n    private static int HEIGHT = 520;\n    private static int DELAY = 50;\n\n    \/\/ Constructor\n    public Game() {\n        try {\n            image = ImageIO.read(new File(\"cherry.png\"));\n        } catch (IOException e) {\n          didLoadCherryImage = false;\n        }\n\n        addKeyListener(new KeyListener());\n        setFocusable(true);\n        setBackground(new Color(130, 205, 71));\n        setDoubleBuffered(true);\n\n        snake = new Snake(WIDTH \/ 2, HEIGHT \/ 2);\n        status = GameStatus.NOT_STARTED;\n        repaint();\n    }\n\n    @Override\n    public void paintComponent(Graphics g) {\n        super.paintComponent(g);\n\n        render(g);\n\n        Toolkit.getDefaultToolkit().sync();\n    }\n\n    \/\/ Render the game\n    private void update() {\n        snake.move();\n\n        if (cherry != null &amp;&amp; snake.getHead().intersects(cherry, 20)) {\n            snake.addTail();\n            cherry = null;\n            points++;\n        }\n\n        if (cherry == null) {\n            spawnCherry();\n        }\n\n        checkForGameOver();\n    }\n    \n    private void reset() {\n        points = 0;\n        cherry = null;\n        snake = new Snake(WIDTH \/ 2, HEIGHT \/ 2);\n        setStatus(GameStatus.RUNNING);\n    }\n    \n    private void setStatus(GameStatus newStatus) {\n        switch(newStatus) {\n            case RUNNING:\n                timer = new Timer();\n                timer.schedule(new GameLoop(), 0, DELAY);\n                break;\n            case PAUSED:\n                timer.cancel();\n            case GAME_OVER:\n                timer.cancel();\n                best = points > best ? points : best;\n                break;\n        }\n\n        status = newStatus;\n    }\n\n    private void togglePause() { \n        setStatus(status == GameStatus.PAUSED ? GameStatus.RUNNING : GameStatus.PAUSED);\n    }\n\n    \/\/ Check if the snake has hit the wall or itself\n    private void checkForGameOver() { \n        Point head = snake.getHead();\n        boolean hitBoundary = head.getX() &lt;= 20\n            || head.getX() >= WIDTH + 10\n            || head.getY() &lt;= 40\n            || head.getY() >= HEIGHT + 30;\n\n        boolean ateItself = false;\n\n        for(Point t : snake.getTail()) {\n            ateItself = ateItself || head.equals(t);\n        }\n\n        if (hitBoundary || ateItself) {\n            setStatus(GameStatus.GAME_OVER);\n        }\n    }\n\n    \/\/ Spawn a cherry at a random location\n    public void drawCenteredString(Graphics g, String text, Font font, int y) { \n        FontMetrics metrics = g.getFontMetrics(font);\n        int x = (WIDTH - metrics.stringWidth(text)) \/ 2;\n\n        g.setFont(font);\n        g.drawString(text, x, y);\n    }\n\n    private void render(Graphics g) {\n        Graphics2D g2d = (Graphics2D) g;\n\n        g2d.setColor(Color.BLACK);\n        g2d.setFont(FONT_M);\n\n        if (status == GameStatus.NOT_STARTED) {\n          drawCenteredString(g2d, \"SNAKE\", FONT_XL, 200);\n          drawCenteredString(g2d, \"GAME\", FONT_XL, 300);\n          drawCenteredString(g2d, \"Press  any  key  to  begin\", FONT_M_ITALIC, 330);\n\n          return;\n        }\n\n        Point p = snake.getHead();\n\n        g2d.drawString(\"SCORE: \" + String.format (\"%02d\", points), 20, 30);\n        g2d.drawString(\"BEST: \" + String.format (\"%02d\", best), 630, 30);\n\n        if (cherry != null) {\n          if (didLoadCherryImage) {\n            g2d.drawImage(image, cherry.getX(), cherry.getY(), 60, 60, null);\n          } else {\n            g2d.setColor(Color.BLACK);\n            g2d.fillOval(cherry.getX(), cherry.getY(), 10, 10);\n            g2d.setColor(Color.BLACK);\n          }\n        }\n\n        if (status == GameStatus.GAME_OVER) {\n            drawCenteredString(g2d, \"Press  enter  to  start  again\", FONT_M_ITALIC, 330);\n            drawCenteredString(g2d, \"GAME OVER\", FONT_L, 300);\n        }\n\n        if (status == GameStatus.PAUSED) {\n            g2d.drawString(\"Paused\", 600, 14);\n        }\n\n        g2d.setColor(new Color(33, 70, 199));\n        g2d.fillRect(p.getX(), p.getY(), 10, 10);\n\n        for(int i = 0, size = snake.getTail().size(); i &lt; size; i++) {\n            Point t = snake.getTail().get(i);\n\n            g2d.fillRect(t.getX(), t.getY(), 10, 10);\n        }\n\n        g2d.setColor(Color.RED);\n        g2d.setStroke(new BasicStroke(4));\n        g2d.drawRect(20, 40, WIDTH, HEIGHT);\n    }\n\n    \/\/ spawn cherry in random position\n    public void spawnCherry() {\n        cherry = new Point((new Random()).nextInt(WIDTH - 60) + 20,\n            (new Random()).nextInt(HEIGHT - 60) + 40);\n    }\n\n    \/\/ game loop\n    private class KeyListener extends KeyAdapter {\n        @Override\n        public void keyPressed(KeyEvent e) {\n            int key = e.getKeyCode();\n\n            if (status == GameStatus.RUNNING) {\n                switch(key) {\n                    case KeyEvent.VK_LEFT: snake.turn(Direction.LEFT); break;\n                    case KeyEvent.VK_RIGHT: snake.turn(Direction.RIGHT); break;\n                    case KeyEvent.VK_UP: snake.turn(Direction.UP); break;\n                    case KeyEvent.VK_DOWN: snake.turn(Direction.DOWN); break;\n                }\n            }\n\n            if (status == GameStatus.NOT_STARTED) {\n                setStatus(GameStatus.RUNNING);\n            }\n\n            if (status == GameStatus.GAME_OVER &amp;&amp; key == KeyEvent.VK_ENTER) {\n                reset();\n            }\n\n            if (key == KeyEvent.VK_P) {\n                togglePause();\n            }\n        }\n    }\n\n    private class GameLoop extends java.util.TimerTask {\n        public void run() {\n            update();\n            repaint();\n        }\n    }\n}\n\n\nenum GameStatus \n{ \n    NOT_STARTED, RUNNING, PAUSED, GAME_OVER\n}\n\n\/\/ direction of snake\nenum Direction { \n    UP, DOWN, LEFT, RIGHT;\n    \n    public boolean isX() {\n        return this == LEFT || this == RIGHT;\n    }\n    \n    public boolean isY() {\n        return this == UP || this == DOWN;\n    }\n}\n\n\nclass Point {\n    private int x;\n    private int y;\n\n    public Point(int x, int y) {\n        this.x = x;\n        this.y = y;\n    }\n\n    public Point(Point p) {\n        this.x = p.getX();\n        this.y = p.getY();\n    }\n\n    public void move(Direction d, int value) {\n        switch(d) {\n            case UP: this.y -= value; break;\n            case DOWN: this.y += value; break;\n            case RIGHT: this.x += value; break;\n            case LEFT: this.x -= value; break;\n        }\n    }\n\n    public int getX() {\n        return x;\n    }\n\n    public int getY() {\n        return y;\n    }\n\n    public Point setX(int x) {\n        this.x = x;\n\n        return this;\n    }\n\n    public Point setY(int y) {\n        this.y = y;\n\n        return this;\n    }\n\n    public boolean equals(Point p) {\n        return this.x == p.getX() &amp;&amp; this.y == p.getY();\n    }\n\n    public String toString() {\n        return \"(\" + x + \", \" + y + \")\";\n    }\n\n    public boolean intersects(Point p) {\n        return intersects(p, 10);\n    }\n\n    public boolean intersects(Point p, int tolerance) {\n        int diffX = Math.abs(x - p.getX());\n        int diffY = Math.abs(y - p.getY());\n\n        return this.equals(p) || (diffX &lt;= tolerance &amp;&amp; diffY &lt;= tolerance);\n    }\n}\n\nclass Snake {\n    private Direction direction;\n    private Point head;\n    private ArrayList&lt;Point> tail;\n    \n    public Snake(int x, int y) {\n        this.head = new Point(x, y);\n        this.direction = Direction.RIGHT;\n        this.tail = new ArrayList&lt;Point>();\n        \n        this.tail.add(new Point(0, 0));\n        this.tail.add(new Point(0, 0));\n        this.tail.add(new Point(0, 0));\n    }\n\n    public void move() {\n        ArrayList&lt;Point> newTail = new ArrayList&lt;Point>();\n        \n        for (int i = 0, size = tail.size(); i &lt; size; i++) {\n            Point previous = i == 0 ? head : tail.get(i - 1);\n\n            newTail.add(new Point(previous.getX(), previous.getY()));\n        }\n        \n        this.tail = newTail;\n        \n        this.head.move(this.direction, 10);\n    }\n    \n    public void addTail() {\n        this.tail.add(new Point(-10, -10));\n    }\n    \n    public void turn(Direction d) {       \n        if (d.isX() &amp;&amp; direction.isY() || d.isY() &amp;&amp; direction.isX()) {\n           direction = d; \n        }       \n    }\n    \n    public ArrayList&lt;Point> getTail() {\n        return this.tail;\n    }\n    \n    public Point getHead() {\n        return this.head;\n    }\n}\n\npublic class Main extends JFrame {\n    public Main() {\n        initUI();\n    }\n\n    private void initUI() {\n        add(new Game());\n\n        setTitle(\"Snake\");\n        setSize(800, 610);\n\n        setLocationRelativeTo(null);\n        setResizable(false);\n        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\n    }\n\n    public static void main(String[] args) {\n        EventQueue.invokeLater(() -> {\n            Main ex = new Main();\n            ex.setVisible(true);\n        });\n    }\n}\n<\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Output:<\/h2>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"720\" style=\"aspect-ratio: 1280 \/ 720;\" width=\"1280\" controls src=\"https:\/\/copyassignment.com\/wp-content\/uploads\/2022\/11\/snake-output.mp4\"><\/video><\/figure>\n\n\n\n<script async src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-9886351916045880\"\n     crossorigin=\"anonymous\"><\/script>\n<ins class=\"adsbygoogle\"\n     style=\"display:block\"\n     data-ad-format=\"autorelaxed\"\n     data-ad-client=\"ca-pub-9886351916045880\"\n     data-ad-slot=\"7933252109\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p>And there you have it! You now have a snake game written entirely in Java. Have fun playing with your code and make changes in the UI or add improvements.<\/p>\n\n\n\n<div style=\"text-align:center\" class=\"wp-block-atomic-blocks-ab-button ab-block-button\"><a href=\"https:\/\/copyassignment.com\/?s=java\" class=\"ab-button ab-button-shape-rounded ab-button-size-medium\" style=\"color:#ffffff;background-color:#3373dc\">Click here to get Best Java Projects<\/a><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><strong>Also Read:<\/strong><\/p>\n\n\n<ul class=\"wp-block-latest-posts__list is-grid columns-3 wp-block-latest-posts\"><li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/dino-game-in-java\/\">Dino Game in Java<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/java-games-code-copy-and-paste\/\">Java Games Code | Copy And Paste<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/supply-chain-management-system-in-java\/\">Supply Chain Management System in Java<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/survey-management-system-in-java\/\">Survey Management System In Java<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/phone-book-in-java\/\">Phone Book in Java<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/email-application-in-java\/\">Email Application in Java<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/inventory-management-system-project-in-java\/\">Inventory Management System Project in Java<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/blood-bank-management-system-project-in-java\/\">Blood Bank Management System Project in Java<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/electricity-bill-management-system-project-in-java\/\">Electricity Bill Management System Project in Java<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/cgpa-calculator-app-in-java\/\">CGPA Calculator App In Java<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/chat-application-in-java\/\">Chat Application in Java<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/100-java-projects-for-beginners-2023\/\">100+ Java Projects for Beginners 2023<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/airline-reservation-system-project-in-java\/\">Airline Reservation System Project in Java<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/password-and-notes-manager-in-java\/\">Password and Notes Manager in Java<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/gui-number-guessing-game-in-java\/\">GUI Number Guessing Game in Java<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/how-to-create-notepad-in-java\/\">How to create Notepad in Java?<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/memory-game-in-java\/\">Memory Game in Java<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/simple-car-race-game-in-java\/\">Simple Car Race Game in Java<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/atm-program-in-java\/\">ATM program in Java<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/drawing-application-in-java\/\">Drawing Application In Java<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/tetris-game-in-java\/\">Tetris Game in Java<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/pong-game-in-java\/\">Pong Game in Java<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/hospital-management-system-project-in-java\/\">Hospital Management System Project in Java<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/ludo-game-in-java\/\">Ludo Game in Java<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/restaurant-management-system-project-in-java\/\">Restaurant Management System Project in Java<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/flappy-bird-game-in-java\/\">Flappy Bird Game in Java<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/atm-simulator-in-java\/\">ATM Simulator In Java<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/brick-breaker-game-in-java\/\">Brick Breaker Game in Java<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/best-java-roadmap-for-beginners-2023\/\">Best Java Roadmap for Beginners 2023<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/snake-game-in-java\/\">Snake Game in Java<\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>In this tutorial, we are going to make a GUI for the classic Snake Game in Java. The player can control the snake with the&#8230;<\/p>\n","protected":false},"author":62,"featured_media":21047,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22,1926,1918],"tags":[],"class_list":["post-21031","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-allcategorites","category-gui-java-project","category-java-projects","wpcat-22-id","wpcat-1926-id","wpcat-1918-id"],"_links":{"self":[{"href":"https:\/\/copyassignment.com\/wp-json\/wp\/v2\/posts\/21031","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/copyassignment.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/copyassignment.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/copyassignment.com\/wp-json\/wp\/v2\/users\/62"}],"replies":[{"embeddable":true,"href":"https:\/\/copyassignment.com\/wp-json\/wp\/v2\/comments?post=21031"}],"version-history":[{"count":0,"href":"https:\/\/copyassignment.com\/wp-json\/wp\/v2\/posts\/21031\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/copyassignment.com\/wp-json\/wp\/v2\/media\/21047"}],"wp:attachment":[{"href":"https:\/\/copyassignment.com\/wp-json\/wp\/v2\/media?parent=21031"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/copyassignment.com\/wp-json\/wp\/v2\/categories?post=21031"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/copyassignment.com\/wp-json\/wp\/v2\/tags?post=21031"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}