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

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


Creamus

Recommended Posts

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

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

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

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

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

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

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

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

  • 2 שבועות מאוחר יותר...
  • תגובות 33
  • נוצר
  • תגובה אחרונה

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

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

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

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

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

בהצלחה

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

בניתי משחק (טנקים) עם חבר שלי..... הוא כרגע עובד על 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.........

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

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. אתה יכול להרחיב בנושא? אני רוצה לעשות דמויות בקבצים נפרדים כך שיהיה אפשר לשנות אותם מבחוץ.

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

ארכיון

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


×
  • צור חדש...