פורסם 2002 בדצמבר 1322 שנים אני רוצה לעשות משחק סנייק לדוס..הכל די מתוכנן לי בראש חוץ מזה שאני צריך לעשות מין לולאה שתאפשר לתוכנית גם לבדוק כל הזמן אם לחצו על מקש חדש (כדי לשנות את הכיוון של הנחש) וגם באותו זמן להמשיך להזיז את הנחש ללא הפסקה... איך אני עושה את זה?בתודה מראש,עומר..
פורסם 2002 בדצמבר 2122 שנים תעשה משהו כזה :תחילת לולאהבדיקת מקשיםבדיקת מיקומיםעדכון הנחשציור המסך כולל הנחשבדיקת תנאי סיוםחזור להתחלה.מתאים ?
פורסם 2002 בדצמבר 2322 שנים עשיתי פעם משחק כזה גם ב VB וגם ב C . ב C הרעיון הכללי הוא לולאה אין סופית שמקבלת מקשים (ASCI) והנחש ממשיך באותו כיוון כל עוד הוא לא קיבל מקש שונה.עוד טיפ: נגיד והנחש פונה שמאלה והוא מורכב כבר מ 20 איברים והמשתמש לוחץ בזריזות ללא הפסקה על למעלה,ימינה,למעלה ,שמאלה.זאת אומרת שכל חלק בנחש הולך בכוון אחר. הרעיון כדי לפתור הוא שכל תזוזה של הנחש זזה ע"י ההעברת האיבר האחרון בנחש לראש הנחש.תחשוב על זה ותבין.
פורסם 2002 בדצמבר 2622 שנים טוב, אז אם אתה כותב ב-C, אז אתה צריך בדיקה כזאת:if (kbhit()){ch = getch(); // Enter here your stuff for keyboard control}ובפסקל:if keypressedbeginch := readkey();{ your code here }end;
פורסם 2002 בדצמבר 2822 שנים יותר מאיך לעשות חשוב שתבין איפה הבעיהכשאתה מבקש מהמחשב לחכות לפעולת מקלדת יש לך (ברוב שפות התכנות) כמה סוגים של פקודות (blocking & not Blocking) כךומר פקודות שמחכות עד לקבלת מקש כל שהוא (או תו אחד או enter)ופקודות שרק בודקות אם מקש כלשהוא נלחץ והמידע של המקש נצא בבפר (buffer) של מערכת ההפעלה.במקרה שלך אתה לא מעוניין שהמסחק "יחכה" למקש של המשתמש אז אתה זקוק לפקודה לא חוסמת.דרך אגב - אתה יכול גם לבנות את זה בצורה של שני תהליכים (או טרדים)ויהיה תהליך אחד שיחכה ללחיצות המשתמש והשני פשוט יריץ את המשחק כל עוד התהליך השני לא נתן לא איזו הודעה (אבל למשחק פשוט כזה זה פיתרון עמוס מדי)
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.