תכנות — שיעור 71 4/December/2008    

כווץ קבצים

בלינוקס אפשר לכווץ (compress) ולהרחיב(?) (uncompress) קבצים על ידי הכלי gzip. הפקודה tar של אריזת ופתיחת קבצים יכולה להשתמש בכך (באופן פנימי). משתמשים ביכולת הזאת על ידי הוספת האות z למחרוז האותיות שבאה אחרי הפקודה. כלומר

tar czf foo.tar.gz file1 file2 ... # create foo.tar.gz
tar xzf foo.tar.gz [file1 file2 ...] # extract from foo.tar.gz

עוד יכולות של פייתון

הורדנו את הגירסא setgame-2008-12-03-234838.tar.gz . מדף הגירסאות והתבוננו בקובץ card.py . הקובץ הזה אמור להגדיר קלף של המשחק ופעולות הקשורות בקלף ללא גראפיקה. בקובץ הזה יש שימוש בכמה יכולות של פייתון שנזכיר כאן בקצרה.

ערכי מחדל של פונקציה

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

ערך מחרוזת

בפייתון, יש כמה פונקציות של class עם שמות מיוחדים. כולם מתחילים ומסתַיְמִים עם שני קוים תחתונים. הכרנו את פונקצית האתחול (יצירה) __init__(self, ...) הפונקציה
__str__(self)
נקראית בכל פעם שיש להפוך משתנה class ל- string.

הגרלת מספר שלם

הפונקציה
random.randint(m,n)
בוחרת מספר שלם "אקראי" בין m לבין n (כולל הגבולות).

הפעלת פייתון על חבילה פנימית

כפי שראינו יש קבצי פייתון (רובם כאלה!) שאינם תכנית ראשית. אלה כמובן נטולי שורת קסם וללא הרשאות ביצוע. ניתן לכתוב תכניות בדיקה בתוכן תחת התנאי
if __name__ == "__main__":

התנאי הזה יהיה בדרך כלל False אלא אם נפעיל ישירות את פייתון על הקובץ, לדוגמא:
python card.py

תרגילים

  1. הורד את הדוגמא שלמעלה. נסה להבין את המימוש של
    Board.draw_rects_card()
  2. עבור על הקובץ card.py והבן אותו היטב. שאל שאלות עבור נקודות לא ברורות.
  3. בקובץ card.py מַמֵש את הפונקציה get_deck() שתחזיר רשימה של כל הקלפים האפשריים של המשחק. שים לב שתכנית הבדיקה הפנימית, כבר מדפיסה את הרשימה הזאת.

חזרה לעמוד האם