{"id":32069,"date":"2025-02-19T15:55:32","date_gmt":"2025-02-19T15:55:32","guid":{"rendered":"https:\/\/www.duck9.com\/blog\/?p=32069"},"modified":"2025-02-19T11:55:50","modified_gmt":"2025-02-19T15:55:50","slug":"missile-command","status":"publish","type":"post","link":"https:\/\/www.duck9.com\/blog\/missile-command\/","title":{"rendered":"Missile Command"},"content":{"rendered":"<div class=\"postie-post\">\n<div>\n<div dir=\"ltr\">\n<div dir=\"ltr\"><img decoding=\"async\" alt=\"image0.png\" src=\"https:\/\/www.duck9.com\/wp-content\/uploads\/2025\/02\/image0-6.png\"><\/div>\n<div dir=\"ltr\">Now, do Missile Command<\/div>\n<div dir=\"ltr\"><\/div>\n<div dir=\"ltr\">import javax.swing.*;<\/div>\n<div dir=\"ltr\">import java.awt.*;<\/div>\n<div dir=\"ltr\">import java.awt.event.*;<\/div>\n<div dir=\"ltr\">import java.util.ArrayList;<\/div>\n<div dir=\"ltr\"><\/div>\n<div dir=\"ltr\">public class MissileCommand extends JPanel {<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; private ArrayList&lt;Point&gt; playerMissiles;<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; private ArrayList&lt;Point&gt; enemyMissiles;<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; private Point base;<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; private boolean gameOver;<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; private int score;<\/div>\n<div dir=\"ltr\"><\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; public MissileCommand() {<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; playerMissiles = new ArrayList&lt;&gt;();<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; enemyMissiles = new ArrayList&lt;&gt;();<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; base = new Point(400, 550);<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; gameOver = false;<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; score = 0;<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; Timer timer = new Timer(16, new ActionListener() {<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; public void actionPerformed(ActionEvent e) {<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; updateGame();<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; repaint();<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; });<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; timer.start();<\/div>\n<div dir=\"ltr\"><\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; addMouseListener(new MouseAdapter() {<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; public void mousePressed(MouseEvent e) {<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (!gameOver) {<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; playerMissiles.add(new Point(base.x, base.y));<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; score -= 10; \/\/ Cost to fire missile<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; });<\/div>\n<div dir=\"ltr\"><\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; addMouseMotionListener(new MouseMotionAdapter() {<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; public void mouseMoved(MouseEvent e) {<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (!gameOver) {<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; base.x = e.getX();<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; });<\/div>\n<div dir=\"ltr\"><\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; \/\/ Spawn enemy missiles every second<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; new Timer(1000, new ActionListener() {<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; public void actionPerformed(ActionEvent e) {<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (!gameOver) {<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; enemyMissiles.add(new Point((int)(Math.random()*800), 0));<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; }).start();<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; }<\/div>\n<div dir=\"ltr\"><\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; private void updateGame() {<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; \/\/ Move player missiles up<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; for (int i = 0; i &lt; playerMissiles.size(); i++) {<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; playerMissiles.get(i).y -= 5;<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; }<\/div>\n<div dir=\"ltr\"><\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; \/\/ Move enemy missiles down<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; for (int i = 0; i &lt; enemyMissiles.size(); i++) {<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; enemyMissiles.get(i).y += 3;<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Point enemy = enemyMissiles.get(i);<\/div>\n<div dir=\"ltr\"><\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \/\/ Check collision with player missiles<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (int j = 0; j &lt; playerMissiles.size(); j++) {<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Point player = playerMissiles.get(j);<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (Math.hypot(enemy.x &#8211; player.x, enemy.y &#8211; player.y) &lt; 10) {<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; enemyMissiles.remove(i);<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; playerMissiles.remove(j);<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; score += 50;<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; i&#8211;;<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<\/div>\n<div dir=\"ltr\"><\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \/\/ Check if enemy hits base<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (Math.hypot(enemy.x &#8211; base.x, enemy.y &#8211; base.y) &lt; 20) {<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; gameOver = true;<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; }<\/div>\n<div dir=\"ltr\"><\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; \/\/ Remove off-screen missiles<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; playerMissiles.removeIf(m -&gt; m.y &lt; 0);<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; enemyMissiles.removeIf(m -&gt; m.y &gt; 600);<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; }<\/div>\n<div dir=\"ltr\"><\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; @Override<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; protected void paintComponent(Graphics g) {<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; super.paintComponent(g);<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; g.setColor(Color.BLACK);<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; g.fillRect(0, 0, 800, 600);<\/div>\n<div dir=\"ltr\"><\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; \/\/ Draw base<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; g.setColor(Color.GREEN);<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; g.fillOval(base.x &#8211; 10, base.y &#8211; 10, 20, 20);<\/div>\n<div dir=\"ltr\"><\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; \/\/ Draw player missiles<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; g.setColor(Color.RED);<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; for (Point m : playerMissiles) {<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; g.fillOval(m.x &#8211; 2, m.y &#8211; 2, 4, 4);<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; }<\/div>\n<div dir=\"ltr\"><\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; \/\/ Draw enemy missiles<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; g.setColor(Color.WHITE);<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; for (Point m : enemyMissiles) {<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; g.fillOval(m.x &#8211; 2, m.y &#8211; 2, 4, 4);<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; }<\/div>\n<div dir=\"ltr\"><\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; \/\/ Draw score<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; g.setColor(Color.WHITE);<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; g.drawString(&#8220;Score: &#8221; + score, 10, 20);<\/div>\n<div dir=\"ltr\"><\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; if (gameOver) {<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; g.drawString(&#8220;Game Over! Final Score: &#8221; + score, 300, 300);<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; }<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; }<\/div>\n<div dir=\"ltr\"><\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; public static void main(String[] args) {<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; JFrame frame = new JFrame(&#8220;Missile Command&#8221;);<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; MissileCommand game = new MissileCommand();<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; frame.add(game);<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; frame.setSize(800, 600);<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; frame.setLocationRelativeTo(null);<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; frame.setVisible(true);<\/div>\n<div dir=\"ltr\">&nbsp; &nbsp; }<\/div>\n<div dir=\"ltr\">}<\/div>\n<p><a href=\"https:\/\/x.com\/billym2k\/status\/1892232006492188919?s=43&amp;t=zXw0VnDUU9g9Ec306BxNPw\"><\/p>\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" style=\"border:1px solid #ccd6dd; border-radius: 12px;\" width=\"500\" bgcolor=\"#ffffff\">\n<tbody>\n<tr>\n<td colspan=\"3\" style=\"font-size: 0px; line-height: 0px;\" height=\"12\">&nbsp;<\/td>\n<\/tr>\n<tr>\n<td width=\"18\" style=\"font-size: 0px; line-height: 0px; min-width: 18px;\">&nbsp;<\/td>\n<td>\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"464\" align=\"left\">\n<tbody>\n<tr valign=\"top\">\n<td width=\"48\" valign=\"top\"><a href=\"https:\/\/x.com\/billym2k?s=43\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/pbs.twimg.com\/profile_images\/1763798368470663168\/RgrEadkn_normal.jpg\" style=\"border-radius: 50%; padding: 0px;\" height=\"48\" width=\"48\" data-unique-identifier=\"\"><\/a><\/td>\n<td width=\"8\" style=\"font-size: 0px; line-height: 0px; min-width:8px;\"><img decoding=\"async\" src=\"https:\/\/ea.twimg.com\/email\/self_serve\/media\/spacer.png\" width=\"8\" data-unique-identifier=\"\"><\/td>\n<td valign=\"middle\" width=\"388\" style=\"min-width: 388px;\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" align=\"left\" width=\"388\">\n<tbody>\n<tr>\n<td align=\"left\" width=\"388\"><b><a href=\"https:\/\/x.com\/billym2k?s=43\" style=\"font-family: Helvetica, Arial, san-serif; font-size: 14px; line-height: 18px; color: #292c2f; text-decoration: none;\">Shibetoshi Nakamoto<\/a><\/b><\/td>\n<\/tr>\n<tr>\n<td align=\"left\"><a href=\"https:\/\/x.com\/billym2k?s=43\" style=\"font-family: Helvetica, Arial, san-serif; font-size: 14px; line-height: 18px; text-decoration: none; color: #7e8c98;\">\u2066\u202a@BillyM2k\u202c\u2069<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/td>\n<td valign=\"top\" width=\"20\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/ea.twimg.com\/email\/self_serve\/media\/logo_twitter-1497383721365.png\" height=\"20\" width=\"24\" data-unique-identifier=\"\"><\/td>\n<\/tr>\n<tr>\n<td height=\"9\" colspan=\"4\" style=\"font-size: 0px; line-height:0px;\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/ea.twimg.com\/self_serve\/media\/spacer_464x1-1582829598167.png\" width=\"464\" height=\"1\" data-unique-identifier=\"\"><\/td>\n<\/tr>\n<tr>\n<td colspan=\"4\" style=\"font-family: Helvetica, Arial, san-serif;color: #292c2f; font-size: 18px; line-height: 24px; text-decoration: none;\">people were saying the grok 3 ai made asteroids clone was lame because it didn\u2019t have the asteroids break into smaller asteroids and there was no score, so i had grok add those features by asking it to <\/p>\n<p>the whole process took like 5 minutes <\/p>\n<p>we are all software engineers now <a href=\"https:\/\/t.co\/OKYOvKH0IU\"><span>pic.x.com\/OKYOvKH0IU<\/span><\/a><\/td>\n<\/tr>\n<tr>\n<td height=\"3\" colspan=\"4\" style=\"font-size: 0px; line-height:0px;\">&nbsp;<\/td>\n<\/tr>\n<tr>\n<td colspan=\"4\"><a href=\"https:\/\/x.com\/billym2k\/status\/1892232006492188919?s=43&amp;t=zXw0VnDUU9g9Ec306BxNPw\" style=\"font-family: Helvetica, Arial, san-serif;color: #667785; font-size: 14px; line-height: 18px; text-decoration:none;\">2\/19\/25, 9:17\u202fAM<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/td>\n<td width=\"18\" style=\"font-size: 0px; line-height: 0px; min-width: 18px;\">&nbsp;<\/td>\n<\/tr>\n<tr>\n<td colspan=\"3\" style=\"font-size: 0px; line-height: 0px;\" height=\"12\">&nbsp;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><\/a><\/div>\n<p><br id=\"lineBreakAtBeginningOfSignature\"><\/p>\n<div dir=\"ltr\">\n<div dir=\"ltr\"><span style=\"background-color: rgba(255, 255, 255, 0);\">WordPress\u2019d from my personal iPhone,&nbsp;<a href=\"tel:650-283-8008\" dir=\"ltr\" x-apple-data-detectors=\"true\" x-apple-data-detectors-type=\"telephone\" x-apple-data-detectors-result=\"1\">650-283-8008<\/a>, number that&nbsp;Steve Jobs texted me on<\/span><\/div>\n<div dir=\"ltr\"><span style=\"background-color: rgba(255, 255, 255, 0);\"><br \/><\/span><\/div>\n<div dir=\"ltr\">\n<div><font color=\"#000000\"><span style=\"caret-color: rgb(0, 0, 0); background-color: rgba(255, 255, 255, 0);\">https:\/\/www.YouTube.com\/watch?v=ejeIz4EhoJ0<\/span><\/font><\/div>\n<div><span style=\"font-size: 13pt;\"><br \/><\/span><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Now, do Missile Command import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.ArrayList; public class MissileCommand extends JPanel { &nbsp; &nbsp; private ArrayList&lt;Point&gt; playerMissiles; &nbsp; &nbsp; private ArrayList&lt;Point&gt; enemyMissiles; &nbsp; &nbsp; private Point base; &nbsp; &nbsp; private boolean gameOver; &nbsp; &nbsp; private int score; &nbsp; &nbsp; public MissileCommand() { &nbsp; &nbsp; &nbsp; &nbsp; playerMissiles = new [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":32070,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-32069","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.duck9.com\/blog\/wp-json\/wp\/v2\/posts\/32069","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.duck9.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.duck9.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.duck9.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.duck9.com\/blog\/wp-json\/wp\/v2\/comments?post=32069"}],"version-history":[{"count":0,"href":"https:\/\/www.duck9.com\/blog\/wp-json\/wp\/v2\/posts\/32069\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.duck9.com\/blog\/wp-json\/wp\/v2\/media\/32070"}],"wp:attachment":[{"href":"https:\/\/www.duck9.com\/blog\/wp-json\/wp\/v2\/media?parent=32069"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.duck9.com\/blog\/wp-json\/wp\/v2\/categories?post=32069"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.duck9.com\/blog\/wp-json\/wp\/v2\/tags?post=32069"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}