לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

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



  #2  
ישן 02-02-2009, 05:55
צלמית המשתמש של *~.Shush.~*
  משתמשת נקבה *~.Shush.~* *~.Shush.~* אינו מחובר  
 
חבר מתאריך: 10.10.06
הודעות: 64
בתגובה להודעה מספר 1 שנכתבה על ידי *~.Shush.~* שמתחילה ב "דמקה ב- C ?"

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

עד כמה הקוד אפקטיבי וכיצד ניתן לשפר אותו (אם הוא עתיד לעבוד בכלל)?

קוד PHP:
 /*Q2 Part A: get_Color()*/
char get_Color (char board[10][10], int rowint col)
{
char contain;
 
if (
board[row][col] =='@') {contain='B';}
else if (
board[row][col] =='O') {contain='W';}
else {
contain='N';}
return 
contain;
}
 
/*Q2 Part B: check_Move()*/
int check_Move (char board[10][10], int rowint colchar dirchar move)
{
if {
get_Color (char board[10][10], int rowint col) == B
         
if (direction ='R') {
                                 if (
move 'M') { 
                                                 if 
get_Color (char board[10][10], int row+1int col+1) == {
                                                                return ;
                                                                }
                                                 }
                                 else if (
move 'J') {
                                                 if (
get_Color (char board[10][10], int row+1int col+1) == N) && (get_Color (char board[10][10], int row+2int col+2) == W) {
                                                                 return ;
                                                                 }
                                                     } 
                             }                         
         if (
direction ='L') {                                                             
                                 if (
move 'M') { 
                                                 if 
get_Color (char board[10][10], int row+1int col-1) == {
                                                                return ;
                                                                }
                                                 }
                                 else if (
move 'J') {
                                                 if (
get_Color (char board[10][10], int row+1int col-1) == N) && (get_Color (char board[10][10], int row+2int col-2) == W) {
                                                                 return ;
                                                                 }
                                                     }                                
                             }
}
/*If the piece is white (white pieces move upwards on the board)*/
else if
{
/*what to do in each case of possible moves*/
}
/*else, retrieved piece wasn't black or white */

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #3  
ישן 02-02-2009, 12:33
צלמית המשתמש של *~.Shush.~*
  משתמשת נקבה *~.Shush.~* *~.Shush.~* אינו מחובר  
 
חבר מתאריך: 10.10.06
הודעות: 64
בתגובה להודעה מספר 1 שנכתבה על ידי *~.Shush.~* שמתחילה ב "דמקה ב- C ?"

אוקיי קבלו ביטול, הסתדרתי עם הסעיף הזה

נשאר סעיף אחרון שקשור לשניים שבאו לפניו:


[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://www.zix.co.il/images/z-1300922876.JPG]



והתכנית הכתובה:

קוד PHP:
 #include <stdio.h>

/*Q2 Part A: get_Color()*/
char get_Color (char board[10][10], int rowint col)
{
char contain;
   
if (
board[row][col] =='@') {contain='B';}
else if (
board[row][col] =='O') {contain='W';}
else {
contain='N';}
return 
contain;
}
 
/*Q2 Part B: check_Move()*/
int check_Move (char board[10][10], int rowint colchar dirchar move)
{
if 
  (
get_Color (board,row,col) == 'B') {
           if (
dir =='R') {
                                  if (
move == 'M') { 
                                                   if (
get_Color (board,row+1,col+1) == 'N' ) {
                                                                return 
; }
                                                   else return 
;              
                                                                
                                                  }
                                  else if (
move == 'J') {
                                                   if ((
get_Color (board,row+1,col+1) == 'W') && (get_Color (board,row+2,col+2) == 'N')) {
                                                                 return 
;}
                                                   else return 
;
                                                                 
                                                       }   
                               }                          
          if (
dir == 'L') {                                                               
                                  if (
move == 'M') { 
                                                   if (
get_Color (board,row+1,col-1) == 'N')  {
                                                                return 
; }
                                                   else return 
;
                                                                
                                                  }
                                  else if (
move == 'J') {
                                                   if ((
get_Color (board,row+1,col-1) == 'W') && (get_Color (board,row+2,col-2) == 'N')) {
                                                                 return 
; }
                                                   else return 
;
                                                                 
                                                       }                                
                             }
   }
  
/*If the piece is white (white pieces move upwards on the board)*/
 
else if
 
   (
get_Color (board,row,col) == 'W') {
           if (
dir =='R') {
                                  if (
move == 'M') { 
                                                   if (
get_Color (board,row-1,col+1) == 'N' ) {
                                                                return 
; }
                                                   else return 
;
                                                                
                                                  }
                                  else if (
move 'J') {
                                                   if ((
get_Color (board,row-1,col+1) == 'B') && (get_Color (board,row-2,col+2) == 'N')) {
                                                                 return 
; }
                                                   else return 
;
                                                   
                                                       }   
                               }                          
          if (
dir =='L') {                                                               
                                  if (
move == 'M') { 
                                                   if (
get_Color (board,row-1,col-1) == 'N')  {
                                                                return 
; }
                                                   else return 
;
                                                                
                                                  }
                                  else if (
move == 'J') {
                                                   if ((
get_Color (board,row-1,col-1) == 'B') && (get_Color (board,row-2,col-2) == 'N')) {
                                                                 return 
; }
                                                   else return 
;
                                                                 
                                                       }                                
                             }
   }  
else 
      return 
;     
}

/*print_Board_Score - function prints score and current picture of game board. DO NOT EDIT*/
void print_Board_Score(char board[10][10])
{
 
int i,j,b,w;
 
i=j=b=w=0;
 
printf("\n ");
 for(
i=0;i<10;i++)
  
printf("%d",i);
 
printf("\n");
 for(
i=0;i<10;i++)
 {
  
printf("%d",i);
  for(
j=0;j<10;j++)
  {
   
printf("%c",board[i][j]);
   if(
board[i][j]=='@')
    
b++;
   else if(
board[i][j]=='O')
    
w++;
  }
  
printf("\n");
 }
 
printf("Score:\nBlack - %d\nWhite - %d\n\n",b,w);
}
/*Q2 Part C: make_Move()*/
void make_Move (char board[10][10])
{
int r/*row*/
int c/*col*/
char d/*direction*/
char m/*move*/
/*char i="Invalid selection!";*/
 /*print initial board state and get input*/
  
print_Board_Score(board) ;
printf ("Enter location of piece to move:\n");
scanf ("%d %d", &, &);
printf ("\nEnter direction and move:\n");
scanf ("%c%c", &, &);
/*black piece case*/
if (get_Color (board,r,c) == 'B') {
    if (
== 'R') {
      if (
== 'M') {
        if (
check_Move (board,r,c,d,m) == ) { /*if move is ok*/
            
board[r][c] = ' ' ;
            
board[r+1][c+1] = '@' ; }
         else 
printf("Invalid selection!\n") ; }                    
      else if ( 
== 'J') {
        if (
check_Move (board,r,c,d,m) == ) { /*if move is ok*/         
            
board[r][c] = ' ' ;
            
board[r+1][c+1] = ' ' ;
            
board[r+2][c+2] = '@' ; }
         else 
printf("Invalid selection!\n") ;}  
      else 
printf("Invalid selection!\n") ;                
                      }
    else if (
== 'L') {   
         if (
== 'M') {
            if (
check_Move (board,r,c,d,m) == ) { /*if move is ok*/    
               
board[r][c] = ' ' ;
               
board[r+1][c-1] = '@' ; }
            else 
printf("Invalid selection!\n") ;}     
         else if ( 
== 'J') {
        if (
check_Move (board,r,c,d,m) == ) { /*if move is ok*/         
            
board[r][c] = ' ' ;
            
board[r+1][c-1] = ' ' ;
            
board[r+2][c-2] = '@' ; }
         else 
printf("Invalid selection!\n") ; }
         else 
printf("Invalid selection!\n") ;  
                      }
  else 
printf("Invalid selection!\n") ;
}
/*white piece case*/
if (get_Color(board,r,c) == 'W') {
    if (
== 'R') {
      if (
== 'M') {
        if (
check_Move (board,r,c,d,m) == ) { /*if move is ok*/
            
board[r][c] = ' ' ;
            
board[r-1][c+1] = 'O' ; }
         else 
printf("Invalid selection!\n") ; }                    
      else if ( 
== 'J') {
        if (
check_Move (board,r,c,d,m) == ) { /*if move is ok*/         
            
board[r][c] = ' ' ;
            
board[r-1][c+1] = ' ' ;
            
board[r-2][c+2] = 'O' ; }
         else 
printf("Invalid selection!\n") ;}  
      else 
printf("Invalid selection!\n") ;               
                      }
    else if (
== 'L') {   
         if (
== 'M') {
            if (
check_Move (board,r,c,d,m) == ) { /*if move is ok*/    
               
board[r][c] = ' ' ;
               
board[r-1][c-1] = 'O' ; }
            else 
printf("Invalid selection!\n") ;}     
         else if ( 
== 'J') {
        if (
check_Move (board,r,c,d,m) == ) { /*if move is ok*/         
            
board[r][c] = ' ' ;
            
board[r-1][c-1] = ' ' ;
            
board[r-2][c-2] = 'O' ; }
         else 
printf("Invalid selection!\n") ; }
         else 
printf("Invalid selection!\n") ;  
                      }
  else 
printf("Invalid selection!\n") ;
}
if (
get_Color(board,r,c) == 'N') {
   
printf("Invalid selection!\n") ; }
 
print_Board_Score(board) ;
 
 

}
 
/*MAIN function -- does not need any changes */
void main()
{
 
int i,j;
 
char board[10][10];
 
/*fill board matrix empty squares*/
 
for(i=0;i<10;i++) {
  for(
j=0;j<10;j++) {
   
board[i][j] = (i+j)%2==219 32;
  }
 }
 
/*place some pieces on the board*/
 
board[3][2]=board[4][1]='@';board[4][3]=board[4][5]=board[3][0]=board[5][0]='O';
 
/*Q2A*/
 
printf("%c\n",get_Color(board,3,2));
 
printf("%c\n",get_Color(board,1,0));
 
printf("%c\n",get_Color(board,4,3));
 
printf("%c\n",get_Color(board,-1,2));
 
/*Q2B*/
 
printf("%d\n",check_Move(board,3,0,'R','M')); /*legal move*/
 
printf("%d\n",check_Move(board,5,0,'R','J')); /*illegal jump*/
 
printf("%d\n",check_Move(board,4,1,'L','M')); /*illegal move*/
 
printf("%d\n",check_Move(board,3,2,'L','J')); /*illegal jump*/
 
printf("%d\n",check_Move(board,3,2,'R','J')); /*legal jump*/
 
printf("%d\n",check_Move(board,4,5,'R','J')); /*illegal jump*/
   /*Q2C*/
 
for(i=0i<6i++)
  
make_Move(board);
 
getch() ;



כאשר PART C הוא זה הבעייתי. ניסיתי לשנות מיקום של חייל לפי ההצבות של הכלים בפונקצית המיין אבל משום מה זה כותב שהמהלך הוא בלתי חוקי. מה התפקשש לי בדרך?
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #4  
ישן 05-02-2009, 17:46
צלמית המשתמש של Narxx
  משתמש זכר Narxx Narxx אינו מחובר  
 
חבר מתאריך: 21.12.04
הודעות: 30,021
בתגובה להודעה מספר 3 שנכתבה על ידי *~.Shush.~* שמתחילה ב "אוקיי קבלו ביטול, הסתדרתי עם..."

יש לך 2 בעיות בקליטה בשורה 122
קוד PHP:
 scanf ("%c%c", &, &); 

הבעיה הראשונה היא, שהיא קולטת לתוך d את ה enter מהקליטה הקודמת (זוכרת שדיברנו פעם על fflush? זה זמן מצויין להשתמש בו) ולכן את תמיד מקבלת n\ במקום d.
הבעיה השניה שנוצרת (אולי זו לא בעיה, אני לא יודע... אולי זה מוגדר בתרגיל ככה) זה שאת סורקת c%c% רצוף, ואז כשאני מכניס לדוגמא "L M" (שזה אומר תזיז את החייל שמאלה, ותבצע מהלך (מה הקטע של ה M הזה? אפשר לחלוטין להעיף אותו מהקוד)) אני מכניס L לתוך d (שזה אחלה) ו-' ' (רווח) לתוך m (שזה לחלוטין לא אחלה).

ברגע שתיקנתי את החלק הזה בקוד ל:
קוד PHP:
 printf ("\nEnter direction and move:\n");
fflush(stdin);
scanf ("%c %c", &, &);
/*black piece case*/ 

החל משורה 121 כמובן.
הצלחתי להזיז את החייל שבמשבצת x:4 , y:3 ימינה כמתואר:

תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
_____________________________________
בברכה, מתן.
www.MatanNarkiss.com

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #7  
ישן 06-02-2009, 03:22
צלמית המשתמש של Narxx
  משתמש זכר Narxx Narxx אינו מחובר  
 
חבר מתאריך: 21.12.04
הודעות: 30,021
בתגובה להודעה מספר 6 שנכתבה על ידי Dragonion שמתחילה ב "לא שזה שייך לנושא, אבל תודה..."


בכיף... אחד הדברים ששיגעו אותי בהתחלה ב DEV
עוד משהו ששיגע אותי היה ה "Use tab character" שלא סומן ב v בהתחלה.

אגב, רק עכשיו הבנתי למה צריך M (או J) אחרי בחירת המהלך (L או R)... זה מה שקורה כשקוראים את השאלה רק בסוף. לדעתי זה מיותר כיוון שאת יכולה לבדוק אוטומטית האם את יכולה לאכול את האבנים של היריב. זאת אומרת, בכל צעד שתעשי, הפונקציה תבדוק האם המקום אליו את הולכת, חוקי. הבדיקה תהיה כפולה. תבדקי האם מהלך רגיל. במידה וכן, וגם חוקי (לא תפוס) - אז תבצעי את המהלך.
במידה והמשבצת אינה מהלך רגיל (זאת אומרת אכילה של שחקן יריב או מהלך לא חוקי), תבדוק האם מדובר באכילה של יריב. במידה וכן - לבצע מהלך. במידה ולא - להדפיס שגיאה.

משהו כזה:
קוד PHP:
 if (check_move (x,y,m))
     
make_move (x,y);
else
    if (
check_move (x,y,j))
          
make_move (x,y);
    else
         
printf ("Error"); 

זה סכמטי לחלוטין, זה לא אמור להקמפל - רק בשביל להראות למה הכוונה שלי
_____________________________________
בברכה, מתן.
www.MatanNarkiss.com

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

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

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 23:32

הדף נוצר ב 0.72 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר