אמ.. תחינה לעזרה(?)

אמ.. תחינה לעזרה(?)

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

WizardE

New member
הוא התכוון אלגוריתם

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

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

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

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

johnny d

New member
לא בדיוק נכון

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

אתה יודע אתה מזכיר לי פעם איזה בחור בפקולטה שיצר משתנה ועשה לכל האופרטורים שלו overload . אתה עושה לו ++ זה מאתחל את המשחק.. אתה עושה לו =1 זה ימינה =2 שמאלה =3 למעלה =4 למטה.. -- סוגר את המשחק.. נו אז נניח והוא עשה דבר מצחיק כזה, זה לא העניין, אז תגיד שהוא הצליח עם משתנה לממש משחק.. זה שטויות ,רצות לו פונ' ברקע.... לא עושים כאלה דברים, ADT על פי הגדרתו הוא Abstract data type קונטיינר אבסטרקטי שמחזיק מידע, לא עושה הדפסות לא עושה כלום, רק מחזיק מידע.. מנהל זכרון תקרא לו .. זה שאפשר בקוד לדחוף שם Format C: אז גם אפשר לדחוף שם מערכת הפעלה שלמה.. אבל זה מוזר ביותר יש לציין אם המורה שלו יתן לו בונוס על זה, המורה שלו צריך לרענן את הידע שלו בC.
 

johnny d

New member
אתה באמת מקשקש

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

זה שמשתמשים בADT בתכנות זה ידוע, אבל ADT בעצמו היינו קונטיינר.. אני מצטט ממה שהבחור מעלייך אמר (שטוען שאני מקשקש ומביא קישור שמוכיח את עמדתי) "A set of data values and associated operations that are precisely specified independent of any particular implementation" זה קבוצת נתונים ,ADT נועד לאחסן נתונים.. אני בכלל לא מבין על מה הויכוח, ADT זה לא מנוע פיזקלי, זה לא מנוע גרפי.. לADT בכלל אסור להציג שום פלט.. אתה מתאר לעצמך כזה מצב שתשתמש בADT והוא יתחיל להדפיס דברים? בADT כן אפשר להשתמש בשביל להכין משחק/תוכנות/וכל דבר בעולם.. אבל להגיד "אני רוצה להכין משחק מחשב בADT (לא "בעזרת" אל "ב")" זה כמו להגיד, אני רוצה לשקול את עצמי במטרים..
 

Fractal

New member
עוד פעם אתה עושה את זה...

מקשקש
אתה מתמקד יותר מידי בנתונים(D) ומתעלם לגמרי מהשאר(AT). לדוגמא: integer זה ADT, מה שעושה את אותו INT טיפוס מופשט זה הממשק שלו, ז"א הפעולות + * -. אפשר לשנות ב-ADT את אופן איחסון הנתונים, וזה עדיין יהיה אותו ADT. (אתה יכול לאחסן מספר גם במחרוזת) יכול להיות לך ADT שמיצג: דיסק קשיח, CD-ROM, מסך... כמובן שהמימוש יכול להשתנות בין מערכת למערכת, אבל ההפשטה תישאר לנצח. תיקח את הקורס הבא: http://telem.openu.ac.il/courses/2006a/c20442 יעשה לך קצת סדר בבאלגן.
 
נכון אבל ADT אינו מציג פלט

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

Fractal

New member
אם ככה צרור שאלות...

למה ADT לא אמור לייצג TERMINAL ? מדפסת ? חיבור לרשת ? למה ADT לא אמור לבצע הדפסות למסך ? (זה שלימדו אותך שצריך להפריד את הלוגיקה מהתצוגה זה טוב ויפה, אבל זה לא העניין) האם בפוטושופ, כלי מסוג מברשת הוא ADT ? (אתה צריך לזכור שיש רמות של הפשטה) מה הבעיה עם זה ? האם הבעיה היא שאתה יכול לכתוב מידע ולא לקרא ? ואם יושב מול המסך רובוט שמקליד כל מה שאתה כותב למסך לתוך קובץ, שאח"כ אתה יכול לקרא ... זה בסדר ? ולעניין שהתחיל את הכל, האם משחק הוא ADT ? ונגיד שיש לך חוות שרתים שמריצים עליה הרבה מאד משחקים, האם משחק הוא ADT ביחס למנהל המשחקים. ז"א משתמש מבצע LOGIN ובוחר משחק, מה שמנהל צריך זה ליצור ADT של אותו משחק, לאתחל אותו עם כמה פרמטרים, ולשלח אותו לדרכו (כמובן שזה קצת הרבה יותר מסובך)... האם המנהל מתיחס למשחק כ-ADT ? (רמות של הפשטה) אין לי בעיה להשתכנע כשמביאים לי טיעונים משכנעים...
 

Fractal

New member
אהה ושכחתי לציין שאתה סותר את עצמך.

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

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

Fractal

New member
=>

עושה רושם שאתה מתיחס ל-ADT כטכנולוגיה =>> זה מושג ! אתה יכול ליישם את המושג הזה ע"י CLASS ב- ++C, או ע"י חמולה של פונקציות שפועלות על מבני-נתונים ב-C... "אמרתי אלף פעם שאתה יכול להמציא משתנה לעשות אוברלואד לכל האופרטורים שלו" עושה רושם שאתה חושב ש-ADT בהכרח קשור לאופרטורים (*-+/&&||....). (זו טעות, לדוגמא מחסנית) משחק יכול להיות מורכב מהרבה ADT-ים. (שחקנים, חפצים, תכונות, מפלצות, CONNECTION, DATABASE ...) ומערכת שמנהלת משחקים תתיחס ל-ADT משחק, למה?, כי זו רמת ההפשטה הדרושה לה.
 
אוקי אם אתה אומר

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

johnny d

New member
בצורה הכי פשוטה אין הבדל

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