לא מצליח להבין את הבעיה, הקוד שלי ארוך ומורכב מדי בשביל שאצליח להסביר את כולו בלי שהפוסט יהיה באורך של מילון אבן שושן אז אנסה להסביר למיטב יכולתי:
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 כך שאני לא מצליח להבין למה באופן רנדומלי פתאום הקוד נתקע.
eliory09
תראה, גם לי היו כמה בעיות כאלו.
אני מניח שעבור כל בחירה שלך אתה בודק האם היא סט. במידה וכן, איך אתה מסיר את הקלפים מהקלפים הפתוחים ושולף קלפים חדשים? זה מקום שבו אתה יכול ליפול ב-index out of range.
Yam
תדפיס את nums ואת deck. מה חוזר?
DrorBiton
עדכון:
את הבעיה ההיא מצאתי, הטעות נבעה מההזחה שלי כיוון שההמשך תהליך (היצירה של המשתנה current_combo והבדיקות שלו) היה בהתחלה תחת הבדיקה של המספרים כיוון שרציתי שרק אם הבדיקות יהיו תקינות הוא ימשיך הלאה.
אבנה פונקציית עזר שתבדוק את המספרים על מנת לפשט את הקוד
עכשיו אני נתקל בבעיה אחרת, את הפונקציה השניה (זו שמריצה את הראשונה כל עוד השחקן לא ניצח / הפסיד) בנויה כלולאת while, והבעיות שלי כאלו:
הראשונה, אם אני מריץ את המשחק עד לסיום, אני מקבל לולאה אינסופית של ההדפסה שהשחקן ניצח.
השניה, כיוון שהיא בנויה כלולאת while, התנאי לא מתקיים לי ולכן גם כשההזנה לא תקינה (3 מספרים שונים) כמו אותיות או אפילו מספרים גדולים היא ממשיכה לבקש הזנה מהשחקן.
aviadamar
בגלל שהתכניות הולכות וננהיות מורכבות יותר אני מציע לכתוב קטע תכנית בתא נפרד (למשל את כל העניין עם ההזנה שתיארת) ולעבוד על זה שם עד שזה עובד. שזה עובד להכניס את זה לקוד הגדול כפונקציה או כקטע קוד ולעשות התאמות
DrorBiton
האמת שבאיחור אבל זה אחד הדברים שעשיתי אתמול כדי למצוא את הבעיות שלי.
בכל מקרה, נכון לעכשיו הצלחתי לסיים את שלב א׳ (אחרי ששיחקתי את המשחק כבר איזה 30 פעמים)
ועכשיו אני די תקוע עם חיפוש של מודול מתאים להדפסת הקלפים, מצאתי את המודול deck_of_cards אבל זה נראה שהוא בנוי בצורה אוטומטית ליצור חפיסת קלפים ״רגילה״ ושהאופציות שלה לא בנויות בשביל ליצור את החפיסה שאנחנו צריכים למשחק כאן (4 משתנים)
אשמח להכוונה למציאת המודול לתרגיל הזה כי חיפושים באינטרנט לא מביאים אותי לתוצאה של הדפסת קלף צבעוני אלא הדפסה של משתנה ״פייתוני״ (רשימות, מילונים וכו)
תודה
aviadamar
ההדפסה של בקלפים היא לא צריכה להיות בgui
היא יכולה להיות בprint
DrorBiton
בדיוק ראיתי בפוסט אחר שהכוונה הייתה להדפיס את אותו הדבר בדיוק רק שבמקום להדפיס את שם הצבע (“purple”) פשוט להדפיס את שאר הטקסט בשורה בצבע סגול.
הבנתי נכון?
ruty3017
אם אתה מדפיס קלף ירוק - הוא יודפס בירוק
אם אתה מדפיס קלף אדום - הוא יודפס באדום
לא צריך gui רק צריך שהשורה שמודפסת תיהיה בצבע המתאים.
לייק 1
DrorBiton
עדכון מס’ #הפסקתי לספור
מצאתי מודול מתאים ועכשיו הכל בצבעי הקשת אם הייתה מורכבת מ3 צבעים בלבד.
סעיף 2 מבקש מאיתנו טיימר שמכוון ל3 דקות ויכול להתארך אם השחקן הזין קלט נכון.
מצאתי את את המודול threading שיש לו את הפעולה timer שעונה לי על המשימה אך לא מצאתי דרך להוסיף 5 שניות במידה וקיבלתי קלט נכון מהשחקן.
אני בכלל בכיוון עם המודול? אם כן, איך אפשר להשהות אותו ל5 שניות (חשבתי על אפשרות לעצור אותו ולהפעיל אותו מחדש כשבזמן אני שם 3 דקות - הזמן שעבר + 5 שניות אבל אני לא בטוח איך לחשב את הזמן שעבר בשניות)
אם לא, אשמח להכוונה למודול מתאים יותר למשימה הזו.
ruty3017
לא חייב עם threads אני עשיתי בלי. אפשר להשתמש במודל שאנחנו כבר מכירים והשתמשנו בו די הרבה.
DrorBiton
לבסוף הצלחתי מי היה מאמין…
תודה לכל העוזרים ולצוות ההנהלה על התרגיל הכי מתיש בתולדות קורס לומדים פייתון (נכון עד לשבוע 7)
Yam
נחמד אתה שזה משהו
לא תתפוס אותי מתנצל על זה שאני דואג שהחניכים שלי יוצאים מהקורס ברמה גבוהה
5 לייקים
timnar312
כבר החמאתי שבוע שעבר על אורטל,
גם על אורטל 2 ממש תרגיל אדיר!!!
אבל סט עם צבעים וזמנים
זה כבר תרגיל להראות לחברים שחושבים שיכולים לנצח אותי😂
אז אם כבר להתלהב,
יש דרך לשלוח למישהו שלא מבין בפתיחת קבצים של קוד שיוכלו לשחק? כלומר את הקוד אפשר כמובן לשלוח ולפתוח, השאלה אם יש דרך שלא ימחקו בטעות ואז לא יעבוד…
באותו נושא אבל לא ממש, כבר כמה פעמים שחיפשתי בקטנה באינטרנט,
על האפשרות להעביר לויזואלי יותר (תמונות או רקע לבן ולא הקוד עצמו)
לא מצאתי את המילים הנכונות או שלא יודעת מה קרה לא מצאתי משהו (בעיקר להבנה שלי, במה משתמשים בנוסף כדי להציג לדוגמה קלפים כתמונה ולחיצה עליהם - מקווה שלא סיבכתי)…
לייק 1
Yam
מממ, אחרי שבוע 9 תזכירי לי ויהיה לי קל להסביר
את מחפשת את PyGame, הם די טובים בשטויות שקשורות לפיתוח משחקים במהירות.
יש המון דברים מוכנים כבר, רשמתי בגוגל pygame cards וקיבלתי את זה.