⑴ C語言一道題,桌子上有25顆棋子。游戲雙方輪流取子,每人每次最少取走一顆棋子,最多可取走3顆棋子。
scanf( )前加一句 fflush(stdin);
隨機數生成:
#include <time.h>
int k;
srand((unsigned)time(0)); //初始化隨機數種子
k=rand( )%3+1; //k為1--3的隨機數
⑵ 誰會用C語言編譯簡單的孔明棋啊!有幫幫我吧!在此謝過大神了
中國話 我能確且的告訴你 諸葛亮在五丈原死後說的最後一句話 便是殺魏炎 因為諸葛亮早已洞悉出魏炎會叛變 這也是諸葛亮臨終之時 最放不下的事 肯定是中國話啦! 殺魏炎 是對劉禪派來的使者說:「我死後,蔣琬可擔任我...
⑶ 有9顆棋子,其中只有一顆比其餘的重量輕,請用天平將它找出來。 用最少的次數 用c語言代碼來實現。
每3個分成一組:A,B,C。
if(A==B){
將C取出c1,c2
if(c1==c2)則是c3
else 則是c1、c2中較輕的一個
}else{
將A、B中較輕的一組取出,設為D
將D取出d1,d2
if(d1==d2)則是d3
else 則是d1、d2中較輕的一個
}
比較兩次即可。
⑷ C語言棋子問題
這個怎麼像編譯原理。。。
首先 你這個轉換有頭嗎???有轉換的優先順序么???
你最後的結果 黑白黑白 不是還能根據第二個規則轉換么?
要做這個 先弄好轉換的優先順序 即出現什麼情況優先轉換!! 例如轉換中的第二個 白白黑白
是應該用 白黑 轉換為 黑白 還是應該用第三個的轉換方式!!!
定義好這些 應該不是很難了
⑸ 五子棋c語言代碼,在vc++6.0編譯成功
我自己編了一個,詳細教程上傳到文庫了,你看有用嗎?
⑹ 急需用c語言寫中國象棋的代碼,只要紅色方布局和走棋
#include<stdio.h> #include<conio.h> #include<string.h> #include<stdlib.h> #include<windows.h>
int x,y,i,j,k,p,q, num = 1, round; //象棋游戲的全局變數
int place_x1 = 0,place_y1 = 0,place_x2 = 0,place_y2 = 0;
int check_x,check_y,check_turn; //基本參數
char ch, turn = 'O',turn1 = 'N',temp,temp1;
char check_1[9][3] ={"車","馬","象","士","將","炮","兵","+-"}; //取棋子時只判斷前8合法
char check_2[9][3] ={"車","馬","相","仕","帥","炮","卒","+-"}; //下棋時多一空位合法
char check[3];
void check_main1(char* temp,char* temp1,char* turn,char* turn1,int *num,int *if_return,char map[100][100])
{ //(象棋函數 判斷 將方 下棋是否合法
check[0] = *temp; check[1] = *temp1; check[2] = '\0'; char a,b;
for ( i = 0; i < 8; i++)
{ if ( strcmp(check_2[i],check) == 0)
{ *temp = *turn; *temp1 = *turn1; *turn = 'O'; *turn1 = 'N';
if( i < 7){ printf(" 帥方的%s被吃\n",check_2[i]); Sleep(500); } *num = *num + 1;
for( k = 4; k <= 8; k = k + 2) //判斷 帥 是否死亡
{ for(j = 15; j <= 23; j= j+ 4)
{ if (map[k][j] == check_2[4][0] && map[k][j+1] == check_2[4][1])
{ place_x2 = k; place_y2 = j; break; } }
if( j <= 23) break;
}
if( k == 10)
{printf(" 帥 被將死 將方獲得勝利\n"); printf("按任意鍵返回菜單");
getch( ); *if_return = 1; return;
}
for( k = 18; k <= 22; k = k + 2) //判斷 將 是否死亡
{for(j = 15; j <= 23; j= j+ 4)
{if(map[k][j] == check_1[4][0] && map[k][j+1] == check_1[4][1])
{place_x1 = k; place_y1 = j; break; } }
if( j <= 23) break;
}
if ( k == 24)
{printf(" 將 被將死 帥方獲得勝利\n"); printf("按任意鍵返回菜單");
getch( ); *if_return = 1; return;
}
if ( place_y1 == place_y2)
{for( k = place_x2 + 2; k <= place_x1 - 2; k = k +2) {if(map[k][place_y1] != '+') break;}
if( k == place_x1)
{if(round == 1) printf(" 將方對將 帥方勝利");
else if( round == 2) printf(" 帥方對將 將方勝利");
printf("按任意鍵返回菜單"); getch( ); *if_return = 1; return;
}
}
break;
}
} // for ( i = 0; i < 8; i++)循環結束
if( i == 8) {printf("不合法的走法\n"); Sleep(500); }
}
void check_main2(char* temp,char* temp1,char* turn,char* turn1,int *num,int *if_return,char map[100][100])
{ //象棋函數 判斷 帥方 下棋是否合法
check[0] = *temp; check[1] = *temp1; check[2] = '\0'; char a,b;
for ( i = 0; i < 8; i++)
{if ( strcmp(check_1[i],check) == 0)
{ *temp = *turn; *temp1 = *turn1; *turn = 'O'; *turn1 = 'N';
if( i < 7) {printf(" 將方的%s被吃",check_1[i]); Sleep(500); } *num = *num + 1;
for( k = 4; k <= 8; k = k + 2) //判斷 帥 是否死亡
{for(j = 15; j <= 23; j= j+ 4)
{if(map[k][j] == check_2[4][0] && map[k][j+1] == check_2[4][1])
{place_x2 = k; place_y2 = j; break; } }
if( j <= 23) break;
}
if( k == 10)
{printf(" 帥 被將死 將方獲得勝利\n");printf("按任意鍵返回菜單"); getch( );
*if_return = 1; return;
}
for( k = 18; k <= 22; k = k + 2) //判斷 將 是否死亡
{for(j = 15; j <= 23; j= j+ 4)
{if(map[k][j] == check_1[4][0] && map[k][j+1] == check_1[4][1])
{place_x1 = k; place_y1 = j; break; } }
if( j <= 23) break;
}
if( k == 24)
{printf(" 將 被將死 帥方獲得勝利\n");printf("按任意鍵返回菜單"); getch( );
*if_return = 1; return; }
if( place_y1 == place_y2)
{for( k=place_x2 + 2; k <= place_x1 - 2; k=k +2) {if(map[k][place_y1] != '+') break; }
if( k == place_x1)
{if(round==1)printf(" 將方對將 帥方勝利");else if(round==2)printf(" 帥方對將 將方勝利");
printf("按任意鍵返回菜單"); getch( ); *if_return = 1; return; }
}
break;
}
} // for ( i = 0; i < 8; i++)循環結束
if( i == 8) {printf("不合法的走法\n"); Sleep(500); }
}
void xiangqi( ) //象棋主程序
{ char map[100][100]= { "[[===================================]]",
"[| ①將 【象棋】 ②帥 |]",
"[[===================================]]",
"[[-----------------------------------]]",
"[[ 車—-馬—-相—-仕—-帥—-仕—-相—-馬—-車]]",
"[[ | | | | \\ | / | | | | ]]",
"[[ +-—-+-—-+-—-+-—-+-—-+-—-+-—-+-—-+-]]",
"[[ | | | | / | \\ | | | | ]]",
"[[ +-—-炮—-+-—-+-—-+-—-+-—-+-—-炮—-+-]]",
"[[ | | | | | | | | | ]]",
"[[ 卒—-+-—-卒—-+-—-卒—-+-—-卒—-+-—-卒]]",
"[[ | | | | | | | | | ]]",
"[[ +-—-+-—-+-—-+-—-+-—-+-—-+-—-+-—-+-]]",
"[[===================================]]",
"[[ +-—-+-—-+-—-+-—-+-—-+-—-+-—-+-—-+-]]",
"[[ | | | | | | | | | ]]",
"[[ 兵—-+-—-兵—-+-—-兵—-+-—-兵—-+-—-兵]]",
"[[ | | | | | | | | | ]]",
"[[ +-—-炮—-+-—-+-—-+-—-+-—-+-—-炮—-+-]]",
"[[ | | | | \\ | / | | | | ]]",
"[[ +-—-+-—-+-—-+-—-+-—-+-—-+-—-+-—-+-]]",
"[[ | | | | / | \\ | | | | ]]",
"[[ 車—-馬—-象—-士—-將—-士—-象—-馬—-車]]",
"[[-----------------------------------]]",
"[[===================================]]"};
int if_return = 0;
system("mode con cols=45 lines=32"); //迷你界面
system("color 70");
printf("[[==================================]]\n");
printf("[[ -------------------------------- ]]\n");
printf("[[ | | ]]\n");
printf("[[ | 【<<游戲規則>>】 | ]]\n");
printf("[[ | | ]]\n");
printf("[[ |------------------------------| ]]\n");
printf("[[ | 控制wasd雙方輪流控制指針下棋| ]]\n");
printf("[[ |------------------------------| ]]\n");
printf("[[ | 鍵盤輸入大小寫 ' M ' | ]]\n");
printf("[[ | 都視為確認下棋 | ]]\n");
printf("[[ |------------------------------| ]]\n");
printf("[[ | 為了方便區分棋子 | ]]\n");
printf("[[ | 後手方全設為繁體復雜字體 | ]]\n");
printf("[[ |------------------------------| ]]\n");
printf("[[ |------------------------------| ]]\n");
printf("[[ | 我已閱讀規則,按任意鍵繼續 | ]]\n");
printf("[[ |------------------------------| ]]\n");
printf("[[==================================]]\n");
getch( ); system("mode con cols=45 lines=32"); //迷你界面
system("color 70");
for ( i = 0; i < 27; i++){ puts(map[i]); Sleep(100); }
x = 6, y = 19; temp = map[x][y]; temp1 = map[x][y+1];
while(num)
{ if (num % 2 == 1 &&num / 2 % 2 == 0){ printf(" 現在是'將'的回合\n");round = 1; }
else if( num %2 == 1){ printf(" 現在輪到'帥'的回合了\n");round = 2; }
ch = getch( );
if ( ch == 's') //下移
{ if ( map[x+1][y]!= '-')
{map[x][y] =temp; map[x][y+1] = temp1; x = x + 2;
temp = map[x][y]; temp1 = map[x][y+1]; map[x][y] = turn; map[x][y+1] = turn1; }
}
else if ( ch == 'a') //左移
{ if (map[x][y-1]!=' ')
{map[x][y] =temp; map[x][y+1] = temp1; y = y - 4;
temp = map[x][y]; temp1 = map[x][y+1]; map[x][y] = turn; map[x][y+1] = turn1; }
}
else if ( ch == 'w') //上移
{ if ( map[x-1][y]!= '-')
{map[x][y] =temp; map[x][y+1] = temp1; x = x - 2; temp = map[x][y];
temp1 = map[x][y+1]; map[x][y] = turn; map[x][y+1] = turn1; }
}
else if ( ch == 'd') //右移
{ if (map[x][y+2]!=']')
{map[x][y] =temp; map[x][y+1] = temp1; y = y + 4; temp = map[x][y];
temp1 = map[x][y+1]; map[x][y] = turn; map[x][y+1] = turn1; }
}
else if( ch == 'm' || ch =='M') //M確認要移動的棋子,或確認要移到的目的地
{ if (num % 2 == 1 && temp != '+' && temp1 != '-') //取棋
{check[0] = temp; check[1] = temp1; check[2] = '\0';
if ( round == 1)
{ for ( i = 0; i < 7; i++) //將方
{ if ( strcmp(check_1[i],check) == 0)
{turn = temp; turn1 = temp1; temp = '+'; temp1 = '-';
check_x = x; check_y = y; check_turn = 10 + i; num++; break; }
}
if( i == 7){ printf("這不是你的棋子\n"); Sleep(500); }
}
else if( round == 2)
{for ( i = 0; i < 7; i++) //帥方
{ if( strcmp(check_2[i],check) == 0)
{turn = temp; turn1 = temp1; temp = '+'; temp1 = '-';
check_x = x; check_y = y; check_turn = 20 + i; num++; break; }
}
if( i == 7){ printf("這不是你的棋子\n"); Sleep(500); }
}
}
else if( num % 2 == 0) //放棋
{ char check_1[8][3] ={"車","馬","象","士","將","炮","卒","+-"};
char check_2[8][3] ={"俥","馬","相","仕","帥","軳","兵","+-"};
//中界 楚河上下坐標 12 15 往下2 往右4
if( check_turn < 20) //將方
{if( check_turn == 10) //車的走法規范
{ if((x == check_x && y == check_y))
{temp = turn; temp1 = turn1; turn = 'O'; turn1 = 'N'; num--;
printf("三思而後行\n"); printf("還是你的回合"); Sleep(500); }
else if( y == check_y )
{ if( x > check_x)
{ for(j = check_x + 2; j < x;j = j + 2)
{ if(map[j][y] == '+'); else{printf("不合法的下法\n"); Sleep(500); break; } }
if( j >= x) check_main1(&temp,&temp1,&turn,&turn1,&num,&if_return,map);
}
if( x < check_x){ for(j = check_x - 2; j > x;j = j - 2)
{ if(map[j][y] == '+'); else{printf("不合法的下法\n"); Sleep(500); break; }
}
if( j <= x)check_main1(&temp,&temp1,&turn,&turn1,&num,&if_return,map);
}
}
else if( x == check_x )
{if( y > check_y)
{for(j = check_y + 4; j < y;j = j + 4)
{if(map[x][j] == '+'); else {printf("不合法的下法\n"); Sleep(500); break; }
}
if( j >= y) check_main1(&temp,&temp1,&turn,&turn1,&num,&if_return,map);
}
if( y < check_y)
{for(j = check_y - 4; j > y;j = j - 4)
{ if(map[x][j] == '+'); else { printf("不合法的下法\n"); Sleep(500); break; }
}
if( j <= y) check_main1(&temp,&temp1,&turn,&turn1,&num,&if_return,map);
}
}
else { printf("不合法的下法\n"); Sleep(500); }
}
if( check_turn == 11) //馬的走法規范
{if((x == check_x && y == check_y))
{ temp = turn; temp1 = turn1; turn = 'O'; turn1 = 'N'; num--;
printf("三思而後行\n"); printf("還是你的回合"); Sleep(500); }
else if( (abs( x - check_x) == 2&& abs( y - check_y) == 8)&& map[check_x][(y+check_y)/2] =='+')
{check_main1(&temp,&temp1,&turn,&turn1,&num,&if_return,map); }
else if( (abs( x - check_x) == 4&& abs( y - check_y) == 4)&& map[(x + check_x)/2][check_y] == '+' )
{check_main1(&temp,&temp1,&turn,&turn1,&num,&if_return,map); }
else { printf("不合法的下法\n");Sleep(500); }
} //其餘代碼在後續
⑺ 百里加急!如何用C語言寫出來:一個5*5的棋盤,有五個相同的棋子任意兩個棋子不能在同一行、列、斜線上。
找漏洞,他說任意兩個,那你就必須問出他任意的哪兩個,找到那兩個,濱分開放置,棋盤就按正常的方格盤,還有誰讓你這沒做的,這不是放屁么,你立刻去扇他一把掌兵說這不可能。好沒呀?