C#...

Crazy Midget

New member
C#...

איך אני יכול בC# (Console Application( לקלוטמהמשתמש לחציה על איזשהו מקש? למשל (כמו במשחק "פונג") שבלחיצה על המקד "שמאלה" הסטרינג _____ יזוז שמאלה.
 

Justin Angel

New member
קה פרובלמה מואי צ'יקיטה?

בשביל קליטת לחיצה על מקש בודד קיימת מתודה Console.ReadKey. המתודה תחזיר ConsoleKeyInfo שממנו ניתן להחזיר את התו שנלחץ ומקשים לחוצים נוספים (ALT למשל). נהוג להריץ את את הקריאה של המקש בלולאה אין-סופית (שרצה כל-עוד התוכנית רצה) היות ובקריאה ל-Console.ReadKey התוכנה תחכה סינכרונית ללחיצה הבאה על המקלדת.
while (true) { char c = Console.ReadKey().KeyChar; }​
למשל הקוד הבא יקרה בכל לחיצת מקלדת את התו שנלחץ. ניתן גם לגשת ל-Console.ReadKey().Modifiers ולהוציא משם את המקשים הלחוצים הנוספים. היום כבר לא נהוג לפתח משחקים ב-Console ואפילו הפשוטים ביותר בגלל הסיבוכים הטכניים. ניתן להוריד גירסה חינמית לסטודיו XNA שהיא פריימוורק משחקים דוט-נטית שיכולה לרוץ גם על PCים וגם על XBOXים. XNA מאפשר תמיכה הרבה יותר טובה בפיתוח משחקים גם מהבחינה הגרפית וגם המבחינה של פתרון בעיות נפוצות (לחיצות מקלדת באמת, חישובים פיזקאליים פשוטים, תמיכה במסכים ותלת-מימד וכך הלאה). XNA Developer Center Microsoft XNA Game Studio Express 1.0 Tutorial 2: Making Your Model Move Using Input
 

Crazy Midget

New member
אוקיי... אבל

איך אני יכול לעשות שמתי שאני לוחץ על LeftArrow איזשהו סטרינג ישים רווח מצד שמאל שלו?
if(c == Console.ConeoleKey.Leftarrow) a = " "+a;​
 

Crazy Midget

New member
למשל הקוד הזה:

איך הוא אמור להיכתב?
using System; public class Program { public static void Main() { string a="_____"; while (true) { char c = Console.ReadKey().KeyChar; if (c == ConsoleKey.LeftArrow) { a = " " + a; } } } }​
 

Justin Angel

New member
קה פרובלמה מואי צ'יקיטה?

לא ניתן להשוות Char ל-ConsoleKey. תצטרך לבצע את ההשוואה כנגד Key ולא כנגד KeyChar.
if (Console.ReadKey().Key == ConsoleKey.LeftArrow)​
 

Crazy Midget

New member
אוקיי תודה ../images/Emo6.gif ועוד משהו ../images/Emo3.gif

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

Justin Angel

New member
../images/Emo26.gif

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