שְׁאֵלָה:
לדקלם לוח שחמט מקובץ PGN
wintermeyer
2020-03-15 10:53:42 UTC
view on stackexchange narkive permalink

ברצוני לעבד תמונה של לוח שחמט דו-ממדי ולשמור אותה לאחר המהלך האחרון כ- PNG או JPEG מקובץ PGN נתון במסוף לינוקס. כיצד אוכל לעשות זאת?

יש לי קובץ PGN ואני רוצה לקבל צילום מסך של הלוח.

נראה שזו משימה פשוטה אבל אני לא מוצא פיתרון עבור זה שניתן לתסריט במסוף לינוקס.

PS נראה שהנוסח "משימה פשוטה" מעצבן אצל חלק מהקוראים כאן. בהיותי לא דובר שפת אם אני מתקשה להבין את הניואנס הזה, אבל אני בשום פנים ואופן לא רוצה לדרוך על רגליו של מישהו. מגיע מרקע קונסולת לינוקס יש לי את התחושה שהדבר אמור להיות אפשרי בקונסולה בקלות. אבל שלא מצאתי את הכלי לעשות את זה.

לא ממש בטוח למה אתה מתכוון "לדקלם" אבל אם אתה פשוט מתכוון לקרוא את הקובץ ולהראות את המשחק scid או xboard יעשה את זה - לאחר שהתקנת את המתאים
עדכנתי את השאלה.
כנראה שהפשוט ביותר הוא לפתוח את ה- pgn עם קורא ה- pgn המועדף עליכם ולקבל צילום מסך - https://itsfoss.com/take-screenshot-linux/ אני לא מכיר שום כלי ייעודי לעשות את כל זה בצעד אחד, אני אשאיר את תשובות למישהו שכן
PGNs מיועדים לאחסון משחקים שלמים, אז האם ברצונך לשמור תמונה של המשחק לאחר המהלך האחרון? או במהלך נתון? אחרת, מה שאתה בטח רוצה לעבוד איתו הם FENs, שהוא סימן סטנדרטי לתיאור מיקום מסוים ולא משחק.
היי. אני רואה את העריכות שלך. כן זה פשוט אבל אתה עדיין צריך משהו כמו חבילת Python כדי לנתח PGN ל- FEN. PGN כשלעצמו הוא משחק, ולכן שום כלי יוניקס לא יכול להמיר אותו לתמונה.
זה נשמע כמו שאלה ל [המלצות תוכנה מחדש] * https: //softwarerecs.stackexchange.com/)
שְׁלוֹשָׁה תשובות:
Ellie
2020-03-15 21:37:31 UTC
view on stackexchange narkive permalink

ניתן להשתמש ב פונקציות עיבוד SVG של פיתון-שח. זה יאפשר לך ליצור ויזואליזציה בפורמט SVG של כל מיקום לוח שנטען באמצעות פיתון-שח.

FEN ל- SVG

לדוגמא, בהינתן FEN כקלט (נגיד שאנחנו שומרים את סקריפט הפיתון שלנו כ- boardtosvg.py)

שימוש ב- python3 ובגרסת ספריית השחמט של python 0.30.1

  ייבוא ​​chessimport chess.svgimport sysarguments = sys.argvfen = str (טיעונים [1]) לוח = שחמט. Board (fen) boardsvg = chess.svg.board (לוח = לוח) f = פתוח ("BoardVisualisedFromFEN.SVG", "w") f.write (boardsvg) f.close ()  
  • דוגמה, FEN: 'rnbqkbnr / pppppppp / 8/8 / 4P3 / 8 / PPPP1PPP / RNBQKBNR b KQkq e3 0 1'

  • פקודה להפעלת הסקריפט מהמסוף :

    python boardtosvg.py 'rnbqkbnr / pppppppp / 8/8 / 4P3 / 8 / PPPP1PPP / RNBQKBNR b KQkq e3 0 1'

קובץ שמור (אם אינך יכול לפתוח קובצי SVG, אתה יכול לפחות להשתמש בדפדפן כגון כרום כדי להציג את הקובץ) :

enter image description here

מיקום מ- a PGN ל- SVG

באופן דומה, אם הקלט הוא קובץ PGN, אז איך תשמור את ה- SVG של המיקום האחרון של המשחק (אתה יכול להאריך את זה לשמירת המיקום בכל מהלך ):

  ייבא chessimport chess.svgimport chess.pgnimport sysarguments = sys.argvpgnfilename = str (טיעונים [1]) # קרא את קובץ ה- pgn: עם פתוח (pgnfilename) כ- f: game = chess. pgn.read_game (f) # עבור לסוף המשחק וצור שחמט. לוח () ממנו: game = game.end () board = game.board () boardsvg = chess.svg.board (board = board ) f = open ("BoardVisualisedFromPGN.SVG", "w") f.write (boardsvg) f.close ()  

קובץ שמור:

enter image description here

כעת כל שנותר לעשות הוא להמיר את קבצי ה- SVG שנוצרו כך ל- PNG, מה שאפשר לעשות גם בפייתון, עיין בפתרונות בקישור למטה:

SmallChess
2020-03-15 20:57:32 UTC
view on stackexchange narkive permalink

כן, כמובן שזה אפשרי. עשיתי את זה הרבה מקצועית. עם זאת, אין כלי שפשוט לוקח משחק שחמט PGN וממיר אותו לתמונות. תצטרך לעשות קצת תכנות, לא קשה מאוד.

הנה קישור לאופן שבו ניתן ליצור קבוצות נתונים של למידת מכונה בשחמט. אתה אמור להיות מסוגל לעשות שימוש חוזר בקוד. הדגשתי את החלק שיתייחס לבעיה שלך.

https://github.com/Elucidation/tensorflow_chessbot יש דוגמה:

enter image description here

צעדים כלליים:

  • מנתח את קובץ ה- PGN שלך עם שחמט של פייתון. קל מאוד, תאמין לי.
  • השתמש ב- FENs המנותחים שלך. עקוב אחר זרימת העבודה שלמעלה.
Jorge Acuna
2020-03-15 14:11:14 UTC
view on stackexchange narkive permalink

אני לא חושב שכינוי זה "משימה פשוטה" על מנת שמישהו ייתן לך את הקוד בחינם הוא imo מאוד מנומס.

נוסף על כך, זה בהחלט אפשרי, אבל זה לא משימה פשוטה. זה דורש הטמעת כיתה לטיפול בייצוג הגרפי, ושיעור אחר כדי לבצע את "התרגום". כמו כן יש לא מעט גורמים שיש לקחת בחשבון. אם אין לך את הידע אפילו להתחיל לעשות את זה, אתה צריך לשכור מישהו שיעשה את זה בשבילך אז. אפייק, הפורום הזה נועד לעזור לקודדים שעושים את העבודה בפועל ותקועים בחלק ספציפי של הפרויקט שלהם; זה לא מזרקה קודנית לכולם לבקש יישומים בחינם.

אני לא קורא את זה כמי שמבקש ממישהו לכתוב קוד - יותר אם כבר קיים משהו שה- OP יכול להתקין / להוריד. בעולם לינוקס יש בזיליון ממירים בפורמט קבצים זמינים בחינם, זה לא בלתי סביר לשאול אם כבר קיים אחד כזה.
@Jorge Acuna, אני לא משתמש בלינוקס, אבל זה פשוט ב- Windows. אתה יכול פשוט להשתמש בכל מוצר ChessBase, כולל הצופה החינמי, ולפתוח את קובץ ה- PGN, להגיע למיקום וללכת לכרטיסייה "בית" וללחוץ על "העתק מיקום". אין קוד מעורב. גם הפוסט שלך אינו תשובה, והיה צריך להכניס אותו לתגובות בלבד.
ובכן, זו משימה פשוטה. עשיתי את זה תוך שעתיים. הבעיה המתוארת כאן היא כמו היסודות בתכנות השחמט.
ובכן, לעשות זאת מאפס, אם אתה יכול לעשות זאת תוך שעתיים עליך להיות מועסק ברווח לפחות. אם כבר קיימות מערכות, יכול להיות שיהיה תכונה מהירה למדי ליישום. ההודעה המקורית לא התייחסה ל"כלי ו / או תוסף להרחבת או יצירת התכונה במסוף לינוקס ", לזכרוני. אבל, אם זה המקרה ובלינוקס אתה עושה את התוספים או התסריטים האלה ומעביר אותם בחינם, בסדר. תשכח שציינתי משהו. לינוקס היא בחינם לכל הארץ לא? אז אני מבין שאתה מבקש את הכלי המקודד בקלות הזה, על פי smartchess.


שאלה ותשובה זו תורגמה אוטומטית מהשפה האנגלית.התוכן המקורי זמין ב- stackexchange, ואנו מודים לו על רישיון cc by-sa 4.0 עליו הוא מופץ.
Loading...