c語言編程計算圍棋的氣,c語言不圍棋程序代碼

本文目錄一覽:

用C語言編程 在屏幕上顯示圍棋棋盤

--

以怎麼不用 MS VC++6 ??

編C語言一般都用啊

還有\xCD是C語言

Ascii代碼 表示一個圖形

用循環語句啊!

等我一下 晚上寫出來 貼上哦

晚上10:00 上完課回來

呵呵 分給不給 隨便 你的問題讓我熟練了許多

分不重要了

我終於寫出來了

調試了30分鐘啊!

純粹的循環 + 判斷

-- 我就這點水平了 算法可能不好

如果有更好的告訴我 上QQ 或發百度消息給我

百度的顯示有問題 最好

用源代碼格式化工具格式化一下 百度有搜

#include stdio.h

void main()

{

int n,m,x,y,temp,j=0,i=0 ;

printf(“輸入棋盤的橫格數,豎格數:\n”);

scanf(“%d,%d”,x,y);

printf(“%d,%d\n”,x,y);

n=2*x+1 ;

m=2*y+1 ;

printf(“%d,%d\n”,n,m);

while(jm)

{

j++;

temp=j%2 ;

i=0 ;

if(j==1)

{

while(in)

{

i++;

if(i==1)

{

printf(“\xC9”);

continue ;

}

if(n==i)

{

printf(“\xBB\n”);

continue ;

}

if(i%2!=0)

{

printf(“\xCB”);

continue ;

}

if(i%2==0)

{

printf(“\xCD\xCD\xCD”);

continue ;

}

}

continue ;

}

if(m==j)

{

while(in)

{

i++;

if(i==1)

{

printf(“\xC8”);

continue ;

}

if(n==i)

{

printf(“\xBC\n”);

continue ;

}

if(i%2!=0)

{

printf(“\xCA”);

continue ;

}

if(i%2==0)

{

printf(“\xCD\xCD\xCD”);

continue ;

}

}

continue ;

}

if(temp==0)

{

while(in)

{

i++;

if(i%2!=0)

{

printf(“\xBA”);

if(n==i)printf(“\n”);

continue ;

}

if(i%2==0)

{

printf(” “);

continue ;

}

}

continue ;

}

if(temp!=0j!=1)

{

while(in)

{

i++;

if(i==1)

{

printf(“\xCC”);

continue ;

}

if(n==i)

{

printf(“\xB9\n”);

continue ;

}

if(i%2!=0)

{

printf(“\xCE”);

continue ;

}

if(i%2==0)

{

printf(“\xCD\xCD\xCD”);

continue ;

}

}

continue ;

}

}

}

100%編譯通過

可以畫出任意大小的棋盤

如 5*3 5*5

只要你的屏幕能夠顯示

以上是用圖像庫畫的棋盤

下面是用 __ 和 |

畫的棋盤 其實很簡單 替換一下就可以了

#include stdio.h

void main()

{

int n,m,x,y,temp,j=0,i=0 ;

printf(“輸入棋盤的橫格數,豎格數:\n”);

scanf(“%d,%d”,x,y);

printf(“%d,%d\n”,x,y);

n=2*x+1 ;

m=2*y+1 ;

printf(“%d,%d\n”,n,m);

while(jm)

{

j++;

temp=j%2 ;

i=0 ;

if(j==1)

{

while(in)

{

i++;

if(i==1)

{

printf(“__”);

continue ;

}

if(n==i)

{

printf(“__\n”);

continue ;

}

if(i%2!=0)

{

printf(“__”);

continue ;

}

if(i%2==0)

{

printf(“__”);

continue ;

}

}

continue ;

}

if(m==j)

{

while(in)

{

i++;

if(i==1)

{

printf(“__”);

continue ;

}

if(n==i)

{

printf(“__\n”);

continue ;

}

if(i%2!=0)

{

printf(“__”);

continue ;

}

if(i%2==0)

{

printf(“__”);

continue ;

}

}

continue ;

}

if(temp==0)

{

while(in)

{

i++;

if(i%2!=0)

{

printf(“|”);

if(n==i)printf(“\n”);

continue ;

}

if(i%2==0)

{

printf(” “);

continue ;

}

}

continue ;

}

if(temp!=0j!=1)

{

while(in)

{

i++;

if(i==1)

{

printf(“__”);

continue ;

}

if(n==i)

{

printf(“__\n”);

continue ;

}

if(i%2!=0)

{

printf(“__”);

continue ;

}

if(i%2==0)

{

printf(“__”);

continue ;

}

}

continue ;

}

}

}

如何用c語言編寫一個求圍棋氣的程序

我寫的圍棋遊戲程序中的數氣函數,註解不多.

int CMyView::pointqi(int x, int y, int bow, int e)

{

int i,j,n=1; // n is man number of the mass

int qi=0,kong=0; int pivalue,inpivalue;

int mass[2][100];

int countqi[19][19];//after be counted as qi,make this point 1.

int realeye=0;

for(i=0;i=18;i++)

{

for(j=0;j=18;j++)

{

countqi[i][j]=0;

}

}

eat=0;

mass[0][1]=x;

mass[1][1]=y;

if(bow==10)

{ pivalue=1000; inpivalue=1;}

else

{ pivalue=1; inpivalue=1000;}

for(i=1; i=n; i++)

{

if(pigroup[mass[0][i]-1][mass[1][i]]==pivalue mass[0][i]-1=0)

{

for(j=1;j=n;j++) //confirm that the new man is not belong to mass.

{

if(mass[0][i]-1 != mass[0][j] || mass[1][i] != mass[1][j] )

{

if(j!= n)

continue;

else

{

n++;

mass[0][n]=mass[0][i]-1;

mass[1][n]=mass[1][i];

break;

}

}

else

break;

}

}

if(pigroup[mass[0][i]+1][mass[1][i]]==pivaluemass[0][i]+1=18)

{

for(j=1;j=n;j++) //confirm that the new man is not belong to mass.

{

if(mass[0][i]+1 != mass[0][j] || mass[1][i] != mass[1][j] )

{

if(j!= n)

continue;

else

{

n++;

mass[0][n]=mass[0][i]+1;

mass[1][n]=mass[1][i];

break;

}

}

else

break;

}

}

if(pigroup[mass[0][i]][mass[1][i]-1]==pivaluemass[1][i]-1=0)

{

for(j=1;j=n;j++) //confirm that the new man is not belong to mass.

{

if(mass[0][i] != mass[0][j] || mass[1][i]-1 != mass[1][j] )

{

if(j!= n)

continue;

else

{

n++;

mass[0][n]=mass[0][i];

mass[1][n]=mass[1][i]-1;

break;

}

}

else

break;

}

}

if(pigroup[mass[0][i]][mass[1][i]+1]==pivaluemass[1][i]+1=18)

{

for(j=1;j=n;j++) //confirm that the new man is not belong to mass.

{

if(mass[0][i] != mass[0][j] || mass[1][i]+1 != mass[1][j] )

{

if(j!= n)

continue;

else

{

n++;

mass[0][n]=mass[0][i];

mass[1][n]=mass[1][i]+1;

break;

}

}

else

break;

}

}

}

for(j=1;j=n;j++) //check for all man of this mass whether qi exists.

{

if(pigroup[mass[0][j]-1][mass[1][j]]==0mass[0][j]-1=0countqi[mass[0][j]-1][mass[1][j]]==0)

{ qi++;

countqi[mass[0][j]-1][mass[1][j]]=1;

if(judgerealeye(mass[0][j]-1,mass[1][j],bow)==1)

realeye=realeye+1;

}

if(pigroup[mass[0][j]+1][mass[1][j]]==0mass[0][j]+1=18countqi[mass[0][j]+1][mass[1][j]]==0)

{ qi++;

countqi[mass[0][j]+1][mass[1][j]]=1;

if(judgerealeye(mass[0][j]+1,mass[1][j],bow)==1)

realeye=realeye+1;

}

if(pigroup[mass[0][j]][mass[1][j]-1]==0 mass[1][j]-1=0countqi[mass[0][j]][mass[1][j]-1]==0)

{ qi++;

countqi[mass[0][j]][mass[1][j]-1]=1;

if(judgerealeye(mass[0][j],mass[1][j]-1,bow)==1)

realeye=realeye+1;

}

if(pigroup[mass[0][j]][mass[1][j]+1]==0mass[1][j]+1=18countqi[mass[0][j]][mass[1][j]+1]==0)

{ qi++;

countqi[mass[0][j]][mass[1][j]+1]=1;

if(judgerealeye(mass[0][j],mass[1][j]+1,bow)==1)

realeye=realeye+1;

}

}

if(qi!=0)

{

eat=0;

if(e==2)

return realeye;

else

return qi;

} //qi is not 0.

if(qi==0) // if any man is eat, make the value of pigroup[][] 0.

{

eat=1;

eaten[k]=1;

if(e==1)

{

for(i=1;i=n;i++)

{

pigroup[mass[0][i]][mass[1][i]]=0;

beeat[mass[0][i]][mass[1][i]]=1;

}

}

}

return 0;

}

用C語言. 編寫一個文本界面的圍棋打譜程序

這是一個簡單的程序,會自動計算提子,但不會數目。其它的運行一次估計就差不多會用了。稍微寫了點注釋。

#includestdio.h

#includestdlib.h

char board[21][21];

char move[5][2]={{-1,0},{1,0},{0,-1},{0,1},{0,0}};

void initBoard();//初始化棋盤

void showBoard();//輸出棋盤

char set(int x,int y,char color);//下子

void process(int xx,int yy);//計算提子

int main()

{

FILE * fptr=NULL;

char pufile[256]={0};

char op;

int s;

int x,y,r;

char color;

char win;

int cnt;

start:

s=8;

while(s!=1 s!=2)

{

printf(“選擇模式:\n1—下棋\n2—看棋譜\n0—退出\n”);

printf(“下棋模式下,下子請輸入s x y(x,y為位置),認輸輸入g,和棋輸入h\n選擇:”);

scanf(“%d”,s);

if(s==0) return 0;

//Egg1

if(s==10) printf(“Programmer: swordlance :)\n”);

//Egg1 end

}

getchar();

printf(“輸入棋譜路徑:”);

gets(pufile);

if(s==1) fptr=fopen(pufile,”w”);

else fptr=fopen(pufile,”r”);

if(!fptr)

{

printf(“文件無法打開(創建)!\n”);

system(“PAUSE”);

return -1;

}

initBoard();

cnt=0;

color=’B’;

while(op!=’g’)

{

system(“CLS”);

showBoard();

printf(“(第%d手)”,++cnt);

if(s==1)

{

printf(“%c 方:”,color);

scanf(“%c”,op);

//printf(“[%c]”,op);

if(op==’s’)

{

scanf(“%d %d”,x,y);

getchar();

if(set(x,y,color)!=0)

{

printf(“該處不能落子!\n”);

cnt–;

system(“PAUSE”);

}

else

{

process(x,y);

fprintf(fptr,”%d %d\n”,x,y);

if(color==’B’) color=’W’;

else color=’B’;

}

}

else if(op==’g’)

{

printf(“%c 方認輸。\n”,color);

if(color==’B’) fprintf(fptr,”0 1\n”);

else fprintf(fptr,”0 -1\n”);

fflush(fptr);

fclose(fptr);

system(“PAUSE”);

goto start;

}

else if(op==’h’)

{

printf(“和棋。\n”);

fprintf(fptr,”0 0\n”);

fflush(fptr);

fclose(fptr);

system(“PAUSE”);

goto start;

}

else

{

printf(“參數錯誤,下子請輸入s x y(x,y為位置),認輸輸入 g,和棋輸入h”);

cnt–;

system(“PAUSE”);

}

}

else

{

fscanf(fptr,”%d %d”,x,y);

if(x==0)

{

if(y0) printf(“W 方勝!\n”);

else if(y0) printf(“B 方勝!\n”);

else printf(“和棋!\n”);

system(“PAUSE”);

goto start;

}

else

{

printf(“%c 方落子(%d,%d)\n”,color,x,y);

set(x,y,color);

process(x,y);

if(color==’B’) color=’W’;

else color=’B’;

}

system(“PAUSE”);

}

}

system(“PAUSE”);

return 0;

}

void initBoard()

{

int i,j;

board[0][0]=’O’;

for(i=1;i=19;i++) board[0][i]=’-‘;

board[0][20]=’O’;

for(i=1;i=19;i++)

{

board[i][0]=’|’;

for(j=1;j=19;j++) board[i][j]=’+’;

board[i][20]=’|’;

}

board[20][0]=’O’;

for(i=1;i=19;i++) board[20][i]=’-‘;

board[20][20]=’O’;

board[4][4]=board[4][10]=board[4][16]=

board[10][4]=board[10][10]=board[10][16]=

board[16][4]=board[16][10]=board[16][16]=’*’;

}

void showBoard()

{

int i,j;

for(i=0;i=20;i++)

{

for(j=0;j=20;j++)

{

printf(“%c”,board[i][j]);

}

printf(“\n”);

}

}

char set(int x,int y,char color)

{

if(board[x][y]==’W’ || board[x][y]==’B’) return -1;//不能落子

else board[x][y]=color;

return 0;

}

//計算提子

void process(int xx,int yy)

{

char his[21][21]={0};//記錄算過的棋子以節約效率

char Q[400][2]={0};//某一片棋

int e;//Q的長度。

char mcolor;//這片棋的顏色

char ecolor;//另一種顏色

int QI=0;//氣數

int i,j,k,l,m;

int x,y;

for(m=0;m5;m++)

{

i=xx+move[m][0];//為了能夠完成打劫,先算別人再算自己

j=yy+move[m][1];

if(his[i][j]==0 (board[i][j]==’W’ || board[i][j]==’B’)) //該位置有子開始算氣

{

QI=0;

his[i][j]=1;

mcolor=board[i][j];

ecolor=(board[i][j]==’W’?’B’:’W’);

//printf(“m=%c e=%c\n”,mcolor,ecolor);

Q[0][0]=i;

Q[0][1]=j;

e=1;

for(k=0;ke;k++)

{

for(l=0;l4;l++)

{

x=Q[k][0]+move[l][0];

y=Q[k][1]+move[l][1];

//printf(“x=%d y=%d\n”,x,y);

//system(“PAUSE”);

if(x0 y0 x20 y20 his[x][y]==0)

{

if(board[x][y]==mcolor)//己方,長氣

{

Q[e][0]=x;

Q[e][1]=y;

e++;

his[x][y]=1;

}

else

{

if(board[x][y]==’+’) QI++; //空地,加氣,忽略重複計算

}

}

}

}

//printf(“QI=%d\n”,QI);

//system(“PAUSE”);

if(!QI)//死棋,提子

{

for(k=0;ke;k++)

{

board[Q[k][0]][Q[k][1]]=’+’;

his[Q[k][0]][Q[k][1]]=0;

}

}

}

}

}

用C語言繪製圍棋棋盤

#include”graphics.h”

#include”conio.h”

void main()

{

initgraph(640,480);

for(int x=1;x20;x++)//劃縱的19條線

line(x*20,40,x*20,400);

for(int y=2;y21;y++)//劃橫的19條線

line(20,y*20,380,y*20);

getch();

closegraph();

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/302031.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-30 16:10
下一篇 2024-12-30 16:10

相關推薦

  • AES加密解密算法的C語言實現

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

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

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

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

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

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

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

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python計算機程序代碼全面介紹

    本文將從多個方面對Python計算機程序代碼進行詳細介紹,包括基礎語法、數據類型、控制語句、函數、模塊及面向對象編程等。 一、基礎語法 Python是一種解釋型、面向對象、動態數據…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28
  • Python作為中心語言,在編程中取代C語言的優勢和挑戰

    Python一直以其簡單易懂的語法和高效的編碼環境而著名。然而,它最近的發展趨勢表明Python的使用範圍已經從腳本語言擴展到了從Web應用到機器學習等廣泛的開發領域。與此同時,C…

    編程 2025-04-28

發表回復

登錄後才能評論