עזרה בתכנות בC - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

עזרה בתכנות בC


the_reaper123

Recommended Posts

מישהו יודע אולי איך אפשר לכתוב בC תוכנית שמאפשרת קליטה של יותר ממקש אחד בו זמנית?

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

בתודה מראש ;)

קישור לתוכן
שתף באתרים אחרים

למה אתה מתכוון?

משהו כמו "CTRL+F1"?

אם כן, אז אין דרך לעשות את זה ב-C. זה תלוי מערכת הפעלה. טריק שעובד על דוס לאו דוקא יעבוד ב- או על unix. ולהיפך. שפת C לא נותנת פתרון לבעיה הזאת.

קישור לתוכן
שתף באתרים אחרים

קודם כל, שפת C לא נותנת פתרון למקרה שבו אתה רוצה לדעת האם נלחץ CTRL+F1. זה תלוי , וכל עושה את זה בצורה שונה (קח את הקוד שכתבת בשביל DOS, תקמפל על Unix או ב-Visual C++ ותראה שזה לא עובד).

דבר שני, אם תגיד לי אם איזה קומפילר אתה עובד ועל איזו , אולי אני אוכל לעזור לך במקרה ואני יודע איך אותה פותרת את הבעיה.

קישור לתוכן
שתף באתרים אחרים

כשסתם הסתכלתי בHELP של הקומפיילר ראיתי דוגמה שמאפשרת שימוש של המקשים "Ctrl, Alt, Shift" אני לא זוכר איפה זה היה אז אני לא יכול להראות לך את התוכנית עצמה...

אני משתמש בקומפיילר TCLITE והמערכת הפעלה שלי היא - Professional....

תודה רבה שאתה מנסה...

קישור לתוכן
שתף באתרים אחרים

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

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

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

אני לא יודע את הספציפיקציות של הפסיקה, אבל אני בטוח שאם תריץ חיפוש באינטרנט תמצא את מה שאתה מחפש.

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

קישור לתוכן
שתף באתרים אחרים

אני לא יודע מה זה "פסיקה", הכוונה היא לפונקציה? ואם כן אז מה זה "פסיקה 9"?

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

קישור לתוכן
שתף באתרים אחרים

אני ינסה להסביר לך את זה...

תיצור מערך שמייצג את כל הכפתורים במקלדת.

עכשיו כל מקש שנלחץ ירשם כ"לחוץ" במערך. ברגע שמקש מסוים נעזב הוא ירשם כ"לא לחוץ" במערך...

ואז תעשה בדיקה אם מקש X רשום כלחוץ ומקש Y רשום כלחוץ אז ככה וככה..

לדוגמה: אם חץ ימינה וחץ למעלה(בעצם אתה פונה לתאים המתאימים במערך) לחוצים אז בלה בלה בלה...

יש מבין? :)

קישור לתוכן
שתף באתרים אחרים

עכשיו אתה רואה למה אני לא לקחתי מסלול משולב של מתמטיקה עם מדעי המחשב :)

סטודנטים כאלה יודעים יותר מתמטיקה מאשר מחשבים ;D

אוקי, עכשיו ברצינות.

הנה חלק מהאתר של הקורס אותו אני עושה עכשיו שנקרא "ארגון המחשב ושפות סף". אני מציע שתקרא ותבין את כל הפרקים לפי הסדר. יש שם פרק שלם שמסביר על שילוב תוכניות אסמבלי עם תוכניות C בסביבת העבודה של Borland, וגם פרק שלם על פסיקות.

לחץ כאן

קישור לתוכן
שתף באתרים אחרים

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

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

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...