<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: MOUAAD EL BAKKAL</title>
    <description>The latest articles on Forem by MOUAAD EL BAKKAL (@mouaad_elbakkal_5a2e788e).</description>
    <link>https://forem.com/mouaad_elbakkal_5a2e788e</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2991874%2Fb0a05901-e5f4-4a8e-99ff-615f589e61f5.jpg</url>
      <title>Forem: MOUAAD EL BAKKAL</title>
      <link>https://forem.com/mouaad_elbakkal_5a2e788e</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/mouaad_elbakkal_5a2e788e"/>
    <language>en</language>
    <item>
      <title>Robot Forge: Rise of the Circuits</title>
      <dc:creator>MOUAAD EL BAKKAL</dc:creator>
      <pubDate>Sun, 13 Apr 2025 14:09:01 +0000</pubDate>
      <link>https://forem.com/mouaad_elbakkal_5a2e788e/robot-forge-rise-of-the-circuits-4n2j</link>
      <guid>https://forem.com/mouaad_elbakkal_5a2e788e/robot-forge-rise-of-the-circuits-4n2j</guid>
      <description>&lt;p&gt;import { useState } from 'react';&lt;br&gt;
import { Button } from '@/components/ui/button';&lt;br&gt;
import { Card, CardContent } from '@/components/ui/card';&lt;/p&gt;

&lt;p&gt;const robotParts = [&lt;br&gt;
  { name: 'Laser Arm', power: 20 },&lt;br&gt;
  { name: 'Rocket Legs', power: 15 },&lt;br&gt;
  { name: 'AI Brain', power: 25 },&lt;br&gt;
  { name: 'Steel Chest', power: 10 },&lt;br&gt;
];&lt;/p&gt;

&lt;p&gt;export default function RobotForge() {&lt;br&gt;
  const [robot, setRobot] = useState([]);&lt;br&gt;
  const [battleLog, setBattleLog] = useState('');&lt;br&gt;
  const [leaderboard, setLeaderboard] = useState([]);&lt;br&gt;
  const [playerName, setPlayerName] = useState('');&lt;/p&gt;

&lt;p&gt;const addPart = (part) =&amp;gt; {&lt;br&gt;
    if (robot.length &amp;gt;= 3) return;&lt;br&gt;
    setRobot([...robot, part]);&lt;br&gt;
  };&lt;/p&gt;

&lt;p&gt;const simulateBattle = async () =&amp;gt; {&lt;br&gt;
    const totalPower = robot.reduce((sum, part) =&amp;gt; sum + part.power, 0);&lt;br&gt;
    const response = await fetch('&lt;a href="https://your-alibaba-cloud-function-url" rel="noopener noreferrer"&gt;https://your-alibaba-cloud-function-url&lt;/a&gt;', {&lt;br&gt;
      method: 'POST',&lt;br&gt;
      headers: { 'Content-Type': 'application/json' },&lt;br&gt;
      body: JSON.stringify({ player: playerName, power: totalPower }),&lt;br&gt;
    });&lt;br&gt;
    const result = await response.json();&lt;br&gt;
    setBattleLog(result.message);&lt;br&gt;
    fetchLeaderboard();&lt;br&gt;
  };&lt;/p&gt;

&lt;p&gt;const fetchLeaderboard = async () =&amp;gt; {&lt;br&gt;
    const res = await fetch('&lt;a href="https://your-leaderboard-endpoint'" rel="noopener noreferrer"&gt;https://your-leaderboard-endpoint'&lt;/a&gt;);&lt;br&gt;
    const data = await res.json();&lt;br&gt;
    setLeaderboard(data);&lt;br&gt;
  };&lt;/p&gt;

&lt;p&gt;return (&lt;br&gt;
    &lt;/p&gt;
&lt;br&gt;
      &lt;h1&gt;Robot Forge&lt;/h1&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  &amp;lt;input
    type="text"
    placeholder="Enter your name"
    className="border p-2 rounded w-full"
    value={playerName}
    onChange={(e) =&amp;gt; setPlayerName(e.target.value)}
  /&amp;gt;

  &amp;lt;div className="grid grid-cols-2 gap-4"&amp;gt;
    {robotParts.map((part, idx) =&amp;gt; (
      &amp;lt;Card key={idx} onClick={() =&amp;gt; addPart(part)} className="cursor-pointer"&amp;gt;
        &amp;lt;CardContent&amp;gt;
          &amp;lt;p&amp;gt;{part.name}&amp;lt;/p&amp;gt;
          &amp;lt;p&amp;gt;Power: {part.power}&amp;lt;/p&amp;gt;
        &amp;lt;/CardContent&amp;gt;
      &amp;lt;/Card&amp;gt;
    ))}
  &amp;lt;/div&amp;gt;

  &amp;lt;div&amp;gt;
    &amp;lt;h2 className="text-xl"&amp;gt;Your Robot:&amp;lt;/h2&amp;gt;
    &amp;lt;ul&amp;gt;
      {robot.map((part, idx) =&amp;gt; (
        &amp;lt;li key={idx}&amp;gt;{part.name} (Power: {part.power})&amp;lt;/li&amp;gt;
      ))}
    &amp;lt;/ul&amp;gt;
  &amp;lt;/div&amp;gt;

  &amp;lt;Button onClick={simulateBattle} disabled={robot.length &amp;lt; 3 || !playerName}&amp;gt;
    Simulate Battle
  &amp;lt;/Button&amp;gt;

  {battleLog &amp;amp;&amp;amp; &amp;lt;p className="mt-4 bg-gray-100 p-2 rounded"&amp;gt;{battleLog}&amp;lt;/p&amp;gt;}

  &amp;lt;div className="mt-6"&amp;gt;
    &amp;lt;h2 className="text-xl font-semibold"&amp;gt;Leaderboard&amp;lt;/h2&amp;gt;
    &amp;lt;ul className="bg-white rounded p-2 shadow"&amp;gt;
      {leaderboard.map((entry, idx) =&amp;gt; (
        &amp;lt;li key={idx} className="flex justify-between py-1 border-b"&amp;gt;
          &amp;lt;span&amp;gt;{entry.player}&amp;lt;/span&amp;gt;
          &amp;lt;span&amp;gt;{entry.score}&amp;lt;/span&amp;gt;
        &amp;lt;/li&amp;gt;
      ))}
    &amp;lt;/ul&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;);&lt;br&gt;
}&lt;/p&gt;

</description>
      <category>alibabachallenge</category>
      <category>devchallenge</category>
      <category>gamedev</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
