Construye Tetris con GPT-4 usando p5.js
De Wikiprompt, la enciclopedia libre de prompts
Construye Tetris con GPT-4 usando p5.js Una guía paso a paso para crear un juego de Tetris con GPT-4, incluyendo indicaciones para la generación inicial de código y mejoras iterativas como la limpieza de líneas y el movimiento.
Medios relacionados
Contenido del PromptGuardar
🌐
let board = [];
const COLS = 10;
const ROWS = 20;
const BLOCK_SIZE = 30;
let currentPiece;
let pieces = [
[[1,1,1,1]],
[[1,1],[1,1]],
[[0,1,0],[1,1,1]],
[[1,0,0],[1,1,1]],
[[0,0,1],[1,1,1]],
[[1,1,0],[0,1,1]],
[[0,1,1],[1,1,0]]
];
let colors = [
[255,0,0],
[255,127,0],
[255,255,0],
[0,255,0],
[0,255,255],
[0,0,255],
[148,0,211]
];
let currentColor;
let currentX = 3;
let currentY = 0;
let dropCounter = 0;
let dropInterval = 500;
let lastTime = 0;
function setup() {
createCanvas(COLS * BLOCK_SIZE, ROWS * BLOCK_SIZE);
for (let i = 0; i < ROWS; i++) {
board[i] = [];
for (let j = 0; j < COLS; j++) {
board[i][j] = null;
}
}
spawnPiece();
}
function draw() {
background(0);
let deltaTime = millis() - lastTime;
lastTime = millis();
dropCounter += deltaTime;
if (dropCounter > dropInterval) {
moveDown();
dropCounter = 0;
}
drawBoard();
drawPiece();
}
function spawnPiece() {
let index = floor(random(pieces.length));
currentPiece = pieces[index];
currentColor = colors[index];
currentX = 3;
currentY = 0;
}
function drawBoard() {
for (let i = 0; i < ROWS; i++) {
for (let j = 0; j < COLS; j++) {
if (board[i][j]) {
fill(board[i][j][0], board[i][j][1], board[i][j][2]);
rect(j * BLOCK_SIZE, i * BLOCK_SIZE, BLOCK_SIZE, BLOCK_SIZE);
}
}
}
}
function drawPiece() {
fill(currentColor[0], currentColor[1], currentColor[2]);
for (let i = 0; i < currentPiece.length; i++) {
for (let j = 0; j < currentPiece[i].length; j++) {
if (currentPiece[i][j]) {
rect((currentX + j) * BLOCK_SIZE, (currentY + i) * BLOCK_SIZE, BLOCK_SIZE, BLOCK_SIZE);
}
}
}
}
function moveDown() {
if (!collision(currentPiece, currentX, currentY + 1)) {
currentY++;
} else {
lockPiece();
clearLines();
spawnPiece();
}
}
function collision(piece, x, y) {
for (let i = 0; i < piece.length; i++) {
for (let j = 0; j < piece[i].length; j++) {
if (piece[i][j]) {
let newX = x + j;
let newY = y + i;
if (newX < 0 || newX >= COLS || newY >= ROWS) return true;
if (newY >= 0 && board[newY][newX]) return true;
}
}
}
return false;
}
function lockPiece() {
for (let i = 0; i < currentPiece.length; i++) {
for (let j = 0; j < currentPiece[i].length; j++) {
if (currentPiece[i][j]) {
let y = currentY + i;
let x = currentX + j;
if (y >= 0) {
board[y][x] = currentColor;
}
}
}
}
}
function clearLines() {
for (let i = ROWS - 1; i >= 0; i--) {
let full = true;
for (let j = 0; j < COLS; j++) {
if (!board[i][j]) {
full = false;
break;
}
}
if (full) {
board.splice(i, 1);
board.unshift([]);
for (let j = 0; j < COLS; j++) {
board[0][j] = null;
}
i++;
}
}
}
function keyPressed() {
if (keyCode === LEFT_ARROW) {
if (!collision(currentPiece, currentX - 1, currentY)) {
currentX--;
}
} else if (keyCode === RIGHT_ARROW) {
if (!collision(currentPiece, currentX + 1, currentY)) {
currentX++;
}
} else if (keyCode === DOWN_ARROW) {
if (!collision(currentPiece, currentX, currentY + 1)) {
currentY++;
dropCounter = 0;
}
} else if (keyCode === UP_ARROW) {
let rotated = rotatePiece(currentPiece);
if (!collision(rotated, currentX, currentY)) {
currentPiece = rotated;
}
}
}
function rotatePiece(piece) {
let rows = piece.length;
let cols = piece[0].length;
let newPiece = [];
for (let i = 0; i < cols; i++) {
newPiece[i] = [];
for (let j = 0; j < rows; j++) {
newPiece[i][j] = piece[rows - 1 - j][i];
}
}
return newPiece;
}
Iniciá sesión para ver el prompt completo
Continuar con:
Al iniciar sesión, aceptás nuestros Términos de uso y Política de privacidad
Uso
Este prompt está diseñado para usarse con coding. Copiá el contenido de arriba y pegalo en tu herramienta de IA preferida.
Para mejores resultados, personalizá los marcadores (indicados con corchetes o mayúsculas) con tus requisitos específicos.
Referencias
- Categoría: Prompts de coding
- Fuente: https://x.com/icreatelife/status/1656851183565144065
Discusión
0 comentarios