שיתוף | ChatGPT - הצ'אטבוט החדש של OpenAI ; לכתיבת תסריטים
-
היכולת שלו לכתוב קוד מבוססת על Open AI Codex.
בנוגע לשגיאות, ביקשתי ממנו ליצור קוד ב #C למטרה מסוימת ויצא קוד באורך 400 שורות עם שגיאה אחת בלבד (לפי Visual Studio), ניסיתי לתקן אותה, אבל הבעיה היא שזה משפיע על כל הקוד, ולא ממש היה לי כוח לנתח 400 שורות...
חוץ מזה ניסיתי קודים אחרים קצרים יותר (בעיקר #C) ויצא יותר טוב ממה שהייתי עושה בעצמי! -
@בוגאטי בדקת שגם אם תתקן הכל עובד כמו שצריך?
ובכלל, איך הוא הוציא לך 400 שורות?
הוא מוגבל במספר התווים ככה ש 400 שורות נשמע מוזר
בכל אופן, בכתיבה של פונקציות בודדות הוא וודאי אלוף אבל בתוכנית שלמה ומורכבת שתעבוד חלק בלי שום בעיה - קשה לראות אצלו -
@מתכנת-חובב כתב בשיתוף | ChatGPT - הצ'אטבוט החדש של OpenAI ; לכתיבת תסריטים:
בכל אופן, בכתיבה של פונקציות בודדות הוא וודאי אלוף
ברקורסיה הוא גרוע לפחות ממה שאני ניסיתי.
-
@מתכנת-חובב שכחתי לציין שעשיתי את זה ב Open AI Codex ולא בצ'אט ושם המגבלה היא 16000 תווים כמדומני.
@מתכנת-חובב כתב בשיתוף | ChatGPT - הצ'אטבוט החדש של OpenAI ; לכתיבת תסריטים:
בדקת שגם אם תתקן הכל עובד כמו שצריך?
יתכן שאתה צודק, אבל כפי שאמרתי לא היה לי כוח לעבור על הכל, זה גם ככה לא היה משהו חשוב כל כך אלא יותר לשם השעשוע.
אגב, יצרתי עם זה עכשיו קוד #C למשחק סנייק באורך 180 שורות ועבד מצויין, רק הבעיה שכיווני החיצים הפוכים וזה ממש מבלבל...
אם מעניין אותך, הנה הקוד, אני הפעלתי אותו ב Visual studio ע"י יצירת פרוייקט
Console App (.NET Framework) :using System; namespace SnakeGame { class Program { static void Main(string[] args) { // Set up the game board int boardWidth = 20; int boardHeight = 20; char[,] board = new char[boardWidth, boardHeight]; for (int i = 0; i < boardWidth; i++) { for (int j = 0; j < boardHeight; j++) { board[i, j] = ' '; } } // Set up the snake int snakeLength = 5; int[] snakeX = new int[snakeLength]; int[] snakeY = new int[snakeLength]; for (int i = 0; i < snakeLength; i++) { snakeX[i] = boardWidth / 2; snakeY[i] = boardHeight / 2; } // Set up the food int foodX = 0; int foodY = 0; Random random = new Random(); while (true) { foodX = random.Next(0, boardWidth); foodY = random.Next(0, boardHeight); if (board[foodX, foodY] == ' ') { break; } } // Set up the game variables int score = 0; int direction = 0; // 0 = up, 1 = right, 2 = down, 3 = left bool gameOver = false; // Main game loop while (!gameOver) { // Draw the board Console.Clear(); for (int i = 0; i < boardWidth; i++) { for (int j = 0; j < boardHeight; j++) { if (i == 0 || i == boardWidth - 1 || j == 0 || j == boardHeight - 1) { Console.Write('#'); } else { Console.Write(board[i, j]); } } Console.WriteLine(); } // Draw the score Console.WriteLine("Score: " + score); // Get the user input ConsoleKeyInfo keyInfo = Console.ReadKey(); switch (keyInfo.Key) { case ConsoleKey.UpArrow: if (direction != 2) { direction = 0; } break; case ConsoleKey.RightArrow: if (direction != 3) { direction = 1; } break; case ConsoleKey.DownArrow: if (direction != 0) { direction = 2; } break; case ConsoleKey.LeftArrow: if (direction != 1) { direction = 3; } break; } // Move the snake for (int i = snakeLength - 1; i > 0; i--) { snakeX[i] = snakeX[i - 1]; snakeY[i] = snakeY[i - 1]; } switch (direction) { case 0: snakeY[0]--; break; case 1: snakeX[0]++; break; case 2: snakeY[0]++; break; case 3: snakeX[0]--; break; } // Check for game over if (snakeX[0] == 0 || snakeX[0] == boardWidth - 1 || snakeY[0] == 0 || snakeY[0] == boardHeight - 1) { gameOver = true; } for (int i = 1; i < snakeLength; i++) { if (snakeX[0] == snakeX[i] && snakeY[0] == snakeY[i]) { gameOver = true; } } // Check for food if (snakeX[0] == foodX && snakeY[0] == foodY) { // Increase the score score++; // Increase the snake length snakeLength++; Array.Resize(ref snakeX, snakeLength); Array.Resize(ref snakeY, snakeLength); snakeX[snakeLength - 1] = snakeX[snakeLength - 2]; snakeY[snakeLength - 1] = snakeY[snakeLength - 2]; // Generate new food while (true) { foodX = random.Next(0, boardWidth); foodY = random.Next(0, boardHeight); if (board[foodX, foodY] == ' ') { break; } } } // Update the board board[foodX, foodY] = 'F'; for (int i = 0; i < snakeLength; i++) { board[snakeX[i], snakeY[i]] = 'S'; } } // Game over Console.Clear(); Console.WriteLine("Game Over!"); Console.WriteLine("Score: " + score); Console.ReadKey(); } } } קוד
תיהנה!!!
-
@יעקב-מ-פינס ע"י קומפיילר אונליין כמו זה.
תדביק הכל בחלון השחור ותלחץ על RUN (הכפתור הירוק) כדי להריץ. -
מישהו יכול לבדוק אם הקוד הזה עובד (הוא כתב לי גם תיעוד)
import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Point; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.util.ArrayList; import java.util.Random; import javax.swing.JFrame; import javax.swing.JPanel; public class SnakeGame extends JPanel implements Runnable, KeyListener { private static final long serialVersionUID = 1L; public static final int WIDTH = 400; public static final int HEIGHT = 400; public static final int SCALE = 20; public static final int SPEED = 5; private Thread thread; private boolean running; private BodyPart b; private ArrayList<BodyPart> snake; private Apple apple; private ArrayList<Apple> apples; private Random random; private int xCoor = 10, yCoor = 10; private int size = 5; private boolean right = true, left = false, up = false, down = false; private int ticks = 0; public SnakeGame() { setPreferredSize(new Dimension(WIDTH, HEIGHT)); addKeyListener(this); setFocusable(true); snake = new ArrayList<BodyPart>(); apples = new ArrayList<Apple>(); random = new Random(); start(); } public void start() { running = true; thread = new Thread(this); thread.start(); } public void stop() { running = false; try { thread.join(); } catch (InterruptedException e) { e.printStackTrace(); } } public void tick() { if (snake.size() == 0) { b = new BodyPart(xCoor, yCoor, 10); snake.add(b); } ticks++; if (ticks > 250000) { if (right) xCoor++; if (left) xCoor--; if (up) yCoor--; if (down) yCoor++; ticks = 0; b = new BodyPart(xCoor, yCoor, 10); snake.add(b); if (snake.size() > size) { snake.remove(0); } } if (apples.size() == 0) { int xCoor = random.nextInt(39); int yCoor = random.nextInt(39); apple = new Apple(xCoor, yCoor, 10); apples.add(apple); } for (int i = 0; i < apples.size(); i++) { if (xCoor == apples.get(i).getxCoor() && yCoor == apples.get(i).getyCoor()) { size++; apples.remove(i); i--; } }
-
@מתכנת-חובב כתב בשיתוף | ChatGPT - הצ'אטבוט החדש של OpenAI ; לכתיבת תסריטים:
הוא מוגבל במספר התווים
נכון מאוד, אבל אפשר לבקש ממנו להשלים (הוא ממשיך פחות או יותר מהשורה שהוא עצר ומוסיף התנצלות על "חוסר שימת הלב"...)
-
@מתכנת-חובב לא יודע, כשהוא עוצר לי באמצע אני כותב לו פשוט 'you didn't finish' (לא סיימת) והוא ממשיך מהנקודה שבה עצר
-
מישהו יודע למה הוא לא נותן לי לדבר איתו יותר מהודעה אחת?
כל פעם שאני שולח יותר מהודעה אחת הוא כותב לי יותר מידי הודעות בשעה אחת נסה שוב מאוחר יותר. -
@שמעון-חבצלת קיבל שכל
הבין שמנצלים אותו
בינה מלאכותית או לא? -
@שמעון-חבצלת להבנתי זה אמור להיות בתשלום
רק עכשיו בחינם -
@אבי-ים כתב בשיתוף | ChatGPT - הצ'אטבוט החדש של OpenAI ; לכתיבת תסריטים:
רק עכשיו בחינם
אם זה רק עכשיו בחינם אז למה אני לא מצליח לתקשר איתו?
-
@שמעון-חבצלת אני לא יודע
אבל אולי זה רק הדגמה
ואחרי שאלה אחת הוא עוצר -
@אבי-ים במטותא ממך אתה טועה.
@שמעון-חבצלת התשובה פשוטה מאוד וכתובה שם במפורש. יש להם עומסים אדירים על השרתים, והם פשוט לא עומדים בהם. זה הכל. זה לכולם ככה פחות או יותר