נקמת הסט שנוקמת בי כהוגן

לא מצליח להבין את הבעיה, הקוד שלי ארוך ומורכב מדי בשביל שאצליח להסביר את כולו בלי שהפוסט יהיה באורך של מילון אבן שושן אז אנסה להסביר למיטב יכולתי:
2 הקודים ה"סופיים" לחלק א שאני רוצה להשתמש בהם מחולקים כך:
השני - קוד שמטרתו להפעיל את הראשון כל עוד יש סטים בקלפים, הוא אחראי לכל הקשור לבדיקה של הלוח, מילוי ווידוא שעדיין יש סטים בקלפים שנותרו והשלוח תקין (מכיל סטים).
הראשון - קוד שמטרתו ליצור כל פעם תור לשחקן, ובעצם להדפיס לו את כל הקלפים שנמצאים כרגע על השולחן ולתת לו לבחור 3 מתוכם (עפ"י אינדקס).
לאחר מכן לוודא שהמספרים תקינים (לא חוזרים ולא גדולים מאורך הרשימה כי הרי ייחסתי כל קלף לאינדקס).
אחרי שהוא ווידא שהם תקינים אני רוצה שהוא יצור משתנה self.current_combo שיכיל את שלושת הקלפים שהשחקן בחר (ואני מנסה ליצור אותו עפ"י אינדקס, ובעצם -
[self.deck[num] for num in numbers]
כאשר numbers הם הבחירה של השחקן.

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

ועכשיו לחלק שאני לא מצליח להבין, ב-90% מהפעמים אחרי ההזנה של שלושת המספרים אני מקבל התראה שהקוד לא מצליח ליצור את המשתנה self.current_combo בגלל שהאינדקס מחוץ לטווח:


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

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

עדכון:
עכשיו חשבתי לרגע שהצלחתי לסדר את הבעיה, הצלחתי להריץ את הקוד 5 תורות ובשישי אחרי שלקחתי את שלושת המספרים קיבלתי את אותה ההתראה.
הסתכלתי על המספרים - 5, 6 ו-9.
במבט חטוף מעל ראיתי שהקלט כבר קיבל את המספרים 10 ו-11 כך שאני לא מצליח להבין למה באופן רנדומלי פתאום הקוד נתקע.

תראה, גם לי היו כמה בעיות כאלו.
אני מניח שעבור כל בחירה שלך אתה בודק האם היא סט. במידה וכן, איך אתה מסיר את הקלפים מהקלפים הפתוחים ושולף קלפים חדשים? זה מקום שבו אתה יכול ליפול ב-index out of range.

תדפיס את nums ואת deck. מה חוזר?

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

עכשיו אני נתקל בבעיה אחרת, את הפונקציה השניה (זו שמריצה את הראשונה כל עוד השחקן לא ניצח / הפסיד) בנויה כלולאת while, והבעיות שלי כאלו:
הראשונה, אם אני מריץ את המשחק עד לסיום, אני מקבל לולאה אינסופית של ההדפסה שהשחקן ניצח.
השניה, כיוון שהיא בנויה כלולאת while, התנאי לא מתקיים לי ולכן גם כשההזנה לא תקינה (3 מספרים שונים) כמו אותיות או אפילו מספרים גדולים היא ממשיכה לבקש הזנה מהשחקן.

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

האמת שבאיחור אבל זה אחד הדברים שעשיתי אתמול כדי למצוא את הבעיות שלי.
בכל מקרה, נכון לעכשיו הצלחתי לסיים את שלב א׳ (אחרי ששיחקתי את המשחק כבר איזה 30 פעמים)
ועכשיו אני די תקוע עם חיפוש של מודול מתאים להדפסת הקלפים, מצאתי את המודול deck_of_cards אבל זה נראה שהוא בנוי בצורה אוטומטית ליצור חפיסת קלפים ״רגילה״ ושהאופציות שלה לא בנויות בשביל ליצור את החפיסה שאנחנו צריכים למשחק כאן (4 משתנים)

אשמח להכוונה למציאת המודול לתרגיל הזה כי חיפושים באינטרנט לא מביאים אותי לתוצאה של הדפסת קלף צבעוני אלא הדפסה של משתנה ״פייתוני״ (רשימות, מילונים וכו)

תודה

ההדפסה של בקלפים היא לא צריכה להיות בgui
היא יכולה להיות בprint

בדיוק ראיתי בפוסט אחר שהכוונה הייתה להדפיס את אותו הדבר בדיוק רק שבמקום להדפיס את שם הצבע (“purple”) פשוט להדפיס את שאר הטקסט בשורה בצבע סגול.
הבנתי נכון?

אם אתה מדפיס קלף ירוק - הוא יודפס בירוק
אם אתה מדפיס קלף אדום - הוא יודפס באדום
לא צריך gui רק צריך שהשורה שמודפסת תיהיה בצבע המתאים.

לייק 1

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

מצאתי את את המודול threading שיש לו את הפעולה timer שעונה לי על המשימה אך לא מצאתי דרך להוסיף 5 שניות במידה וקיבלתי קלט נכון מהשחקן.
אני בכלל בכיוון עם המודול? אם כן, איך אפשר להשהות אותו ל5 שניות (חשבתי על אפשרות לעצור אותו ולהפעיל אותו מחדש כשבזמן אני שם 3 דקות - הזמן שעבר + 5 שניות אבל אני לא בטוח איך לחשב את הזמן שעבר בשניות)
אם לא, אשמח להכוונה למודול מתאים יותר למשימה הזו.

לא חייב עם threads אני עשיתי בלי. אפשר להשתמש במודל שאנחנו כבר מכירים והשתמשנו בו די הרבה.:upside_down_face:

לבסוף הצלחתי מי היה מאמין…
תודה לכל העוזרים ולצוות ההנהלה על התרגיל הכי מתיש בתולדות קורס לומדים פייתון (נכון עד לשבוע 7)

נחמד אתה שזה משהו :slight_smile:
לא תתפוס אותי מתנצל על זה שאני דואג שהחניכים שלי יוצאים מהקורס ברמה גבוהה

5 לייקים

כבר החמאתי שבוע שעבר על אורטל,
גם על אורטל 2 ממש תרגיל אדיר!!!
אבל סט עם צבעים וזמנים :open_mouth:
זה כבר תרגיל להראות לחברים שחושבים שיכולים לנצח אותי😂

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

באותו נושא אבל לא ממש, כבר כמה פעמים שחיפשתי בקטנה באינטרנט,
על האפשרות להעביר לויזואלי יותר (תמונות או רקע לבן ולא הקוד עצמו)
לא מצאתי את המילים הנכונות או שלא יודעת מה קרה לא מצאתי משהו (בעיקר להבנה שלי, במה משתמשים בנוסף כדי להציג לדוגמה קלפים כתמונה ולחיצה עליהם - מקווה שלא סיבכתי)…

לייק 1

מממ, אחרי שבוע 9 תזכירי לי ויהיה לי קל להסביר :slight_smile:

את מחפשת את PyGame, הם די טובים בשטויות שקשורות לפיתוח משחקים במהירות.
יש המון דברים מוכנים כבר, רשמתי בגוגל pygame cards וקיבלתי את זה.

לייק 1

תודה רבה רבה!!! :upside_down_face: