自製象棋c語言,自製象棋c語言教程

本文目錄一覽:

用C語言編寫「在屏幕上繪製中國象棋棋盤」,功能不需要複雜,簡單點就行了

基本思路,其它自己去想

#include stdio.h

void main()

{int r=0;

int c=0;

int star_one=10;

for(r=0;r=star_one*9;r+=2)

{ for(c=0;c=star_one*8;c++)

{if((r%star_one==0 || c%star_one==0)c%2==0 (r=star_one*4 || r=star_one*4+star_one) || (r=star_one*4 r=star_one*4+star_one (c==0 || c==star_one*8)))

{printf(“%c”,’*’);}

else

{printf(“%c”,’ ‘);}

}

printf(“\n”);

}

}

急需用c語言寫中國象棋的代碼,只要紅色方布局和走棋

#include #include #include #include #include

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語言輸出中國象棋棋盤的源代碼!!急!急!急!

#include stdio.h

void main()

{int r=0;

int c=0;

int star_one=10;

for(r=0;r=star_one*9;r+=2)

{ for(c=0;c=star_one*8;c++)

{if((r%star_one==0 || c%star_one==0)c%2==0 (r=star_one*4 || r=star_one*4+star_one) || (r=star_one*4 r=star_one*4+star_one (c==0 || c==star_one*8)))

{printf(“%c”,’*’);}

else

{printf(“%c”,’ ‘);}

}

printf(“\n”);

}

}

c語言做象棋要下載什麼啊

graphics.h庫。用C語言做一個中國象棋遊戲,其要點是怎麼把抽象的規則變成形象、具體的代碼,需要下載graphics.h庫。C語言是一種計算機程序設計語言。既有高級語言的特點,又具有彙編語言的特點。

原創文章,作者:QGDH,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/131553.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
QGDH的頭像QGDH
上一篇 2024-10-03 23:46
下一篇 2024-10-03 23:46

相關推薦

  • MQTT使用教程

    MQTT是一種輕量級的消息傳輸協議,適用於物聯網領域中的設備與雲端、設備與設備之間的數據傳輸。本文將介紹使用MQTT實現設備與雲端數據傳輸的方法和注意事項。 一、準備工作 在使用M…

    編程 2025-04-29
  • Python3.6.5下載安裝教程

    Python是一種面向對象、解釋型計算機程序語言。它是一門動態語言,因為它不會對程序員提前聲明變數類型,而是在變數第一次賦值時自動識別該變數的類型。 Python3.6.5是Pyt…

    編程 2025-04-29
  • Deepin系統分區設置教程

    本教程將會詳細介紹Deepin系統如何進行分區設置,分享多種方式讓您了解如何規劃您的硬碟。 一、分區的基本知識 在進行Deepin系統分區設置之前,我們需要了解一些基本分區概念。 …

    編程 2025-04-29
  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • Qt雷達探測教程

    本文主要介紹如何使用Qt開發雷達探測程序,並展示一個簡單的雷達探測示例。 一、環境準備 在開始本教程之前,需要確保你的開發環境已經安裝Qt和Qt Creator。如果沒有安裝,可以…

    編程 2025-04-29
  • 猿編程python免費全套教程400集

    想要學習Python編程嗎?猿編程python免費全套教程400集是一個不錯的選擇!下面我們來詳細了解一下這個教程。 一、課程內容 猿編程python免費全套教程400集包含了從P…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29

發表回復

登錄後才能評論