Créez Tetris avec GPT-4 en utilisant p5.js
De Wikiprompt, l’encyclopédie libre de prompts
Créez Tetris avec GPT-4 en utilisant p5.js Un guide étape par étape pour créer un jeu Tetris avec GPT-4, incluant des invites pour la génération initiale du code et des améliorations itératives comme l'effacement de lignes et le mouvement.
Médias associés
Contenu du PromptEnregistrer
🌐
Voici le code p5.js pour Tetris avec des couleurs arc-en-ciel et le contrôle par flèches :
```javascript
let board = [];
let blockSize = 30;
let cols = 10;
let rows = 20;
let currentPiece;
let pieces = [];
let colors = ['#FF0000', '#FF7F00', '#FFFF00', '#00FF00', '#0000FF', '#4B0082', '#8B00FF'];
let fallInterval = 500;
let lastFall = 0;
let score = 0;
function setup() {
createCanvas(cols * blockSize, rows * blockSize);
for (let i = 0; i < rows; i++) {
board[i] = [];
for (let j = 0; j < cols; j++) {
board[i][j] = 0;
}
}
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]]
];
spawnPiece();
}
function spawnPiece() {
let index = floor(random(pieces.length));
currentPiece = {
shape: pieces[index],
x: floor(cols / 2) - floor(pieces[index][0].length / 2),
y: 0,
color: colors[floor(random(colors.length))]
};
}
function draw() {
background(0);
drawBoard();
drawPiece();
if (millis() - lastFall > fallInterval) {
moveDown();
lastFall = millis();
}
fill(255);
textSize(20);
text('Score: ' + score, 10, 30);
}
function drawBoard() {
for (let i = 0; i < rows; i++) {
for (let j = 0; j < cols; j++) {
if (board[i][j] !== 0) {
fill(board[i][j]);
rect(j * blockSize, i * blockSize, blockSize, blockSize);
}
}
}
}
function drawPiece() {
fill(currentPiece.color);
for (let i = 0; i < currentPiece.shape.length; i++) {
for (let j = 0; j < currentPiece.shape[i].length; j++) {
if (currentPiece.shape[i][j] === 1) {
rect((currentPiece.x + j) * blockSize, (currentPiece.y + i) * blockSize, blockSize, blockSize);
}
}
}
}
function moveDown() {
if (!collision(currentPiece.shape, currentPiece.x, currentPiece.y + 1)) {
currentPiece.y++;
} else {
lockPiece();
clearLines();
spawnPiece();
}
}
function lockPiece() {
for (let i = 0; i < currentPiece.shape.length; i++) {
for (let j = 0; j < currentPiece.shape[i].length; j++) {
if (currentPiece.shape[i][j] === 1) {
board[currentPiece.y + i][currentPiece.x + j] = currentPiece.color;
}
}
}
}
function clearLines() {
for (let i = rows - 1; i >= 0; i--) {
let full = true;
for (let j = 0; j < cols; j++) {
if (board[i][j] === 0) {
full = false;
break;
}
}
if (full) {
board.splice(i, 1);
board.unshift(new Array(cols).fill(0));
score += 100;
i++;
}
}
}
function collision(shape, x, y) {
for (let i = 0; i < shape.length; i++) {
for (let j = 0; j < shape[i].length; j++) {
if (shape[i][j] === 1) {
let newX = x + j;
let newY = y + i;
if (newX < 0 || newX >= cols || newY >= rows) return true;
if (newY >= 0 && board[newY][newX] !== 0) return true;
}
}
}
return false;
}
function keyPressed() {
if (keyCode === LEFT_ARROW) {
if (!collision(currentPiece.shape, currentPiece.x - 1, currentPiece.y)) {
currentPiece.x--;
}
} else if (keyCode === RIGHT_ARROW) {
if (!collision(currentPiece.shape, currentPiece.x + 1, currentPiece.y)) {
currentPiece.x++;
}
} else if (keyCode === DOWN_ARROW) {
moveDown();
lastFall = millis();
} else if (keyCode === UP_ARROW) {
rotatePiece();
}
}
function rotatePiece() {
let rotated = [];
for (let i = 0; i < currentPiece.shape[0].length; i++) {
rotated[i] = [];
for (let j = 0; j < currentPiece.shape.length; j++) {
rotated[i][j] = currentPiece.shape[currentPiece.shape.length - 1 - j][i];
}
}
if (!collision(rotated, currentPiece.x, currentPiece.y)) {
currentPiece.shape = rotated;
}
}
```
Ce code implémente un Tetris complet avec :
- Contrôle par flèches (gauche/droite pour déplacer, bas pour accélérer, haut pour tourner)
- Chaque pièce a une couleur aléatoire de l'arc-en-ciel
- Les lignes complètes sont détectées et supprimées
- Le score augmente à chaque ligne effacée
- La chute automatique se produit toutes les 500 ms
Copiez ce code dans un éditeur p5.js et exécutez-le.
Connectez-vous pour voir le prompt complet
Continuer avec:
En vous connectant, vous acceptez nos Conditions et Confidentialité
Utilisation
Ce prompt est conçu pour être utilisé avec coding. Copiez le contenu ci-dessus et collez-le dans votre outil d’IA préféré.
Pour de meilleurs résultats, personnalisez les espaces réservés (indiqués par des crochets ou des majuscules) selon vos besoins.
Références
- Catégorie: Prompts coding
- Source: https://x.com/icreatelife/status/1656851183565144065
Discussion
0 commentaires