עבור לתוכן

משחק סנייק...

Featured Replies

פורסם

אני רוצה לעשות משחק סנייק לדוס..

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

בתודה מראש,

עומר..

  • 2 שבועות מאוחר יותר...
פורסם

טוב דבר ראשון

זה תלוי באיזה שפה אתה משתמש

ובאיזה תוכנת כתיבה .

שניר

פורסם

תעשה משהו כזה :

תחילת לולאה

בדיקת מקשים

בדיקת מיקומים

עדכון הנחש

ציור המסך כולל הנחש

בדיקת תנאי סיום

חזור להתחלה.

מתאים ?

פורסם

עשיתי פעם משחק כזה גם ב VB וגם ב C .

ב C הרעיון הכללי הוא לולאה אין סופית שמקבלת מקשים (ASCI) והנחש ממשיך באותו כיוון כל עוד הוא לא קיבל מקש שונה.

עוד טיפ: נגיד והנחש פונה שמאלה והוא מורכב כבר מ 20 איברים והמשתמש לוחץ בזריזות ללא הפסקה על למעלה,ימינה,למעלה ,שמאלה.

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

תחשוב על זה ותבין.

פורסם

טוב, אז אם אתה כותב ב-C, אז אתה צריך בדיקה כזאת:


if (kbhit())
{
ch = getch();
// Enter here your stuff for keyboard control
}

ובפסקל:


if keypressed
begin
ch := readkey();
{ your code here }
end;

פורסם

יותר מאיך לעשות חשוב שתבין איפה הבעיה

כשאתה מבקש מהמחשב לחכות לפעולת מקלדת יש לך (ברוב שפות התכנות)

כמה סוגים של פקודות (blocking & not Blocking)

כךומר פקודות שמחכות עד לקבלת מקש כל שהוא (או תו אחד או enter)

ופקודות שרק בודקות אם מקש כלשהוא נלחץ והמידע של המקש נצא בבפר (buffer)

של מערכת ההפעלה.

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

דרך אגב - אתה יכול גם לבנות את זה בצורה של שני תהליכים (או טרדים)

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

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים