שאלה ב C

שאלה ב C

איך איפשר לצבוע טקסט למשל בצבע ? למשל
printf (" sdafsfsdf");​
איך אפשר להפוך אותו מלבן לכחול וכל מיני צבעים?
 

erezsh

New member
אפשרות אחת

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

stac

New member
הא... בסדר.

אז עדיך שהוא כבר ילמד איך לגשת לזיכרון המסך ובלה בלה בלה?
 

erezsh

New member
בהנחה

ואתה כותב על הקונסולה: 1) להשתמש ב-cprintf, אבל יש סיכויים שהקומפיילר שלך לא יתמוך בזה 2) לכתוב ישירות למסך, כלומר לכתובת 0xB800:
char *ptr = (char *)MK_FP(0xB800,0); int main() { ptr[0]=1 ptr[1]='H' ptr[2]=2 ptr[3]='i' ptr[4]=3 ptr[5]='!' return 0; }​
כמובן שייקח לך קצת זמן ממש להשתלט על זה. 3) בהנחה וזה תחת DOS, או עם תמיכה ב-DOS, אתה יכול לנסות לקרוא לפסיקות המערכת. מידע על הפסיקות ואיך לקרוא להן תמצא ב-reference לאסמבלי, ואת הקריאה עצמה אפשר לעשות ע"י הכנסת קוד אסמבלי לקוד שלך, או ע"י קריאה לפונקציה int86 (או מה שקומפיילר שלך מאפשר)..
 

zagzagzag

New member
כן ../images/Emo13.gif

כתיבה ישירה לזיכרון המסך באסמבלי של 80286 (אני לא יודע אסמבלי של מעבדים מתקדמים יותר):
mov ah,0 mov al,3 ; Color mode int 10H push 0B800H pop es mov bx,(2*80+10)*3 ; 3rd line mov [byte es:bx],"H" mov [byte es:bx+1],10011110 mov [byte es:bx+2],"E" mov [byte es:bx+3],10011110 mov [byte es:bx+4],"L" mov [byte es:bx+5],10011110 mov [byte es:bx+6],"L" mov [byte es:bx+7],10011110 mov [byte es:bx+8],"O"​
לפני הרבה זמן זה עבד לי על XP
 

dor_ian

New member
אולי זה יעזור

לא היה לי כח לנבור בקודים. אז אני מצרף לך איזה תוכנית מפגרת שכתבתי לפני זמן מה. (המטרה שלה היתה לא יותר מלהרגיז את חברי ללימודים. כן, אני כזה
) רק התחלתי ללמוד C אז הקוד כמובן בהתאם. תנבור בקוד ותקח מה שאתה צריך. תמצא שם איך לעשות צבעים בקונסול לWIN32 (כרגע זה מוגדר שם על ירוק אבל כבר תראה איך עושים עוד צבעים) וגם איך לקבוע קורדינטות למסך. ושאר ירקות. הקוד אמנם לא מקצועי אבל יחסית מסודר ומאורגן בפונקציות. אז תעבור עליו טוב טוב ואל תפציץ בשאלות. צרפתי לך גם את קבצי הפרוייקט. פשוט תפתח את הDSW. הקובץ הראשי (main) זה הקובץ aaa. והכי חשוב לא לשכוח לשנות סיומת לZIP אם אתה רואה מחורבש אז כוון את חלון הקונסול ל80X25 בהצלחה.
 

dor_ian

New member
התפוז הזה ##%^@#%^$#

הוא לא נותן לי לעלות ת'קובץ גררררררררר בקיצור שים ת'מייל שלך או שלך לי אותו במסרים. אני אנסה שוב עוד 10 דקות. לא יאמן התפוזבל הזה. 19 פעם ניסיתי. מקבל דף שגיאה.
 

dor_ian

New member
אתה יותר זריז מ... ../images/Emo13.gif

אז שלח לי ת'כתובת ש'ך כבר לפני שאני אתייאש.
 
למעלה