ABA


"התחלתי לכתוב תוכנית בC.."
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #8813 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 8813
פוקיפC
חבר מתאריך 3.11.16
20 הודעות
   15:21   10.01.03   
אל הפורום  
  התחלתי לכתוב תוכנית בC..  
 
   זה אמור להיות התחלה לסנייק אז יש לי כמה שאלות...
1. התוכנית עובדת ברקע אפור איך מבטילים את זה?
2. איך אני יכול לעשות שה"כוכבית לא תעבור את המסגרת?
3. כשלוחצים להזיז את הכוכבית היא מתקדמת עד אחד ורק אז זזה לכיוון
שרוצים...
מי יכול לעזור לי בבקשה?
 
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<stdio.h>
#include<dos.h>
int main(void)
{
int a=10,i=10,t;
char c;
int gdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,"C:\\bc3\\bgi");

do{

c=getch();

switch(c)
{

case 'w':clrscr(); setcolor(RED);rectangle(20,460,600,20);gotoxy(i,a--);printf("*"); break;

case 'a':clrscr(); setcolor(RED);rectangle(20,460,600,20);gotoxy(i--,a);printf("*"); break;

case 'd':clrscr(); setcolor(RED);rectangle(20,460,600,20);gotoxy(i++,a);printf("*"); break;

case 's':clrscr(); setcolor(RED);rectangle(20,460,600,20);gotoxy(i,a++);printf("*"); break;

}
for(t=1;t<1000;t++);
}while( c!='q');

}


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  התוכנית שלך Michael 10.01.03 15:45 1
     אני יודע שהיא לא טובה פוקיפC 10.01.03 15:50 2
         קודם כל Michael 10.01.03 15:55 3
             נניח אני רוצה במוד גרפי אז מה מחליף אותם? פוקיפC 10.01.03 16:02 4
                 שבת שלום אני יחזור רק במוצ''ש פוקיפC 10.01.03 16:08 5
                 הנה Michael 10.01.03 16:27 6
                     אתה לא ברור liranh  10.01.03 20:51 7
                         הערה Michael 10.01.03 23:31 8
                             את זה לא ידעתי. liranh  10.01.03 23:53 9
                                 תודה רבה לכולם!!! פוקיפC 11.01.03 18:01 10
                                     ככה: liranh  11.01.03 18:12 11
                                         איזה כוכביות? זה מסגרת של ריבוע... פוקיפC 11.01.03 18:32 12
                                             אה סליחה התבלבלתי, חשבתי שיש לך מסגרת liranh  11.01.03 19:05 15
                                                 לא הבנתי את הרעיון.. כי איך אני יעשה תנאי פוקיפC 11.01.03 19:09 16
                                                     אתה כל הזמן שומר את הקורדינאטה שלו :) liranh  11.01.03 19:17 19
  אם אתה עובד עם כוכביות, תעבוד בTEXT: dryice 11.01.03 18:53 13
     תודה אבל התוכנית שלי כבר נראית אחרת.. פוקיפC 11.01.03 19:01 14
         לא משהו התוכנית liranh  11.01.03 19:10 17
             אני יודע שהתוכנית לא משהו ואני כבר משנה את זה פוקיפC 11.01.03 19:15 18

       
Michael

   15:45   10.01.03   
אל הפורום  
  1. התוכנית שלך  
בתגובה להודעה מספר 0
 
   לא טובה.
אתה מבלבל בין מוד גרפי למוד טקסט


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
פוקיפC
חבר מתאריך 3.11.16
20 הודעות
   15:50   10.01.03   
אל הפורום  
  2. אני יודע שהיא לא טובה  
בתגובה להודעה מספר 1
 
   אני סתם לומד C ולא הרבה זמן...
אבל בכל זאת.. הבאתי אותה לפה שתביאו לי הצעות לא כדי סתם לזרוק הודעות..
אבל תודה, יש לך הצעות?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Michael

   15:55   10.01.03   
אל הפורום  
  3. קודם כל  
בתגובה להודעה מספר 2
 
   לפני שאתה מתחיל לתכנת אתה צריך להחליט
באיזה מוד אתה רוצה לעבוד.
אם זה במוד גרפי אז אסור להשתמש בprintf ובclrscr וgotoxy.
אם זה במוד טקסט אז אתה לא צריך לבצע את האיתחול של המצב הגרפי
ואסור לך להשתמש בבפקדות כמו rectangle או כל פקודה אחרת
שמוגדרת בgraphics.h


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
פוקיפC
חבר מתאריך 3.11.16
20 הודעות
   16:02   10.01.03   
אל הפורום  
  4. נניח אני רוצה במוד גרפי אז מה מחליף אותם?  
בתגובה להודעה מספר 3
 
   את printf ואת clrscr ואת gotoxy?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
פוקיפC
חבר מתאריך 3.11.16
20 הודעות
   16:08   10.01.03   
אל הפורום  
  5. שבת שלום אני יחזור רק במוצ''ש  
בתגובה להודעה מספר 4
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Michael

   16:27   10.01.03   
אל הפורום  
  6. הנה  
בתגובה להודעה מספר 4
 
   printf במוד גרפי אתה מחליף בouttext
clrscr תחליף בcleardevice
gotoxy תחליף בmoveto


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
liranh  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 16.6.09
4157 הודעות, 1 פידבק
   20:51   10.01.03   
אל הפורום  
  7. אתה לא ברור  
בתגובה להודעה מספר 6
 
   אתה לא מסביר את עצמך טוב.

printf:
outtextxy(x,y,"text");

במקום הטקסט אתה יכול לשים שם מחרוזת- בלי גרשיים.


clrscr:
cleardevice();

אבל תזכור שאתה לא צריך לעשות את זה בכל תחילת תוכנית. ה-initialization של ה-graphics עושים את זה לבד...

gotoxy מן הסתם אתה לא צריך כי אתה אומר לו בתוך הפונקצייה של ה-outtextxy איפה לכתוב במסך.

ה-moveto שמיכאל הזכיר זה כדי לקבוע מקום שממנו אתה יכול להתחיל לצייר בעזרת הפונקצייה linerel.
לדוגמא:


moveto(10,10);
linerel(20,100);
linerel(40,130);

אתה קובע שהקו יתחיל מ-10,10- עד 20,100- ומשם ימשיך ל-40,130. ככה אתה משתמש ב-moveto ו-linerel.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Michael

   23:31   10.01.03   
אל הפורום  
  8. הערה  
בתגובה להודעה מספר 7
 
   קטנה והיא שmoveto נועדה לא רק לlinerel
אלה גם אפשר להשתמש בה בשביל outtext.
כלומר

outtextxy(100,200,"Rotter")

זה בדיוק כמו

moveto(100,200)
outtext("rotter")


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
liranh  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 16.6.09
4157 הודעות, 1 פידבק
   23:53   10.01.03   
אל הפורום  
  9. את זה לא ידעתי.  
בתגובה להודעה מספר 8
 
   תודה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
פוקיפC
חבר מתאריך 3.11.16
20 הודעות
   18:01   11.01.03   
אל הפורום  
  10. תודה רבה לכולם!!!  
בתגובה להודעה מספר 9
 
   עבר עריכה לאחרונה בתאריך 11.01.03 בשעה 18:25
 
אני אשנה את התוכנית לפי זה, אבל עוד לא עניתם על שאלה אחת..

* איך אני יכול לעשות שה"כוכבית" לא תעבור את המסגרת?



ושוב תודה..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
liranh  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 16.6.09
4157 הודעות, 1 פידבק
   18:12   11.01.03   
אל הפורום  
  11. ככה:  
בתגובה להודעה מספר 10
 
   תעשה לולאה גדולה של while, שהתנאי שלה הוא שהראש של הנחש יגיע לאחת הכוכביות.
בתחילת הלולאה תקלוט תו, ובהמשך הלולאה תשים תנאים לכל אחד מהכיוונים (ימינה, שמאלה, למעלה, למטה), לדוגמא: אם התו הנקלט הוא ימינה אז הנחש יזוז משבצת אחת ימינה. וכך הלולאה תרוץ שוב ושוב עד שהראש של הנחש יגיע לאחת הכוכביות.
זה הכל.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
פוקיפC
חבר מתאריך 3.11.16
20 הודעות
   18:32   11.01.03   
אל הפורום  
  12. איזה כוכביות? זה מסגרת של ריבוע...  
בתגובה להודעה מספר 11
 
   (שגם לעשות אותו, אתה לימדת אותי...)
למה אתה לא ב ICQ?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
liranh  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 16.6.09
4157 הודעות, 1 פידבק
   19:05   11.01.03   
אל הפורום  
  15. אה סליחה התבלבלתי, חשבתי שיש לך מסגרת  
בתגובה להודעה מספר 12
 
   עבר עריכה לאחרונה בתאריך 11.01.03 בשעה 19:05
 
של כוכביות, אבל הבנת את הרעיון


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
פוקיפC
חבר מתאריך 3.11.16
20 הודעות
   19:09   11.01.03   
אל הפורום  
  16. לא הבנתי את הרעיון.. כי איך אני יעשה תנאי  
בתגובה להודעה מספר 15
 
   שמתי שהראש של הנחש יגיע למסגרת הוא יפסיק לעבוד?
איך אני יכול לדעת מתי הוא יגיע?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
liranh  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 16.6.09
4157 הודעות, 1 פידבק
   19:17   11.01.03   
אל הפורום  
  19. אתה כל הזמן שומר את הקורדינאטה שלו :)  
בתגובה להודעה מספר 16
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dryice

   18:53   11.01.03   
אל הפורום  
  13. אם אתה עובד עם כוכביות, תעבוד בTEXT:  
בתגובה להודעה מספר 0
 
   אם אתה לא מנצל את הגרפיקה באמת, למה להסתבך עמה?
נסה לכתוב משהוא כזה:

#include <stdio.h>
#include <conio.h>

int main(void)
{
int a=10,i=10,c,t;
clrscr();
do {
c=getch();
switch(c)
{
case 'w': printf("%c ",8); gotoxy(i,a--); printf("*"); break;
case 'a': printf("%c ",8); gotoxy(i--,a); printf("*"); break;
case 'd': printf("%c ",8); gotoxy(i++,a); printf("*"); break;
case 's': printf("%c ",8); gotoxy(i,a++); printf("*"); break;
}

for (t=1;t<1000;t++);
} while (c!='q');

return 0;
}

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


DRYICE


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
פוקיפC
חבר מתאריך 3.11.16
20 הודעות
   19:01   11.01.03   
אל הפורום  
  14. תודה אבל התוכנית שלי כבר נראית אחרת..  
בתגובה להודעה מספר 13
 
   עבר עריכה לאחרונה בתאריך 11.01.03 בשעה 19:05
 
כרגע היא ככה:

#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<stdio.h>
#include<dos.h>
int main(void)
{
int a=200,i=200,t;
char c;
int gdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,"C:\\bc3\\bgi");

do{

c=getch();

switch(c)
{

case 'w':cleardevice(); setcolor(RED);rectangle(20,460,600,20);outtextxy(i,a--,"*"); break;

case 'a':cleardevice(); setcolor(RED);rectangle(20,460,600,20);outtextxy(i--,a,"*"); break;

case 'd':cleardevice(); setcolor(RED);rectangle(20,460,600,20);outtextxy(i++,a,"*"); break;

case 's':cleardevice(); setcolor(RED);rectangle(20,460,600,20);outtextxy(i,a++,"*"); break;

}
for(t=1;t<1000;t++);
}while( c!='q');

}


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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
liranh  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 16.6.09
4157 הודעות, 1 פידבק
   19:10   11.01.03   
אל הפורום  
  17. לא משהו התוכנית  
בתגובה להודעה מספר 14
 
   גם אתה בטח לא רוצה שהמסך יהבהב לך כל הזמן בגלל ה-cleardevice() נכון?
אני הייתי כל פעם מצייר עוד * במקום המתאים, ומוחק את הכוכבית האחרונה, ע"י כתיבת * באותו מקום שלה, בצבע שחור.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
פוקיפC
חבר מתאריך 3.11.16
20 הודעות
   19:15   11.01.03   
אל הפורום  
  18. אני יודע שהתוכנית לא משהו ואני כבר משנה את זה  
בתגובה להודעה מספר 17
 
   רעיון טוב...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net