לימוד מערכים באמצעות תכנות משחקים פשוטים

יוקי לוי

תיכון כדורי, מרכז המורים עמקים מזרחיים

yokylevy@yahoo.com

 

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

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

הצעתי לכיתה שנכתוב בעצמנו משחק כזה, והכיתה הגיבה בהתלהבות לרעיון, התלהבות שנמשכה גם במהלך הביצוע. מימוש המשחק נעשה תוך כדי שימוש במערכים והצריך קלט למערך השמה במערך וסריקת המערך.  השלב הבא היה כתיבה של המשחק "איקס עיגול" (כאשר המשחק נועד לשני משתתפים, ולא נגד המחשב) הלוח יוצג על ידי מערך דו מימדי של תווים שאותחל על ידי התו רווח, השתמשנו בתצוגת טקסט כאשר האותיות X ו- O משמשות לייצוג המשחק, במשחק זה כבר היה צורך לבדוק גם אלכסונים. בשלב זה התלמידים בקשו להפוך את הפלט לגרפי. לשם כך לימדתי את הפונקציות הבסיסיות של גרפיקה, לצורך תרגול עשינו הפסקה מהמשחקים וכתבנו תוכנית שהציגה שעון אנלוגי על המסך. (תרגיל זה הצריך גם שימוש בפונקציות Sin   ו- Cos) לאחר שהכירו את הפונקציות לציור קווים ועיגולים כל מה שנשאר היה לשנות את פרוצדורת הפלט, והמשחק איקס עיגול הפך לגרפי. התלמידים שהיו תלמידי פנימיה היו גאים מאוד להראות לחבריהם לחדר את המשחקים שכתבו (גם השעון הפך מקור ליצירתיות והם יצרו שעונים בצבעים שונים בצורות שונות ובפונטים שונים, התרגיל גרם להם ללמוד בעצמם פונקציות גרפיקה נוספות).

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

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

 

אלגוריתמים לדוגמה ניתן לראות כאן:  בול פגיעה

עותק ממסמך זה וכן התוכניות בפסקל ניתנים להורדה מהאינטרנט בכתובות הבאות:

http://www.geocities.com/yokylevy/pub/arrgames.doc

המסמך:

http://www.geocities.com/yokylevy/pub/arrgames.zip

התוכניות בפסקל:

http://www.geocities.com/yokylevy/pub/my_c_demos.zip

דוגמאות נוספות בשפת C:   

http://www.geocities.com/yokyle/arrgames.html

דוגמאות של משחקים העושים שימוש במערכים