עבור לתוכן

עזרה בC#

Featured Replies

פורסם

שלום אני רוצה שעת קליטת מקש מסוים לדוגמא התו W

lable1 לדוגמא יזוז פיקסל אחד למעלה כלומר Y-1

ניסיתי בתוכנה lable1.location.Y--;

ולא עבד הוא רושם שאי אפשר לשנות את זה כי זה לא משתנה

להלן הקוד אם אתם רוצים לראות בבקשה תעזרו לי

      string key;
key = e.KeyChar.ToString();
label1.Text = key.ToString();
if (key.IndexOf("w") != -1)
{
label1.Location.y--;
}

פורסם

לא מכיר C#, אבל זה נשמע כאילו .Location.y הוא read only. הייתי מחפש מתודה של setLocation, setY או משהו כזה.

ד"א, זה נראה כאילו אתה מנסה להזיז X בעזרת המקשים.

אני הייתי עושה משהו קצת שונה- מגדיר מערך של מקשים והכיוון שלהם, משהו כזה


var aMovementKeys = new Array();
aMovementKeys["w"] = new Array(0,1);
aMovementKeys["d"] = new Array(1,0);
aMovementKeys["s"] = new Array(0,-1);
aMovementKeys["a"] = new Array(-1,0);
];

הסינטקס אומנם של JS, אבל מקווה שהרעיון ברור.

פורסם

היי black-hawk. ב C# באמת אי אפשר לעשות את זה כי המשתנה הוא לא הערך של ה-X או Y באמת אלא כל הנקודה (לפי דעתי ממש מטומטם) לכן הקוד אמור להיות כך (ניסיתי ועובד)



private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
switch (e.KeyChar)
{
case 'w':
label1.Location = new Point(label1.Location.X, label1.Location.Y - 1);
break;
case 'a':
label1.Location = new Point(label1.Location.X-1, label1.Location.Y);
break;
case 's':
label1.Location = new Point(label1.Location.X, label1.Location.Y + 1);
break;
case 'd':
label1.Location = new Point(label1.Location.X+1, label1.Location.Y);
break;
default:
break;
}
}

פורסם

זה בגלל כל העניין של הפרופרטיז. במקום להשתמש בLOCATION, אתה יכול להשתמש בTOP(ולזה לעשות --).

פורסם
  • מחבר

היי black-hawk. ב C# באמת אי אפשר לעשות את זה כי המשתנה הוא לא הערך של ה-X או Y באמת אלא כל הנקודה (לפי דעתי ממש מטומטם) לכן הקוד אמור להיות כך (ניסיתי ועובד)



private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
switch (e.KeyChar)
{
case 'w':
label1.Location = new Point(label1.Location.X, label1.Location.Y - 1);
break;
case 'a':
label1.Location = new Point(label1.Location.X-1, label1.Location.Y);
break;
case 's':
label1.Location = new Point(label1.Location.X, label1.Location.Y + 1);
break;
case 'd':
label1.Location = new Point(label1.Location.X+1, label1.Location.Y);
break;
default:
break;
}
}

תודה רבה!! עזרת לי מאוד

ארכיון

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

דיונים חדשים