{"id":37284,"date":"2023-10-31T21:04:50","date_gmt":"2023-10-31T21:04:50","guid":{"rendered":"https:\/\/www.baeldung.com\/java-connect-4-game"},"modified":"2023-10-31T21:04:50","modified_gmt":"2023-10-31T21:04:50","slug":"implement-connect-4-game-with-java","status":"publish","type":"post","link":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/2023\/10\/31\/implement-connect-4-game-with-java\/","title":{"rendered":"Implement Connect 4 Game with Java"},"content":{"rendered":"<h2 id=\"bd-introduction\" data-id=\"introduction\"><strong>1. Introduction<\/strong><\/h2>\n<div class=\"bd-anchor\" id=\"introduction\"><\/div>\n<p><strong>In this article, we&#8217;re going to see how we can implement the game <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/en.wikipedia.org\/wiki\/Connect_Four\">Connect 4<\/a> in Java. <\/strong>We&#8217;ll see what the game looks like and how it plays and then look into how we can implement those rules.<\/p>\n<h2 id=\"bd-what-is-connect-4\" data-id=\"what-is-connect-4\"><strong>2. What Is Connect 4?<\/strong><\/h2>\n<div class=\"bd-anchor\" id=\"what-is-connect-4\"><\/div>\n<p><strong>Before we can implement our game, we need to understand the rules of the game.<\/strong><\/p>\n<p>Connect 4 is a relatively simple game. Players take turns dropping pieces onto the top of one of a set of piles. After each turn, if any player&#8217;s pieces make a line of four in any straight-line direction &#8211; horizontal, vertical, or diagonal &#8211; then that player is the winner:<\/p>\n<p><a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/wp-content\/uploads\/2023\/10\/Screenshot-2023-10-23-at-07.26.48.png\"><img decoding=\"async\" fetchpriority=\"high\" class=\"alignnone wp-image-179975 size-medium\" src=\"https:\/\/www.baeldung.com\/wp-content\/uploads\/2023\/10\/Screenshot-2023-10-23-at-07.26.48-300x230.png\" alt=\"\" width=\"300\" height=\"230\" \/><\/a><\/p>\n<p>If not, the next player gets to go instead. This then repeats until either one player wins or the game is unwinnable.<\/p>\n<p>Notably, players get free choice of which column to place their piece, but that piece must go on the top of the pile. They don&#8217;t get a free choice of which row within the column their piece goes.<\/p>\n<p><strong>To build this as a computer game, we need to consider several different components: the game board itself, the ability for a player to place a token, and the ability to check if the game has been won.<\/strong> We&#8217;ll look at each of these in turn.<\/p>\n<h2 id=\"bd-defining-the-game-board\" data-id=\"defining-the-game-board\"><strong>3. Defining the Game Board<\/strong><\/h2>\n<div class=\"bd-anchor\" id=\"defining-the-game-board\"><\/div>\n<p><strong>Before we can play our game, we first need somewhere to play. This is the game board, which contains all the cells that players can play into and indicates where players have already placed their pieces.<\/strong><\/p>\n<p>We&#8217;ll start by writing an enumeration that represents the pieces that players can use in the game:<\/p>\n<pre><code class=\"language-java\">public enum Piece {\r\n    PLAYER_1,\r\n    PLAYER_2\r\n}\r\n<\/code><\/pre>\n<p>This assumes that there are only two players in the game, which is typical for Connect 4.<\/p>\n<p>Now, we&#8217;ll create a class that represents the game board:<\/p>\n<pre><code class=\"language-java\">public class GameBoard {\r\n    private final List&lt;List&lt;Piece&gt;&gt; columns;\r\n    private final int rows;\r\n    public GameBoard(int columns, int rows) {\r\n        this.rows = rows;\r\n        this.columns = new ArrayList&lt;&gt;();\r\n        for (int i = 0; i &lt; columns; ++i) {\r\n            this.columns.add(new ArrayList&lt;&gt;());\r\n        }\r\n    }\r\n    public int getRows() {\r\n        return rows;\r\n    }\r\n    public int getColumns() {\r\n        return columns.size();\r\n    }\r\n}<\/code><\/pre>\n<p>Here, we&#8217;re representing the game board with a list of lists. Each of these lists represents an entire column in the game, and each entry in a list represents a piece within that column.<\/p>\n<p><strong>Pieces must be stacked from the bottom, so we don&#8217;t need to account for gaps. Instead, all the gaps are at the top of the column above the inserted pieces. As such, we&#8217;re actually storing the pieces in the order they were added to the column.<\/strong><\/p>\n<p>Next, we&#8217;ll add a helper to get the piece that&#8217;s currently in any given cell on the board:<\/p>\n<pre><code class=\"language-java\">public Piece getCell(int x, int y) {\r\n    assert(x &gt;= 0 &amp;&amp; x &lt; getColumns());\r\n    assert(y &gt;= 0 &amp;&amp; y &lt; getRows());\r\n    List&lt;Piece&gt; column = columns.get(x);\r\n    if (column.size() &gt; y) {\r\n        return column.get(y);\r\n    } else {\r\n        return null;\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>This takes an X-ordinate that starts from the first column and a Y-ordinate that starts from the bottom row. We&#8217;ll then return the correct <em>Piece<\/em> for that cell or <em>null<\/em> if there&#8217;s nothing in that cell yet.<\/p>\n<h2 id=\"bd-playing-moves\" data-id=\"playing-moves\"><strong>4. Playing Moves<\/strong><\/h2>\n<div class=\"bd-anchor\" id=\"playing-moves\"><\/div>\n<p><strong>Now that we&#8217;ve got a game board, we need to be able to play moves on it. A player moves by adding their piece to the top of a given column.<\/strong> As such, we can do this by just adding a new method that takes the column and the player who&#8217;s making the move:<\/p>\n<pre><code class=\"language-java\">public void move(int x, Piece player) {\r\n    assert(x &gt;= 0 &amp;&amp; x &lt; getColumns());\r\n    List&lt;Piece&gt; column = columns.get(x);\r\n    if (column.size() &gt;= this.rows) {\r\n        throw new IllegalArgumentException(&quot;That column is full&quot;);\r\n    }\r\n    column.add(player);\r\n}\r\n<\/code><\/pre>\n<p>We&#8217;ve also added an extra check in here. If the column in question already has too many pieces in it, then this will throw an exception instead of allowing the player to move.<\/p>\n<h2 id=\"bd-checking-for-winning-conditions\" data-id=\"checking-for-winning-conditions\"><strong>5. Checking for Winning Conditions<\/strong><\/h2>\n<div class=\"bd-anchor\" id=\"checking-for-winning-conditions\"><\/div>\n<p><strong>Once a player has moved, the next step is to check if they&#8217;ve won. This means looking for anywhere on the board that we have four pieces from the same player in a horizontal, vertical, or diagonal line.<\/strong><\/p>\n<p>However, we can do better than this. There are certain facts that we know from how the game plays that allow us to streamline the search.<\/p>\n<p>Firstly, because the game ends when a winning move is played, only the player who&#8217;s just moved can win. This means we only need to check for lines of that player&#8217;s pieces.<\/p>\n<p>Secondly, the winning line must contain the piece that&#8217;s just been placed. This means we don&#8217;t need to search the entire board but only the subset that contains the played piece.<\/p>\n<p>Thirdly, we can ignore certain impossible cases because of the column nature of the game. For example, we can only have a vertical line if the newest piece is on at least row 4. Anything below that, and there can&#8217;t be four in a line.<\/p>\n<p>Ultimately, this means that we have the following sets to search for:<\/p>\n<ul>\n<li>A single vertical line starting from the newest piece and going down three rows<\/li>\n<li>One of four possible horizontal lines &#8211; the first of these starts three columns to the left and ends on our newest piece, while the last of these starts on our newest piece and ends three columns to the right<\/li>\n<li>One of four possible leading diagonal lines &#8211; the first of these starts with three columns to the left and three rows above our newest piece, while the last of these starts on our newest piece and ends three columns to the right and three rows below<\/li>\n<li>One of four possible trailing diagonal lines &#8211; the first of these starts with three columns to the left and three rows below our newest piece, while the last of these starts on our newest piece and ends three columns to the right and three rows above<\/li>\n<\/ul>\n<p><strong>This means that after each move, we must check a maximum of 13 possible lines &#8211; and some of those may be impossible given the size of the board<\/strong>:<\/p>\n<p><a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/wp-content\/uploads\/2023\/10\/Screenshot-2023-10-25-at-07.51.18.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-180120 size-large\" src=\"https:\/\/www.baeldung.com\/wp-content\/uploads\/2023\/10\/Screenshot-2023-10-25-at-07.51.18-1024x789.png\" alt=\"\" width=\"580\" height=\"447\" \/><\/a><\/p>\n<p>Here, for example, we can see there are a few lines that fall outside the play area and, thus, can&#8217;t ever be winning lines.<\/p>\n<h3 id=\"bd-1-checking-for-a-winning-line\" data-id=\"1-checking-for-a-winning-line\"><strong>5.1. Checking for a Winning Line<\/strong><\/h3>\n<div class=\"bd-anchor\" id=\"1-checking-for-a-winning-line\"><\/div>\n<p><strong>The first thing we need is a method to check a given line. This will take the starting point and the direction of the line and check if every cell on that line is for the current player<\/strong>:<\/p>\n<pre><code class=\"language-java\">private boolean checkLine(int x1, int y1, int xDiff, int yDiff, Piece player) {\r\n    for (int i = 0; i &lt; 4; ++i) {\r\n        int x = x1 + (xDiff * i);\r\n        int y = y1 + (yDiff * i);\r\n        if (x &lt; 0 || x &gt; columns.size() - 1) {\r\n            return false;\r\n        }\r\n        if (y &lt; 0 || y &gt; rows - 1) {\r\n            return false;\r\n        }\r\n        if (player != getCell(x, y)) {\r\n            return false;\r\n        }\r\n    }\r\n    return true;\r\n}\r\n<\/code><\/pre>\n<p>We&#8217;re also checking that the cells exist, and if we ever check one that doesn&#8217;t, we immediately return that this isn&#8217;t a winning line. We could do this before the loop, but we&#8217;re only checking four cells, and the additional complexity of working out the start and end of the line isn&#8217;t beneficial in this case.<\/p>\n<h3 id=\"bd-2-checking-all-possible-lines\" data-id=\"2-checking-all-possible-lines\"><strong>5.2. Checking All Possible Lines<\/strong><\/h3>\n<div class=\"bd-anchor\" id=\"2-checking-all-possible-lines\"><\/div>\n<p><strong>Next, we need to check all the possible lines. If any of those returns <em>true<\/em>, then we can immediately stop and declare that the player has won.<\/strong> After all, it doesn&#8217;t matter if they managed to get multiple winning lines in the same move:<\/p>\n<pre><code class=\"language-java\">private boolean checkWin(int x, int y, Piece player) {\r\n    \/\/ Vertical line\r\n    if (checkLine(x, y, 0, -1, player)) {\r\n        return true;\r\n    }\r\n    for (int offset = 0; offset &lt; 4; ++offset) {\r\n        \/\/ Horizontal line\r\n        if (checkLine(x - 3 + offset, y, 1, 0, player)) {\r\n            return true;\r\n        }\r\n        \/\/ Leading diagonal\r\n        if (checkLine(x - 3 + offset, y + 3 - offset, 1, -1, player)) {\r\n            return true;\r\n        }\r\n        \/\/ Trailing diagonal\r\n        if (checkLine(x - 3 + offset, y - 3 + offset, 1, 1, player)) {\r\n            return true;\r\n        }\r\n    }\r\n    return false;\r\n}\r\n<\/code><\/pre>\n<p>This works with a sliding offset going from left to right and uses that to determine where on each of our lines we&#8217;re going to start. The lines start by sliding three cells to the left because the fourth cell is the one we&#8217;re currently playing into, which must be included. The last line checked starts on the cell that&#8217;s just been played into and goes three cells to the right.<\/p>\n<p>Finally, we update our <em>move()<\/em> function to check the winning status and return <em>true<\/em> or <em>false<\/em> accordingly:<\/p>\n<pre><code class=\"language-java\">public boolean move(int x, Piece player) {\r\n    \/\/ Unchanged from before.\r\n    return checkWin(x, column.size() - 1, player);\r\n}<\/code><\/pre>\n<h3 id=\"bd-3-playing-the-game\" data-id=\"3-playing-the-game\"><strong>5.3. Playing the Game<\/strong><\/h3>\n<div class=\"bd-anchor\" id=\"3-playing-the-game\"><\/div>\n<p><strong>At this point, we have a playable game.<\/strong> We can create a new game board and take turns placing pieces until we get a winning move:<\/p>\n<pre><code class=\"language-java\">GameBoard gameBoard = new GameBoard(8, 6);\r\nassertFalse(gameBoard.move(3, Piece.PLAYER_1));\r\nassertFalse(gameBoard.move(2, Piece.PLAYER_2));\r\nassertFalse(gameBoard.move(4, Piece.PLAYER_1));\r\nassertFalse(gameBoard.move(3, Piece.PLAYER_2));\r\nassertFalse(gameBoard.move(5, Piece.PLAYER_1));\r\nassertFalse(gameBoard.move(6, Piece.PLAYER_2));\r\nassertFalse(gameBoard.move(5, Piece.PLAYER_1));\r\nassertFalse(gameBoard.move(4, Piece.PLAYER_2));\r\nassertFalse(gameBoard.move(5, Piece.PLAYER_1));\r\nassertFalse(gameBoard.move(5, Piece.PLAYER_2));\r\nassertFalse(gameBoard.move(6, Piece.PLAYER_1));\r\nassertTrue(gameBoard.move(4, Piece.PLAYER_2));\r\n<\/code><\/pre>\n<p>This set of moves is precisely what we saw right at the start, and we can see how the very last activity returns that this has now won the game.<\/p>\n<h2 id=\"bd-conclusion\" data-id=\"conclusion\"><strong>6. Conclusion <\/strong><\/h2>\n<div class=\"bd-anchor\" id=\"conclusion\"><\/div>\n<p><strong>Here, we&#8217;ve seen how the Connect 4 game plays and then how to implement the rules in Java.<\/strong> Why not try building it yourself and making a full game out of it?<\/p>\n<p>As always, the code from this article is available <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/github.com\/eugenp\/tutorials\/tree\/master\/algorithms-modules\/algorithms-miscellaneous-7\/src\/test\/java\/com\/baeldung\/algorithms\/connect4\">over on GitHub<\/a>.<\/p>\n<p><Img align=\"left\" border=\"0\" height=\"1\" width=\"1\" alt=\"\" style=\"border:0;float:left;margin:0;padding:0;width:1px!important;height:1px!important;\" hspace=\"0\" src=\"https:\/\/feeds.feedblitz.com\/~\/i\/804700265\/0\/baeldung\"><\/p>\n<div style=\"clear:both;padding-top:0.2em;\"><a title=\"Like on Facebook\" href=\"https:\/\/feeds.feedblitz.com\/_\/28\/804700265\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/fblike20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Pin it!\" href=\"https:\/\/feeds.feedblitz.com\/_\/29\/804700265\/baeldung,%2Fwp-content%2Fuploads%2F2023%2F10%2FScreenshot-2023-10-23-at-07.26.48-300x230.png\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/pinterest20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Tweet This\" href=\"https:\/\/feeds.feedblitz.com\/_\/24\/804700265\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/twitter20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Subscribe by email\" href=\"https:\/\/feeds.feedblitz.com\/_\/19\/804700265\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/email20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Subscribe by RSS\" href=\"https:\/\/feeds.feedblitz.com\/_\/20\/804700265\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/rss20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a rel=\"NOFOLLOW\" title=\"View Comments\" href=\"https:\/\/www.baeldung.com\/java-connect-4-game#respond\"><img decoding=\"async\" height=\"20\" style=\"border:0;margin:0;padding:0;\" src=\"https:\/\/assets.feedblitz.com\/i\/comments20.png\"><\/a>&#160;<a title=\"Follow Comments via RSS\" href=\"https:\/\/www.baeldung.com\/java-connect-4-game\/feed\"><img decoding=\"async\" height=\"20\" style=\"border:0;margin:0;padding:0;\" src=\"https:\/\/assets.feedblitz.com\/i\/commentsrss20.png\"><\/a>&#160;<\/div>\n\n<h2><b>Commercials Cooperation Advertisements:<\/b><\/h2>\r\n<p><br>(1) IT Teacher IT Freelance<br> <\/p>\r\n<a href=https:\/\/itteacheritfreelance.hk\/wordpress><img src=http:\/\/gamefootballmobileanimeiphone.com\/wp-content\/uploads\/2023\/09\/ITTeacherITFreelance-Website.png alt=IT\u96fb\u8166\u88dc\u7fd2 java\u88dc\u7fd2 \u70ba\u5927\u5bb6\u914d\u5c0d\u96fb\u8166\u88dc\u7fd2,IT freelance, \u79c1\u4eba\u8001\u5e2b, PHP\u88dc\u7fd2,CSS\u88dc\u7fd2,XML,Java\u88dc\u7fd2,MySQL\u88dc\u7fd2,graphic design\u88dc\u7fd2,\u4e2d\u5c0f\u5b78ICT\u88dc\u7fd2,\u4e00\u5c0d\u4e00\u79c1\u4eba\u88dc\u7fd2\u548cFreelance\u81ea\u7531\u5de5\u4f5c\u914d\u5c0d\u3002\/><\/a><p><a href=https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/findteacher>\u7acb\u523b\u8a3b\u518a\u53ca\u5831\u540d\u96fb\u8166\u88dc\u7fd2\u8ab2\u7a0b\u5427! <\/a><br>\r\n\r\n\u7535\u5b50\u8ba1\u7b97\u673a -\u6559\u80b2 -IT \u96fb\u8166\u73ed\u201d ( IT\u96fb\u8166\u88dc\u7fd2 ) \u63d0\u4f9b\u4e00\u500b\u65b9\u4fbf\u7684\u7535\u5b50\u8ba1\u7b97\u673a \u6559\u80b2\u5e73\u53f0, \u70ba\u5927\u5bb6\u914d\u5c0d\u4fe1\u606f\u6280\u672f, \u96fb\u8166 \u8001\u5e2b, IT freelance \u548c programming expert. \u8b93\u5927\u5bb6\u65b9\u4fbf\u5730\u5c31\u80fd\u627e\u5230\u5408\u9069\u7684\u96fb\u8166\u88dc\u7fd2, \u96fb\u8166\u73ed, \u5bb6\u6559, \u79c1\u4eba\u8001\u5e2b.  <br>\r\n\r\nWe are a education and information platform which you can find a IT private tutorial teacher or freelance. <br>\r\n\r\nAlso we provide different information about information technology, Computer, programming, mobile, Android, apple, game, movie, anime, animation\u2026 \r\n<\/p>\n<p><br>(2) ITSec<br> <\/p><a href=https:\/\/itsec.vip><img src=http:\/\/gamefootballmobileanimeiphone.com\/wp-content\/uploads\/2023\/09\/ITSec-Main-Promotion-Image.png alt= https:\/\/itsec.vip\/\r\nSecure Your Computers from Cyber Threats and mitigate risks with professional services to defend Hackers.  \r\nITSec provide IT Security and Compliance Services, including IT Compliance Services, Risk Assessment, IT Audit, Security Assessment and Audit, ISO 27001 Consulting and Certification, GDPR Compliance Services, Privacy Impact Assessment (PIA), Penetration test, Ethical Hacking, Vulnerabilities scan, IT Consulting, Data Privacy Consulting, Data Protection Services, Information Security Consulting, Cyber Security Consulting, Network Security Audit, Security Awareness Training.\/><\/a> \r\n<br><br> \r\n<p><a href=https:\/\/itsec.vip>www.ITSec.vip<\/a> <br> <br> \r\n<p><a href=https:\/\/sraa.com.hk>www.Sraa.com.hk<\/a> <br> <br> \r\n<p><a href=https:\/\/itsec.hk>www.ITSec.hk<\/a> <br> <br> \r\n<p><a href=https:\/\/penetrationtest.hk>www.Penetrationtest.hk<\/a> <br> <br> \r\n<p><a href=https:\/\/itseceu.uk>www.ITSeceu.uk<\/a> <br> <br> \r\nSecure Your Computers from Cyber Threats and mitigate risks with professional services to defend Hackers. <br><br>\r\nITSec provide IT Security and Compliance Services, including IT Compliance Services, Risk Assessment, IT Audit, Security Assessment and Audit, ISO 27001 Consulting and Certification, GDPR Compliance Services, Privacy Impact Assessment (PIA), Penetration test, Ethical Hacking, Vulnerabilities scan, IT Consulting, Data Privacy Consulting, Data Protection Services, Information Security Consulting, Cyber Security Consulting, Network Security Audit, Security Awareness Training. \r\n<br><br>Contact us right away. <br><br>Email (Prefer using email to contact us): <br>SalesExecutive@ITSec.vip<\/p>","protected":false},"excerpt":{"rendered":"<p>A quick and practical guide to implementing Connect 4 Game with Java.<\/p>\n<div><a title=\"Like on Facebook\" href=\"https:\/\/feeds.feedblitz.com\/_\/28\/804700265\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/fblike20.png\"><\/a>\u00a0<a title=\"Pin it!\" href=\"https:\/\/feeds.feedblitz.com\/_\/29\/804700265\/baeldung,%2Fwp-content%2Fuploads%2F2023%2F10%2FScreenshot-2023-10-23-at-07.26.48-300x230.png\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/pinterest20.png\"><\/a>\u00a0<a title=\"Tweet This\" href=\"https:\/\/feeds.feedblitz.com\/_\/24\/804700265\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/twitter20.png\"><\/a>\u00a0<a title=\"Subscribe by email\" href=\"https:\/\/feeds.feedblitz.com\/_\/19\/804700265\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/email20.png\"><\/a>\u00a0<a title=\"Subscribe by RSS\" href=\"https:\/\/feeds.feedblitz.com\/_\/20\/804700265\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/rss20.png\"><\/a>\u00a0<a rel=\"NOFOLLOW\" title=\"View Comments\" href=\"https:\/\/www.baeldung.com\/java-connect-4-game#respond\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/comments20.png\"><\/a>\u00a0<a title=\"Follow Comments via RSS\" href=\"https:\/\/www.baeldung.com\/java-connect-4-game\/feed\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/commentsrss20.png\"><\/a>\u00a0<\/div>\n","protected":false},"author":1282,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"site-container-style":"default","site-container-layout":"default","site-sidebar-layout":"default","disable-article-header":"default","disable-site-header":"default","disable-site-footer":"default","disable-content-area-spacing":"default","footnotes":""},"categories":[22],"tags":[61,122,127,129,124,128,125,132,131,133,126,130,123,66,94,88,97,56,64,65,60,112,40,75,95,104,33,120,105,101,98,115,30,29,41,86,70,69,68,72,71,26,118,108,87,46,55,48,52,54,51,50,83,62,58,57,109,35,59,63,85,79,82,96,80,27,81,114,44,42,43,45,38,39,110,117,100,111,116,73,89,90,92,91,93,84,78,37,102,34,36,77,67,74,99,113,119,28,121,32,47,49,53,103,31,76],"class_list":["post-37284","post","type-post","status-publish","format-standard","hentry","category-mobile","tag-airpods","tag-anime","tag-anime-characters","tag-anime-cosplay","tag-anime-edits","tag-anime-merchandise","tag-anime-movies","tag-anime-news","tag-anime-recommendations","tag-anime-reviews","tag-anime-series","tag-anime-streaming","tag-animes","tag-app-store","tag-app-store-samsung","tag-appgallery","tag-appgallery-oneplus","tag-apple","tag-apple-music","tag-apple-tv","tag-apple-watch","tag-bbc-sport","tag-best-mobile-games","tag-bixby","tag-bixby-xiaomi","tag-champions-league","tag-cyberpunk","tag-cyberpunk-2077","tag-fantasy-football","tag-fifa","tag-football","tag-formula-1","tag-fortnite","tag-free-fire","tag-free-mobile-games","tag-freebuds-pro","tag-galaxy-a52","tag-galaxy-note-20","tag-galaxy-s21","tag-galaxy-watch-4","tag-galaxy-z-fold-3","tag-game","tag-games","tag-golf","tag-harmonyos","tag-how-to-backup-iphone","tag-how-to-factory-reset-iphone","tag-how-to-reset-iphone","tag-how-to-restore-iphone","tag-how-to-unlock-iphone","tag-how-to-unlock-iphone-5","tag-how-to-unlock-iphone-6","tag-huawei","tag-ios","tag-ipad","tag-iphone","tag-live-soccer","tag-lol","tag-macbook","tag-macos","tag-mate-40-pro","tag-mi-11-lite","tag-mi-home-security-camera-basic-1080p","tag-mi-home-security-camera-basic-1080p-huawei","tag-mi-smart-band-6","tag-minecraft","tag-miui","tag-mlb-scores","tag-mobile-game-design","tag-mobile-game-development","tag-mobile-game-marketing","tag-mobile-game-monetization","tag-mobile-games","tag-mobile-gaming","tag-nba-scores","tag-nba-standings","tag-nfl","tag-nfl-scores","tag-nhl-scores","tag-one-ui","tag-oneplus","tag-oneplus-9-pro","tag-oneplus-buds-pro","tag-oneplus-nord-ce-5g","tag-oxygenos","tag-p40-pro-plus","tag-poco-x3-pro","tag-pokemon","tag-premier-league","tag-pubg","tag-pubg-mobile","tag-redmi-note-10-pro","tag-samsung","tag-samsung-pay","tag-soccer","tag-sports","tag-steam","tag-steeam","tag-top-10-anime","tag-valorant","tag-when-do-the-iphone-7-come-out","tag-when-does-the-iphone-7-come-out","tag-when-is-the-iphone-7-coming-out","tag-world-cup","tag-xbox-series-x","tag-xiaomi"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/wp-json\/wp\/v2\/posts\/37284","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/wp-json\/wp\/v2\/users\/1282"}],"replies":[{"embeddable":true,"href":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/wp-json\/wp\/v2\/comments?post=37284"}],"version-history":[{"count":1,"href":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/wp-json\/wp\/v2\/posts\/37284\/revisions"}],"predecessor-version":[{"id":37285,"href":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/wp-json\/wp\/v2\/posts\/37284\/revisions\/37285"}],"wp:attachment":[{"href":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/wp-json\/wp\/v2\/media?parent=37284"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/wp-json\/wp\/v2\/categories?post=37284"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/wp-json\/wp\/v2\/tags?post=37284"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}