Robot Forge: Rise of the Circuits

Robot Forge: Rise of the Circuits

Publish Date: Apr 13
16 0

import { useState } from 'react';
import { Button } from '@/components/ui/button';
import { Card, CardContent } from '@/components/ui/card';

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

export default function RobotForge() {
const [robot, setRobot] = useState([]);
const [battleLog, setBattleLog] = useState('');
const [leaderboard, setLeaderboard] = useState([]);
const [playerName, setPlayerName] = useState('');

const addPart = (part) => {
if (robot.length >= 3) return;
setRobot([...robot, part]);
};

const simulateBattle = async () => {
const totalPower = robot.reduce((sum, part) => sum + part.power, 0);
const response = await fetch('https://your-alibaba-cloud-function-url', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ player: playerName, power: totalPower }),
});
const result = await response.json();
setBattleLog(result.message);
fetchLeaderboard();
};

const fetchLeaderboard = async () => {
const res = await fetch('https://your-leaderboard-endpoint');
const data = await res.json();
setLeaderboard(data);
};

return (


Robot Forge

  <input
    type="text"
    placeholder="Enter your name"
    className="border p-2 rounded w-full"
    value={playerName}
    onChange={(e) => setPlayerName(e.target.value)}
  />

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

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

  <Button onClick={simulateBattle} disabled={robot.length < 3 || !playerName}>
    Simulate Battle
  </Button>

  {battleLog && <p className="mt-4 bg-gray-100 p-2 rounded">{battleLog}</p>}

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

);
}

Comments 0 total

    Add comment