עבור לתוכן

שלום יש לי שאלה בקשר לשפת C ותמונות...

Featured Replies

פורסם

קודם כל שלום :)

יש לי שאלה...אני רוצ הלהציג תמונה באיכות גדולה בתונית שלי...

אני יודע לעשות רק באיכות של 16 צבעים

ואני רוצה להציג תמונה באיכות יותר גדולה למשל 16ביט ואף יותר..כמה שיותר ככה יותר טוב...

מישהו אוליי יותר אוליי יש איזה משהו שאפשר לעושת?

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

אשמח אם תעזרו לי :)

  • 2 שבועות מאוחר יותר...
  • תגובות 33
  • צפיות 4.6k
  • נוצר
  • תגובה אחרונה
פורסם

גם לי יש אותה בעיה :-\

איך גורמים ל-TC להיכנס למוד גרפי של יותר מ-16 צבעים ( הוא מוכן לעבוד רק עם חלק מקבצי הBGI כך שאני לא יכול לעבוד במוד של 320X200X256 )

פורסם

בעקרון יש ספריות גרפיקה אחרות שנותנות אפשרויות הרבה יותר נרחבות מאשר הBGI.

אני כרגע מחפש כאלה, ואם אני אמצא אני אכתוב פה.

פורסם

אפשר להשתמש בספריות הBGI בבורלנד C++ ?

או לחבר את הOPEG GL API איכשהו ?

פורסם

אפשר להשתמש בספריות BGI, הם לא רעות בכלל.

אם אתה רוצה יותר מ-16 צבעים, יש ספריות BGI מותאמות ל SVGA.

ftp://garbo.uwasa.fi/pc/bgidriv/svgabg55.zip

הנה אחת שאני עובד איתה.

אם אתה צריך עוד עזרה תשאל...

בהצלחה

פורסם

Jeasus !!! איך מפעילים את הדרייברים האלה........

מישהו???

פורסם

מה לא הצלחת?

פורסם

בניתי משחק (טנקים) עם חבר שלי..... הוא כרגע עובד על 16 צבעים ....

מה אני צריך להוסיף לקוד המקור(רק בהתקנה של הדרייבר...) ואיזה קבצים להעתיק על מנת שזה יעבוד ב256 צבעים??????

(בלי התפריט בחירה בהתחלה)

ודרך אגב המקסימום שתוכנית הדוגמא עובד בו זה: 640x480x256

לא עובד ברזולוציה גבוהה יותר ולא ביותר צבעים

ועוד 2 דברים:

האם משתמשים באותן פונקציות גרפיקה?

איך מיוצגים הצבעים?

פורסם

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

אהה כן.. יש איזה פונקציה שם בשביל להכניס תמונה לסיי?

פורסם

כן, גם לי זה עובד רק ב 640... 256.. אבל לדעתי זה מספיק.

הדבר היחיד שאתה צריך להעתיק זה את SVGA256.BGI לספריה שבה נמצאים שאר קבצי הBGI שלך.

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

int detectSVGA()

{

return 2; // זה המצב הרצוי - כמו שאמרתי רק מצב 2 עבד לי - 640*480*256, אפשר לנסות משהו אחר

}

void main()

{

int gmode;

int gdriver=installuserdriver("SVGA256",detectSVGA);

gdriver=DETECT;

initgraph(&gdriver,&gmode,"c://tc//bgi");

rest of program...

closegraph();

}

בעקרון יש תיעוד מאוד מפורט על BGI בעזרה של Turbo C - אני נעזרתי בזה המון.

לגבי צבעים - אתה פשוט עושה setcolor ומכניס כל מספר בין 0 ל- 255. 16 הצבעים הראשונים הם הצבעים המוכרים ממצב 16 הצבעים הרגיל.

תוכל לעשות לולאת FOR ולהציג בה את כל הצבעים וכך להכיר אותם. אם בא לך גם תוכל לכתוב פונקצית (RGB(int r,int g,int b

שתחשב לך לבד את הצבע (למרות שלא ניסיתי, אז אל תשאל איך)

לגבי הכנסת תמונה לC - לפי מה שקראתי, מאוד קשה לעבוד עם תמונות BMP. מצאתי תוכנה שהופכת קבצי BMP לקבצים שאפשר להשתמש בהם ב BGI עם פונקציות כמו putimage, אבל היא עובדת רק עם תמונות של 16 צבעים...

מה שכן תוכל לעשות זה לצייר תמונה לבד ולשמור אותה בפורמט של BGI עם getimage. אבל זה כבר נושא אחר...

DARK - תוכל אולי לשלוח לי את המשחק שלך? אולי אני אוכל ללמוד כמה דברים (במיוחד על תזוזה של גופים על המסך).

אם לא - תוכל להגיד לי איך אתה מיישם תנועה כזאת (של sprites)?

עריכה - למה לעזאזל התג של

 לא מיישר את הטקטס לשמאל?
וכשאני מנסה להשתמש איתו ביחד עם [left] זה לא עובד.

פורסם

למה צריך את הפונקציה detectvga??

אי אפשר לשים 2 בinstall..?

בתזוזה של הקליע השתמשנו ב פיזיקה ...(וקטורים בלאגנים..)

מה זה sprites?

ואני לא מפרסם את הקוד מקור.... אם תרצה אני אשלח לך את המשחק רק תגיד לי לאן...

זה לא עובד לי! הוא רושם ארור בשורה של

install.........

פורסם

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

פורסם

int huge detectSVGA()

{

return 2; // זה המצב הרצוי - כמו שאמרתי רק מצב 2 עבד לי - 640*480*256, אפשר לנסות משהו אחר

}

void main()

{

int gmode,gdriver=DETECT;

installuserdriver("SVGA256",detectSVGA);

initgraph(&gdriver,&gmode,"c:\\tc\\bgi");

rest of program...

closegraph();

}

ככה זה אמור להיות אם כבר.... אבל עדיין לא עובד..

פורסם

אתה יכול לתאר את הERROR שאתה מקבל?

הצורה ששינית לא נכונה. אתה צריך קודם לעשות:

gdriver = installuserdriver("SVGA256", detectSVGA);

ואח"כ

gdriver=DETECT;

הנה קטע מתכנית עובדת ליתר בטחון:

int gdriver, gmode;

/* install a user written device driver */

gdriver = installuserdriver("SVGA256", detectSVGA);

/* must force use of detection routine */

gdriver = DETECT;

/* initialize graphics and local variables */

initgraph(&gdriver, &gmode, "c:\\tc\\bgi");

תבדוק ששמת את הקובץ בספרייה של הBGI.

תבדוק גם את המיקום של ה TURBO C - כמו שאתה רואה אני השתמשתי ב c:\tc\bgi - יכול להיות שאצלך זה שונה.

אתה חייב להשתמש בפונקצית עזר - שים לב שהיא נקראת בלי סוגריים.

DARK - כשאני אומר תזוזה אני מתכוון לציור עצמו של העצם הזז כך שהרקע שמאחוריו נשמר.

אם אתה יכול תשלח ל myfake (at) walla.co.il

פורסם

DARK - כשאני אומר תזוזה אני מתכוון לציור עצמו של העצם הזז כך שהרקע שמאחוריו נשמר.

אם אתה יכול תשלח ל myfake (at) walla.co.il

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

אתה יכול למחוק אותו ב2 צורות.. או לצייר עליו מלבן בצבע הרקע מה שלא חכם כשיש לך עוד אובייקטים קרובים למקום..

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

מה שכן, לפי מה שהבנתי מבן אדם שיצר משחק דיי רציני לא ב C++ אלא בדלפי זה שכל פעם מציירים הכל מחדש..

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

נסה את זה..

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

ארכיון

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

דיונים חדשים