elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Foros Generales
| |-+  Foro Libre
| | |-+  Castigado por usar una imagen que hizo otro... usando IA.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Castigado por usar una imagen que hizo otro... usando IA.  (Leído 1,579 veces)
Tachikomaia


Conectado Conectado

Mensajes: 1.671


Hackentifiko!


Ver Perfil
Castigado por usar una imagen que hizo otro... usando IA.
« en: 22 Noviembre 2025, 07:28 am »

https://somoskudasai.com/noticias/japon-copyright-imagenes-ia-prompts-detallados-caso-historico/

Supuestamente la imagen es esta:
En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.450


Turn off the red ligth


Ver Perfil WWW
Re: Castigado por usar una imagen que hizo otro... usando IA.
« Respuesta #1 en: 22 Noviembre 2025, 15:22 pm »

En japón y en todos los sitios.
En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

Mr.Byte


Desconectado Desconectado

Mensajes: 391



Ver Perfil
Re: Castigado por usar una imagen que hizo otro... usando IA.
« Respuesta #2 en: 22 Noviembre 2025, 16:49 pm »

Bueno, es un tema algo mas complejo, segun la noticia, el "creador" utilizó un prompt muy largo, y eso le da protección. Si hubiera utilizado un prompt de una sola linea no tendría la protección legal.

El otro dia, utilice una IA para crear un juego que use una sola linea "crear juego tipo Arkanoid", y en un minuto obtuve el juego.
Soy yo el creador de dicho juego? Que pensáis?

El juego, hecho 100% por IA :
https://wormhole.app/xkavRP#lp4PJqXhzYF5I0MnyaWNuw


Código:(copiarlo y crear un archivo con la extensión HTML)
Código
  1. <!DOCTYPE html>
  2. <html lang="es">
  3.    <meta charset="UTF-8">
  4.    <meta name="viewport" content="width=device-width, initial-scale=1.0">
  5.    <title>Arkanoid con Canvas</title>
  6.    <style>
  7.        body {
  8.            background-color: #111;
  9.            display: flex;
  10.            justify-content: center;
  11.            align-items: center;
  12.            height: 100vh;
  13.            margin: 0;
  14.            font-family: 'Courier New', Courier, monospace;
  15.            color: white;
  16.        }
  17.        canvas {
  18.            background-color: #000;
  19.            border: 2px solid #fff;
  20.        }
  21.    </style>
  22. </head>
  23.  
  24.    <canvas id="gameCanvas" width="480" height="320"></canvas>
  25.  
  26.    <script>
  27.        // --- CONFIGURACIÓN INICIAL ---
  28.        const canvas = document.getElementById('gameCanvas');
  29.        const ctx = canvas.getContext('2d');
  30.  
  31.        // --- CONSTANTES DEL JUEGO ---
  32.        const PADDLE_WIDTH = 75;
  33.        const PADDLE_HEIGHT = 10;
  34.        const BALL_RADIUS = 8;
  35.        const BRICK_WIDTH = 75;
  36.        const BRICK_HEIGHT = 20;
  37.        const BRICK_PADDING = 10;
  38.        const BRICK_OFFSET_TOP = 30;
  39.        const BRICK_OFFSET_LEFT = 30;
  40.        const BRICK_ROWS = 3;
  41.        const BRICK_COLS = 5;
  42.  
  43.        // --- VARIABLES DEL JUEGO ---
  44.        let score = 0;
  45.        let lives = 3;
  46.  
  47.        // --- OBJETO PALETA ---
  48.        const paddle = {
  49.            x: (canvas.width - PADDLE_WIDTH) / 2,
  50.            y: canvas.height - PADDLE_HEIGHT - 10,
  51.            width: PADDLE_WIDTH,
  52.            height: PADDLE_HEIGHT,
  53.            speed: 7
  54.        };
  55.  
  56.        // --- OBJETO PELOTA ---
  57.        const ball = {
  58.            x: canvas.width / 2,
  59.            y: canvas.height - 30,
  60.            dx: 3, // Velocidad en el eje X
  61.            dy: -3, // Velocidad en el eje Y
  62.            radius: BALL_RADIUS
  63.        };
  64.  
  65.        // --- CONTROL DE TECLAS ---
  66.        let rightPressed = false;
  67.        let leftPressed = false;
  68.  
  69.        // --- INICIALIZACIÓN DE LOS BLOQUES ---
  70.        // Creamos una matriz 2D para los bloques
  71.        const bricks = [];
  72.        for (let r = 0; r < BRICK_ROWS; r++) {
  73.            bricks[r] = [];
  74.            for (let c = 0; c < BRICK_COLS; c++) {
  75.                // status: 1 = visible, 0 = destruido
  76.                bricks[r][c] = { x: 0, y: 0, status: 1 };
  77.            }
  78.        }
  79.  
  80.        // --- EVENT LISTENERS (para el control de la paleta) ---
  81.        document.addEventListener("keydown", keyDownHandler);
  82.        document.addEventListener("keyup", keyUpHandler);
  83.        document.addEventListener("mousemove", mouseMoveHandler); // Opcional: control con ratón
  84.  
  85.        function keyDownHandler(e) {
  86.            if (e.key === "Right" || e.key === "ArrowRight") {
  87.                rightPressed = true;
  88.            } else if (e.key === "Left" || e.key === "ArrowLeft") {
  89.                leftPressed = true;
  90.            }
  91.        }
  92.  
  93.        function keyUpHandler(e) {
  94.            if (e.key === "Right" || e.key === "ArrowRight") {
  95.                rightPressed = false;
  96.            } else if (e.key === "Left" || e.key === "ArrowLeft") {
  97.                leftPressed = false;
  98.            }
  99.        }
  100.  
  101.        // Opcional: control con el ratón
  102.        function mouseMoveHandler(e) {
  103.            const relativeX = e.clientX - canvas.offsetLeft;
  104.            if(relativeX > 0 && relativeX < canvas.width) {
  105.                paddle.x = relativeX - paddle.width / 2;
  106.            }
  107.        }
  108.  
  109.        // --- FUNCIONES DE DIBUJO ---
  110.  
  111.        function drawBall() {
  112.            ctx.beginPath();
  113.            ctx.arc(ball.x, ball.y, ball.radius, 0, Math.PI * 2);
  114.            ctx.fillStyle = "#0095DD";
  115.            ctx.fill();
  116.            ctx.closePath();
  117.        }
  118.  
  119.        function drawPaddle() {
  120.            ctx.beginPath();
  121.            ctx.rect(paddle.x, paddle.y, paddle.width, paddle.height);
  122.            ctx.fillStyle = "#0095DD";
  123.            ctx.fill();
  124.            ctx.closePath();
  125.        }
  126.  
  127.        function drawBricks() {
  128.            for (let r = 0; r < BRICK_ROWS; r++) {
  129.                for (let c = 0; c < BRICK_COLS; c++) {
  130.                    if (bricks[r][c].status === 1) {
  131.                        const brickX = c * (BRICK_WIDTH + BRICK_PADDING) + BRICK_OFFSET_LEFT;
  132.                        const brickY = r * (BRICK_HEIGHT + BRICK_PADDING) + BRICK_OFFSET_TOP;
  133.                        bricks[r][c].x = brickX;
  134.                        bricks[r][c].y = brickY;
  135.                        ctx.beginPath();
  136.                        ctx.rect(brickX, brickY, BRICK_WIDTH, BRICK_HEIGHT);
  137.                        // Damos un color diferente a cada fila
  138.                        ctx.fillStyle = `hsl(${r * 60}, 100%, 50%)`;
  139.                        ctx.fill();
  140.                        ctx.closePath();
  141.                    }
  142.                }
  143.            }
  144.        }
  145.  
  146.        function drawScore() {
  147.            ctx.font = "16px Arial";
  148.            ctx.fillStyle = "#FFF";
  149.            ctx.fillText("Puntuación: " + score, 8, 20);
  150.        }
  151.  
  152.        function drawLives() {
  153.            ctx.font = "16px Arial";
  154.            ctx.fillStyle = "#FFF";
  155.            ctx.fillText("Vidas: " + lives, canvas.width - 65, 20);
  156.        }
  157.  
  158.        // --- DETECCIÓN DE COLISIONES ---
  159.  
  160.        function collisionDetection() {
  161.            for (let r = 0; r < BRICK_ROWS; r++) {
  162.                for (let c = 0; c < BRICK_COLS; c++) {
  163.                    const b = bricks[r][c];
  164.                    if (b.status === 1) {
  165.                        if (ball.x > b.x && ball.x < b.x + BRICK_WIDTH && ball.y > b.y && ball.y < b.y + BRICK_HEIGHT) {
  166.                            ball.dy = -ball.dy; // Invertimos la dirección de la pelota
  167.                            b.status = 0; // Marcamos el bloque como destruido
  168.                            score++;
  169.                            if (score === BRICK_ROWS * BRICK_COLS) {
  170.                                alert("¡GANASTE! &#127881;");
  171.                                document.location.reload(); // Recargamos la página para empezar de nuevo
  172.                            }
  173.                        }
  174.                    }
  175.                }
  176.            }
  177.        }
  178.  
  179.        // --- BUCLE PRINCIPAL DEL JUEGO ---
  180.        function draw() {
  181.            // Limpiamos el canvas en cada frame
  182.            ctx.clearRect(0, 0, canvas.width, canvas.height);
  183.  
  184.            // Dibujamos todos los elementos
  185.            drawBricks();
  186.            drawBall();
  187.            drawPaddle();
  188.            drawScore();
  189.            drawLives();
  190.            collisionDetection();
  191.  
  192.            // --- LÓGICA DE REBOTE DE LA PELOTA ---
  193.            // Rebote en las paredes laterales
  194.            if (ball.x + ball.dx > canvas.width - ball.radius || ball.x + ball.dx < ball.radius) {
  195.                ball.dx = -ball.dx;
  196.            }
  197.            // Rebote en la pared superior
  198.            if (ball.y + ball.dy < ball.radius) {
  199.                ball.dy = -ball.dy;
  200.            }
  201.            // Rebote en la paleta
  202.            else if (ball.y + ball.dy > paddle.y - ball.radius) {
  203.                // Comprobamos si la pelota está dentro de los límites horizontales de la paleta
  204.                if (ball.x > paddle.x && ball.x < paddle.x + paddle.width) {
  205.                    // Un toque extra: cambiamos la dirección de la pelota según dónde golpee la paleta
  206.                    const hitPos = (ball.x - (paddle.x + paddle.width / 2)) / (paddle.width / 2);
  207.                    ball.dx = hitPos * 5; // Ajusta este valor para cambiar el ángulo
  208.                    ball.dy = -ball.dy;
  209.                } else {
  210.                    // Si no toca la paleta, pierde una vida
  211.                    lives--;
  212.                    if (!lives) {
  213.                        alert("GAME OVER &#128546;");
  214.                        document.location.reload();
  215.                    } else {
  216.                        // Reseteamos la posición de la pelota y la paleta
  217.                        ball.x = canvas.width / 2;
  218.                        ball.y = canvas.height - 30;
  219.                        ball.dx = 3;
  220.                        ball.dy = -3;
  221.                        paddle.x = (canvas.width - paddle.width) / 2;
  222.                    }
  223.                }
  224.            }
  225.  
  226.            // --- MOVIMIENTO DE LA PELOTA Y LA PALETA ---
  227.            ball.x += ball.dx;
  228.            ball.y += ball.dy;
  229.  
  230.            if (rightPressed && paddle.x < canvas.width - paddle.width) {
  231.                paddle.x += paddle.speed;
  232.            } else if (leftPressed && paddle.x > 0) {
  233.                paddle.x -= paddle.speed;
  234.            }
  235.  
  236.            // Llamamos a la función draw() de nuevo para crear el bucle de animación
  237.            requestAnimationFrame(draw);
  238.        }
  239.  
  240.        // Iniciamos el juego
  241.        draw();
  242.  
  243.    </script>
  244. </body>
  245. </html>
  246.  
En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.450


Turn off the red ligth


Ver Perfil WWW
Re: Castigado por usar una imagen que hizo otro... usando IA.
« Respuesta #3 en: 22 Noviembre 2025, 20:28 pm »

Para que algo sea tuyo, debes crearlo tú. Si te lo genera la IA sin ningún proceso creativo, no lo estás creando tu.

En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.978



Ver Perfil
Re: Castigado por usar una imagen que hizo otro... usando IA.
« Respuesta #4 en: 23 Noviembre 2025, 01:01 am »

El juego, hecho 100% por IA :

Para quien le interese, así es como puede quedar un Tetris hecho con un prompt de ChatGPT (se ve chulo):



PD: Desde el minuto 12:50 hasta 13:50 aprox.
En línea



Danielㅤ


Desconectado Desconectado

Mensajes: 1.929


🔵🔵🔵🔵🔵🔵🔵


Ver Perfil
Re: Castigado por usar una imagen que hizo otro... usando IA.
« Respuesta #5 en: 23 Noviembre 2025, 01:53 am »

Soy yo el creador de dicho juego? Que pensáis?

No, jamás, para que algo sea creación tuya, vos tenés que crearlo desde cero.


Saludos
En línea

Tachikomaia


Conectado Conectado

Mensajes: 1.671


Hackentifiko!


Ver Perfil
Re: Castigado por usar una imagen que hizo otro... usando IA.
« Respuesta #6 en: 23 Noviembre 2025, 12:09 pm »

Bueno, es un tema algo mas complejo, segun la noticia, el "creador" utilizó un prompt muy largo
No me pareció claro, dice 20000 prompts, algunos lo interpretaron como que el texto tenía 20000 instrucciones, yo más bien que puso un texto 20000 veces, modificándolo en varios casos.

Imaginate que en Minecraft por decir algo se pudiera describir qué mapa se quiere, más o menos, y luego el "creador" quiere que nadie lo use  :xD
En línea

Tachikomaia


Conectado Conectado

Mensajes: 1.671


Hackentifiko!


Ver Perfil
Re: Castigado por usar una imagen que hizo otro... usando IA.
« Respuesta #7 en: 23 Noviembre 2025, 12:26 pm »

para que algo sea creación tuya, vos tenés que crearlo desde cero.
No se puede, yo no hago el lenguaje de programación, ni el teclado, ni los átomos, etc.

Crear tiene que ver con a partir de las herramientas que uno tiene, pero en este caso la herramienta hace casi todo.

Obviamente no voy a decir que un pescador no merece lo que pesca, pero me suena un poco a que usar una IA es como pescar, pones la trampa o pides a la IA y esperas. Cada actividad tiene su ciencia, pero... si sólo depende de paciencia y suerte... :/
Bien, quédate con el pescado ¿pero no compartir un dibujo? Pf, ni que fuera un desnudo ilegal. A propósito, le pedí a una IA que me dibujara a un robot con sangre en la cara, por decirlo siemple, y se negó, tuve que usar otra, era para ver si es tan difícil generar una imagen así. No parece.

"humano pero su cuerpo y órganos son de robot. Su cara tiene sangre, tiene ojos azules y algo clavado en su frente. Dibujo estilo cómic."

El suyo es más complejo, pero en fin...
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
candio de imagen en dev-c++ usando SDL
Programación C/C++
peterfly 0 4,496 Último mensaje 24 Septiembre 2011, 14:00 pm
por peterfly
Subir Imagen usando CodeIgniter!
Desarrollo Web
01munrra 0 8,062 Último mensaje 26 Junio 2012, 05:44 am
por 01munrra
subir una imagen usando ajax sin refrescar la pagina
Desarrollo Web
OssoH 2 3,589 Último mensaje 21 Marzo 2015, 17:03 pm
por OssoH
Imprimir una imagen usando el compilador Dev C/C++
Programación C/C++
Kevrodrig 2 7,779 Último mensaje 20 Noviembre 2017, 16:58 pm
por BloodSharp
Un perro hizo un gol y el video del momento hizo estallar las redes
Foro Libre
El_Andaluz 1 5,583 Último mensaje 9 Septiembre 2021, 15:52 pm
por Machacador
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines